diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java
index f051953be4c4f0639765059ab839c37b6d597751..e496826bf677bb6bd3a9202f54095ce4a5140e75 100644
--- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java
+++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java
@@ -61,7 +61,6 @@ public class FormDataTestFactory {
 		return FormData.builder()
 				.header(FormHeaderTestFactory.create())
 				.antragsteller(AntragstellerTestFactory.create())
-				.zustaendigeStelles(List.of(ZustaendigeStelleTestFactory.create()))
 				.formData(Map.of(
 						SIMPLE_VALUE_KEY, SIMPLE_VALUE,
 						SUBFORM_KEY, SUBFORM_VALUE,
diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java
index 7d90ccc779b105a4667b1ad1f568fa83d98d2baa..2982a7a881fd716d3c7dec518a6053786bbf00d8 100644
--- a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java
+++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java
@@ -6,8 +6,6 @@ import static org.mockito.Mockito.*;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 
-import java.util.List;
-
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
@@ -44,11 +42,11 @@ class EnterpriseEntryITCase {
 
 	@Test
 	void shouldCallVorgangService() {
-		when(vorgangService.createVorgangs(any())).thenReturn(List.of(VORGANG_ID));
+		when(vorgangService.createVorgang(any())).thenReturn(VORGANG_ID);
 
 		doPostRequest();
 
-		verify(vorgangService).createVorgangs(any());
+		verify(vorgangService).createVorgang(any());
 	}
 
 	@SneakyThrows
@@ -67,7 +65,7 @@ class EnterpriseEntryITCase {
 
 		@BeforeEach
 		void mock() {
-			when(vorgangService.createVorgangs(any())).thenReturn(List.of(VORGANG_ID));
+			when(vorgangService.createVorgang(any())).thenReturn(VORGANG_ID);
 		}
 
 		@Test
@@ -115,7 +113,7 @@ class EnterpriseEntryITCase {
 					.file(buildJsonFileMock("representation", "jugendsozialarbeit_an_schulen-DM.json")))
 					.andExpect(status().is2xxSuccessful());
 
-			verify(vorgangService).createVorgangs(formDataCaptor.capture());
+			verify(vorgangService).createVorgang(formDataCaptor.capture());
 			return formDataCaptor.getValue();
 		}
 
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 ca9264cd8aee24c77e0b46ff92dc5c9ced1ade56..91d203b2fd562200dc9f9df7990e63d2dadaac99 100644
--- a/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java
+++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java
@@ -40,12 +40,12 @@ public class VorgangService {
 
 	private final VorgangRemoteService remoteService;
 
-	public List<String> createVorgangs(FormData formData) {
+	public String createVorgang(FormData formData) {
 		var preparedFormData = preserveConsistency(formData);
 		var organisationseinheitIds = getOrganisationsEinheitIds(formData);
 		return organisationseinheitIds.isEmpty()
-				? List.of(createVorgangOnMissingZustaendigeStelle(preparedFormData))
-				: createMultipleVorgangs(preparedFormData, organisationseinheitIds);
+				? createVorgangOnMissingZustaendigeStelle(preparedFormData)
+				: createMultipleVorgangs(preparedFormData, organisationseinheitIds).getFirst();
 	}
 
 	String createVorgangOnMissingZustaendigeStelle(FormData formData) {
diff --git a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java
index 1ddf53694607b896d65fe2a12d67afb9103ff658..fbb17f294ffbe8a3e51012c16422c73334c12f1e 100644
--- a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java
+++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java
@@ -37,6 +37,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
 import de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory;
+import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.formdata.FormDataTestFactory;
 import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory;
 import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory;
@@ -49,6 +50,15 @@ class GrpcEingangMapperITCase {
 	@Autowired
 	private GrpcEingangMapper grpcEingangMapper;
 
+	private FormData inputFormData;
+
+	@BeforeEach
+	void mock() {
+		inputFormData = FormDataTestFactory.createBuilder()
+				.zustaendigeStelle(ZustaendigeStelleTestFactory.create())
+				.build();
+	}
+
 	@DisplayName("Mapped GrpcEingang")
 	@Nested
 	class TestToEingang {
@@ -59,8 +69,8 @@ class GrpcEingangMapperITCase {
 
 			@Test
 			void antragstellerShouldBeMapped() {
-
-				var antragSteller = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)).getAntragsteller();
+				var antragSteller = grpcEingangMapper.toEingang(inputFormData,
+						Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)).getAntragsteller();
 
 				assertThat(antragSteller.getPostfachId()).isEqualTo(AntragstellerTestFactory.POSTFACH_ID);
 				assertThat(antragSteller.getVorname()).isEqualTo(AntragstellerTestFactory.VORNAME);
@@ -69,8 +79,8 @@ class GrpcEingangMapperITCase {
 
 			@Test
 			void dataShouldBeMapped() {
-
-				var antragsteller = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)).getAntragsteller();
+				var antragsteller = grpcEingangMapper.toEingang(inputFormData,
+						Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)).getAntragsteller();
 
 				assertThat(antragsteller.getOtherData().getFieldList()).hasSize(1);
 				assertThat(antragsteller.getOtherData().getField(0).getName()).isEqualTo(AntragstellerTestFactory.GEBIET_BEZEICHNUNG_KEY);
@@ -83,8 +93,10 @@ class GrpcEingangMapperITCase {
 		class TestZustaendigeStelle {
 			@Test
 			void eingangShouldHaveZustaendigeStelle() {
-				var zustaendigeStelle = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)).getZustaendigeStelle();
+				var zustaendigeStelle = grpcEingangMapper.toEingang(inputFormData, Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID))
+						.getZustaendigeStelle();
 
+				assertThat(zustaendigeStelle).isNotNull();
 				assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID);
 				assertThat(zustaendigeStelle.getEmail()).isEqualTo(ZustaendigeStelleTestFactory.EMAIL);
 			}
@@ -92,8 +104,9 @@ class GrpcEingangMapperITCase {
 			@DisplayName("should map empty organisationeinheitId if missing")
 			@Test
 			void shouldMapEmptyOrganisationeinheitIdIfMissing() {
-				var zustaendigeStelle = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.empty()).getZustaendigeStelle();
+				var zustaendigeStelle = grpcEingangMapper.toEingang(inputFormData, Optional.empty()).getZustaendigeStelle();
 
+				assertThat(zustaendigeStelle).isNotNull();
 				assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEmpty();
 			}
 		}
@@ -107,7 +120,7 @@ class GrpcEingangMapperITCase {
 			@BeforeEach
 			void init() {
 
-				eingang = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.empty());
+				eingang = grpcEingangMapper.toEingang(inputFormData, Optional.empty());
 			}
 
 			@Test
@@ -187,7 +200,8 @@ class GrpcEingangMapperITCase {
 			void valueListShouldGenerateFields() {
 
 				GrpcEingang eingang = grpcEingangMapper
-						.toEingang(FormDataTestFactory.createBuilder().formData(Map.of("key", List.of("value1", "value2"))).build(), Optional.empty());
+						.toEingang(FormDataTestFactory.createBuilder().formData(Map.of("key", List.of("value1", "value2"))).build(),
+								Optional.empty());
 
 				assertThat(eingang.getFormData().getFieldCount()).isEqualTo(2);
 			}
@@ -197,7 +211,8 @@ class GrpcEingangMapperITCase {
 
 				GrpcEingang eingang = grpcEingangMapper
 						.toEingang(FormDataTestFactory.createBuilder()
-								.formData(Map.of("key-1", List.of(Map.of("sub_key", "value1"), Map.of("sub_key", "value2")))).build(), Optional.empty());
+										.formData(Map.of("key-1", List.of(Map.of("sub_key", "value1"), Map.of("sub_key", "value2")))).build(),
+								Optional.empty());
 
 				assertThat(eingang.getFormData().getFormCount()).isEqualTo(2);
 				assertThat(eingang.getFormData().getForm(0).getFieldCount()).isEqualTo(1);
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 c25e940c72f3960c24137a48911fec615f85042d..bb1294f2bad530b55eb9dafb45b5dc86dac05306 100644
--- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java
+++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java
@@ -57,58 +57,107 @@ class VorgangServiceTest {
 	@Mock
 	private VorgangRemoteService remoteService;
 
-	private static final String VORGANG_ID_2 = "vorgangId2";
 	private static final String ORGANISATIONSEINHEIT_ID_2 = "08150816";
 
-	public static final List<String> ORGANISATIONSEINHEIT_IDS = List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID,
-			ORGANISATIONSEINHEIT_ID_2);
-
-	private FormData formData;
-	private FormData preservedFormData;
-
-	@BeforeEach
-	void setup() {
-		formData = FormDataTestFactory.create();
-		preservedFormData = FormDataTestFactory.createBuilder()
-				.zustaendigeStelle(ZustaendigeStelleTestFactory.createBuilder()
-						.organisationseinheitenId(ORGANISATIONSEINHEIT_ID_2)
-						.build())
-				.build();
-	}
-
-	@DisplayName("Create vorgangs")
+	@DisplayName("Create vorgang")
 	@Nested
 	class TestCreateVorgangs {
+		private FormData formData;
+		private FormData preservedFormData;
 
 		@BeforeEach
-		void mockEingangMapper() {
-			doReturn(preservedFormData).when(service).preserveConsistency(formData);
+		void setup() {
+			formData = FormDataTestFactory.create();
+			preservedFormData = FormDataTestFactory.createBuilder()
+					.zustaendigeStelle(ZustaendigeStelleTestFactory.createBuilder()
+							.organisationseinheitenId(ORGANISATIONSEINHEIT_ID_2)
+							.build())
+					.build();
+			doReturn(preservedFormData).when(service).preserveConsistency(any());
+		}
+
+		@DisplayName("should call preserve consistency")
+		@Test
+		void shouldCallPreserveConsistency() {
+			mockOrganisationseinheitId();
+
+			createVorgang();
+
+			verify(service).preserveConsistency(eq(formData));
+		}
+
+		@DisplayName("should call get organisationseinheit ids")
+		@Test
+		void shouldCallGetOrganisationseinheitIds() {
+			mockOrganisationseinheitId();
+
+			createVorgang();
+
+			verify(service).getOrganisationsEinheitIds(eq(formData));
+		}
+
+		@DisplayName("should call create multiple vorgangs")
+		@Test
+		void shouldCallCreateMultipleVorgangs() {
+			var organisationseinheitIds = List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID, ORGANISATIONSEINHEIT_ID_2);
+			mockOrganisationseinheitIds(organisationseinheitIds);
+
+			createVorgang();
+
+			verify(service).createMultipleVorgangs(
+					eq(preservedFormData),
+					eq(organisationseinheitIds));
+		}
+
+		@DisplayName("should return first vorgang id with multiple organisationseinheits")
+		@Test
+		void shouldReturnFirstVorgangIdWithMultipleOrganisationseinheits() {
+			var organisationseinheitIds = List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID, ORGANISATIONSEINHEIT_ID_2);
+			mockOrganisationseinheitIds(organisationseinheitIds);
+
+			var vorgangIds = createVorgang();
+
+			assertThat(vorgangIds).isEqualTo(VORGANG_ID);
+		}
+
+		private void mockOrganisationseinheitId() {
+			doReturn(List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)).when(service).getOrganisationsEinheitIds(any());
+			doReturn(List.of(VORGANG_ID)).when(service).createMultipleVorgangs(any(), any());
 		}
 
-		@DisplayName("should return multiple vorgang ids for each organisationseinheit")
+		private void mockOrganisationseinheitIds(List<String> organisationseinheitIds) {
+			doReturn(organisationseinheitIds).when(service)
+					.getOrganisationsEinheitIds(any());
+			doReturn(List.of(VORGANG_ID, "otherId")).when(service).createMultipleVorgangs(any(), any());
+		}
+
+		@DisplayName("should call create vorgang on missing zustaendige stelle if organisationseinheit is missing")
 		@Test
-		void shouldReturnMultipleVorgangIdsForEachOrganisationseinheit() {
-			doReturn(ORGANISATIONSEINHEIT_IDS).when(service).getOrganisationsEinheitIds(formData);
-			doReturn(List.of(VORGANG_ID, VORGANG_ID_2)).when(service).createMultipleVorgangs(preservedFormData, ORGANISATIONSEINHEIT_IDS);
+		void shouldCallCreateVorgangOnMissingZustaendigeStelleIfOrganisationseinheitIsMissing() {
+			mockMissingOrganisationseinheitIds();
 
-			var vorgangIds = createVorgangs();
+			createVorgang();
 
-			assertThat(vorgangIds).containsExactly(VORGANG_ID, VORGANG_ID_2);
+			verify(service).createVorgangOnMissingZustaendigeStelle(eq(preservedFormData));
 		}
 
 		@DisplayName("should return single vorgang id if organisationseinheit is missing")
 		@Test
 		void shouldReturnSingleVorgangIdIfOrganisationseinheitIsMissing() {
-			doReturn(emptyList()).when(service).getOrganisationsEinheitIds(formData);
-			doReturn(VORGANG_ID).when(service).createVorgangOnMissingZustaendigeStelle(preservedFormData);
+			mockMissingOrganisationseinheitIds();
 
-			var vorgangIds = createVorgangs();
+			var firstVorgangId = createVorgang();
+
+			assertThat(firstVorgangId).isEqualTo(VORGANG_ID);
+		}
 
-			assertThat(vorgangIds).containsExactly(VORGANG_ID);
+		private void mockMissingOrganisationseinheitIds() {
+			doReturn(emptyList()).when(service).getOrganisationsEinheitIds(any());
+			doReturn(VORGANG_ID).when(service).createVorgangOnMissingZustaendigeStelle(any());
 		}
 
-		private List<String> createVorgangs() {
-			return service.createVorgangs(formData);
+		private String createVorgang() {
+			return service.createVorgang(formData);
 		}
 	}
 
@@ -118,11 +167,22 @@ class VorgangServiceTest {
 		@Mock
 		private FormData formData;
 
+		@BeforeEach
+		void mock() {
+			when(remoteService.createVorgang(any(), any())).thenReturn(VORGANG_ID);
+		}
+
+		@DisplayName("should call create vorgang")
+		@Test
+		void shouldCallCreateVorgang() {
+			service.createVorgangOnMissingZustaendigeStelle(formData);
+
+			verify(remoteService).createVorgang(formData, Optional.empty());
+		}
+
 		@DisplayName("should return")
 		@Test
 		void shouldReturn() {
-			when(remoteService.createVorgang(formData, Optional.empty())).thenReturn(VORGANG_ID);
-
 			var vorgangId = service.createVorgangOnMissingZustaendigeStelle(formData);
 
 			assertThat(vorgangId).isEqualTo(VORGANG_ID);
@@ -132,24 +192,55 @@ class VorgangServiceTest {
 	@DisplayName("create multiple vorgangs")
 	@Nested
 	class TestCreateMultipleVorgangs {
+
+		private static final String VORGANG_ID_2 = "vorgangId2";
+		private static final List<String> ORGANISATIONSEINHEIT_IDS = List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID,
+				ORGANISATIONSEINHEIT_ID_2);
+
 		@Mock
 		private FormData formData;
 
+		@BeforeEach
+		void mock() {
+			when(remoteService.createVorgang(any(), any()))
+					.thenReturn(VORGANG_ID)
+					.thenReturn(VORGANG_ID_2);
+		}
+
+		@DisplayName("should call create vorgang twice")
+		@Test
+		void shouldCallCreateVorgangTwice() {
+			service.createMultipleVorgangs(formData, ORGANISATIONSEINHEIT_IDS);
+
+			verify(remoteService).createVorgang(formData, Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID));
+			verify(remoteService).createVorgang(formData, Optional.of(ORGANISATIONSEINHEIT_ID_2));
+		}
+
 		@DisplayName("should return")
 		@Test
 		void shouldReturn() {
-			when(remoteService.createVorgang(formData, Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID))).thenReturn(VORGANG_ID);
-			when(remoteService.createVorgang(formData, Optional.of(ORGANISATIONSEINHEIT_ID_2))).thenReturn(VORGANG_ID_2);
-
 			var vorgangIds = service.createMultipleVorgangs(formData, ORGANISATIONSEINHEIT_IDS);
 
-			assertThat(vorgangIds).containsExactly(VORGANG_ID, VORGANG_ID_2);
+			assertThat(vorgangIds).containsExactlyInAnyOrder(VORGANG_ID, VORGANG_ID_2);
 		}
 	}
 
 	@DisplayName("get organisationseinheit ids")
 	@Nested
 	class TestGetOrganisationseinheitIds {
+
+		private FormData preservedFormData;
+
+		@BeforeEach
+		void mock() {
+			preservedFormData = FormDataTestFactory.createBuilder()
+					.zustaendigeStelle(ZustaendigeStelleTestFactory.create())
+					.zustaendigeStelle(ZustaendigeStelleTestFactory.createBuilder()
+							.organisationseinheitenId(ORGANISATIONSEINHEIT_ID_2)
+							.build())
+					.build();
+		}
+
 		@DisplayName("should return")
 		@Test
 		void shouldReturn() {
diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java
index dba7dca209d04d01b2a244572d522c98ed51fd0b..65c69a87ebc51b3313b8b4ec84d24f7d10170cf0 100644
--- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java
+++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java
@@ -34,7 +34,6 @@ import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter;
 import de.ozgcloud.eingang.semantik.formbased.FormBasedSemantikAdapter;
 import lombok.extern.log4j.Log4j2;
 
-
 @Log4j2
 @Service
 public class SemantikAdapter {
@@ -50,7 +49,7 @@ public class SemantikAdapter {
 		formData = parseByEngineAdapter(formData);
 		formData = parseByFormAdapter(formData);
 
-		return vorgangService.createVorgangs(formData).getFirst();
+		return vorgangService.createVorgang(formData);
 	}
 
 	private FormData parseByEngineAdapter(FormData formData) {
diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java
index 46c379d15fc6ffbe3b68841a47a8443721a6a8d1..4fff0ea90b799476bac4f0b3b3c39e4e8378935f 100644
--- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java
+++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java
@@ -74,7 +74,6 @@ class AfmZustaendigeStelleMapper implements AfmEngineBasedMapper {
 
 		return formData.toBuilder()
 				.formData(addMetaDataFlag(formData))
-				.clearZustaendigeStelles()
 				.zustaendigeStelle(zustaendigeStelle).build();
 	}
 
diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapper.java
index a140e306f7c2f10030a9ba12cb2132d86201bb87..a99ae318b214154314e9cf5752dcf13ce03d89fe 100644
--- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapper.java
+++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapper.java
@@ -46,7 +46,6 @@ public class ZustaendigeStelleMetadataMapper {
 				.map(this::readZustaendigeStelleMetadata)
 				.map(this::mapZustaendigeStelle)
 				.map(zustaendigeStelle -> formData.toBuilder()
-						.clearZustaendigeStelles()
 						.zustaendigeStelle(zustaendigeStelle).build())
 				.orElse(formData);
 	}
diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java
index 8d9f07cf157a20eae9795b7a09bccb6ab5ccb868..82d0967071bcfcabad3b9a7803d0e23c77e69a7a 100644
--- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java
+++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java
@@ -2,9 +2,9 @@ package de.ozgcloud.eingang.semantik.enginebased.dfoerdermittel;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
@@ -103,23 +103,30 @@ public class DFoerdermittelEngineBasedSemantikAdapter implements EngineBasedSema
 		return Optional.ofNullable((String) getFachnachricht(formData).get(KEY_ORGANISATIONS_EINHEIT_ID))
 				.map(orgaId -> addOrganisationsEinheitId(orgaId, formData.getZustaendigeStelles()))
 				.map(zustStelle -> formData.toBuilder()
-						.clearZustaendigeStelles()
 						.zustaendigeStelle(zustStelle)
 						.build())
 				.orElse(formData);
 	}
 
-	private ZustaendigeStelle addOrganisationsEinheitId(String orgaId, List<ZustaendigeStelle> zustaendigeStelleList) {
+	private ZustaendigeStelle addOrganisationsEinheitId(String orgaId, Collection<ZustaendigeStelle> zustaendigeStelles) {
 		ZustaendigeStelle.ZustaendigeStelleBuilder zustaendigeStelleBuilder;
-		if (Objects.isNull(zustaendigeStelleList) || zustaendigeStelleList.isEmpty()) {
+		if (Objects.isNull(zustaendigeStelles) || zustaendigeStelles.isEmpty()) {
 			zustaendigeStelleBuilder = ZustaendigeStelle.builder();
 		} else {
-			zustaendigeStelleBuilder = zustaendigeStelleList.getFirst().toBuilder();
+			var zustaendigeStellesIterator = zustaendigeStelles.iterator();
+			var zustaendigeStelle = zustaendigeStellesIterator.next();
+			logErrorForExistingZustaendigeStelle();
+			zustaendigeStelleBuilder = zustaendigeStelle.toBuilder();
 		}
 
 		return zustaendigeStelleBuilder.organisationseinheitenId(orgaId).build();
 	}
 
+	void logErrorForExistingZustaendigeStelle() {
+		LOG.error(
+				"Expect no existing ZustaendigeStelle for DFoerdermittel! Continuing with two ZustaendigeStelles, the original(s) and a copy of the first with overridden OrganisationsEinheitId.");
+	}
+
 	FormData addFormName(FormData formData) {
 		return mapWithModifiedHeader(formData, headerBuilder -> headerBuilder.formName(
 				getNonEmptyFachnachrichtValueByKey(formData, KEY_FORM_NAME)
diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapper.java
index aa1f66b8deaf00d48a63efcbe284de82a88163fe..e58650aca3e1168d826bf4286be4b742873e5c5c 100644
--- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapper.java
+++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapper.java
@@ -40,7 +40,6 @@ class FormSolutionsZustaendigeStelleMapper implements FormSolutionsEngineBasedMa
 	@Override
 	public FormData parseFormData(FormData formData) {
 		return formData.toBuilder()
-				.clearZustaendigeStelles()
 				.zustaendigeStelle(buildZustaendigeStelle(formData))
 				.formData(removeProcessedData(formData))
 				.build();
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java
index 5adf04373769060992244c6f13d3f9689c26201b..ea63f2379a7391af25178495e00d3af611cb04e4 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java
@@ -99,7 +99,7 @@ class SemantikAdapterTest {
 			doReturn(List.of(engineAdapter)).when(adapter).getResponsibleEngineAdapters(formData);
 			when(engineAdapter.parseFormData(any())).thenReturn(engineAdapterResponse);
 			when(formAdapter.parseFormData(any())).thenReturn(formAdapterResponse);
-			when(vorgangService.createVorgangs(formAdapterResponse)).thenReturn(List.of(VORGANG_ID, "otherId"));
+			when(vorgangService.createVorgang(any())).thenReturn(VORGANG_ID);
 		}
 
 		@Test
@@ -127,7 +127,7 @@ class SemantikAdapterTest {
 		void shouldCallVorgangRemoteService() {
 			adapter.processFormData(formData);
 
-			verify(vorgangService).createVorgangs(formAdapterResponse);
+			verify(vorgangService).createVorgang(formAdapterResponse);
 		}
 
 		@DisplayName("should return first vorgang id")
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java
index 1c580defa779a5dc55cb4b066ae1b4df4b96c7d1..e9abbeff9c2dc8b2af9f03c35006fe667cc3acbc 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java
@@ -37,6 +37,7 @@ import org.mockito.Spy;
 
 import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.formdata.FormDataTestFactory;
+import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
 
 class AfmZustaendigeStelleMapperTest {
 
@@ -78,22 +79,27 @@ class AfmZustaendigeStelleMapperTest {
 			void shouldMapOrganisationseinheitenId() {
 				var parsedFormData = parseZustaendigeStelleData(formData);
 
-				assertThat(parsedFormData.getZustaendigeStelles().getFirst().getOrganisationseinheitenId())
-						.isEqualTo(AfmZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID);
+				assertThat(parsedFormData.getZustaendigeStelles())
+						.extracting(ZustaendigeStelle::getOrganisationseinheitenId)
+						.containsExactly(AfmZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID);
 			}
 
 			@Test
 			void shouldMapBezeichnung() {
 				var parsedFormData = parseZustaendigeStelleData(formData);
 
-				assertThat(parsedFormData.getZustaendigeStelles().getFirst().getBezeichnung()).isEqualTo(BEZEICHNUNG);
+				assertThat(parsedFormData.getZustaendigeStelles())
+						.extracting(ZustaendigeStelle::getBezeichnung)
+						.containsExactly(BEZEICHNUNG);
 			}
 
 			@Test
 			void shouldMapEmail() {
 				var parsedFormData = parseZustaendigeStelleData(formData);
 
-				assertThat(parsedFormData.getZustaendigeStelles().getFirst().getEmail()).isEqualTo(AfmZustaendigeStelleTestFactory.EMAIL);
+				assertThat(parsedFormData.getZustaendigeStelles())
+						.extracting(ZustaendigeStelle::getEmail)
+						.containsExactly(AfmZustaendigeStelleTestFactory.EMAIL);
 			}
 
 			@Test
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperTest.java
index e0c8c341b1f6df2d98794ece6945ec37ee453995..d2b0412c81d0830aa3080902ea8c91371fac7e17 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperTest.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperTest.java
@@ -1,6 +1,5 @@
 package de.ozgcloud.eingang.semantik.enginebased.afm;
 
-import static java.util.Collections.*;
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
@@ -45,7 +44,6 @@ class ZustaendigeStelleMetadataMapperTest {
 			behoerdeMetadataFile = IncomingFileTestFactory.createBuilder().name(ZustaendigeStelleMetadataMapper.BEHOERDE_METADATA_FILE_NAME)
 					.build();
 			formData = FormDataTestFactory.createBuilder()
-					.zustaendigeStelles(emptyList())
 					.representation(behoerdeMetadataFile).build();
 		}
 
@@ -84,10 +82,8 @@ class ZustaendigeStelleMetadataMapperTest {
 	@Nested
 	class TestReadBehoerdeMetadata {
 
-
 		private File brokenFile;
 
-
 	}
 
 	@Nested
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java
index 875c8c91fa584b34be8396795a54981e903048ba..1d078b3f189f4469c0a81e7f43da820f35b654fe 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java
@@ -26,6 +26,8 @@ import de.ozgcloud.eingang.common.formdata.IncomingFile;
 import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory;
 import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory;
 import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier;
+import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
+import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory;
 import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory;
 
 class DFoerdermittelEngineBasedSemantikAdapterTest {
@@ -216,12 +218,51 @@ class DFoerdermittelEngineBasedSemantikAdapterTest {
 
 	@Nested
 	class TestAddOrganisationsEinheitId {
-		@Test
-		void shouldHaveOrganisationsEinheitId() {
-			var formData = adapter.addOrganisationsEinheitId(DFoerdermittelFormDataTestFactory.create());
 
-			var organisationseinheitenId = formData.getZustaendigeStelles().getFirst().getOrganisationseinheitenId();
-			assertThat(organisationseinheitenId).isEqualTo(ORGANISATIONS_EINHEIT_ID);
+		@DisplayName("with no existing zustaendige stelles")
+		@Nested
+		class TestWithNoExistingZustaendigeStelles {
+			@Test
+			void shouldHaveOrganisationsEinheitId() {
+				var inputFormData = DFoerdermittelFormDataTestFactory.create();
+
+				var formData = adapter.addOrganisationsEinheitId(inputFormData);
+
+				assertThat(formData.getZustaendigeStelles())
+						.extracting(ZustaendigeStelle::getOrganisationseinheitenId)
+						.containsExactly(ORGANISATIONS_EINHEIT_ID);
+			}
+		}
+
+		@DisplayName("with one existing zustaendige stelle")
+		@Nested
+		class TestWithOneExistingZustaendigeStelle {
+
+			private FormData inputFormData;
+
+			@BeforeEach
+			void mock() {
+				inputFormData = DFoerdermittelFormDataTestFactory.createBuilder()
+						.zustaendigeStelle(ZustaendigeStelleTestFactory.create())
+						.build();
+			}
+
+			@Test
+			void shouldHaveOrganisationsEinheitId() {
+				var formData = adapter.addOrganisationsEinheitId(inputFormData);
+
+				assertThat(formData.getZustaendigeStelles())
+						.extracting(ZustaendigeStelle::getOrganisationseinheitenId)
+						.containsExactly(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID, ORGANISATIONS_EINHEIT_ID);
+			}
+
+			@DisplayName("should log error for existing zustaendige stelle")
+			@Test
+			void shouldLogErrorForExistingZustaendigeStelle() {
+				adapter.addOrganisationsEinheitId(inputFormData);
+
+				verify(adapter).logErrorForExistingZustaendigeStelle();
+			}
 		}
 	}
 
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java
index 8b8c9bf4103b13f085a7910361925a11e7b90297..7bd4cc6a52d36405595a47500be02c2919066c6f 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java
@@ -8,6 +8,7 @@ import java.util.function.Predicate;
 import java.util.stream.IntStream;
 
 import de.ozgcloud.eingang.common.formdata.FormData;
+import de.ozgcloud.eingang.common.formdata.FormDataTestFactory;
 import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory;
 import lombok.Builder;
 
@@ -35,7 +36,7 @@ class DFoerdermittelFormDataTestFactory {
 	}
 
 	static FormData.FormDataBuilder createBuilderWithFachnachricht(Fachnachricht fachnachricht) {
-		return FormData.builder()
+		return FormDataTestFactory.createBuilder()
 				.header(FormHeaderTestFactory.create())
 				.formData(Map.of("Fachnachricht", createFachnachrichtMapWithFachnachricht(fachnachricht)));
 	}
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java
index 854931d9a9efb2357125d60dbc8caf448e259467..b0535b604a7120b70b0b8803c8003cc038cb9ae1 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java
@@ -50,6 +50,7 @@ import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.formdata.FormDataTestFactory;
 import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory;
 import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory;
+import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
 import de.ozgcloud.eingang.semantik.SemantikAdapter;
 import lombok.SneakyThrows;
 
@@ -236,14 +237,16 @@ public class FormSolutionsEngineBasedAdapterITCase {
 			void shouldMap() {
 				var data = engineAdapter.parseFormData(formData);
 
-				assertThat(data.getZustaendigeStelles()).isNotNull();
+				assertThat(data.getZustaendigeStelles()).isNotNull().isNotEmpty();
 			}
 
 			@Test
 			void shouldMapOrganistaionseinheitenId() {
 				var data = engineAdapter.parseFormData(formData);
 
-				assertThat(data.getZustaendigeStelles().getFirst().getOrganisationseinheitenId()).isEqualTo("test");
+				assertThat(data.getZustaendigeStelles())
+						.extracting(ZustaendigeStelle::getOrganisationseinheitenId)
+						.containsExactly("test");
 			}
 		}
 	}
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapperTest.java
index d5dc287138426b71beeb3cbb56e267a0d2f88efe..bd31c4218074b8bc343d3327e10455885df7371a 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapperTest.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapperTest.java
@@ -27,7 +27,6 @@ import static de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory.*
 import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsZustaendigeStelleMapper.*;
 import static org.assertj.core.api.Assertions.*;
 
-import java.util.Collections;
 import java.util.Map;
 
 import org.junit.jupiter.api.BeforeEach;
@@ -53,7 +52,6 @@ class FormSolutionsZustaendigeStelleMapperTest {
 		@BeforeEach
 		void setup() {
 			formData = FormDataTestFactory.createBuilder()
-					.zustaendigeStelles(Collections.emptyList())
 					.formData(Map.of(
 							FormDataTestFactory.SIMPLE_VALUE_KEY, FormDataTestFactory.SIMPLE_VALUE,
 							FormSolutionsZustaendigeStelleMapper.ZUSTAENDIGE_STELLE, ORGANISATIONSEINHEIT_ID))
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragITCase.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragITCase.java
index c1ff751f7c17ff4a56869bdda7a7e842a491e2f0..1dc7a653cbff13129ba7339deebce6315cc5637b 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragITCase.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragITCase.java
@@ -51,10 +51,9 @@ public class MantelantragITCase {
 	@SpyBean
 	SemantikAdapter semantikAdapter;
 
-	private FormData formData;
-
 	@Captor
 	ArgumentCaptor<FormData> formDataCaptor;
+	private FormData formData;
 
 	@Captor
 	ArgumentCaptor<Optional<String>> oeIdCaptor;