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 fe82cb56ed0e8a7dc720bf799307c083b66cb19e..7eb007923536c5e66cf0f3a5b843b6d60cb0723f 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,6 +25,7 @@ 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;
 
@@ -38,32 +39,42 @@ public class FormSolutionsHeaderMapper implements FormSolutionsEngineBasedMapper
 
 	static final String TRANSACTION_ID = "transactionId";
 
-	static final String FS_FORMENGINE_NAME = "FormSolutions";
+	static final String FORM_ENGINE_NAME = "FormSolutions";
 
 	@Override
 	public FormData parseFormData(FormData formData) {
-		var header = mapHeader(formData);
-		var cleanedData = removeTransactionId(formData);
+		return formData.toBuilder()
+				.header(buildFormHeader(formData))
+				.formData(removeProcessedData(formData))
+				.build();
+	}
 
-		return formData.toBuilder().header(header).formData(cleanedData).build();
+	FormHeader buildFormHeader(FormData formData) {
+		return FormHeader.builder()
+				.formName(getIdentifier(formData))
+				.formId(getIdentifier(formData))
+				.requestId(getRequestId(formData))
+				.formEngineName(FORM_ENGINE_NAME)
+				.build();
 	}
 
-	private Map<String, Object> removeTransactionId(FormData processedData) {
-		Map<String, Object> cleanedData = new HashMap<>(processedData.getFormData());
-		cleanedData.remove(TRANSACTION_ID);
-		return cleanedData;
+	private String getIdentifier(FormData formData) {
+		return (String) getAssistant(formData).get(IDENTIFIER);
 	}
 
-	@SuppressWarnings("unchecked")
-	FormHeader mapHeader(FormData formData) {
-		var assistantMap = (Map<String, Object>) formData.getFormData().get(ASSISTANT);
+	private String getRequestId(FormData formData) {
+		return (String) formData.getFormData().get(TRANSACTION_ID);
+	}
 
-		return FormHeader.builder()
-				.formName((String) assistantMap.get(IDENTIFIER))
-				.formId((String) assistantMap.get(IDENTIFIER))
-				.requestId((String) formData.getFormData().get(TRANSACTION_ID))
-				.formEngineName(FS_FORMENGINE_NAME)
-				.build();
+	@SuppressWarnings("unchecked")
+	private Map<String, Object> getAssistant(FormData formData) {
+		return (Map<String, Object>) formData.getFormData().get(ASSISTANT);
 	}
 
+	Map<String, Object> removeProcessedData(FormData processedData) {
+		var formDataMap = new HashMap<String, Object>(processedData.getFormData());
+		formDataMap.remove(TRANSACTION_ID);
+
+		return Collections.unmodifiableMap(formDataMap);
+	}
 }
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 902a3047a4f3ed8c0d19c7179f88cde66aa82b04..fbf2fbaa2172a51716bd8deb0c99e05019ab257c 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
@@ -25,41 +25,99 @@ package de.itvsh.kop.eingangsadapter.semantik.enginebased;
 
 import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsHeaderTestFactory.*;
 import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
+import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
+import org.mockito.Spy;
+
+import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
+import de.itvsh.kop.eingangsadapter.common.formdata.FormHeader;
 
 class FormSolutionsHeaderMapperTest {
-	private FormSolutionsHeaderMapper mapper = new FormSolutionsHeaderMapper();
 
+	@Spy
+	private final FormSolutionsHeaderMapper mapper = new FormSolutionsHeaderMapper();
+
+	@DisplayName("Parse formData")
 	@Nested
-	class TestHeaderMapping {
+	class TestParseFormData {
+
+		private final FormData formData = FormSolutionsHeaderTestFactory.create();
+
 		@Test
-		void shouldParseFormName() {
-			var formData = mapper.parseFormData(FormSolutionsHeaderTestFactory.create());
+		void shouldCallBuildFormHeader() {
+			parseFormData();
 
-			assertThat(formData.getHeader().getFormName()).isEqualTo(FORM_NAME);
+			verify(mapper).buildFormHeader(formData);
 		}
 
 		@Test
-		void shouldParseFormId() {
-			var formData = mapper.parseFormData(FormSolutionsHeaderTestFactory.create());
+		void shouldCallRemoveProcessedData() {
+			parseFormData();
 
-			assertThat(formData.getHeader().getFormId()).isEqualTo(FORM_NAME);
+			verify(mapper).removeProcessedData(formData);
 		}
 
 		@Test
-		void shouldParseTransactionId() {
-			var formData = mapper.parseFormData(FormSolutionsHeaderTestFactory.create());
+		void shouldReturnValue() {
+			var result = parseFormData();
 
-			assertThat(formData.getHeader().getRequestId()).isEqualTo(REQUEST_ID);
+			assertThat(result).usingRecursiveComparison().ignoringFields("header", "formData").isEqualTo(formData);
 		}
 
-		@Test
-		void shouldSetFormEngineName() {
-			var formData = mapper.parseFormData(FormSolutionsHeaderTestFactory.create());
+		private FormData parseFormData() {
+			return mapper.parseFormData(formData);
+		}
+
+		@DisplayName("build form header")
+		@Nested
+		class TestBuildFormHeader {
+
+			@Test
+			void shouldHaveFormName() {
+				var formHeader = buildFormHeader();
+
+				assertThat(formHeader.getFormName()).isEqualTo(FORM_NAME);
+			}
+
+			@Test
+			void shouldHaveFormId() {
+				var formHeader = buildFormHeader();
+
+				assertThat(formHeader.getFormId()).isEqualTo(FORM_NAME);
+			}
+
+			@Test
+			void shouldHaveTransactionId() {
+				var formHeader = buildFormHeader();
+
+				assertThat(formHeader.getRequestId()).isEqualTo(REQUEST_ID);
+			}
+
+			@Test
+			void shouldHaveFormEngineName() {
+				var formHeader = buildFormHeader();
+
+				assertThat(formHeader.getFormEngineName()).isEqualTo(FormSolutionsHeaderMapper.FORM_ENGINE_NAME);
+			}
+
+			private FormHeader buildFormHeader() {
+				return mapper.buildFormHeader(formData);
+			}
+		}
+
+		@DisplayName("remove processed data")
+		@Nested
+		class TestRemoveProcessedData {
+
+			@Test
+			void shouldRemoveTransactionId() {
+				var cleanedFormData = mapper.removeProcessedData(formData);
 
-			assertThat(formData.getHeader().getFormEngineName()).isEqualTo(FormSolutionsHeaderMapper.FS_FORMENGINE_NAME);
+				assertThat(cleanedFormData).doesNotContainKey(FormSolutionsHeaderMapper.TRANSACTION_ID);
+			}
 		}
 	}
-}
+}
\ No newline at end of file
diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderTestFactory.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderTestFactory.java
index 96d256a4110b813f91bbd01fde41679517b494d7..b22177580dd5c398011e235847ec8059fb1d3ed5 100644
--- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderTestFactory.java
+++ b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderTestFactory.java
@@ -31,17 +31,18 @@ import java.util.Map;
 import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
 
 public class FormSolutionsHeaderTestFactory {
+
 	public static final String FORM_NAME = "form name";
 	public static final Object REQUEST_ID = "transaction id";
-	public static final Map<String, Object> ASSISTANT_1 = Map.of(IDENTIFIER, FORM_NAME);
 
 	public static FormData create() {
 		return createBuilder().build();
 	}
 
 	public static FormData.FormDataBuilder createBuilder() {
-		return FormData.builder().formData(Map.of(
-				ASSISTANT, ASSISTANT_1,
-				TRANSACTION_ID, REQUEST_ID));
+		return FormData.builder()
+				.formData(Map.of(
+						ASSISTANT, Map.of(IDENTIFIER, FORM_NAME),
+						TRANSACTION_ID, REQUEST_ID));
 	}
 }