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 52365312ec979e24d37560740ce9fca8c02db523..3c5da83ff3f9907a58d51bbae4f70614dcac721c 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
@@ -92,55 +92,66 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper {
 		return (String) formDataMap.get(POSTFACH_ID);
 	}
 
-	private Optional<Map<String, Object>> getAntragstellerMap(Map<String, Object> formDataMap) {
+	private Optional<Map<String, String>> getAntragstellerMap(Map<String, Object> formDataMap) {
 		return Optional.ofNullable(formDataMap.get(ANTRAGSTELLER))
 				.or(() -> Optional.ofNullable(formDataMap.get(ANTRAGSTELLER_UPPERCASE)))
 				.map(Map.class::cast)
-				.map(LinkedHashMap<String, Object>::new);
+				.map(this::mapValuesToString)
+				.map(LinkedHashMap::new);
+	}
+
+	private Map<String, String> mapValuesToString(Map<String, Object> map) {
+		return map.entrySet().stream()
+				.collect(Collectors.toMap(
+						Map.Entry::getKey,
+						entry -> Optional.ofNullable(entry.getValue())
+								.map(Object::toString)
+								.orElse("")
+				));
 	}
 
 	private Antragsteller.AntragstellerBuilder addAntragstellerData(Antragsteller.AntragstellerBuilder builder,
-			Map<String, Object> antragstellerMap) {
+			Map<String, String> 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)) //
-				.nachname((String) antragstellerMap.get(NACHNAME)) //
-				.geburtsname((String) antragstellerMap.get(GEBURTSNAME)) //
-				.geburtsdatum((String) antragstellerMap.get(GEBURTSDATUM)) //
-				.geburtsort((String) antragstellerMap.get(GEBURTSORT)) //
-				.email((String) antragstellerMap.get(EMAIL)) //
-				.telefon((String) antragstellerMap.get(TELEFON)) //
-				.strasse((String) antragstellerMap.get(STRASSE)) //
-				.hausnummer((String) antragstellerMap.get(HAUSNUMMER)) //
-				.plz((String) antragstellerMap.get(PLZ)) //
-				.ort((String) antragstellerMap.get(ORT)) //
+			Map<String, String> antragstellerMap) {
+		return builder
+				.anrede(antragstellerMap.get(ANREDE))
+				.vorname(antragstellerMap.get(VORNAME))
+				.nachname(antragstellerMap.get(NACHNAME))
+				.geburtsname(antragstellerMap.get(GEBURTSNAME))
+				.geburtsdatum(antragstellerMap.get(GEBURTSDATUM))
+				.geburtsort(antragstellerMap.get(GEBURTSORT))
+				.email(antragstellerMap.get(EMAIL))
+				.telefon(antragstellerMap.get(TELEFON))
+				.strasse(antragstellerMap.get(STRASSE))
+				.hausnummer(antragstellerMap.get(HAUSNUMMER))
+				.plz(antragstellerMap.get(PLZ))
+				.ort(MapUtils.getString(antragstellerMap, ORT))
 				.data(getNotMappedData(antragstellerMap, getPrivateFields()));
 	}
 
 	Antragsteller.AntragstellerBuilder addFirmAntragstellerData(Antragsteller.AntragstellerBuilder builder,
-			Map<String, Object> antragstellerMap) {
+			Map<String, String> 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))
+				.firmaName(antragstellerMap.get(FIELD_FIRMA_NAME))
+				.strasse(antragstellerMap.get(FIELD_FIRMA_STRASSE))
+				.hausnummer(antragstellerMap.get(FIELD_FIRMA_HAUSNUMMER))
+				.plz(antragstellerMap.get(FIELD_FIRMA_PLZ))
+				.ort(antragstellerMap.get(FIELD_FIRMA_STADT))
+				.anrede(antragstellerMap.get(FIELD_ANSPRECHPARTNER_ANREDE))
+				.vorname(antragstellerMap.get(FIELD_ANSPRECHPARTNER_VORNAME))
+				.nachname(antragstellerMap.get(FIELD_ANSPRECHPARTNER_NACHNAME))
+				.telefon(antragstellerMap.get(TELEFON))
+				.email(antragstellerMap.get(EMAIL))
 				.data(getNotMappedData(antragstellerMap, getFirmaFields()));
 	}
 
-	private Map<String, Object> getNotMappedData(Map<String, Object> antragstellerMap, Set<String> mappedFields) {
+	private Map<String, Object> getNotMappedData(Map<String, String> 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));
 	}
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 f68df9df3da7a3905ef9a4dc0fdd9a96c112c890..9d3e0a47f8c595905cf0496896c765e2902a0332 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
@@ -28,6 +28,7 @@ import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.UUID;
 
 import org.assertj.core.data.MapEntry;
@@ -118,6 +119,7 @@ class AfmAntragstellerMapperTest {
 			return FormData.builder().formData(formDataMap).build();
 		}
 
+
 		@DisplayName("map private antragsteller data")
 		@Nested
 		class TestMapPrivateAntragstellerData {
@@ -129,6 +131,46 @@ class AfmAntragstellerMapperTest {
 				assertThat(parsedFormData.getAntragsteller().getPostfachId()).isEqualTo(AfmAntragstellerTestFactory.POSTFACH_ID);
 			}
 
+			@DisplayName("with invalid data types")
+			@Nested
+			class TestWithInvalidDataTypes {
+
+				@DisplayName("should map invalid type to string")
+				@Test
+				void shouldMapInvalidTypeToString() {
+					var formData = createFormDataWithOrt(List.of("listort1", "listort2"));
+
+					var parsedFormData = parseFormData(formData);
+
+					assertThat(parsedFormData.getAntragsteller().getOrt()).isEqualTo("[listort1, listort2]");
+				}
+			}
+
+			@DisplayName("with missing data types")
+			@Nested
+			class TestWithMissingDataTypes {
+
+				@DisplayName("should map missing type to empty string")
+				@Test
+				void shouldMapMissingTypeToEmptyString() {
+					var formData = createFormDataWithOrt(null);
+
+					var parsedFormData = parseFormData(formData);
+
+					assertThat(parsedFormData.getAntragsteller().getOrt()).isEmpty();
+				}
+			}
+
+			private FormData createFormDataWithOrt(Object ort) {
+				var antragstellerMap = AfmAntragstellerTestFactory.createPrivateAntragstelleMap(
+						MapEntry.entry(AfmAntragstellerMapper.ORT, ort));
+
+				var formDataMap = new HashMap<String, Object>();
+				formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, antragstellerMap);
+
+				return FormData.builder().formData(formDataMap).build();
+			}
+
 			@DisplayName("with mapped and not mapped value")
 			@Nested
 			class TestWithMappedAndNotMappedValue {