diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java
index d5f6c9ef528895e290290279889cb2fbb464c3e0..81826cff9dccf04d8b16040f00f1d8c4f967e8a0 100644
--- a/common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java
+++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java
@@ -33,6 +33,7 @@ import lombok.Getter;
 public class Antragsteller {
 
 	private String anrede;
+	private String firmaName;
 	private String vorname;
 	private String nachname;
 	private String geburtsname;
diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java
index c3f5320bc928490b407bf0ff8a83b192566eb0d7..6a506945dc9822cafcc2f1dc37d7ecedb6405b6c 100644
--- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java
+++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java
@@ -30,6 +30,7 @@ public class AntragstellerTestFactory {
 
 	public static final String ANREDE = "Herr";
 
+	public static final String FIRMA_NAME = "Firma X";
 	public static final String GEBIET_BEZEICHNUNG_KEY = "GebietBEZEICHNUNG";
 	public static final String GEBIET_BEZEICHNUNG_VALUE = "Schleswig";
 
@@ -54,6 +55,18 @@ public class AntragstellerTestFactory {
 		return createBuilder().build();
 	}
 
+	public static Antragsteller createFirm() {
+		return createFirmBuilder().build();
+	}
+
+	public static Antragsteller.AntragstellerBuilder createFirmBuilder() {
+		return createBuilder()
+				.firmaName(FIRMA_NAME)
+				.geburtsname(null)
+				.geburtsdatum(null)
+				.geburtsort(null);
+	}
+
 	public static Antragsteller.AntragstellerBuilder createBuilder() {
 		return Antragsteller.builder()
 				.anrede(ANREDE)
diff --git a/pom.xml b/pom.xml
index 8f8b61c4ea856454bc2a1ce111be3fec068950ef..842a106415d04ecc600bdefb8a236e9b447aa6ca 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,7 +54,7 @@
 	</modules>
 
 	<properties>
-		<vorgang-manager.version>2.6.0</vorgang-manager.version>
+		<vorgang-manager.version>2.7.0-SNAPSHOT</vorgang-manager.version>
 
 		<jsoup.version>1.14.3</jsoup.version>
 		<xmlschema.version>2.3.0</xmlschema.version>
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 b0348cc39fa405d1b7ea467d6d99e2a5ee5db4f0..3909125566b6f297d16633590aa4dcc05644611b 100644
--- a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java
+++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java
@@ -69,6 +69,13 @@ class GrpcEingangMapperTest {
 
 		}
 
+		@Test
+		void shouldMapFirmaName() {
+			var mapped = mapper.toAntragsteller(AntragstellerTestFactory.createFirm());
+
+			assertThat(mapped.getFirmaName()).isEqualTo(AntragstellerTestFactory.FIRMA_NAME);
+		}
+
 		private GrpcAntragsteller toAntragsteller() {
 			return mapper.toAntragsteller(AntragstellerTestFactory.create());
 		}
diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java
index 4e5251da5812a678dd2234ab964de002cabd78e8..be2eb0cde5339c900477a2e6554b0612b62afce9 100644
--- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java
+++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java
@@ -27,10 +27,12 @@ import static java.util.Objects.*;
 
 import java.util.Collections;
 import java.util.LinkedHashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.Set;
+import java.util.stream.Collectors;
 
+import org.apache.commons.collections.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -57,6 +59,15 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper {
 	static final String PLZ = "sh_plz";
 	static final String ORT = "ort";
 
+	static final String FIELD_FIRMA_NAME = "firm_name";
+	static final String FIELD_FIRMA_STRASSE = "firma_strasse";
+	static final String FIELD_FIRMA_HAUSNUMMER = "firma_hausnummer";
+	static final String FIELD_FIRMA_PLZ = "firma_plz";
+	static final String FIELD_FIRMA_STADT = "firma_stadt";
+	static final String FIELD_ANSPRECHPARTNER_ANREDE = "firma_ansprechpartner_anrede";
+	static final String FIELD_ANSPRECHPARTNER_VORNAME = "firma_ansprechpartner_vorname";
+	static final String FIELD_ANSPRECHPARTNER_NACHNAME = "firma_ansprechpartner_nachname";
+
 	@Autowired
 	private AfmAntragstellerHeaderMapper antragstellerHeaderMapper;
 
@@ -81,15 +92,21 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper {
 		return (String) formDataMap.get(POSTFACH_ID);
 	}
 
-	@SuppressWarnings("unchecked")
 	private Optional<Map<String, Object>> getAntragstellerMap(Map<String, Object> formDataMap) {
 		return Optional.ofNullable(formDataMap.get(ANTRAGSTELLER))
 				.or(() -> Optional.ofNullable(formDataMap.get(ANTRAGSTELLER_UPPERCASE)))
-				.map(Map.class::cast).map(LinkedHashMap::new);
+				.map(Map.class::cast).map(LinkedHashMap<String, Object>::new);
 	}
 
 	private Antragsteller.AntragstellerBuilder addAntragstellerData(Antragsteller.AntragstellerBuilder builder,
 			Map<String, Object> antragstellerMap) {
+		return isNull(antragstellerMap.get(FIELD_FIRMA_NAME))
+				? addPrivateAntragstellerData(builder, antragstellerMap)
+				: addFirmAntragstellerData(builder, antragstellerMap);
+	}
+
+	private Antragsteller.AntragstellerBuilder addPrivateAntragstellerData(Antragsteller.AntragstellerBuilder builder,
+			Map<String, Object> antragstellerMap) {
 		return builder //
 				.anrede((String) antragstellerMap.get(ANREDE)) //
 				.vorname((String) antragstellerMap.get(VORNAME)) //
@@ -103,17 +120,37 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper {
 				.hausnummer((String) antragstellerMap.get(HAUSNUMMER)) //
 				.plz((String) antragstellerMap.get(PLZ)) //
 				.ort((String) antragstellerMap.get(ORT)) //
-				.data(getNotMappedData(antragstellerMap));
+				.data(getNotMappedData(antragstellerMap, getPrivateFields()));
+	}
+
+	Antragsteller.AntragstellerBuilder addFirmAntragstellerData(Antragsteller.AntragstellerBuilder builder,
+			Map<String, Object> antragstellerMap) {
+		return builder
+				.firmaName(MapUtils.getString(antragstellerMap, FIELD_FIRMA_NAME))
+				.strasse(MapUtils.getString(antragstellerMap, FIELD_FIRMA_STRASSE))
+				.hausnummer(MapUtils.getString(antragstellerMap, FIELD_FIRMA_HAUSNUMMER))
+				.plz(MapUtils.getString(antragstellerMap, FIELD_FIRMA_PLZ))
+				.ort(MapUtils.getString(antragstellerMap, FIELD_FIRMA_STADT))
+				.anrede(MapUtils.getString(antragstellerMap, FIELD_ANSPRECHPARTNER_ANREDE))
+				.vorname(MapUtils.getString(antragstellerMap, FIELD_ANSPRECHPARTNER_VORNAME))
+				.nachname(MapUtils.getString(antragstellerMap, FIELD_ANSPRECHPARTNER_NACHNAME))
+				.telefon(MapUtils.getString(antragstellerMap, TELEFON))
+				.email(MapUtils.getString(antragstellerMap, EMAIL))
+				.data(getNotMappedData(antragstellerMap, getFirmaFields()));
+	}
+
+	private Map<String, Object> getNotMappedData(Map<String, Object> antragstellerMap, Set<String> mappedFields) {
+		return antragstellerMap.entrySet().stream().filter(entry -> !mappedFields.contains(entry.getKey()))
+				.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (key1, key2) -> key1, LinkedHashMap::new));
 	}
 
-	private Map<String, Object> getNotMappedData(Map<String, Object> antragstellerMap) {
-		var map = new LinkedHashMap<>(antragstellerMap);
-		getFields().forEach(map::remove);
-		return map;
+	private Set<String> getPrivateFields() {
+		return Set.of(ANREDE, VORNAME, NACHNAME, GEBURTSNAME, GEBURTSDATUM, GEBURTSORT, EMAIL, TELEFON, STRASSE, HAUSNUMMER, PLZ, ORT);
 	}
 
-	private List<String> getFields() {
-		return List.of(ANREDE, VORNAME, NACHNAME, GEBURTSNAME, GEBURTSDATUM, GEBURTSORT, EMAIL, TELEFON, STRASSE, HAUSNUMMER, PLZ, ORT);
+	private Set<String> getFirmaFields() {
+		return Set.of(FIELD_FIRMA_NAME, FIELD_FIRMA_STRASSE, FIELD_FIRMA_HAUSNUMMER, FIELD_FIRMA_PLZ, FIELD_FIRMA_STADT,
+				FIELD_ANSPRECHPARTNER_ANREDE, FIELD_ANSPRECHPARTNER_VORNAME, FIELD_ANSPRECHPARTNER_NACHNAME, TELEFON, EMAIL);
 	}
 
 	private Map<String, Object> removeMappedData(Map<String, Object> formDataMap) {
diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java
index a8d133be63359eca9db5d610c01f4bfd144f1a96..ab351eb8f849b811373de9c7e4f2b95e0d080086 100644
--- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java
+++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java
@@ -1,5 +1,7 @@
 package de.ozgcloud.eingang.semantik.enginebased.formcycle;
 
+import static org.apache.commons.lang3.StringUtils.*;
+
 import java.util.Map;
 import java.util.Optional;
 
@@ -25,6 +27,7 @@ public class FormcycleAntragstellerMapper implements FormcycleEngineBasedMapper
 	static final String KEY_ADDRESS = "tfAntragstellerAdresse";
 	static final String KEY_PLZ = "tfAntragstellerPLZ";
 	static final String KEY_ORT = "tfAntragstellerOrt";
+	static final String KEY_FIRMA_NAME = "tfOrgName";
 
 	@Override
 	public FormData parseFormData(final FormData formData) {
@@ -41,19 +44,26 @@ public class FormcycleAntragstellerMapper implements FormcycleEngineBasedMapper
 	}
 
 	Antragsteller buildAntragsteller(Map<String, Object> antragstellerData) {
-		return Antragsteller.builder()
+		var firmaName = getValue(antragstellerData, KEY_FIRMA_NAME);
+		var antragstellerBuilder = Antragsteller.builder()
+				.firmaName(firmaName)
 				.anrede(getValue(antragstellerData, KEY_ANREDE))
 				.vorname(getValue(antragstellerData, KEY_VORNAME))
 				.nachname(getValue(antragstellerData, KEY_NACHNAME))
-				.geburtsname(getValue(antragstellerData, KEY_GEBURTSNAME))
-				.geburtsdatum(getValue(antragstellerData, KEY_GEBURTSDATUM))
-				.geburtsort(getValue(antragstellerData, KEY_GEBURTSORT))
 				.email(getValue(antragstellerData, KEY_EMAIL))
 				.telefon(getValue(antragstellerData, KEY_TELEFON))
 				.strasse(getValue(antragstellerData, KEY_ADDRESS))
 				.plz(getValue(antragstellerData, KEY_PLZ))
-				.ort(getValue(antragstellerData, KEY_ORT))
-				.build();
+				.ort(getValue(antragstellerData, KEY_ORT));
+		if (isBlank(firmaName)) {
+			antragstellerBuilder
+					.geburtsname(getValue(antragstellerData, KEY_GEBURTSNAME))
+					.geburtsdatum(getValue(antragstellerData, KEY_GEBURTSDATUM))
+					.geburtsort(getValue(antragstellerData, KEY_GEBURTSORT));
+		}else {
+			antragstellerBuilder.firmaName(firmaName);
+		}
+		return antragstellerBuilder.build();
 	}
 
 	String getValue(Map<String, Object> formDataMap, String key) {
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java
index e40b13db45356729cd68b0fec172931b999c4c17..f68df9df3da7a3905ef9a4dc0fdd9a96c112c890 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java
@@ -37,11 +37,9 @@ import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
-import org.mockito.Mockito;
 
 import de.ozgcloud.eingang.common.formdata.Antragsteller;
 import de.ozgcloud.eingang.common.formdata.FormData;
-import de.ozgcloud.eingang.semantik.enginebased.afm.AfmAntragstellerMapper;
 
 class AfmAntragstellerMapperTest {
 
@@ -52,7 +50,7 @@ class AfmAntragstellerMapperTest {
 	private AfmAntragstellerHeaderMapper antragstellerHeaderMapper;
 
 	private FormData formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap()).build();
-	
+
 	@DisplayName("Parse form data")
 	@Nested
 	class TestParseFormData {
@@ -88,7 +86,8 @@ class AfmAntragstellerMapperTest {
 		@Test
 		@DisplayName("should map antragsteller when key starts with an uppercase letter")
 		void shouldMapAntragstellerUppercase() {
-			formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)).build();
+			formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE))
+					.build();
 
 			var parsedFormData = parseFormData(formData);
 
@@ -99,7 +98,8 @@ class AfmAntragstellerMapperTest {
 		@Test
 		@DisplayName("should map only antragsteller key when both present")
 		void shouldMapOnlyOneKey() {
-			var expectedAntragsteller = AfmAntragstellerTestFactory.createBuilder().anrede("anrede").vorname("firstName").nachname("lastName").build();
+			var expectedAntragsteller = AfmAntragstellerTestFactory.createBuilder().anrede("anrede").vorname("firstName").nachname("lastName")
+					.build();
 
 			var parsedFormData = parseFormData(createFormData(expectedAntragsteller));
 
@@ -109,7 +109,7 @@ class AfmAntragstellerMapperTest {
 
 		private FormData createFormData(Antragsteller antragsteller) {
 			var formDataMap = AfmAntragstellerTestFactory.createMutableFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE);
-			var antragstelleMap = AfmAntragstellerTestFactory.createAntragstelleMap(
+			var antragstelleMap = AfmAntragstellerTestFactory.createPrivateAntragstelleMap(
 					MapEntry.entry(AfmAntragstellerMapper.ANREDE, antragsteller.getAnrede()),
 					MapEntry.entry(AfmAntragstellerMapper.VORNAME, antragsteller.getVorname()),
 					MapEntry.entry(AfmAntragstellerMapper.NACHNAME, antragsteller.getNachname())
@@ -118,9 +118,9 @@ class AfmAntragstellerMapperTest {
 			return FormData.builder().formData(formDataMap).build();
 		}
 
-		@DisplayName("map antragsteller data")
+		@DisplayName("map private antragsteller data")
 		@Nested
-		class TestMapAntragstellerData {
+		class TestMapPrivateAntragstellerData {
 
 			@Test
 			void shouldMapPostfachId() {
@@ -140,7 +140,8 @@ class AfmAntragstellerMapperTest {
 
 				@BeforeEach
 				void buildFormData() {
-					var antragstellerMap = AfmAntragstellerTestFactory.createAntragstelleMap(MapEntry.entry(NOT_MAPPED_FIELD, NOT_MAPPED_VALUE));
+					var antragstellerMap = AfmAntragstellerTestFactory.createPrivateAntragstelleMap(
+							MapEntry.entry(NOT_MAPPED_FIELD, NOT_MAPPED_VALUE));
 
 					var formDataMap = new HashMap<String, Object>();
 					formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, antragstellerMap);
@@ -176,9 +177,9 @@ class AfmAntragstellerMapperTest {
 			}
 		}
 
-		@DisplayName("remove fields")
+		@DisplayName("remove private fields")
 		@Nested
-		class TestRemoveFields {
+		class TestRemovePrivateFields {
 
 			@Test
 			void shouldRemoveAntragsteller() {
@@ -190,7 +191,8 @@ class AfmAntragstellerMapperTest {
 			@Test
 			@DisplayName("should remove Antragsteller when key starts with an uppercase latter")
 			void shouldRemoveAntragstellerUppercase() {
-				formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)).build();
+				formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE))
+						.build();
 
 				var parsedFormData = parseFormData(formData);
 
@@ -207,12 +209,31 @@ class AfmAntragstellerMapperTest {
 
 			private FormData createFormData() {
 				var formDataMap = AfmAntragstellerTestFactory.createMutableFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE);
-				formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, AfmAntragstellerTestFactory.createAntragstelleMap());
+				formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, AfmAntragstellerTestFactory.createPrivateAntragstelleMap());
 				return FormData.builder().formData(formDataMap).build();
 			}
 		}
 	}
 
+	@Nested
+	class TestMapFirmAntragstellerData {
+
+		@Test
+		void shouldMapFirmAntragstellerData() {
+			var parsedFormData = parseFormData(createFormData());
+
+			assertThat(parsedFormData.getAntragsteller()).usingRecursiveComparison()
+					.ignoringFields("data")
+					.isEqualTo(AfmAntragstellerTestFactory.createFirm());
+		}
+
+		private FormData createFormData() {
+			var formDataMap = AfmAntragstellerTestFactory.createFormDataMap();
+			formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, AfmAntragstellerTestFactory.createFirmAntragstelleMap());
+			return FormData.builder().formData(formDataMap).build();
+		}
+	}
+
 	private FormData parseFormData(FormData formData) {
 		return mapper.parseFormData(formData);
 	}
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java
index b127c5a0d30be66e723c7b1744378b5b613e3043..bcdf3985f30f88c7fe5d1a0d47f669aca86942b6 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java
@@ -32,11 +32,11 @@ import java.util.UUID;
 import org.assertj.core.data.MapEntry;
 
 import de.ozgcloud.eingang.common.formdata.Antragsteller;
-import de.ozgcloud.eingang.semantik.enginebased.afm.AfmAntragstellerMapper;
 
 public class AfmAntragstellerTestFactory {
 
 	public static final String ANREDE = "Herr";
+	public static final String FIRMA_NAME = "Firma X";
 	public static final String VORNAME = "Max";
 	public static final String NACHNAME = "Mustermann";
 	public static final String GEBURTSNAME = "Maxi";
@@ -55,6 +55,15 @@ public class AfmAntragstellerTestFactory {
 		return createBuilder().build();
 	}
 
+	public static Antragsteller createFirm() {
+		return createBuilder()
+				.firmaName(FIRMA_NAME)
+				.geburtsname(null)
+				.geburtsdatum(null)
+				.geburtsort(null)
+				.build();
+	}
+
 	public static Antragsteller.AntragstellerBuilder createBuilder() {
 		return Antragsteller.builder()
 				.anrede(ANREDE)
@@ -77,18 +86,18 @@ public class AfmAntragstellerTestFactory {
 	}
 
 	public static Map<String, Object> createFormDataMap(String antragstellerKey) {
-		return Collections.unmodifiableMap(createMutableFormDataMap(antragstellerKey));
+		return createMutableFormDataMap(antragstellerKey);
 	}
 
 	public static Map<String, Object> createMutableFormDataMap(String antragstellerKey) {
 		var map = new HashMap<String, Object>();
-		map.put(antragstellerKey, createAntragstelleMap());
+		map.put(antragstellerKey, createPrivateAntragstelleMap());
 		map.put(AfmAntragstellerMapper.POSTFACH_ID, POSTFACH_ID);
 		return map;
 	}
 
 	@SafeVarargs
-	public static Map<String, Object> createAntragstelleMap(MapEntry<String, Object>... additionalEntries) {
+	public static Map<String, Object> createPrivateAntragstelleMap(MapEntry<String, Object>... additionalEntries) {
 		var map = new HashMap<String, Object>();
 		map.put(AfmAntragstellerMapper.ANREDE, ANREDE);
 		map.put(AfmAntragstellerMapper.VORNAME, VORNAME);
@@ -107,4 +116,23 @@ public class AfmAntragstellerTestFactory {
 
 		return Collections.unmodifiableMap(map);
 	}
+
+	@SafeVarargs
+	public static Map<String, Object> createFirmAntragstelleMap(MapEntry<String, Object>... additionalEntries) {
+		var map = new HashMap<String, Object>();
+		map.put(AfmAntragstellerMapper.FIELD_FIRMA_NAME, FIRMA_NAME);
+		map.put(AfmAntragstellerMapper.FIELD_ANSPRECHPARTNER_ANREDE, ANREDE);
+		map.put(AfmAntragstellerMapper.FIELD_ANSPRECHPARTNER_VORNAME, VORNAME);
+		map.put(AfmAntragstellerMapper.FIELD_ANSPRECHPARTNER_NACHNAME, NACHNAME);
+		map.put(AfmAntragstellerMapper.EMAIL, EMAIL);
+		map.put(AfmAntragstellerMapper.TELEFON, TELEFON);
+		map.put(AfmAntragstellerMapper.FIELD_FIRMA_STRASSE, STRASSE);
+		map.put(AfmAntragstellerMapper.FIELD_FIRMA_HAUSNUMMER, HAUSNUMMER);
+		map.put(AfmAntragstellerMapper.FIELD_FIRMA_PLZ, PLZ);
+		map.put(AfmAntragstellerMapper.FIELD_FIRMA_STADT, ORT);
+
+		Arrays.stream(additionalEntries).forEach(entry -> map.put(entry.getKey(), entry.getValue()));
+
+		return Collections.unmodifiableMap(map);
+	}
 }
\ No newline at end of file
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java
index ecce809dfc165ebda375212fcc659021b9f8ea76..4bcbc1cba5239aeffb34b319eb5d0d81b54bc5a7 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java
@@ -7,8 +7,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 
-import org.assertj.core.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
@@ -28,23 +27,9 @@ class FormcycleAntragstellerMapperTest {
 
 	private static final String VALUE_KEY = "value";
 	private static final String LABEL_KEY = "label";
-	private static final Map<String, Object> ANTRAGSTELLER_DATA = new HashMap<>();
-	private static final Map<String, Object> ANTRAGSTELLER_MAP = Map.of("fsBKAllDaten", Map.of(VALUE_KEY, ANTRAGSTELLER_DATA));
-
-	@BeforeAll
-	static void fillAntragstellerData() {
-		ANTRAGSTELLER_DATA.put("tfAntragstellerAnrede", Map.of(VALUE_KEY, AntragstellerTestFactory.ANREDE, LABEL_KEY, "Anrede"));
-		ANTRAGSTELLER_DATA.put("tfAntragstellerVorname", Map.of(LABEL_KEY, "Vorname", VALUE_KEY, AntragstellerTestFactory.VORNAME));
-		ANTRAGSTELLER_DATA.put("tfAntragstellerName", Map.of(VALUE_KEY, AntragstellerTestFactory.NACHNAME, LABEL_KEY, "Nachname"));
-		ANTRAGSTELLER_DATA.put("tfAntragstellerGeburtsname", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSNAME, LABEL_KEY, "Geburtsname"));
-		ANTRAGSTELLER_DATA.put("tfAntragstellerGeburtsdatum", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSDATUM, LABEL_KEY, "Geburtsdatum"));
-		ANTRAGSTELLER_DATA.put("tfAntragstellerGeburtsort", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSORT, LABEL_KEY, "Geburtsort"));
-		ANTRAGSTELLER_DATA.put("tfAntragstellerEmail", Map.of(VALUE_KEY, AntragstellerTestFactory.EMAIL, LABEL_KEY, "E-Mail"));
-		ANTRAGSTELLER_DATA.put("tfAntragstellerTelefon", Map.of(VALUE_KEY, AntragstellerTestFactory.TELEFON, LABEL_KEY, "Telefon"));
-		ANTRAGSTELLER_DATA.put("tfAntragstellerAdresse", Map.of(LABEL_KEY, "Adresse", VALUE_KEY, AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER));
-		ANTRAGSTELLER_DATA.put("tfAntragstellerPLZ", Map.of(LABEL_KEY, "PLZ", VALUE_KEY, AntragstellerTestFactory.PLZ));
-		ANTRAGSTELLER_DATA.put("tfAntragstellerOrt", Map.of(LABEL_KEY, "Ort", VALUE_KEY, AntragstellerTestFactory.ORT));
-	}
+
+	private Map<String, Object> antragstellerData = new HashMap<>();
+	private Map<String, Object> antragstellerMap = Map.of("fsBKAllDaten", Map.of(VALUE_KEY, antragstellerData));
 
 	@Nested
 	class TestParseFormData {
@@ -56,16 +41,16 @@ class FormcycleAntragstellerMapperTest {
 		void shouldCallGetAntragsteller() {
 			mapper.parseFormData(buildFormData());
 
-			verify(mapper).getAntragstellerData(ANTRAGSTELLER_MAP);
+			verify(mapper).getAntragstellerData(antragstellerMap);
 		}
 
 		@Test
 		void shouldCallBuildAntragsteller() {
-			doReturn(Optional.of(ANTRAGSTELLER_DATA)).when(mapper).getAntragstellerData(anyMap());
+			doReturn(Optional.of(antragstellerData)).when(mapper).getAntragstellerData(anyMap());
 
 			mapper.parseFormData(buildFormData());
 
-			verify(mapper).buildAntragsteller(ANTRAGSTELLER_DATA);
+			verify(mapper).buildAntragsteller(antragstellerData);
 		}
 
 		@Test
@@ -87,7 +72,7 @@ class FormcycleAntragstellerMapperTest {
 		}
 
 		FormData buildFormData() {
-			return FormData.builder().formData(ANTRAGSTELLER_MAP).build();
+			return FormData.builder().formData(antragstellerMap).build();
 		}
 	}
 
@@ -105,9 +90,9 @@ class FormcycleAntragstellerMapperTest {
 
 		@Test
 		void shouldReturnAntragstellerData() {
-			var result = mapper.getAntragstellerData(ANTRAGSTELLER_MAP);
+			var result = mapper.getAntragstellerData(antragstellerMap);
 
-			assertThat(result).contains(ANTRAGSTELLER_DATA);
+			assertThat(result).contains(antragstellerData);
 		}
 	}
 
@@ -116,6 +101,8 @@ class FormcycleAntragstellerMapperTest {
 
 		@Test
 		void shouldSetAnrede() {
+			antragstellerData.put("tfAntragstellerAnrede", Map.of(VALUE_KEY, AntragstellerTestFactory.ANREDE, LABEL_KEY, "Anrede"));
+
 			var result = buildAntragsteller();
 
 			assertThat(result.getAnrede()).isEqualTo(AntragstellerTestFactory.ANREDE);
@@ -123,6 +110,8 @@ class FormcycleAntragstellerMapperTest {
 
 		@Test
 		void shouldSetVorname() {
+			antragstellerData.put("tfAntragstellerVorname", Map.of(LABEL_KEY, "Vorname", VALUE_KEY, AntragstellerTestFactory.VORNAME));
+
 			var result = buildAntragsteller();
 
 			assertThat(result.getVorname()).isEqualTo(AntragstellerTestFactory.VORNAME);
@@ -130,6 +119,8 @@ class FormcycleAntragstellerMapperTest {
 
 		@Test
 		void shouldSetNachname() {
+			antragstellerData.put("tfAntragstellerName", Map.of(VALUE_KEY, AntragstellerTestFactory.NACHNAME, LABEL_KEY, "Nachname"));
+
 			var result = buildAntragsteller();
 
 			assertThat(result.getNachname()).isEqualTo(AntragstellerTestFactory.NACHNAME);
@@ -137,6 +128,8 @@ class FormcycleAntragstellerMapperTest {
 
 		@Test
 		void shouldSetGeburtsname() {
+			antragstellerData.put("tfAntragstellerGeburtsname", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSNAME, LABEL_KEY, "Geburtsname"));
+
 			var result = buildAntragsteller();
 
 			assertThat(result.getGeburtsname()).isEqualTo(AntragstellerTestFactory.GEBURTSNAME);
@@ -144,6 +137,8 @@ class FormcycleAntragstellerMapperTest {
 
 		@Test
 		void shouldSetGeburtsdatum() {
+			antragstellerData.put("tfAntragstellerGeburtsdatum", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSDATUM, LABEL_KEY, "Geburtsdatum"));
+
 			var result = buildAntragsteller();
 
 			assertThat(result.getGeburtsdatum()).isEqualTo(AntragstellerTestFactory.GEBURTSDATUM);
@@ -151,6 +146,8 @@ class FormcycleAntragstellerMapperTest {
 
 		@Test
 		void shouldSetGeburtsort() {
+			antragstellerData.put("tfAntragstellerGeburtsort", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSORT, LABEL_KEY, "Geburtsort"));
+
 			var result = buildAntragsteller();
 
 			assertThat(result.getGeburtsort()).isEqualTo(AntragstellerTestFactory.GEBURTSORT);
@@ -158,6 +155,8 @@ class FormcycleAntragstellerMapperTest {
 
 		@Test
 		void shouldSetEmail() {
+			antragstellerData.put("tfAntragstellerEmail", Map.of(VALUE_KEY, AntragstellerTestFactory.EMAIL, LABEL_KEY, "E-Mail"));
+
 			var result = buildAntragsteller();
 
 			assertThat(result.getEmail()).isEqualTo(AntragstellerTestFactory.EMAIL);
@@ -165,6 +164,8 @@ class FormcycleAntragstellerMapperTest {
 
 		@Test
 		void shouldSetTelefon() {
+			antragstellerData.put("tfAntragstellerTelefon", Map.of(VALUE_KEY, AntragstellerTestFactory.TELEFON, LABEL_KEY, "Telefon"));
+
 			var result = buildAntragsteller();
 
 			assertThat(result.getTelefon()).isEqualTo(AntragstellerTestFactory.TELEFON);
@@ -172,6 +173,9 @@ class FormcycleAntragstellerMapperTest {
 
 		@Test
 		void shouldSetAdresse() {
+			antragstellerData.put("tfAntragstellerAdresse",
+					Map.of(LABEL_KEY, "Adresse", VALUE_KEY, AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER));
+
 			var result = buildAntragsteller();
 
 			assertThat(result.getStrasse()).isEqualTo(AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER);
@@ -179,6 +183,8 @@ class FormcycleAntragstellerMapperTest {
 
 		@Test
 		void shouldSetPlz() {
+			antragstellerData.put("tfAntragstellerPLZ", Map.of(LABEL_KEY, "PLZ", VALUE_KEY, AntragstellerTestFactory.PLZ));
+
 			var result = buildAntragsteller();
 
 			assertThat(result.getPlz()).isEqualTo(AntragstellerTestFactory.PLZ);
@@ -186,13 +192,48 @@ class FormcycleAntragstellerMapperTest {
 
 		@Test
 		void shouldSetOrt() {
+			antragstellerData.put("tfAntragstellerOrt", Map.of(LABEL_KEY, "Ort", VALUE_KEY, AntragstellerTestFactory.ORT));
+
 			var result = buildAntragsteller();
 
 			assertThat(result.getOrt()).isEqualTo(AntragstellerTestFactory.ORT);
 		}
 
 		Antragsteller buildAntragsteller() {
-			return mapper.buildAntragsteller(ANTRAGSTELLER_DATA);
+			return mapper.buildAntragsteller(antragstellerData);
+		}
+	}
+
+	@Nested
+	class TestBuildFirmaAntragsteller {
+
+		@BeforeEach
+		void fillAntragstellerData() {
+			antragstellerData.put("tfOrgName", Map.of(VALUE_KEY, AntragstellerTestFactory.FIRMA_NAME, LABEL_KEY, "Firmenname"));
+			antragstellerData.put("tfAntragstellerAnrede", Map.of(VALUE_KEY, AntragstellerTestFactory.ANREDE, LABEL_KEY, "Anrede"));
+			antragstellerData.put("tfAntragstellerVorname", Map.of(LABEL_KEY, "Vorname", VALUE_KEY, AntragstellerTestFactory.VORNAME));
+			antragstellerData.put("tfAntragstellerName", Map.of(VALUE_KEY, AntragstellerTestFactory.NACHNAME, LABEL_KEY, "Nachname"));
+			antragstellerData.put("tfAntragstellerGeburtsname", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSNAME, LABEL_KEY, "Geburtsname"));
+			antragstellerData.put("tfAntragstellerGeburtsdatum", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSDATUM, LABEL_KEY, "Geburtsdatum"));
+			antragstellerData.put("tfAntragstellerGeburtsort", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSORT, LABEL_KEY, "Geburtsort"));
+			antragstellerData.put("tfAntragstellerEmail", Map.of(VALUE_KEY, AntragstellerTestFactory.EMAIL, LABEL_KEY, "E-Mail"));
+			antragstellerData.put("tfAntragstellerTelefon", Map.of(VALUE_KEY, AntragstellerTestFactory.TELEFON, LABEL_KEY, "Telefon"));
+			antragstellerData.put("tfAntragstellerAdresse",
+					Map.of(LABEL_KEY, "Adresse", VALUE_KEY, AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER));
+			antragstellerData.put("tfAntragstellerPLZ", Map.of(LABEL_KEY, "PLZ", VALUE_KEY, AntragstellerTestFactory.PLZ));
+			antragstellerData.put("tfAntragstellerOrt", Map.of(LABEL_KEY, "Ort", VALUE_KEY, AntragstellerTestFactory.ORT));
 		}
+
+		@Test
+		void shouldMapFirmaData() {
+			var expectedAntragsteller = AntragstellerTestFactory.createFirmBuilder()
+					.strasse("%s %s".formatted(AntragstellerTestFactory.STRASSE, AntragstellerTestFactory.HAUSNUMMER))
+					.hausnummer(null).postfachId(null).data(null).build();
+
+			var result = mapper.buildAntragsteller(antragstellerData);
+
+			assertThat(result).usingRecursiveComparison().isEqualTo(expectedAntragsteller);
+		}
+
 	}
 }
\ No newline at end of file