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..40bee43c61eaa12f49341314d7ae4a03fbbd89ba 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 firmName;
 	private String vorname;
 	private String nachname;
 	private String geburtsname;
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/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..7a4ffd5005be1439e1db60aba09cde5a8de7d473 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
+				.firmName(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) {