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 4ca23cd04339e284416000190b190b30100206a3..4eab80ffbca842cd543facc2de7659b94c554e6a 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,6 +23,8 @@
  */
 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;
@@ -30,7 +32,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
 
 public class FormSolutionsEngineBasedAdapter implements EngineBasedSemantikAdapter {
+
 	public static final String IDENTIFIER = "identifier";
+
 	public static final String ASSISTANT = "assistant";
 	public static final String ANLIEGEN_ID = "anliegenId";
 	public static final String KOMMUNALVERWALTUNG_ID = "kommunalverwaltungId";
@@ -42,18 +46,19 @@ public class FormSolutionsEngineBasedAdapter implements EngineBasedSemantikAdapt
 	public FormData parseFormData(FormData formData) {
 		var processedFormData = formData;
 
-		for (FormSolutionsEngineBasedMapper mapper : mappers) {
+		for (var mapper : mappers) {
 			processedFormData = mapper.parseFormData(processedFormData);
 		}
 
-		removeProcessedRawData(processedFormData);
-
-		return processedFormData;
+		return removeProcessedData(processedFormData);
 	}
 
-	void removeProcessedRawData(FormData processedFormData) {
-		processedFormData.getFormData().remove(ASSISTANT);
-		processedFormData.getFormData().remove(ANLIEGEN_ID);
-		processedFormData.getFormData().remove(KOMMUNALVERWALTUNG_ID);
+	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();
 	}
 }
diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTest.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTest.java
index db0d59b2443f171bceb2725a802bc38b02947914..57251ef748719cacfc59dd2ae5ac9c0a23e55e82 100644
--- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTest.java
+++ b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTest.java
@@ -29,62 +29,88 @@ import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
 import java.util.Collections;
-import java.util.HashMap;
 
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.Spy;
 import org.springframework.test.util.ReflectionTestUtils;
 
 import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
 
 class FormSolutionsEngineBasedAdapterTest {
 
+	@Spy
 	@InjectMocks
 	private FormSolutionsEngineBasedAdapter adapter;
 	@Mock
 	private FormSolutionsEngineBasedMapper mapper;
 
-	private FormData formData = FormSolutionsEngineBasedAdapterTestFactory.createIncommingDataBuilder().build();
-
-	@BeforeEach
-	void mockMapper() {
-		when(mapper.parseFormData(any())).thenReturn(formData.toBuilder().formData(new HashMap<String, Object>()).build());
-		var mappers = Collections.singletonList(mapper);
-		ReflectionTestUtils.setField(adapter, "mappers", mappers);
-	}
-
+	@DisplayName("Parse formData")
 	@Nested
 	class TestParseFormData {
 
+		private final FormData formData = FormSolutionsEngineBasedAdapterTestFactory.create();
+
+		@BeforeEach
+		void mockMappers() {
+			ReflectionTestUtils.setField(adapter, "mappers", Collections.singletonList(mapper));
+		}
+
 		@Test
 		void shouldCallMappers() {
+			when(mapper.parseFormData(any())).thenReturn(formData);
+
 			adapter.parseFormData(formData);
 
 			verify(mapper).parseFormData(formData);
 		}
-	}
-
-	@Nested
-	class TestRemove {
 
 		@Test
-		void shouldRemoveRoot() {
-			var parsed = adapter.parseFormData(formData);
+		void shouldCallRemoveProcessedRawData() {
+			when(mapper.parseFormData(any())).thenReturn(formData);
 
-			assertThat(parsed.getFormData().get(ASSISTANT)).isNull();
+			adapter.parseFormData(formData);
 
+			verify(adapter).removeProcessedData(formData);
 		}
 
 		@Test
-		void shouldRemoveKnownUnmapped() {
-			var parsed = adapter.parseFormData(formData);
+		void shouldReturnValue() {
+			doReturn(formData).when(adapter).removeProcessedData(any());
+
+			var result = adapter.parseFormData(formData);
+
+			assertThat(result).isEqualTo(formData);
+		}
+
+		@DisplayName("remove processed data")
+		@Nested
+		class TestRemoveProcessedData {
+
+			@Test
+			void shouldRemoveAssistant() {
+				var cleanedFormData = adapter.removeProcessedData(formData);
+
+				assertThat(cleanedFormData.getFormData()).doesNotContainKey(ASSISTANT);
+			}
+
+			@Test
+			void shouldRemoveAnliegenId() {
+				var cleanedFormData = adapter.removeProcessedData(formData);
+
+				assertThat(cleanedFormData.getFormData()).doesNotContainKey(ANLIEGEN_ID);
+			}
 
-			assertThat(parsed.getFormData().get(KOMMUNALVERWALTUNG_ID)).isNull();
-			assertThat(parsed.getFormData().get(ANLIEGEN_ID)).isNull();
+			@Test
+			void shouldRemoveKommunalVerwaltungId() {
+				var cleanedFormData = adapter.removeProcessedData(formData);
 
+				assertThat(cleanedFormData.getFormData()).doesNotContainKey(KOMMUNALVERWALTUNG_ID);
+			}
 		}
 	}
 }
\ No newline at end of file
diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTestFactory.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTestFactory.java
index c2cf7aea78993206b3fa5eff4056361f16aeb638..ea0e9dc201b0b7398c4b73009cafe3c8e4c98933 100644
--- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTestFactory.java
+++ b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTestFactory.java
@@ -32,34 +32,38 @@ import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
 import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory;
 
 class FormSolutionsEngineBasedAdapterTestFactory {
-	public static final String ROOT = ASSISTANT;
-	public static final String ROOT_IDENTIFIER = IDENTIFIER;
-	public static final String ROOT_IDENTIFIER_VALUE = "root";
-	public static final String PANELS = FormSolutionsPanelMapper.PANELS;
-	public static final String PANELS_IDENTIFIER = IDENTIFIER;
-	public static final String PANELS_IDENTIFIER_VALUE = "panels";
-	public static final String COMPONENTS = FormSolutionsPanelMapper.COMPONENTS;
-	public static final String COMPONENTS_IDENTIFIER = IDENTIFIER;
+
 	public static final String ANLIEGEN_ID_VALUE = "1234";
 	public static final String KOMMUNALVERWALTUNG_ID_VALUE = "100000000";
 
+	public static final String ASSISTANT_IDENTIFIER_VALUE = "root";
+	public static final String PANELS_IDENTIFIER_VALUE = "panels";
+
 	public static FormData create() {
 		return createBuilder().build();
 	}
 
 	public static FormData.FormDataBuilder createBuilder() {
-		return FormDataTestFactory.createBuilder();
+		return FormDataTestFactory.createBuilder()
+				.formData(createFormDataMap());
+	}
+
+	private static Map<String, Object> createFormDataMap() {
+		return Map.of(
+				ASSISTANT, createAssistantMap(),
+				ANLIEGEN_ID, ANLIEGEN_ID_VALUE,
+				KOMMUNALVERWALTUNG_ID, KOMMUNALVERWALTUNG_ID_VALUE);
+	}
+
+	private static Map<String, Object> createAssistantMap() {
+		return Map.of(
+				IDENTIFIER, ASSISTANT_IDENTIFIER_VALUE,
+				FormSolutionsPanelMapper.PANELS, List.of(createPanelMap()));
 	}
 
-	public static FormData.FormDataBuilder createIncommingDataBuilder() {
-		return FormData.builder()
-				.formData(Map.of(ROOT,
-						Map.of(
-								ROOT_IDENTIFIER, ROOT_IDENTIFIER_VALUE,
-								PANELS, List.of(Map.of(
-										PANELS_IDENTIFIER, PANELS_IDENTIFIER_VALUE,
-										COMPONENTS, FormDataTestFactory.NESTED_LIST_WITH_OBJECTS))),
-						ANLIEGEN_ID, ANLIEGEN_ID_VALUE,
-						KOMMUNALVERWALTUNG_ID, KOMMUNALVERWALTUNG_ID_VALUE));
+	private static Map<String, Object> createPanelMap() {
+		return Map.of(
+				IDENTIFIER, PANELS_IDENTIFIER_VALUE,
+				FormSolutionsPanelMapper.COMPONENTS, FormDataTestFactory.NESTED_LIST_WITH_OBJECTS);
 	}
 }
\ No newline at end of file