diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java b/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java
index 4da278f1a965ab9231806c179dd00970eb09ab78..17ec9b5f4098836e04019baf4a4733294fa089c0 100644
--- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java
+++ b/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java
@@ -30,8 +30,12 @@ public class FormDataUtils {
 		return this;
 	}
 
+	public FormData.FormDataBuilder builder() {
+		return baseFormData.toBuilder().formData(Collections.unmodifiableMap(modifieableData));
+	}
+
 	public FormData build() {
-		return baseFormData.toBuilder().formData(Collections.unmodifiableMap(modifieableData)).build();
+		return builder().build();
 	}
 
 	@SuppressWarnings("unchecked")
diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapper.java b/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapper.java
index 49dcf058b6e371e51a312302ff1b1128006f3557..7810c2ef5c918e971e13243c9951ff8dcbf028f7 100644
--- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapper.java
+++ b/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapper.java
@@ -26,6 +26,7 @@ package de.itvsh.kop.eingangsadapter.intelliform;
 import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper.*;
 
 import java.io.ByteArrayInputStream;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -41,6 +42,7 @@ import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile;
 import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup;
 import lombok.RequiredArgsConstructor;
 
+//TODO Naming prüfen - er scheint mir nicht semantik zu mappen und befindet sich auch nicht im entsprechenden Modul
 @Component
 @RequiredArgsConstructor
 class SemantikFormDataMapper {
@@ -94,7 +96,7 @@ class SemantikFormDataMapper {
 
 		addHeader(document, formDataMap);
 
-		return FormData.builder().formData(formDataMap).build();
+		return FormData.builder().formData(Collections.unmodifiableMap(formDataMap)).build();
 	}
 
 	private byte[] getXmlFormData(DepositData depositData) {
diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapper.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapper.java
index aa6a12d2f132f2ebb0c1f5d149a514935da0e118..5aea6ce1d47d063f9a596ec96ecb41754b6b81a1 100644
--- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapper.java
+++ b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapper.java
@@ -26,7 +26,6 @@ package de.itvsh.kop.eingangsadapter.semantik.enginebased;
 import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*;
 import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelMapper.*;
 
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -36,6 +35,7 @@ import org.springframework.stereotype.Component;
 
 import de.itvsh.kop.eingangsadapter.common.formdata.Antragsteller;
 import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
+import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils;
 
 @Component
 public class FormSolutionsAntragstellerMapper implements FormSolutionsEngineBasedMapper {
@@ -49,9 +49,10 @@ public class FormSolutionsAntragstellerMapper implements FormSolutionsEngineBase
 
 	@Override
 	public FormData parseFormData(FormData formData) {
-		return formData.toBuilder()
+		return FormDataUtils.from(formData)
+				.remove(POSTKORBHANDLE)
+				.builder()
 				.antragsteller(buildAntragsteller(formData))
-				.formData(removeProcessedData(formData))
 				.build();
 	}
 
@@ -105,10 +106,4 @@ public class FormSolutionsAntragstellerMapper implements FormSolutionsEngineBase
 		return ((List<Map<String, Object>>) ((Map<String, Object>) formData.get(ASSISTANT)).get(PANELS));
 	}
 
-	Map<String, Object> removeProcessedData(FormData formData) {
-		var formDataMap = new HashMap<String, Object>(formData.getFormData());
-		formDataMap.remove(POSTKORBHANDLE);
-
-		return Collections.unmodifiableMap(formDataMap);
-	}
 }
diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapter.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapter.java
index 4eab80ffbca842cd543facc2de7659b94c554e6a..99e0b79f7af4fc813d9785c985e7379d725992d9 100644
--- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapter.java
+++ b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapter.java
@@ -23,13 +23,12 @@
  */
 package de.itvsh.kop.eingangsadapter.semantik.enginebased;
 
-import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
 
 import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
+import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils;
 
 public class FormSolutionsEngineBasedAdapter implements EngineBasedSemantikAdapter {
 
@@ -54,11 +53,10 @@ public class FormSolutionsEngineBasedAdapter implements EngineBasedSemantikAdapt
 	}
 
 	FormData removeProcessedData(FormData formData) {
-		var formDataMap = new HashMap<String, Object>(formData.getFormData());
-		formDataMap.remove(ASSISTANT);
-		formDataMap.remove(ANLIEGEN_ID);
-		formDataMap.remove(KOMMUNALVERWALTUNG_ID);
-
-		return formData.toBuilder().formData(Collections.unmodifiableMap(formDataMap)).build();
+		return FormDataUtils.from(formData)
+				.remove(ASSISTANT)
+				.remove(ANLIEGEN_ID)
+				.remove(KOMMUNALVERWALTUNG_ID)
+				.build();
 	}
 }
diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java
index ce0098a786b44bfb074c559fef1adcfc9561acc6..4e8a1b558a958c6e575337c4150e5e36047b1533 100644
--- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java
+++ b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java
@@ -25,13 +25,12 @@ package de.itvsh.kop.eingangsadapter.semantik.enginebased;
 
 import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*;
 
-import java.util.Collections;
-import java.util.HashMap;
 import java.util.Map;
 
 import org.springframework.stereotype.Component;
 
 import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
+import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils;
 import de.itvsh.kop.eingangsadapter.common.formdata.FormHeader;
 
 @Component
@@ -43,9 +42,10 @@ public class FormSolutionsHeaderMapper implements FormSolutionsEngineBasedMapper
 
 	@Override
 	public FormData parseFormData(FormData formData) {
-		return formData.toBuilder()
+		return FormDataUtils.from(formData)
+				.remove(TRANSACTION_ID)
+				.builder()
 				.header(buildFormHeader(formData))
-				.formData(removeProcessedData(formData))
 				.build();
 	}
 
@@ -60,22 +60,17 @@ public class FormSolutionsHeaderMapper implements FormSolutionsEngineBasedMapper
 
 	private String getIdentifier(FormData formData) {
 		return (String) getAssistant(formData).get(IDENTIFIER);
-		// TODO immutable machen
 	}
 
 	private String getRequestId(FormData formData) {
 		return (String) formData.getFormData().get(TRANSACTION_ID);
 	}
 
-	@SuppressWarnings("unchecked")
 	private Map<String, Object> getAssistant(FormData formData) {
-		return (Map<String, Object>) formData.getFormData().get(ASSISTANT);
+		return FormDataUtils.getSubMap(formData, ASSISTANT);
 	}
 
 	Map<String, Object> removeProcessedData(FormData processedData) {
-		var formDataMap = new HashMap<String, Object>(processedData.getFormData());
-		formDataMap.remove(TRANSACTION_ID);
-
-		return Collections.unmodifiableMap(formDataMap);
+		return FormDataUtils.from(processedData).remove(TRANSACTION_ID).build().getFormData();
 	}
 }
diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapperTest.java
index c6d959d368d02f0e977a2b1735540852f90c1780..079da0827d5013e789cdacabb7dc43f0ffe011c8 100644
--- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapperTest.java
+++ b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapperTest.java
@@ -67,6 +67,13 @@ class FormSolutionsAntragstellerMapperTest {
 			assertThat(result).usingRecursiveComparison().ignoringFields("antragsteller", "formData").isEqualTo(formData);
 		}
 
+		@Test
+		void shouldRemovePostkorbhandle() {
+			var result = parseFormData();
+
+			assertThat(result.getFormData()).doesNotContainKey(FormSolutionsAntragstellerMapper.POSTKORBHANDLE);
+		}
+
 		private FormData parseFormData() {
 			return mapper.parseFormData(formData);
 		}
@@ -100,17 +107,5 @@ class FormSolutionsAntragstellerMapperTest {
 				return mapper.buildAntragsteller(formData);
 			}
 		}
-
-		@DisplayName("remove processed data")
-		@Nested
-		class TestRemoveProcessedData {
-
-			@Test
-			void shouldRemovePostkorbhandle() {
-				var formDataMap = mapper.removeProcessedData(formData);
-
-				assertThat(formDataMap).doesNotContainKey(FormSolutionsAntragstellerMapper.POSTKORBHANDLE);
-			}
-		}
 	}
 }
\ No newline at end of file
diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java
index fbf2fbaa2172a51716bd8deb0c99e05019ab257c..dc4bcd9b4d6abb5199a2038d6514f52d6fdeb219 100644
--- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java
+++ b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java
@@ -54,17 +54,17 @@ class FormSolutionsHeaderMapperTest {
 		}
 
 		@Test
-		void shouldCallRemoveProcessedData() {
-			parseFormData();
+		void shouldReturnValue() {
+			var result = parseFormData();
 
-			verify(mapper).removeProcessedData(formData);
+			assertThat(result).usingRecursiveComparison().ignoringFields("header", "formData").isEqualTo(formData);
 		}
 
 		@Test
-		void shouldReturnValue() {
+		void shouldRemoveTransactionId() {
 			var result = parseFormData();
 
-			assertThat(result).usingRecursiveComparison().ignoringFields("header", "formData").isEqualTo(formData);
+			assertThat(result.getFormData()).doesNotContainKey(FormSolutionsHeaderMapper.TRANSACTION_ID);
 		}
 
 		private FormData parseFormData() {