diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataFlattener.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataFlattener.java
new file mode 100644
index 0000000000000000000000000000000000000000..1d49b8440a298bf31af7694db0bda7772525a171
--- /dev/null
+++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataFlattener.java
@@ -0,0 +1,36 @@
+package de.ozgcloud.alfa.vorgang;
+
+import java.util.HashMap;
+import java.util.Map;
+
+class FormDataFlattener {
+
+	static final String VALUE_KEY = "value";
+
+	public static Map<String, Object> flatten(Map<String, Object> formData) {
+		return getDataWithoutValueKeys(formData);
+	}
+
+	private static Map<String, Object> getDataWithoutValueKeys(Map<String, Object> data) {
+		Map<String, Object> result = new HashMap<>();
+		for (var entry : data.entrySet()) {
+			result.put(entry.getKey(), getDataWithoutValueKey(entry.getValue()));
+		}
+		return result;
+	}
+
+	@SuppressWarnings("unchecked")
+	private static Object getDataWithoutValueKey(Object data) {
+		if (!(data instanceof Map)) {
+			return data;
+		}
+		Map<String, Object> formData = (Map<String, Object>) data;
+		return containsValueKeyAsSingleEntry(formData) ?
+				getDataWithoutValueKey(formData.get(VALUE_KEY)) :
+				getDataWithoutValueKeys(formData);
+	}
+
+	private static boolean containsValueKeyAsSingleEntry(Map<String, Object> formData) {
+		return formData.containsKey(VALUE_KEY) && formData.size() == 1;
+	}
+}
diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataMapper.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataMapper.java
index b32558d6c69f6a6f9c5a6b99bfc57c1513bd58c0..7c1af10f8ea2f721b5b3efe9f354265c670f328d 100644
--- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataMapper.java
+++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataMapper.java
@@ -30,7 +30,10 @@ class FormDataMapper {
 	private DateConverter dateConverter;
 
 	public Antragsdaten toAntragsdaten(@NotNull VorgangWithEingang vorgang) {
-		return Optional.ofNullable(vorgang.getEingang()).map(Eingang::getFormData).map(this::buildAntragsdaten)
+		return Optional.ofNullable(vorgang.getEingang())
+				.map(Eingang::getFormData)
+				.map(FormDataFlattener::flatten)
+				.map(this::buildAntragsdaten)
 				.orElseGet(Antragsdaten::new);
 	}
 
diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/FormDataFlattenerTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/FormDataFlattenerTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..a9f067504d684c773d3baa8f9002bc413b9bedb1
--- /dev/null
+++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/FormDataFlattenerTest.java
@@ -0,0 +1,71 @@
+package de.ozgcloud.alfa.vorgang;
+
+import static org.assertj.core.api.Assertions.*;
+
+import java.util.Map;
+
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+
+public class FormDataFlattenerTest {
+
+	@Nested
+	class TestFlatten {
+
+		@Test
+		void shouldPreserveValueKeyWithoutParent() {
+			Map<String, Object> formData = Map.of("value", "Kiel");
+
+			var flattened = FormDataFlattener.flatten(formData);
+
+			assertThat(flattened).isEqualTo(formData);
+		}
+
+		@Test
+		void shouldEliminateValueKeyWithoutSiblings() {
+			Map<String, Object> formData = Map.of("ort", Map.of("value", "Kiel"));
+			Map<String, Object> expected = Map.of("ort", "Kiel");
+
+			var flattened = FormDataFlattener.flatten(formData);
+
+			assertThat(flattened).isEqualTo(expected);
+		}
+
+		@Test
+		void shouldPreserveValueKeyIfHasSiblings() {
+			Map<String, Object> formData = Map.of("ort", Map.of("value", "Kiel", "value2", "Kiel"));
+
+			var flattened = FormDataFlattener.flatten(formData);
+
+			assertThat(flattened).isEqualTo(formData);
+		}
+
+		@Test
+		void shouldPreserveNonValueKeys() {
+			Map<String, Object> formData = Map.of(
+					"empfangendestelle",
+					Map.of(
+							"value",
+							Map.of(
+									"OrganisationseinheitenAuswahl",
+									Map.of(
+											"value",
+											"123456"
+									)
+							)
+					)
+			);
+			Map<String, Object> expected = Map.of(
+					"empfangendestelle",
+					Map.of(
+							"OrganisationseinheitenAuswahl",
+							"123456"
+					)
+			);
+
+			var flattened = FormDataFlattener.flatten(formData);
+
+			assertThat(flattened).isEqualTo(expected);
+		}
+	}
+}
diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/FormDataMapperTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/FormDataMapperTest.java
index fd5111ad3b4d71b1b3dcdc92de8c5e5bae08ddd0..cb17aaabc7d3b24f6b58f74804cf2e3d3bfeab05 100644
--- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/FormDataMapperTest.java
+++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/FormDataMapperTest.java
@@ -8,12 +8,14 @@ import java.time.ZonedDateTime;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.MockedStatic;
 import org.mockito.Spy;
 
 import de.ozgcloud.alfa.common.DateConverter;
@@ -42,13 +44,17 @@ class FormDataMapperTest {
 		private VorgangWithEingang vorgang;
 
 		@Test
-		void shouldCallBuildItemType() {
-			doReturn(new Object()).when(formDataMapper).formatValue(any(), any());
-			var vorgang = VorgangWithEingangTestFactory.create();
+		void shouldCallBuildAntragsdaten() {
+			try (MockedStatic<FormDataFlattener> formDataFlattener = mockStatic(FormDataFlattener.class)) {
+				var vorgang = VorgangWithEingangTestFactory.create();
+				Map<String, Object> flattenedFormData = Map.of(UUID.randomUUID().toString(), "value1");
+				formDataFlattener.when(() -> FormDataFlattener.flatten(any())).thenReturn(flattenedFormData);
+				doReturn(new Object()).when(formDataMapper).formatValue(any(), any());
 
-			formDataMapper.toAntragsdaten(vorgang);
+				formDataMapper.toAntragsdaten(vorgang);
 
-			verify(formDataMapper).buildAntragsdaten(vorgang.getEingang().getFormData());
+				verify(formDataMapper).buildAntragsdaten(flattenedFormData);
+			}
 		}
 
 		@Test