diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java
index c243a89641e1ca5589188a680ed0ace8536fb747..0a371946028f0b2b9bf8b5b99af163d4d540d687 100644
--- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java
+++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java
@@ -40,6 +40,8 @@ public class FormHeaderTestFactory {
 	public static final String CREATED_AT_STR = "2024-04-01T01:00:30Z";
 	public static final ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR);
 
+	public static final ServiceKonto SERVICE_KONTO = ServiceKontoTestFactory.create();
+
 	public static FormHeader create() {
 		return createBuilder().build();
 	}
@@ -53,7 +55,7 @@ public class FormHeaderTestFactory {
 				.formId(FORM_ID)
 				.formName(FORM_NAME)
 				.sender(SENDER)
-				.serviceKonto(ServiceKontoTestFactory.create());
+				.serviceKonto(SERVICE_KONTO);
 	}
 
 }
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapper.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..3aceb97490468096ade62e9803525e90f0cf8a03
--- /dev/null
+++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapper.java
@@ -0,0 +1,38 @@
+package de.ozgcloud.eingang.formcycle;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+import org.mapstruct.CollectionMappingStrategy;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.ReportingPolicy;
+
+import de.ozgcloud.eingang.common.formdata.ServiceKonto;
+import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress;
+import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier;
+
+@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, unmappedTargetPolicy = ReportingPolicy.WARN)
+interface FormCycleServiceKontoMapper {
+
+	@Mapping(target = "postfachAddress", ignore = true)
+	@Mapping(target = "postfachAddresses", expression = "java(fromGrpcPostfachAddresses(serviceKonto))")
+	ServiceKonto fromGrpc(FormCycleServiceKonto serviceKonto);
+
+	default String fromString(String str) {
+		return StringUtils.trimToNull(str);
+	}
+
+	default List<PostfachAddress> fromGrpcPostfachAddresses(FormCycleServiceKonto serviceKonto) {
+		return serviceKonto.hasAddress() ? List.of(fromGrpc(serviceKonto.getAddress())) : Collections.emptyList();
+	}
+
+	@Mapping(target = "type", ignore = true)
+	@Mapping(target = "identifier", expression = "java(buildIdentifier(postfachAddress.getIdentifier()))")
+	PostfachAddress fromGrpc(FormCyclePostfachAddress postfachAddress);
+
+	default StringBasedIdentifier buildIdentifier(String identifier) {
+		return StringBasedIdentifier.builder().postfachId(identifier).build();
+	}
+}
\ No newline at end of file
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java
index 4e6fbc510208c4bc5154d7b6e98327c938cc2af4..128fc4e36b078af117bafc7a7747b984888b4f3c 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java
@@ -44,9 +44,6 @@ import de.ozgcloud.common.errorhandling.TechnicalException;
 import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.formdata.IncomingFile;
 import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
-import de.ozgcloud.eingang.common.formdata.ServiceKonto;
-import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress;
-import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier;
 import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier;
 import de.ozgcloud.eingang.semantik.SemantikAdapter;
 import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper;
@@ -66,6 +63,7 @@ class FormDataController {
 	private final SemantikAdapter semantikAdapter;
 	private final VorgangNummerSupplier vorgangNummerSupplier;
 	private final FormDataHtmlCleaner formDataHtmlCleaner;
+	private final FormCycleServiceKontoMapper serviceKontoMapper;
 
 	@PostMapping(consumes = "multipart/form-data", produces = HTTP_TYPE_PROTOBUF)
 	public FormCycleConfirmationResponse receiveFormData(@RequestPart FormCycleFormData formData,
@@ -98,7 +96,7 @@ class FormDataController {
 		return files.orElseGet(Collections::emptyList).stream().map(this::buildIncomingFile).toList();
 	}
 
-	private FormData addFiles(FormCycleFormData inFormData, Optional<Collection<MultipartFile>> attachments, FormData mappedFormData) {
+	FormData addFiles(FormCycleFormData inFormData, Optional<Collection<MultipartFile>> attachments, FormData mappedFormData) {
 		var groups = new AttachmentGroupsBuilder(inFormData.getAttachmentGroupList(), attachments).buildGroups();
 
 		return mappedFormData.toBuilder().attachments(groups).numberOfAttachments(FilesMapperHelper.countAttachedFiles(groups)).build();
@@ -157,28 +155,8 @@ class FormDataController {
 
 	FormData addServiceKonto(FormCycleFormData formData, FormData mappedFormData) {
 		if (formData.hasServiceKonto()) {
-			mappedFormData.getHeader().setServiceKonto(buildServiceKonto(formData.getServiceKonto()));
+			mappedFormData.getHeader().setServiceKonto(serviceKontoMapper.fromGrpc(formData.getServiceKonto()));
 		}
 		return mappedFormData;
 	}
-
-	ServiceKonto buildServiceKonto(FormCycleServiceKonto formCycleServiceKonto) {
-		return ServiceKonto.builder()
-				.type(formCycleServiceKonto.getType())
-				.postfachAddress(buildPostfachAddress(formCycleServiceKonto))
-				.trustLevel(formCycleServiceKonto.getTrustLevel())
-				.build();
-	}
-
-	PostfachAddress buildPostfachAddress(FormCycleServiceKonto formCycleServiceKonto) {
-		if (!formCycleServiceKonto.hasAddress()) {
-			return null;
-		}
-		var address = formCycleServiceKonto.getAddress();
-		return PostfachAddress.builder().identifier(buildPostfachId(address.getIdentifier())).version(address.getVersion()).build();
-	}
-
-	private StringBasedIdentifier buildPostfachId(String identifier) {
-		return StringBasedIdentifier.builder().postfachId(identifier).build();
-	}
-}
+}
\ No newline at end of file
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java
index 78691f91ad65261b60e70063a6be1fc8b4a2bd5c..369bc8a1651603190ff0daee48e0dd4a1625e340 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java
@@ -28,16 +28,18 @@ import de.ozgcloud.eingang.formcycle.FormCycleFormData.Builder;
 import de.ozgcloud.vorgang.common.grpc.GrpcFormDataTestFactory;
 import de.ozgcloud.vorgang.vorgang.GrpcFormData;
 
-class FormCycleFormDataTestFactory {
+public class FormCycleFormDataTestFactory {
 
-	static FormCycleFormData create() {
+	public static final FormCycleServiceKonto SERVICE_KONTO = FormCycleServiceKontoTestFactory.create();
+
+	public static FormCycleFormData create() {
 		return createBuilder().build();
 	}
 
-	static Builder createBuilder() {
+	public static Builder createBuilder() {
 		return FormCycleFormData.newBuilder()
 				.setHeader(FormCycleFormHeaderTestFactory.create())
-				.setServiceKonto(FormCycleServiceKontoTestFactory.create())
+				.setServiceKonto(SERVICE_KONTO)
 				.setFormData(GrpcFormDataTestFactory.create())
 				.addAttachmentGroup(FormCycleAttachmentGroup.newBuilder()
 						.setName(IncomingFileGroupTestFactory.NAME)
@@ -45,8 +47,7 @@ class FormCycleFormDataTestFactory {
 						.build());
 	}
 
-	static FormCycleFormData withFormData(GrpcFormData formData) {
+	public static FormCycleFormData withFormData(GrpcFormData formData) {
 		return createBuilder().clearFormData().setFormData(formData).build();
 	}
-
-}
+}
\ No newline at end of file
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapperTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b328284eb6b3ab4fdf010dd4240d4726ebd13209
--- /dev/null
+++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapperTest.java
@@ -0,0 +1,86 @@
+package de.ozgcloud.eingang.formcycle;
+
+import static org.assertj.core.api.Assertions.*;
+
+import org.apache.commons.lang3.StringUtils;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mapstruct.factory.Mappers;
+
+import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress;
+import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory;
+import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier;
+
+class FormCycleServiceKontoMapperTest {
+
+	private final FormCycleServiceKontoMapper mapper = Mappers.getMapper(FormCycleServiceKontoMapper.class);
+
+	@DisplayName("From grpc serviceKonto")
+	@Nested
+	class TestFromGrpcServiceKonto {
+
+		@DisplayName("trustLevel")
+		@Nested
+		class TestTrustLevel {
+
+			@Test
+			void shouldMap() {
+				var serviceKonto = mapper.fromGrpc(FormCycleServiceKontoTestFactory.create());
+
+				assertThat(serviceKonto.getTrustLevel()).isEqualTo(ServiceKontoTestFactory.TRUST_LEVEL);
+			}
+
+			@Test
+			void shouldMapAsNullIfEmpty() {
+				var serviceKontoWithEmptyTrustLevel = FormCycleServiceKontoTestFactory.createBuilder().setTrustLevel(StringUtils.EMPTY).build();
+
+				var serviceKonto = mapper.fromGrpc(serviceKontoWithEmptyTrustLevel);
+
+				assertThat(serviceKonto.getTrustLevel()).isNull();
+			}
+		}
+
+		@Test
+		void shouldNotPostfachAddressIfNotExists() {
+			var serviceKonto = mapper.fromGrpc(FormCycleServiceKontoTestFactory.createBuilder().clearAddress().build());
+
+			assertThat(serviceKonto.getPostfachAddresses()).isEmpty();
+		}
+
+		@DisplayName("postfachAddress")
+		@Nested
+		class TestPostfachAddress {
+
+			@Test
+			void shouldMapPostkorbId() {
+				var postfachAddress = mapPostfachAddressFromGrpc();
+
+				assertThat(((StringBasedIdentifier) postfachAddress.getIdentifier()).getPostfachId())
+						.isEqualTo(FormCyclePostfachAddressTestFactory.POSTKORB_ID);
+			}
+
+			@Test
+			void shouldMapIdentifier() {
+				var postfachAddress = mapPostfachAddressFromGrpc();
+
+				assertThat(getIdentifier(postfachAddress)).isEqualTo(FormCyclePostfachAddressTestFactory.POSTKORB_ID);
+			}
+
+			private String getIdentifier(PostfachAddress postfachAddress) {
+				return ((StringBasedIdentifier) postfachAddress.getIdentifier()).getPostfachId();
+			}
+
+			@Test
+			void shouldMapVersion() {
+				var postfachAddress = mapPostfachAddressFromGrpc();
+
+				assertThat(postfachAddress.getVersion()).isEqualTo(FormCyclePostfachAddressTestFactory.VERSION);
+			}
+
+			private PostfachAddress mapPostfachAddressFromGrpc() {
+				return mapper.fromGrpc(FormCycleServiceKontoTestFactory.create()).getPostfachAddresses().get(0);
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java
index 06704947aea190ae8c3ee084a492c3b6d808e479..4f753916fd0158272354fe94c32c9a19f006f26c 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java
@@ -35,6 +35,7 @@ import java.util.Collections;
 import java.util.Optional;
 
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
@@ -54,10 +55,9 @@ import de.ozgcloud.eingang.common.formdata.FormHeader;
 import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory;
 import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory;
 import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory;
-import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress;
+import de.ozgcloud.eingang.common.formdata.ServiceKonto;
 import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory;
 import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier;
-import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier;
 import de.ozgcloud.eingang.semantik.SemantikAdapter;
 import lombok.SneakyThrows;
 
@@ -75,6 +75,8 @@ class FormDataControllerTest {
 	private VorgangNummerSupplier vorgangNummerSupplier;
 	@Mock
 	private FormDataHtmlCleaner htmlCleaner;
+	@Mock
+	private FormCycleServiceKontoMapper serviceKontoMapper;
 
 	private MockMvc mockMvc;
 
@@ -134,7 +136,7 @@ class FormDataControllerTest {
 		void shouldCallHtmlCleaner() {
 			doPostRequest();
 
-			verify(htmlCleaner).clean(any());
+			verify(htmlCleaner).clean(mappedFormData);
 		}
 
 		@Test
@@ -155,11 +157,12 @@ class FormDataControllerTest {
 		}
 
 		@Test
-		void shouldMapPostkorbId() {
+		void shouldCallAddServiceKonto() {
+			doReturn(mappedFormData).when(controller).addFiles(any(), any(), any());
+
 			doPostRequest();
 
-			verify(semantikAdapter).processFormData(formDataCaptor.capture());
-			assertThat(getPostfachIdFormData(formDataCaptor.getValue())).isEqualTo(FormCyclePostfachAddressTestFactory.POSTKORB_ID);
+			verify(controller).addServiceKonto(notNull(), eq(mappedFormData));
 		}
 
 		@Nested
@@ -298,77 +301,49 @@ class FormDataControllerTest {
 		}
 	}
 
+	@DisplayName("Add serviceKonto")
 	@Nested
 	class TestServiceKontoMapping {
 
-		@Test
-		void shouldMapServiceKontoType() {
-			var formData = controller.addServiceKonto(FormCycleFormDataTestFactory.create(), buildEmptyFormDataWithHeader());
-
-			assertThat(getServiceKontoType(formData)).isEqualTo(FormCycleServiceKontoTestFactory.TYPE);
-		}
-
-		@Test
-		void shouldNotMapEmptyServiceKonto() {
-			controller.addServiceKonto(FormCycleFormData.newBuilder().build(), buildEmptyFormDataWithHeader());
-
-			verify(controller, never()).buildServiceKonto(any());
-		}
-
-		@Test
-		void shouldMapTrustLevel() {
-			var formData = controller.addServiceKonto(FormCycleFormDataTestFactory.create(), buildEmptyFormDataWithHeader());
-
-			assertThat(formData.getHeader().getServiceKonto().getTrustLevel()).isEqualTo(ServiceKontoTestFactory.TRUST_LEVEL);
-		}
-
-		String getServiceKontoType(FormData formData) {
-			return formData.getHeader().getServiceKonto().getType();
-		}
-
+		@DisplayName("on existing")
 		@Nested
-		class TestPostkorbIdMapping {
+		class TestOnExisting {
 
-			@Test
-			void shouldMapPostkorbId() {
-				var formData = controller.addServiceKonto(FormCycleFormDataTestFactory.create(), buildEmptyFormDataWithHeader());
+			private final ServiceKonto serviceKonto = ServiceKontoTestFactory.create();
 
-				assertThat(getPostfachIdFormData(formData)).isEqualTo(FormCyclePostfachAddressTestFactory.POSTKORB_ID);
+			@BeforeEach
+			void mock() {
+				when(serviceKontoMapper.fromGrpc(any(FormCycleServiceKonto.class))).thenReturn(serviceKonto);
 			}
 
 			@Test
-			void shouldNotMapEmptyPostkorbId() {
-				var postfachAddress = controller.buildPostfachAddress(FormCycleServiceKonto.newBuilder().build());
+			void shouldCallMapper() {
+				controller.addServiceKonto(FormCycleFormDataTestFactory.create(), buildEmptyFormDataWithHeader());
 
-				assertThat(postfachAddress).isNull();
+				verify(serviceKontoMapper).fromGrpc(FormCycleFormDataTestFactory.SERVICE_KONTO);
 			}
 
 			@Test
-			void shouldMapPostfachIdentifier() {
-				var postfachAddress = controller.buildPostfachAddress(FormCycleServiceKontoTestFactory.create());
+			void shouldMapServiceKontoType() {
+				var formData = controller.addServiceKonto(FormCycleFormDataTestFactory.create(), buildEmptyFormDataWithHeader());
 
-				assertThat(getIdentifier(postfachAddress)).isEqualTo(FormCyclePostfachAddressTestFactory.POSTKORB_ID);
+				assertThat(getServiceKontoType(formData)).isEqualTo(ServiceKontoTestFactory.TYPE);
 			}
+		}
 
-			private String getIdentifier(PostfachAddress postfachAddress) {
-				return ((StringBasedIdentifier) postfachAddress.getIdentifier()).getPostfachId();
-			}
+		@Test
+		void shouldBeNullIfNotExists() {
+			var formData = controller.addServiceKonto(FormCycleFormData.newBuilder().build(), buildEmptyFormDataWithHeader());
 
-			@Test
-			void shouldMapPostfachAddressVersion() {
-				var postfachAddress = controller.buildPostfachAddress(FormCycleServiceKontoTestFactory.create());
+			assertThat(formData.getHeader().getServiceKonto()).isNull();
+		}
 
-				assertThat(postfachAddress.getVersion()).isEqualTo(FormCyclePostfachAddressTestFactory.VERSION);
-			}
+		private String getServiceKontoType(FormData formData) {
+			return formData.getHeader().getServiceKonto().getType();
 		}
 
 		private FormData buildEmptyFormDataWithHeader() {
 			return FormData.builder().header(FormHeader.builder().build()).build();
 		}
 	}
-
-	private String getPostfachIdFormData(FormData formData) {
-		return ((StringBasedIdentifier) formData.getHeader().getServiceKonto().getPostfachAddresses()
-				.get(0).getIdentifier()).getPostfachId();
-	}
-}
+}
\ No newline at end of file
diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointITCase.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointITCase.java
index 86ab1dac41cdd74d3173b50c733a8d339ee47bdd..02b27c1a4f34a300244bc68e25ab3fcee78217f6 100644
--- a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointITCase.java
+++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointITCase.java
@@ -5,7 +5,6 @@ import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
 import java.nio.file.Files;
-import java.util.List;
 import java.util.Optional;
 
 import org.junit.jupiter.api.BeforeEach;
@@ -24,10 +23,9 @@ import org.springframework.core.io.Resource;
 import org.springframework.test.context.ActiveProfiles;
 
 import de.ozgcloud.eingang.common.formdata.FormData;
+import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress;
+import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier;
 import de.ozgcloud.eingang.router.VorgangRemoteService;
-import de.ozgcloud.vorgang.common.GrpcObject;
-import de.ozgcloud.vorgang.vorgang.GrpcEingang;
-import de.ozgcloud.vorgang.vorgang.GrpcPostfachAddress;
 import lombok.SneakyThrows;
 
 @ActiveProfiles({ "local", "itcase" })
@@ -37,6 +35,7 @@ class SendFormEndpointITCase {
 	private final static String FILE_BASE_PATH = "classpath:formular/";
 
 	private final static String FORMULAR_JSON = "RequestJsonContent.json";
+	private final static String FORMULAR_POSTFACH_ID = "51522620-03d2-4507-b1f0-08d86920efed";
 
 	@Autowired
 	private ApplicationContext applicationContext;
@@ -49,8 +48,6 @@ class SendFormEndpointITCase {
 	@Captor
 	private ArgumentCaptor<FormData> formDataCaptor;
 	@Captor
-	private ArgumentCaptor<GrpcEingang> grpcEingangCaptor;
-	@Captor
 	private ArgumentCaptor<Optional<String>> organisationsEinheitIdCaptor;
 
 	@DisplayName("Receive form")
@@ -75,7 +72,7 @@ class SendFormEndpointITCase {
 		void shouldCallRemoteService() {
 			callEndpoint();
 
-			verify(vorgangRemoteService).createVorgang(any(FormData.class), any(GrpcEingang.class), any());
+			verify(vorgangRemoteService).createVorgang(any(FormData.class), any());
 		}
 
 		@DisplayName("service konto")
@@ -86,21 +83,21 @@ class SendFormEndpointITCase {
 			void shouldExist() {
 				callEndpoint();
 
-				assertThat(grpcEingangCaptor.getValue().getHeader().getServiceKonto()).isNotNull();
+				assertThat(formDataCaptor.getValue().getHeader().getServiceKonto()).isNotNull();
 			}
 
 			@Test
 			void shouldContainsType() {
 				callEndpoint();
 
-				assertThat(grpcEingangCaptor.getValue().getHeader().getServiceKonto().getType()).isEqualTo("OSI");
+				assertThat(formDataCaptor.getValue().getHeader().getServiceKonto().getType()).isEqualTo("OSI");
 			}
 
 			@Test
 			void shouldContainsPostfachAddress() {
 				callEndpoint();
 
-				assertThat(grpcEingangCaptor.getValue().getHeader().getServiceKonto().getPostfachAddressesList()).hasSize(1);
+				assertThat(formDataCaptor.getValue().getHeader().getServiceKonto().getPostfachAddresses()).hasSize(1);
 			}
 
 			@Nested
@@ -124,15 +121,12 @@ class SendFormEndpointITCase {
 				void shouldContainsIdentifier() {
 					callEndpoint();
 
-					assertThat(getPostfachAddress().getIdentifier()).isInstanceOf(GrpcObject.class);
-					assertThat(getPostfachAddress().getIdentifier().getPropertyList()).hasSize(1);
-					assertThat(getPostfachAddress().getIdentifier().getPropertyList().get(0).getName()).isEqualTo("postfachId");
-					assertThat(getPostfachAddress().getIdentifier().getPropertyList().get(0).getValue(0))
-							.isEqualTo("51522620-03d2-4507-b1f0-08d86920efed");
+					assertThat(getPostfachAddress().getIdentifier()).isInstanceOf(StringBasedIdentifier.class);
+					assertThat(((StringBasedIdentifier) getPostfachAddress().getIdentifier()).getPostfachId()).isEqualTo(FORMULAR_POSTFACH_ID);
 				}
 
-				private GrpcPostfachAddress getPostfachAddress() {
-					List<GrpcPostfachAddress> addresses = grpcEingangCaptor.getValue().getHeader().getServiceKonto().getPostfachAddressesList();
+				private PostfachAddress getPostfachAddress() {
+					var addresses = formDataCaptor.getValue().getHeader().getServiceKonto().getPostfachAddresses();
 					assertThat(addresses).isNotEmpty();
 					return addresses.get(0);
 				}
@@ -142,7 +136,7 @@ class SendFormEndpointITCase {
 		private void callEndpoint() {
 			endpoint.receiveForm(request);
 
-			verify(vorgangRemoteService).createVorgang(formDataCaptor.capture(), grpcEingangCaptor.capture(), organisationsEinheitIdCaptor.capture());
+			verify(vorgangRemoteService).createVorgang(formDataCaptor.capture(), organisationsEinheitIdCaptor.capture());
 		}
 
 		private Resource getResource(String fileName) {
diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java
index e4cee2e206dd7ff302abd447139793521e1821f1..70c45a24ceb90e3f8a7f2e44ac7995823e3c8d22 100644
--- a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java
+++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java
@@ -35,7 +35,7 @@ import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.Collection;
 import java.util.List;
-import java.util.Optional;
+import java.util.UUID;
 
 import javax.xml.namespace.QName;
 import javax.xml.transform.Source;
@@ -51,9 +51,11 @@ import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Captor;
+import org.mockito.Mock;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.boot.test.mock.mockito.SpyBean;
 import org.springframework.context.ApplicationContext;
 import org.springframework.core.io.Resource;
 import org.springframework.oxm.jaxb.Jaxb2Marshaller;
@@ -64,12 +66,17 @@ import org.springframework.ws.test.server.ResponseMatchers;
 
 import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory;
+import de.ozgcloud.eingang.router.ManagableStub;
+import de.ozgcloud.eingang.router.VorgangManagerServerResolver;
 import de.ozgcloud.eingang.router.VorgangRemoteService;
+import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub;
 import de.ozgcloud.vorgang.vorgang.GrpcAntragsteller;
 import de.ozgcloud.vorgang.vorgang.GrpcEingang;
 import de.ozgcloud.vorgang.vorgang.GrpcFormData;
 import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile;
 import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup;
+import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
+import io.grpc.Channel;
 import lombok.SneakyThrows;
 
 @SpringBootTest
@@ -86,20 +93,34 @@ class FormDataEndpointITCase {
 	@Autowired
 	private ApplicationContext applicationContext;
 
-	@MockBean
+	@SpyBean
 	private VorgangRemoteService vorgangRemoteService;
+	@MockBean
+	private VorgangManagerServerResolver resolver;
+
+	@Mock
+	private ManagableStub<VorgangServiceBlockingStub> vorgangManageableServiceStub;
+	@Mock
+	private VorgangServiceBlockingStub vorgangServiceStub;
+	@Mock
+	private ManagableStub<BinaryFileServiceStub> binaryFileManageableServiceStub;
+	@Mock
+	private BinaryFileServiceStub binaryFileServiceStub;
+
+	@Mock
+	private Channel channel;
 
 	@Captor
 	private ArgumentCaptor<FormData> formDataCaptor;
 	@Captor
 	private ArgumentCaptor<GrpcEingang> grpcEingangCaptor;
-	@Captor
-	private ArgumentCaptor<Optional<String>> organisationsEinheitIdCaptor;
 
 	private MockWebServiceClient mockClient;
 
 	private DepositData depositData;
 
+	private final String vorgangId = UUID.randomUUID().toString();
+
 	@BeforeAll
 	static void setupMarshaller() {
 		marshaller = new Jaxb2Marshaller();
@@ -109,6 +130,16 @@ class FormDataEndpointITCase {
 	@BeforeEach
 	void initTest() {
 		mockClient = MockWebServiceClient.createClient(applicationContext);
+
+		when(resolver.resolveVorgangServiceBlockingStubByOrganisationseinheitenId(any())).thenReturn(vorgangManageableServiceStub);
+		when(vorgangManageableServiceStub.get()).thenReturn(vorgangServiceStub);
+		when(vorgangServiceStub.getChannel()).thenReturn(channel);
+		when(channel.authority()).thenReturn("authorityDummy");
+
+		when(resolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(any())).thenReturn(binaryFileManageableServiceStub);
+		when(binaryFileManageableServiceStub.get()).thenReturn(binaryFileServiceStub);
+
+		doReturn(vorgangId).when(vorgangRemoteService).createVorgang(any(), any(), any(), any());
 	}
 
 	@DisplayName("send antrag with many attachments")
@@ -154,8 +185,7 @@ class FormDataEndpointITCase {
 			assertThat(representationVendorIds).containsExactly(
 					XML_ATTACHMENT_ID,
 					XML_ROHFORM_ATTACHMENT_ID,
-					XML_ORIGINALFORM_ATTACHMENT_ID
-			);
+					XML_ORIGINALFORM_ATTACHMENT_ID);
 		}
 
 		@DisplayName("should have attachments")
@@ -182,8 +212,7 @@ class FormDataEndpointITCase {
 					PDF2_ATTACHMENT_ID,
 					ODT_ATTACHMENT_ID,
 					JPG_ATTACHMENT_ID,
-					PNG_ATTACHMENT_ID
-			);
+					PNG_ATTACHMENT_ID);
 		}
 
 		@DisplayName("should have organisationseinheitenID")
@@ -191,9 +220,6 @@ class FormDataEndpointITCase {
 		void shouldHaveOrganisationseinheitenId() {
 			sendDepositAndCaptureCreateVorgang();
 
-			var oeid = organisationsEinheitIdCaptor.getValue();
-			assertThat(oeid).hasValue(ORGANISATIONSEINHEITEN_ID);
-
 			var eingang = grpcEingangCaptor.getValue();
 			assertThat(eingang.getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo(ORGANISATIONSEINHEITEN_ID);
 		}
@@ -211,8 +237,7 @@ class FormDataEndpointITCase {
 					withEmptyName(createPdf()),
 					createPdf(),
 					withEmptyName(createPng()),
-					createPng()
-			));
+					createPng()));
 		}
 
 		private Attachment withEmptyName(Attachment attachment) {
@@ -264,7 +289,7 @@ class FormDataEndpointITCase {
 				.andExpect(ResponseMatchers.noFault())
 				.andExpect(ResponseMatchers.payload(getResource(RESPONSE)));
 
-		verify(vorgangRemoteService).createVorgang(formDataCaptor.capture(), grpcEingangCaptor.capture(), organisationsEinheitIdCaptor.capture());
+		verify(vorgangRemoteService).createVorgang(formDataCaptor.capture(), grpcEingangCaptor.capture(), any(), any());
 	}
 
 	@SneakyThrows
@@ -290,7 +315,7 @@ class FormDataEndpointITCase {
 		void shouldSendRequest() {
 			sendRequest();
 
-			verify(vorgangRemoteService).createVorgang(any(FormData.class), any(GrpcEingang.class), any());
+			verify(vorgangRemoteService).createVorgang(any(FormData.class), any(GrpcEingang.class), any(), any());
 		}
 
 		@Nested
@@ -318,7 +343,7 @@ class FormDataEndpointITCase {
 			void validateOrganisationsEinheitId() {
 				sendRequest();
 
-				assertThat(organisationsEinheitIdCaptor.getValue()).isPresent().hasValue("10363455");
+				assertThat(grpcEingangCaptor.getValue().getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo("10363455");
 			}
 
 			@Test
@@ -473,7 +498,7 @@ class FormDataEndpointITCase {
 		void shouldHaveOrgaId() {
 			sendWebserviceRequest(SOAP_REQUEST_OTHER_NAME);
 
-			verify(vorgangRemoteService).createVorgang(any(), grpcEingangCaptor.capture(), any());
+			verify(vorgangRemoteService).createVorgang(any(), grpcEingangCaptor.capture(), any(), any());
 
 			assertThat(grpcEingangCaptor.getValue().getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo("0815");
 		}
@@ -549,7 +574,7 @@ class FormDataEndpointITCase {
 		private GrpcFormData requestFormData() {
 			sendWebserviceRequest(REQUEST_XML_NAME);
 
-			verify(vorgangRemoteService).createVorgang(any(), grpcEingangCaptor.capture(), any());
+			verify(vorgangRemoteService).createVorgang(any(), grpcEingangCaptor.capture(), any(), any());
 			return grpcEingangCaptor.getValue().getFormData();
 		}
 	}
@@ -560,7 +585,7 @@ class FormDataEndpointITCase {
 				.andExpect(ResponseMatchers.noFault())
 				.andExpect(ResponseMatchers.payload(getResource(RESPONSE)));
 
-		verify(vorgangRemoteService).createVorgang(formDataCaptor.capture(), grpcEingangCaptor.capture(), organisationsEinheitIdCaptor.capture());
+		verify(vorgangRemoteService).createVorgang(formDataCaptor.capture(), grpcEingangCaptor.capture(), any(), any());
 
 		return response;
 	}
diff --git a/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java
index e359c1c58d2b85fc2326c74ac848ef4287f5d972..2a50225927053555819bbd1ac937ed0598088dd4 100644
--- a/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java
+++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java
@@ -31,7 +31,6 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
 import org.apache.commons.io.IOUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.google.protobuf.ByteString;
@@ -55,25 +54,28 @@ import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup;
 import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
 import io.grpc.stub.CallStreamObserver;
 import io.grpc.stub.StreamObserver;
+import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
 
 @Log4j2
+@AllArgsConstructor
 @Service
 public class VorgangRemoteService {
 
-	@Autowired
-	private VorgangManagerServerResolver vorgangManagerServerResolver;
+	private final VorgangManagerServerResolver vorgangManagerServerResolver;
 
-	public String createVorgang(FormData formData, GrpcEingang eingang, Optional<String> organisationsEinheitenId) {
+	private final GrpcEingangMapper grpcEingangMapper;
+
+	public String createVorgang(FormData formData, Optional<String> organisationsEinheitenId) {
 		var vorgangServiceStub = getVorgangServiceStub(organisationsEinheitenId);
 		var binaryFileServiceStub = getBinaryFileServiceStub(organisationsEinheitenId);
 
 		logConnection(organisationsEinheitenId, vorgangServiceStub.get());
 
 		try {
-			return createVorgang(formData, eingang, vorgangServiceStub.get(), binaryFileServiceStub.get());
+			return createVorgang(formData, grpcEingangMapper.toEingang(formData), vorgangServiceStub.get(), binaryFileServiceStub.get());
 		} finally {
 			finishStubConnections(List.of(vorgangServiceStub, binaryFileServiceStub));
 		}
diff --git a/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java
index 9d617ae52e65f0b17720abb50d13aac388ff430e..de97243af9a356da303522e4555b1509b540dc16 100644
--- a/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java
+++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java
@@ -23,27 +23,46 @@
  */
 package de.ozgcloud.eingang.router;
 
+import java.util.List;
 import java.util.Optional;
 
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import de.ozgcloud.eingang.common.formdata.FormData;
+import de.ozgcloud.eingang.common.formdata.FormHeader;
+import de.ozgcloud.eingang.common.formdata.ServiceKonto;
 import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
+import lombok.AllArgsConstructor;
 
+@AllArgsConstructor
 @Service
 public class VorgangService {
 
-	@Autowired
-	private VorgangRemoteService remoteService;
-
-	@Autowired
-	private GrpcEingangMapper grpcEingangMapper;
+	private final VorgangRemoteService remoteService;
 
 	public String createVorgang(FormData formData) {
-		var eingang = grpcEingangMapper.toEingang(formData);
-		var organisationsEinheitenId = Optional.ofNullable(formData.getZustaendigeStelle()).map(ZustaendigeStelle::getOrganisationseinheitenId);
+		var preparedFormData = preserveConsistency(formData);
+
+		return remoteService.createVorgang(preparedFormData, getOrganisationsEinheitId(preparedFormData));
+	}
+
+	private Optional<String> getOrganisationsEinheitId(FormData formData) {
+		return Optional.ofNullable(formData.getZustaendigeStelle()).map(ZustaendigeStelle::getOrganisationseinheitenId);
+	}
+
+	FormData preserveConsistency(FormData formData) {
+		if (hasNoPostfachAddress(formData)) {
+			return clearServiceKonto(formData);
+		}
+		return formData;
+	}
+
+	private boolean hasNoPostfachAddress(FormData formData) {
+		return Optional.ofNullable(formData.getHeader()).map(FormHeader::getServiceKonto).map(ServiceKonto::getPostfachAddresses).map(List::isEmpty)
+				.orElse(true);
+	}
 
-		return remoteService.createVorgang(formData, eingang, organisationsEinheitenId);
+	private FormData clearServiceKonto(FormData formData) {
+		return formData.toBuilder().header(formData.getHeader().toBuilder().serviceKonto(null).build()).build();
 	}
 }
\ No newline at end of file
diff --git a/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java
index 465b61fcdbe88fc611f3990c2a6ec00d5073ab96..993c973ca2f71c645734db5ab5039151b9a0543f 100644
--- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java
+++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java
@@ -79,6 +79,8 @@ class VorgangRemoteServiceTest {
 	private VorgangRemoteService remoteService;
 	@Mock
 	private VorgangManagerServerResolver resolver;
+	@Mock
+	private GrpcEingangMapper eingangMapper;
 
 	private VorgangCreator vorgangCreator;
 
@@ -115,6 +117,8 @@ class VorgangRemoteServiceTest {
 			when(resolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(any())).thenReturn(managableBinaryFileServiceStub);
 			when(managableBinaryFileServiceStub.get()).thenReturn(binaryFileServiceStub);
 
+			when(eingangMapper.toEingang(any())).thenReturn(eingang);
+
 			doNothing().when(remoteService).logConnection(any(), any());
 			doNothing().when(remoteService).finishStubConnections(any());
 		}
@@ -151,6 +155,13 @@ class VorgangRemoteServiceTest {
 				verify(remoteService).createVorgang(formData, eingang, vorgangServiceStub, binaryFileServiceStub);
 			}
 
+			@Test
+			void shouldCallEingangMapper() {
+				createVorgang();
+
+				verify(eingangMapper).toEingang(formData);
+			}
+
 			@Test
 			void shouldFinishStubConnection() {
 				createVorgang();
@@ -192,7 +203,7 @@ class VorgangRemoteServiceTest {
 
 		@SneakyThrows
 		private String createVorgang() {
-			return remoteService.createVorgang(formData, eingang, organisationsEinheitId);
+			return remoteService.createVorgang(formData, organisationsEinheitId);
 		}
 	}
 
diff --git a/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java
index 09a272ead29a6ef327ceb514b4305870459a0b8b..2db3d04b7e3ad7bdb2240c7a1a66d8b39cbb4ca8 100644
--- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java
+++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java
@@ -23,24 +23,31 @@
  */
 package de.ozgcloud.eingang.router;
 
-import static org.mockito.ArgumentMatchers.*;
+import static org.assertj.core.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
 import java.util.Optional;
 
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.Spy;
 
 import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.formdata.FormDataTestFactory;
+import de.ozgcloud.eingang.common.formdata.FormHeader;
+import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory;
+import de.ozgcloud.eingang.common.formdata.ServiceKonto;
+import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory;
 import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory;
-import de.ozgcloud.vorgang.vorgang.GrpcEingang;
 
 class VorgangServiceTest {
 
+	@Spy
 	@InjectMocks
 	private VorgangService service;
 	@Mock
@@ -48,26 +55,68 @@ class VorgangServiceTest {
 	@Mock
 	private VorgangRemoteService remoteService;
 
+	@DisplayName("Create vorgang")
 	@Nested
 	class TestCreateVorgang {
 
-		private FormData formData = FormDataTestFactory.create();
-		private GrpcEingang eingang = GrpcEingang.newBuilder().build();
+		private final FormData formData = FormDataTestFactory.create();
+		private final FormData preservedFormData = FormDataTestFactory.create();
 
 		@BeforeEach
 		void mockEingangMapper() {
-			when(eingangMapper.toEingang(any())).thenReturn(eingang);
+			doReturn(preservedFormData).when(service).preserveConsistency(formData);
+		}
+
+		@Test
+		void shouldPreserverConsistency() {
+			callCreateVorgang();
+
+			verify(service).preserveConsistency(formData);
 		}
 
 		@Test
 		void shouldCallRemoteService() {
-			callCreateVorgangNew();
+			callCreateVorgang();
 
-			verify(remoteService).createVorgang(formData, eingang, Optional.ofNullable(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID));
+			verify(remoteService).createVorgang(preservedFormData, Optional.ofNullable(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID));
 		}
 
-		private void callCreateVorgangNew() {
+		private void callCreateVorgang() {
 			service.createVorgang(formData);
 		}
 	}
+
+	@DisplayName("Preserve consistency")
+	@Nested
+	class TestPreserveConsistency {
+
+		private final ServiceKonto serviceKonto = ServiceKontoTestFactory.createBuilder().clearPostfachAddresses().build();
+		private final FormHeader header = FormHeaderTestFactory.createBuilder().serviceKonto(serviceKonto).build();
+		private final FormData formData = FormDataTestFactory.createBuilder().header(header).build();
+
+		@DisplayName("should set serviceKonto to null if no postfachAddress exists")
+		@Test
+		void shouldSetServiceKontoToNull() {
+			var consistentFormData = service.preserveConsistency(formData);
+
+			assertThat(consistentFormData.getHeader().getServiceKonto()).isNull();
+		}
+
+		@DisplayName("should keep serviceKonto if postfachAddress eixsts")
+		@Test
+		void shouldKeepServiceKonto() {
+			var consistentFormData = service.preserveConsistency(FormDataTestFactory.create());
+
+			assertThat(consistentFormData.getHeader().getServiceKonto()).isEqualTo(FormHeaderTestFactory.SERVICE_KONTO);
+		}
+
+		@DisplayName("should proceed without exception on missing serviceKonto")
+		@Test
+		void shouldProceedWithoutException() {
+			var formDataWithoutServiceKonto = FormDataTestFactory.createBuilder()
+					.header(FormHeaderTestFactory.createBuilder().serviceKonto(null).build()).build();
+
+			assertDoesNotThrow(() -> service.preserveConsistency(formDataWithoutServiceKonto));
+		}
+	}
 }
\ No newline at end of file
diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java
index 6b3bcd60c522a6ceb8a602486baa69b51a269c8c..8ab2ef0721098071ed195be0f18fcdd6a6e8f456 100644
--- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java
+++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java
@@ -1,6 +1,7 @@
 package de.ozgcloud.eingang.xta;
 
 import static org.assertj.core.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
 import java.lang.annotation.ElementType;
@@ -8,7 +9,6 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 import java.util.List;
-import java.util.Optional;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
@@ -18,16 +18,23 @@ import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Captor;
+import org.mockito.Mock;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.boot.test.mock.mockito.SpyBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.test.context.ActiveProfiles;
 
 import de.ozgcloud.eingang.Application;
 import de.ozgcloud.eingang.common.formdata.FormData;
+import de.ozgcloud.eingang.router.ManagableStub;
+import de.ozgcloud.eingang.router.VorgangManagerServerResolver;
 import de.ozgcloud.eingang.router.VorgangRemoteService;
+import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub;
 import de.ozgcloud.vorgang.vorgang.GrpcEingang;
+import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
+import io.grpc.Channel;
 
 @SpringBootTest(classes = {
 		Application.class,
@@ -36,8 +43,22 @@ import de.ozgcloud.vorgang.vorgang.GrpcEingang;
 @ActiveProfiles({ "itcase" })
 class XtaITCase {
 
-	@MockBean
+	@SpyBean
 	private VorgangRemoteService vorgangRemoteService;
+	@MockBean
+	private VorgangManagerServerResolver resolver;
+
+	@Mock
+	private ManagableStub<VorgangServiceBlockingStub> vorgangManageableServiceStub;
+	@Mock
+	private VorgangServiceBlockingStub vorgangServiceStub;
+	@Mock
+	private ManagableStub<BinaryFileServiceStub> binaryFileManageableServiceStub;
+	@Mock
+	private BinaryFileServiceStub binaryFileServiceStub;
+
+	@Mock
+	private Channel channel;
 
 	@MockBean
 	private XtaRemoteService xtaRemoteService;
@@ -48,18 +69,26 @@ class XtaITCase {
 	@Captor
 	private ArgumentCaptor<GrpcEingang> eingangArgumentCaptor;
 
-	@Captor
-	private ArgumentCaptor<Optional<String>> organisationseinheitenIdArgumentCaptor;
-
 	@Autowired
 	private XtaRunner runner;
 
+	@BeforeEach
+	void initTest() {
+		when(resolver.resolveVorgangServiceBlockingStubByOrganisationseinheitenId(any())).thenReturn(vorgangManageableServiceStub);
+		when(vorgangManageableServiceStub.get()).thenReturn(vorgangServiceStub);
+		when(vorgangServiceStub.getChannel()).thenReturn(channel);
+		when(channel.authority()).thenReturn("authorityDummy");
+
+		when(resolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(any())).thenReturn(binaryFileManageableServiceStub);
+		when(binaryFileManageableServiceStub.get()).thenReturn(binaryFileServiceStub);
+	}
+
 	@DisplayName("run get xta messages")
 	@Nested
 	class TestRunGetXtaMessages {
 		@BeforeEach
 		void setup() {
-			when(vorgangRemoteService.createVorgang(any(), any(), any())).thenReturn("vorgangId(unused)");
+			doReturn("vorgangId(unused)").when(vorgangRemoteService).createVorgang(any(), any(), any(), any());
 		}
 
 		@DisplayName("should have three representations with pdf")
@@ -190,12 +219,9 @@ class XtaITCase {
 			verify(vorgangRemoteService, times(1))
 					.createVorgang(
 							formDataArgumentCaptor.capture(),
-							eingangArgumentCaptor.capture(),
-							organisationseinheitenIdArgumentCaptor.capture()
-					);
+							eingangArgumentCaptor.capture(), any(), any());
 
 			assertThat(formDataArgumentCaptor.getValue()).isNotNull();
-			assertThat(eingangArgumentCaptor.getValue()).isNotNull();
 
 			return eingangArgumentCaptor.getValue();
 		}
@@ -203,8 +229,7 @@ class XtaITCase {
 
 	private void mockNachrichtenBroker(String zipFileName) {
 		when(xtaRemoteService.getMessage(any(XtaMessageId.class))).thenReturn(
-				XtaResponseTestFactory.createGetMessageResponse(zipFileName)
-		);
+				XtaResponseTestFactory.createGetMessageResponse(zipFileName));
 		when(xtaRemoteService.getMessagesMetadata())
 				.thenReturn(XtaResponseTestFactory.createGetStatusListResponse(List.of(zipFileName)));
 		when(xtaRemoteService.getNextMessagesMetadata(any()))