diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteITCase.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteITCase.java
new file mode 100644
index 0000000000000000000000000000000000000000..82679dbc38a283bed73689e1e2d3d93d85fe1b7e
--- /dev/null
+++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteITCase.java
@@ -0,0 +1,163 @@
+package de.ozgcloud.eingang.xta;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.grpcmock.GrpcMock.*;
+
+import java.util.List;
+
+import org.grpcmock.springboot.AutoConfigureGrpcMock;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Bean;
+import org.springframework.test.context.ActiveProfiles;
+
+import de.ozgcloud.eingang.Application;
+import de.ozgcloud.eingang.semantik.SemantikAdapter;
+import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc;
+import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileResponse;
+import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangRequest;
+import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangResponse;
+import de.ozgcloud.vorgang.vorgang.GrpcEingang;
+import de.ozgcloud.vorgang.vorgang.GrpcFinishCreationResponse;
+import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc;
+import lombok.RequiredArgsConstructor;
+
+@Disabled("real live test - do only activate for manual testing (will empty XTA-E mailbox)")
+@SpringBootTest(classes = {
+		Application.class,
+		XtaRemoteITCase.ActivateXTARunnerConfig.class,
+		XtaRemoteITCase.ActivateXTARunnerConfig.class
+}, properties = { "ozgcloud.xta.server.name=LI33-0005",
+		"ozgcloud.xta.server.address=LI33-0005:3000",
+		"ozgcloud.xta.server.protocol=https",
+		"ozgcloud.xta.keystore.file=file:./KOP_SH_KIEL_DEV.p12",
+		"ozgcloud.xta.keystore.password=geheim" // replace this with real password
+})
+@ActiveProfiles({ "itcase" })
+@AutoConfigureGrpcMock(name = "vorgang-manager-itcase", useInProcessServer = true)
+class XtaRemoteITCase {
+
+	@Autowired
+	private XtaRunner runner;
+
+	@DisplayName("run get xta messages")
+	@Nested
+	class TestRunGetXtaMessages {
+		@BeforeEach
+		void setup() {
+			// Mock 'start vorgang creation'
+			stubFor(
+					unaryMethod(VorgangServiceGrpc.getStartCreationMethod())
+							.willReturn(GrpcCreateVorgangResponse.getDefaultInstance())
+			);
+			// Mock 'upload binary files'
+			stubFor(
+					clientStreamingMethod(BinaryFileServiceGrpc.getUploadBinaryFileAsStreamMethod())
+							.willReturn(GrpcUploadBinaryFileResponse.getDefaultInstance())
+			);
+			// Mock 'finish vorgang creation'
+			stubFor(
+					unaryMethod(VorgangServiceGrpc.getFinishCreationMethod())
+							.willReturn(GrpcFinishCreationResponse.getDefaultInstance())
+			);
+		}
+
+		@AfterEach
+		void teardown() {
+			resetMappings();
+		}
+
+		@DisplayName("should have representations")
+		@Test
+		void shouldHaveRepresentations() {
+			runner.runGetXtaMessages();
+
+			var eingangRequests = captureEingangRequests();
+
+			eingangRequests.forEach(eingang ->
+					assertThat(eingang.getNumberOfRepresentations()).isGreaterThanOrEqualTo(2)
+			);
+
+		}
+
+		@DisplayName("should have postfach id")
+		@Test
+		void shouldHavePostfachId() {
+			runner.runGetXtaMessages();
+
+			var eingangRequests = captureEingangRequests();
+
+			eingangRequests.forEach(eingang -> {
+						var serviceKonto = eingang
+								.getHeader()
+								.getServiceKonto();
+						assertThat(serviceKonto).isNotNull();
+						var postfachId = serviceKonto
+								.getPostfachAddresses(0)
+								.getIdentifier()
+								.getProperty(0)
+								.getValue(0);
+						assertThat(postfachId).hasSameSizeAs("4dd01647-b9d9-4775-1b50-08da3d83800a");
+					}
+			);
+		}
+
+		@DisplayName("should have organistationseinheit ID")
+		@Test
+		void shouldHaveOrganistationseinheitId() {
+			runner.runGetXtaMessages();
+
+			var eingangRequests = captureEingangRequests();
+
+			eingangRequests.forEach(eingang -> {
+				var organisationseinheitId = eingang.getZustaendigeStelle()
+						.getOrganisationseinheitenId();
+				assertThat(organisationseinheitId).isNotEmpty();
+			});
+
+		}
+
+		@DisplayName("should have vorgang nummer")
+		@Test
+		void shouldHaveVorgangNummer() {
+			runner.runGetXtaMessages();
+
+			var eingangRequests = captureEingangRequests();
+
+			eingangRequests.forEach(eingang -> {
+				var vorgangNummer = eingang
+						.getHeader()
+						.getVorgangNummer();
+				assertThat(vorgangNummer).hasSize(9);
+			});
+		}
+
+		private List<GrpcEingang> captureEingangRequests() {
+			return capturedRequestsFor(
+					calledMethod(VorgangServiceGrpc.getStartCreationMethod())
+			)
+					.getFirst()
+					.requests()
+					.stream().map(GrpcCreateVorgangRequest::getEingang)
+					.toList();
+		}
+	}
+
+	@RequiredArgsConstructor
+	static class ActivateXTARunnerConfig {
+		private final XtaService service;
+		private final SemantikAdapter semantikAdapter;
+
+		@Bean
+		XtaRunner xtaRunner() {
+			return new XtaRunner(service, semantikAdapter);
+		}
+	}
+
+}