diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormData.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormData.java
index 474be54dfd8c56eb60f5d9b2fb535742273f0fe8..3296ccb5e34cf25e47720371c9b32fa7881aeeab 100644
--- a/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormData.java
+++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormData.java
@@ -48,7 +48,8 @@ public class FormData {
 	@Builder.Default
 	private FormHeader header = FormHeader.builder().build();
 
-	private ZustaendigeStelle zustaendigeStelle;
+	@Singular
+	private List<ZustaendigeStelle> zustaendigeStelles;
 	@ToString.Exclude
 	private Antragsteller antragsteller;
 	@ToString.Exclude
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 05bdcffff581a6e8ce7e4f56fe5d86cb53054bb0..8d23e2cb03b702eb1fb9fc3869e5eb750f72cd84 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
@@ -51,6 +51,8 @@ public class FormDataTestFactory {
 
 	public static final String ATTACHMENT_GROUP_2 = "FileGroup2";
 
+	public static final String VORGANG_ID = "vorgangId";
+
 	public static FormData create() {
 		return createBuilder().build();
 	}
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 86d4309910b98191d19bfc9a33b8b97fed0f33c9..edde8e256ad108a7458f4325b7444c4a585f776d 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
@@ -64,6 +64,7 @@ class EnterpriseEntryITCase {
 			assertThat(formData).isNotNull();
 		}
 
+		@Test
 		void shouldHaveNoOfRepresentations() {
 			var formData = doPostRequest();
 
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java
index feb214cccd2dca6533c39109f6f85619be567304..077a22039a5d9da064404d03e2ec4c24b6584915 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java
@@ -32,6 +32,7 @@ import org.mockito.InjectMocks;
 import org.mockito.Spy;
 
 import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory;
+import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
 import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper;
 
 class FormCycleFormDataMapperTest {
@@ -59,7 +60,9 @@ class FormCycleFormDataMapperTest {
 		void shouldMapZustaendigeStelle() {
 			var mapped = mapper.toFormData(FormCycleFormDataTestFactory.create());
 
-			assertThat(mapped.getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo(FormCycleFormHeaderTestFactory.ORGANISATIONSEINHEIT_ID);
+			assertThat(mapped.getZustaendigeStelles())
+					.extracting(ZustaendigeStelle::getOrganisationseinheitenId)
+					.containsExactly(FormCycleFormHeaderTestFactory.ORGANISATIONSEINHEIT_ID);
 		}
 	}
 
diff --git a/router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java b/router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java
index 74607f148396fb856dd86a4716f5f67f0d2f4019..c69b8397708151fa0c71aec866f6c2a5aeaceb4f 100644
--- a/router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java
+++ b/router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java
@@ -23,6 +23,7 @@
  */
 package de.ozgcloud.eingang.router;
 
+import java.util.Optional;
 import java.util.UUID;
 
 import org.mapstruct.CollectionMappingStrategy;
@@ -32,8 +33,6 @@ import org.mapstruct.NullValueCheckStrategy;
 import org.mapstruct.NullValuePropertyMappingStrategy;
 import org.mapstruct.ReportingPolicy;
 
-import com.google.protobuf.ByteString;
-
 import de.ozgcloud.eingang.common.formdata.Antragsteller;
 import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
@@ -52,17 +51,17 @@ import de.ozgcloud.vorgang.vorgang.GrpcZustaendigeStelle;
 		uses = { GrpcFormDataMapper.class, ServiceKontoMapper.class })
 public interface GrpcEingangMapper {
 
-	@Mapping(source = "antragsteller.data", target = "antragsteller.otherData")
-	@Mapping(source = "attachments", target = "attachmentsList")
-	@Mapping(source = "representations", target = "representationsList")
-	GrpcEingang toEingang(FormData formData);
-
-	default ByteString byteArrayToByteString(byte[] byteArray) {
-		if (byteArray == null) {
-			return null;
-		}
+	@Mapping(target = "antragsteller.otherData", source = "formData.antragsteller.data")
+	@Mapping(target = "attachmentsList", source = "formData.attachments")
+	@Mapping(target = "representationsList", source = "formData.representations")
+	@Mapping(target = "zustaendigeStelle", expression = "java( toZustaendigeStelle(getZustaendigeStelle(formData, organisationsEinheitenId)) )")
+	GrpcEingang toEingang(FormData formData, Optional<String> organisationsEinheitenId);
 
-		return ByteString.copyFrom(byteArray);
+	default ZustaendigeStelle getZustaendigeStelle(FormData formData, Optional<String> organisationsEinheitenId) {
+		return organisationsEinheitenId.flatMap(oeId -> formData.getZustaendigeStelles().stream()
+						.filter(zustaendigeStelle -> zustaendigeStelle.getOrganisationseinheitenId().equals(oeId))
+						.findFirst())
+				.orElseGet(() -> ZustaendigeStelle.builder().build());
 	}
 
 	@Mapping(source = "files", target = "filesList")
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 2a50225927053555819bbd1ac937ed0598088dd4..5d1293168a6770fd9a8afa0e863afd08cd4750ca 100644
--- a/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java
+++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java
@@ -75,7 +75,7 @@ public class VorgangRemoteService {
 		logConnection(organisationsEinheitenId, vorgangServiceStub.get());
 
 		try {
-			return createVorgang(formData, grpcEingangMapper.toEingang(formData), vorgangServiceStub.get(), binaryFileServiceStub.get());
+			return createVorgang(formData, grpcEingangMapper.toEingang(formData, organisationsEinheitenId), 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 de97243af9a356da303522e4555b1509b540dc16..22abba8cb58224ab8a14a838630ed6698c096137 100644
--- a/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java
+++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java
@@ -41,13 +41,29 @@ public class VorgangService {
 	private final VorgangRemoteService remoteService;
 
 	public String createVorgang(FormData formData) {
-		var preparedFormData = preserveConsistency(formData);
+		return createVorgangForOrganisationsEinheitIds(getOrganisationsEinheitIds(formData), preserveConsistency(formData));
+	}
+
+	String createVorgangForOrganisationsEinheitIds(List<String> organisationsEinheitIds, FormData preparedFormData) {
+		return organisationsEinheitIds.isEmpty()
+				? createVorgangOnMissingZustaendigeStelle(preparedFormData)
+				: createMultipleVorgangs(preparedFormData, organisationsEinheitIds).getFirst();
+	}
+
+	String createVorgangOnMissingZustaendigeStelle(FormData formData) {
+		return remoteService.createVorgang(formData, Optional.empty());
+	}
 
-		return remoteService.createVorgang(preparedFormData, getOrganisationsEinheitId(preparedFormData));
+	List<String> createMultipleVorgangs(FormData formData, List<String> organisationseinheitIds) {
+		return organisationseinheitIds.stream()
+				.map(oeId -> remoteService.createVorgang(formData, Optional.of(oeId)))
+				.toList();
 	}
 
-	private Optional<String> getOrganisationsEinheitId(FormData formData) {
-		return Optional.ofNullable(formData.getZustaendigeStelle()).map(ZustaendigeStelle::getOrganisationseinheitenId);
+	List<String> getOrganisationsEinheitIds(FormData formData) {
+		return formData.getZustaendigeStelles().stream()
+				.map(ZustaendigeStelle::getOrganisationseinheitenId)
+				.toList();
 	}
 
 	FormData preserveConsistency(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 4150f6cef6d0574b78c6db89d9b61c068cd620e2..f3c15dea9839888f9895a6e440489ee6f09b9b8e 100644
--- a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java
+++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java
@@ -27,6 +27,7 @@ import static org.assertj.core.api.Assertions.*;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
@@ -58,8 +59,7 @@ class GrpcEingangMapperITCase {
 
 			@Test
 			void antragstellerShouldBeMapped() {
-
-				var antragSteller = grpcEingangMapper.toEingang(FormDataTestFactory.create()).getAntragsteller();
+				var antragSteller = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)).getAntragsteller();
 
 				assertThat(antragSteller.getPostfachId()).isEqualTo(AntragstellerTestFactory.POSTFACH_ID);
 				assertThat(antragSteller.getVorname()).isEqualTo(AntragstellerTestFactory.VORNAME);
@@ -68,8 +68,7 @@ class GrpcEingangMapperITCase {
 
 			@Test
 			void dataShouldBeMapped() {
-
-				var antragsteller = grpcEingangMapper.toEingang(FormDataTestFactory.create()).getAntragsteller();
+				var antragsteller = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)).getAntragsteller();
 
 				assertThat(antragsteller.getOtherData().getFieldList()).hasSize(1);
 				assertThat(antragsteller.getOtherData().getField(0).getName()).isEqualTo(AntragstellerTestFactory.GEBIET_BEZEICHNUNG_KEY);
@@ -82,13 +81,21 @@ class GrpcEingangMapperITCase {
 		class TestZustaendigeStelle {
 			@Test
 			void eingangShouldHaveZustaendigeStelle() {
-
-				var zustaendigeStelle = grpcEingangMapper.toEingang(FormDataTestFactory.create()).getZustaendigeStelle();
+				var zustaendigeStelle = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)).getZustaendigeStelle();
 
 				assertThat(zustaendigeStelle).isNotNull();
 				assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID);
 				assertThat(zustaendigeStelle.getEmail()).isEqualTo(ZustaendigeStelleTestFactory.EMAIL);
 			}
+
+			@DisplayName("should map empty organisationeinheitId if missing")
+			@Test
+			void shouldMapEmptyOrganisationeinheitIdIfMissing() {
+				var zustaendigeStelle = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.empty()).getZustaendigeStelle();
+
+				assertThat(zustaendigeStelle).isNotNull();
+				assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEmpty();
+			}
 		}
 
 		@Nested
@@ -100,7 +107,7 @@ class GrpcEingangMapperITCase {
 			@BeforeEach
 			void init() {
 
-				eingang = grpcEingangMapper.toEingang(FormDataTestFactory.create());
+				eingang = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.empty());
 			}
 
 			@Test
@@ -159,7 +166,7 @@ class GrpcEingangMapperITCase {
 			@Test
 			void testRepresentations() {
 
-				GrpcEingang eingang = grpcEingangMapper.toEingang(FormDataTestFactory.create());
+				GrpcEingang eingang = grpcEingangMapper.toEingang(FormDataTestFactory.create(), Optional.empty());
 
 				assertThat(eingang.getRepresentationsCount()).isEqualTo(1);
 
@@ -180,7 +187,7 @@ class GrpcEingangMapperITCase {
 			void valueListShouldGenerateFields() {
 
 				GrpcEingang eingang = grpcEingangMapper
-						.toEingang(FormDataTestFactory.createBuilder().formData(Map.of("key", List.of("value1", "value2"))).build());
+						.toEingang(FormDataTestFactory.createBuilder().formData(Map.of("key", List.of("value1", "value2"))).build(), Optional.empty());
 
 				assertThat(eingang.getFormData().getFieldCount()).isEqualTo(2);
 			}
@@ -190,7 +197,7 @@ 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());
+								.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/GrpcEingangMapperTest.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java
index 3909125566b6f297d16633590aa4dcc05644611b..df68e82b76e4175a69dde4153eceb108cde21872 100644
--- a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java
+++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java
@@ -27,6 +27,8 @@ import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
 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;
@@ -212,7 +214,7 @@ class GrpcEingangMapperTest {
 		}
 
 		private GrpcEingang toEingang() {
-			return mapper.toEingang(FormDataTestFactory.create());
+			return mapper.toEingang(FormDataTestFactory.create(), Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID));
 		}
 	}
 }
\ 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 993c973ca2f71c645734db5ab5039151b9a0543f..1a8161b18bb9c02dce8ec7ee65ccd05f16707345 100644
--- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java
+++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java
@@ -117,7 +117,7 @@ class VorgangRemoteServiceTest {
 			when(resolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(any())).thenReturn(managableBinaryFileServiceStub);
 			when(managableBinaryFileServiceStub.get()).thenReturn(binaryFileServiceStub);
 
-			when(eingangMapper.toEingang(any())).thenReturn(eingang);
+			when(eingangMapper.toEingang(any(), any())).thenReturn(eingang);
 
 			doNothing().when(remoteService).logConnection(any(), any());
 			doNothing().when(remoteService).finishStubConnections(any());
@@ -159,7 +159,7 @@ class VorgangRemoteServiceTest {
 			void shouldCallEingangMapper() {
 				createVorgang();
 
-				verify(eingangMapper).toEingang(formData);
+				verify(eingangMapper).toEingang(formData, organisationsEinheitId);
 			}
 
 			@Test
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 2db3d04b7e3ad7bdb2240c7a1a66d8b39cbb4ca8..a78d71e8cdf178413195e438ec4d4820d62e1707 100644
--- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java
+++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java
@@ -23,10 +23,13 @@
  */
 package de.ozgcloud.eingang.router;
 
+import static de.ozgcloud.eingang.common.formdata.FormDataTestFactory.*;
+import static java.util.Collections.*;
 import static org.assertj.core.api.Assertions.*;
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
+import java.util.List;
 import java.util.Optional;
 
 import org.junit.jupiter.api.BeforeEach;
@@ -51,8 +54,6 @@ class VorgangServiceTest {
 	@InjectMocks
 	private VorgangService service;
 	@Mock
-	private GrpcEingangMapper eingangMapper;
-	@Mock
 	private VorgangRemoteService remoteService;
 
 	@DisplayName("Create vorgang")
@@ -61,10 +62,13 @@ class VorgangServiceTest {
 
 		private final FormData formData = FormDataTestFactory.create();
 		private final FormData preservedFormData = FormDataTestFactory.create();
+		private final List<String> organisationseinheitIds = List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID);
 
 		@BeforeEach
 		void mockEingangMapper() {
 			doReturn(preservedFormData).when(service).preserveConsistency(formData);
+			doReturn(organisationseinheitIds).when(service).getOrganisationsEinheitIds(any());
+			doReturn(VORGANG_ID).when(service).createVorgangForOrganisationsEinheitIds(organisationseinheitIds, preservedFormData);
 		}
 
 		@Test
@@ -74,15 +78,147 @@ class VorgangServiceTest {
 			verify(service).preserveConsistency(formData);
 		}
 
+		@DisplayName("should call create vorgang for organisationseinheitIds")
 		@Test
-		void shouldCallRemoteService() {
+		void shouldCallCreateVorgangForOrganisationseinheitIds() {
 			callCreateVorgang();
 
-			verify(remoteService).createVorgang(preservedFormData, Optional.ofNullable(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID));
+			verify(service).createVorgangForOrganisationsEinheitIds(organisationseinheitIds, preservedFormData);
+		}
+
+		@DisplayName("should call get organisationseinheit ids")
+		@Test
+		void shouldCallGetOrganisationseinheitIds() {
+			callCreateVorgang();
+
+			verify(service).getOrganisationsEinheitIds(formData);
+		}
+
+		@DisplayName("should return vorgang id")
+		@Test
+		void shouldReturn() {
+			var vorgangId = callCreateVorgang();
+
+			assertThat(vorgangId).isEqualTo(VORGANG_ID);
+		}
+
+		private String callCreateVorgang() {
+			return service.createVorgang(formData);
+		}
+	}
+
+	@DisplayName("create vorgang for organisationsEinheitIds")
+	@Nested
+	class TestCreateVorgangForOrganisationsEinheitIds {
+		private final FormData preservedFormData = FormDataTestFactory.create();
+		private final List<String> organisationseinheitIds = List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID);
+
+		@DisplayName("should call create multiple vorgangs")
+		@Test
+		void shouldCallCreateMultipleVorgangs() {
+			service.createVorgangForOrganisationsEinheitIds(organisationseinheitIds, preservedFormData);
+
+			verify(service).createMultipleVorgangs(preservedFormData, organisationseinheitIds);
+		}
+
+		@DisplayName("should return first vorgang id with multiple organisationseinheits")
+		@Test
+		void shouldReturnFirstVorgangIdWithMultipleOrganisationseinheits() {
+			doReturn(List.of(VORGANG_ID)).when(service).createMultipleVorgangs(any(), any());
+
+			var vorgangId = service.createVorgangForOrganisationsEinheitIds(organisationseinheitIds, preservedFormData);
+
+			assertThat(vorgangId).isEqualTo(VORGANG_ID);
+		}
+
+		@DisplayName("should call create vorgang on missing zustaendige stelle if organisationseinheit is missing")
+		@Test
+		void shouldCallCreateVorgangOnMissingZustaendigeStelleIfOrganisationseinheitIsMissing() {
+			service.createVorgangForOrganisationsEinheitIds(emptyList(), preservedFormData);
+
+			verify(service).createVorgangOnMissingZustaendigeStelle(eq(preservedFormData));
+		}
+
+		@DisplayName("should return single vorgang id if organisationseinheit is missing")
+		@Test
+		void shouldReturnSingleVorgangIdIfOrganisationseinheitIsMissing() {
+			doReturn(VORGANG_ID).when(service).createVorgangOnMissingZustaendigeStelle(any());
+
+			var firstVorgangId = service.createVorgangForOrganisationsEinheitIds(emptyList(), preservedFormData);
+
+			assertThat(firstVorgangId).isEqualTo(VORGANG_ID);
+		}
+
+	}
+
+	@DisplayName("create vorgang on missing zustaendige stelle")
+	@Nested
+	class TestVorgangOnMissingZustaendigeStelle {
+		@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() {
+			var vorgangId = service.createVorgangOnMissingZustaendigeStelle(formData);
+
+			assertThat(vorgangId).isEqualTo(VORGANG_ID);
 		}
+	}
+
+	@DisplayName("create multiple vorgangs")
+	@Nested
+	class TestCreateMultipleVorgangs {
+
+		@Mock
+		private FormData formData;
+
+		@BeforeEach
+		void mock() {
+			when(remoteService.createVorgang(any(), any())).thenReturn(VORGANG_ID);
+		}
+
+		@DisplayName("should call create vorgang twice")
+		@Test
+		void shouldCallCreateVorgangTwice() {
+			service.createMultipleVorgangs(formData, List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID));
+
+			verify(remoteService).createVorgang(formData, Optional.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID));
+		}
+
+		@DisplayName("should return")
+		@Test
+		void shouldReturn() {
+			var vorgangIds = service.createMultipleVorgangs(formData, List.of(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID));
+
+			assertThat(vorgangIds).containsExactly(VORGANG_ID);
+		}
+	}
+
+	@DisplayName("get organisationseinheit ids")
+	@Nested
+	class TestGetOrganisationseinheitIds {
+		private final FormData preservedFormData = FormDataTestFactory.create();
+
+		@DisplayName("should return")
+		@Test
+		void shouldReturn() {
+			var organisationseinheitIds = service.getOrganisationsEinheitIds(preservedFormData);
 
-		private void callCreateVorgang() {
-			service.createVorgang(formData);
+			assertThat(organisationseinheitIds).containsExactly(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID);
 		}
 	}
 
@@ -102,7 +238,7 @@ class VorgangServiceTest {
 			assertThat(consistentFormData.getHeader().getServiceKonto()).isNull();
 		}
 
-		@DisplayName("should keep serviceKonto if postfachAddress eixsts")
+		@DisplayName("should keep serviceKonto if postfachAddress exists")
 		@Test
 		void shouldKeepServiceKonto() {
 			var consistentFormData = service.preserveConsistency(FormDataTestFactory.create());
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 9168807d8b4e2a6c52ae95c8bb509ffd04ecd1d8..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 {
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 1e057c6e81f5c937a429d8050c2c8996742026c9..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
@@ -72,7 +72,9 @@ class AfmZustaendigeStelleMapper implements AfmEngineBasedMapper {
 				.organisationseinheitenId(organisationseinheitenID)
 				.build();
 
-		return formData.toBuilder().formData(addMetaDataFlag(formData)).zustaendigeStelle(zustaendigeStelle).build();
+		return formData.toBuilder()
+				.formData(addMetaDataFlag(formData))
+				.zustaendigeStelle(zustaendigeStelle).build();
 	}
 
 	String getOrganisationseinheitenId(FormData formData) {
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 4b417bd36dc8421632a5e26447d1b7b669f249dd..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
@@ -45,7 +45,8 @@ public class ZustaendigeStelleMetadataMapper {
 		return formData.getRepresentations().stream().filter(IS_BEHOERDE_METADATA).findAny()
 				.map(this::readZustaendigeStelleMetadata)
 				.map(this::mapZustaendigeStelle)
-				.map(zustaendigeStelle -> formData.toBuilder().zustaendigeStelle(zustaendigeStelle).build())
+				.map(zustaendigeStelle -> formData.toBuilder()
+						.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 a89ba548f5247f858cea72a3443f89d5cd014cda..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,6 +2,7 @@ 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.Map;
@@ -100,22 +101,32 @@ public class DFoerdermittelEngineBasedSemantikAdapter implements EngineBasedSema
 
 	FormData addOrganisationsEinheitId(FormData formData) {
 		return Optional.ofNullable((String) getFachnachricht(formData).get(KEY_ORGANISATIONS_EINHEIT_ID))
-				.map(orgaId -> addOrganisationsEinheitId(orgaId, formData.getZustaendigeStelle()))
-				.map(zustStelle -> formData.toBuilder().zustaendigeStelle(zustStelle).build())
+				.map(orgaId -> addOrganisationsEinheitId(orgaId, formData.getZustaendigeStelles()))
+				.map(zustStelle -> formData.toBuilder()
+						.zustaendigeStelle(zustStelle)
+						.build())
 				.orElse(formData);
 	}
 
-	private ZustaendigeStelle addOrganisationsEinheitId(String orgaId, ZustaendigeStelle zustaendigeStelle) {
+	private ZustaendigeStelle addOrganisationsEinheitId(String orgaId, Collection<ZustaendigeStelle> zustaendigeStelles) {
 		ZustaendigeStelle.ZustaendigeStelleBuilder zustaendigeStelleBuilder;
-		if (Objects.isNull(zustaendigeStelle)) {
+		if (Objects.isNull(zustaendigeStelles) || zustaendigeStelles.isEmpty()) {
 			zustaendigeStelleBuilder = ZustaendigeStelle.builder();
 		} else {
+			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/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java
index 754667f0298c9d867846cafee6f28d6b82677fd2..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
@@ -23,6 +23,7 @@
  */
 package de.ozgcloud.eingang.semantik;
 
+import static de.ozgcloud.eingang.common.formdata.FormDataTestFactory.*;
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
@@ -98,6 +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.createVorgang(any())).thenReturn(VORGANG_ID);
 		}
 
 		@Test
@@ -127,5 +129,13 @@ class SemantikAdapterTest {
 
 			verify(vorgangService).createVorgang(formAdapterResponse);
 		}
+
+		@DisplayName("should return first vorgang id")
+		@Test
+		void shouldReturnFirstVorgangId() {
+			var vorgangId = adapter.processFormData(formData);
+
+			assertThat(vorgangId).isEqualTo(VORGANG_ID);
+		}
 	}
 }
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelperTest.java
index cfbf8d3481cd4679412ceceb84f886152467c30a..0375100ea49c6ac7f0c68bdff8a41d8d988bd3ad 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelperTest.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelperTest.java
@@ -171,7 +171,7 @@ class FilesMapperHelperTest {
 
 			assertThat(cleanedFormData.getId()).isEqualTo(formData.getId());
 			assertThat(cleanedFormData.getHeader()).isEqualTo(formData.getHeader());
-			assertThat(cleanedFormData.getZustaendigeStelle()).isEqualTo(formData.getZustaendigeStelle());
+			assertThat(cleanedFormData.getZustaendigeStelles()).isEqualTo(formData.getZustaendigeStelles());
 			assertThat(cleanedFormData.getAntragsteller()).isEqualTo(formData.getAntragsteller());
 			assertThat(cleanedFormData.getNumberOfAttachments()).isEqualTo(formData.getNumberOfAttachments());
 			assertThat(cleanedFormData.getAttachments()).isEqualTo(formData.getAttachments());
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 4f83cb409499a33c332c3b8226012cf210949ae8..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.getZustaendigeStelle().getOrganisationseinheitenId())
-						.isEqualTo(AfmZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID);
+				assertThat(parsedFormData.getZustaendigeStelles())
+						.extracting(ZustaendigeStelle::getOrganisationseinheitenId)
+						.containsExactly(AfmZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID);
 			}
 
 			@Test
 			void shouldMapBezeichnung() {
 				var parsedFormData = parseZustaendigeStelleData(formData);
 
-				assertThat(parsedFormData.getZustaendigeStelle().getBezeichnung()).isEqualTo(BEZEICHNUNG);
+				assertThat(parsedFormData.getZustaendigeStelles())
+						.extracting(ZustaendigeStelle::getBezeichnung)
+						.containsExactly(BEZEICHNUNG);
 			}
 
 			@Test
 			void shouldMapEmail() {
 				var parsedFormData = parseZustaendigeStelleData(formData);
 
-				assertThat(parsedFormData.getZustaendigeStelle().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 5da34d86397802416e222b17f31722392944791d..56058ec127401eeff1744df316e1aa60ef62449e 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
@@ -44,7 +44,7 @@ class ZustaendigeStelleMetadataMapperTest {
 			behoerdeMetadataFile = IncomingFileTestFactory.createBuilder().name(ZustaendigeStelleMetadataMapper.BEHOERDE_METADATA_FILE_NAME)
 					.build();
 			formData = FormDataTestFactory.createBuilder()
-					.zustaendigeStelle(null)
+					.clearZustaendigeStelles()
 					.representation(behoerdeMetadataFile).build();
 		}
 
@@ -76,17 +76,15 @@ class ZustaendigeStelleMetadataMapperTest {
 
 			var result = mapper.parseZustaendigeStelleData(formData);
 
-			assertThat(result.getZustaendigeStelle()).isEqualTo(zustaendigeStelle);
+			assertThat(result.getZustaendigeStelles()).containsExactly(zustaendigeStelle);
 		}
 	}
 
 	@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 2445fe3b2f3f7119bc53e33031595a02e6b7c20c..512d0a840d9c9018c5eb0b3c81495b470636f8e1 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
@@ -27,6 +27,7 @@ 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 {
@@ -217,12 +218,44 @@ class DFoerdermittelEngineBasedSemantikAdapterTest {
 
 	@Nested
 	class TestAddOrganisationsEinheitId {
-		@Test
-		void shouldHaveOrganisationsEinheitId() {
-			var formData = adapter.addOrganisationsEinheitId(DFoerdermittelFormDataTestFactory.create());
 
-			assertThat(formData.getZustaendigeStelle()).isNotNull().extracting(ZustaendigeStelle::getOrganisationseinheitenId)
-					.isEqualTo(ORGANISATIONS_EINHEIT_ID);
+		@DisplayName("with no existing zustaendige stelles")
+		@Nested
+		class TestWithNoExistingZustaendigeStelles {
+			@Test
+			void shouldHaveOrganisationsEinheitId() {
+				var inputFormData = DFoerdermittelFormDataTestFactory.createBuilder()
+						.clearZustaendigeStelles()
+						.build();
+
+				var formData = adapter.addOrganisationsEinheitId(inputFormData);
+
+				assertThat(formData.getZustaendigeStelles())
+						.extracting(ZustaendigeStelle::getOrganisationseinheitenId)
+						.containsExactly(ORGANISATIONS_EINHEIT_ID);
+			}
+		}
+
+		@DisplayName("with one existing zustaendige stelle")
+		@Nested
+		class TestWithOneExistingZustaendigeStelle {
+
+			@Test
+			void shouldHaveOrganisationsEinheitId() {
+				var formData = adapter.addOrganisationsEinheitId(DFoerdermittelFormDataTestFactory.create());
+
+				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(DFoerdermittelFormDataTestFactory.create());
+
+				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 47c563508627226dac6341fe8d6e4b36f9062b70..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.getZustaendigeStelle()).isNotNull();
+				assertThat(data.getZustaendigeStelles()).isNotNull().isNotEmpty();
 			}
 
 			@Test
 			void shouldMapOrganistaionseinheitenId() {
 				var data = engineAdapter.parseFormData(formData);
 
-				assertThat(data.getZustaendigeStelle().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 1e019f49a47345092a4c9c2b5e6196871c621417..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
@@ -37,7 +37,6 @@ import org.mockito.Spy;
 
 import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.formdata.FormDataTestFactory;
-import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsZustaendigeStelleMapper;
 
 class FormSolutionsZustaendigeStelleMapperTest {
 
@@ -53,7 +52,6 @@ class FormSolutionsZustaendigeStelleMapperTest {
 		@BeforeEach
 		void setup() {
 			formData = FormDataTestFactory.createBuilder()
-					.zustaendigeStelle(null)
 					.formData(Map.of(
 							FormDataTestFactory.SIMPLE_VALUE_KEY, FormDataTestFactory.SIMPLE_VALUE,
 							FormSolutionsZustaendigeStelleMapper.ZUSTAENDIGE_STELLE, ORGANISATIONSEINHEIT_ID))
@@ -64,7 +62,7 @@ class FormSolutionsZustaendigeStelleMapperTest {
 		void shouldParseFormData() {
 			var resultFormData = mapper.parseFormData(formData);
 
-			assertThat(resultFormData.getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo(ORGANISATIONSEINHEIT_ID);
+			assertThat(resultFormData.getZustaendigeStelles().getFirst().getOrganisationseinheitenId()).isEqualTo(ORGANISATIONSEINHEIT_ID);
 			assertThat(resultFormData.getFormData()).doesNotContainKey(ZUSTAENDIGE_STELLE);
 		}
 
@@ -73,7 +71,7 @@ class FormSolutionsZustaendigeStelleMapperTest {
 		void shouldNotChangeAnother() {
 			var resultFormData = mapper.parseFormData(formData);
 
-			assertThat(resultFormData).usingRecursiveComparison().ignoringFields("zustaendigeStelle", "formData").isEqualTo(formData);
+			assertThat(resultFormData).usingRecursiveComparison().ignoringFields("zustaendigeStelles", "formData").isEqualTo(formData);
 			assertThat(resultFormData.getFormData())
 					.containsAllEntriesOf(Map.of(FormDataTestFactory.SIMPLE_VALUE_KEY, FormDataTestFactory.SIMPLE_VALUE));
 		}
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 a4951086c82837ebc3c01ef5f19b8833882b0e3c..2825ced4320061e6c7c2c5f51b34cfa2034830b3 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
@@ -9,6 +9,8 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.List;
 
+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;
@@ -23,6 +25,7 @@ import de.ozgcloud.common.test.TestUtils;
 import de.ozgcloud.eingang.Application;
 import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory;
+import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
 import de.ozgcloud.eingang.router.VorgangService;
 import de.ozgcloud.eingang.semantik.SemantikAdapter;
 import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapterITCase;
@@ -47,27 +50,31 @@ public class MantelantragITCase {
 		@Captor
 		ArgumentCaptor<FormData> formDataCaptor;
 
+		private static final String VORGANG_ID_1 = "vorgangId1";
+
+
+		@BeforeEach
+		void mock() {
+			doReturn(VORGANG_ID_1).when(vorgangService).createVorgang(any());
+		}
+
+		@DisplayName("should return first vorgangId")
 		@Test
-		void zustaendigeStelleExists() {
-			var formData = prepareTestData();
-			doReturn("test").when(vorgangService).createVorgang(any(FormData.class));
-			semantikAdapter.processFormData(formData);
+		void shouldReturnFirstVorgangId() {
+			var result = semantikAdapter.processFormData(prepareTestData());
 
-			verify(vorgangService).createVorgang(formDataCaptor.capture());
-			FormData capturedFormData = formDataCaptor.getValue();
-			assertThat(capturedFormData).isNotNull();
+			assertThat(result).isEqualTo(VORGANG_ID_1);
 		}
 
+		@DisplayName("should pass organisationseinheit id to create vorgang")
 		@Test
-		void zustaendigeStelleIsUtopia() {
-			var formData = prepareTestData();
-			doReturn("test").when(vorgangService).createVorgang(any(FormData.class));
-			semantikAdapter.processFormData(formData);
+		void shouldPassOrganisationseinheitIdToCreateVorgang() {
+			semantikAdapter.processFormData(prepareTestData());
 
 			verify(vorgangService).createVorgang(formDataCaptor.capture());
-			FormData capturedFormData = formDataCaptor.getValue();
-
-			assertThat(capturedFormData.getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo("123");
+			assertThat(formDataCaptor.getValue().getZustaendigeStelles())
+					.extracting(ZustaendigeStelle::getOrganisationseinheitenId)
+					.containsExactly("123");
 		}
 
 	}
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragZustaendigeStelleMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragZustaendigeStelleMapperTest.java
index ffc88cabe17fb7e087abab038e13dfff3b8b14d1..377ff70a5036a54bc7e362c198a8339febc48dc1 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragZustaendigeStelleMapperTest.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragZustaendigeStelleMapperTest.java
@@ -181,6 +181,7 @@ class MantelantragZustaendigeStelleMapperTest {
 					getOrganisationseinheitIDFieldName(10), "1111111"
 			));
 			formData = FormDataTestFactory.createBuilder()
+					.clearZustaendigeStelles()
 					.formData(fieldMap)
 					.build();
 		}
@@ -283,7 +284,7 @@ class MantelantragZustaendigeStelleMapperTest {
 
 		private ZustaendigeStelle getAdaptedZustaendigeStelle() {
 			var formDataResult = mapper.adaptFormDataWithPossibleException(formData);
-			return formDataResult.getZustaendigeStelle();
+			return formDataResult.getZustaendigeStelles().getFirst();
 		}
 
 	}