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 beafef67c5397ad1991271637e7dc8a4e9fc21b0..aa6a12d2f132f2ebb0c1f5d149a514935da0e118 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,6 +26,7 @@ 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;
@@ -38,60 +39,76 @@ import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
 
 @Component
 public class FormSolutionsAntragstellerMapper implements FormSolutionsEngineBasedMapper {
+
 	public static final String ANTRAGSTELLER_PANEL_IDENTIFIER = "Antragstellende Person";
+
 	public static final String POSTKORBHANDLE = "postkorbhandle";
+
 	public static final String VORNAME_KEY = "AS_Vorname";
 	public static final String NACHNAME_KEY = "AS_Name";
 
 	@Override
 	public FormData parseFormData(FormData formData) {
-		var cleanedData = removePostkorbhandle(formData);
-
-		Antragsteller.AntragstellerBuilder builder = Antragsteller.builder()
-				.postfachId((String) formData.getFormData().get(POSTKORBHANDLE));
+		return formData.toBuilder()
+				.antragsteller(buildAntragsteller(formData))
+				.formData(removeProcessedData(formData))
+				.build();
+	}
 
+	Antragsteller buildAntragsteller(FormData formData) {
 		var antragstellerData = findAntragstellerData(formData.getFormData());
 
-		findValueByKey(NACHNAME_KEY, antragstellerData).ifPresent(builder::nachname);
+		return Antragsteller.builder()
+				.postfachId(getPostkorbhandle(formData))
+				.vorname(getVorname(antragstellerData))
+				.nachname(getNachname(antragstellerData))
+				.build();
+	}
+
+	private String getVorname(Map<String, String> antragstellerData) {
+		return Optional.ofNullable(antragstellerData.get(VORNAME_KEY)).orElse(null);
+	}
 
-		findValueByKey(VORNAME_KEY, antragstellerData).ifPresent(builder::vorname);
+	private String getNachname(Map<String, String> antragstellerData) {
+		return Optional.ofNullable(antragstellerData.get(NACHNAME_KEY)).orElse(null);
+	}
 
-		return formData.toBuilder()
-				.antragsteller(builder.build())
-				.formData(cleanedData)
-				.build();
+	private String getPostkorbhandle(FormData formData) {
+		return (String) formData.getFormData().get(POSTKORBHANDLE);
 	}
 
 	private Map<String, String> findAntragstellerData(Map<String, Object> formData) {
-		Map<String, String> names = new HashMap<>();
-		addContent(getPanels(formData), names);
+		var names = new HashMap<String, String>();
+		addContent(getAssistantPanels(formData), names);
 		return names;
 	}
 
-	private Optional<String> findValueByKey(String key, Map<String, String> data) {
-		return Optional.ofNullable(data.get(key));
+	private void addContent(List<Map<String, Object>> panels, Map<String, String> names) {
+		panels.stream().forEach(entry -> handleContentEntry(entry, names));
 	}
 
-	@SuppressWarnings("unchecked")
-	private List<Map<String, Object>> getPanels(Map<String, Object> formData) {
-		return ((List<Map<String, Object>>) ((Map<String, Object>) formData.get(ASSISTANT)).get(PANELS));
+	private void handleContentEntry(Map<String, Object> entry, Map<String, String> names) {
+		if (entry.containsKey(COMPONENTS)) {
+			addContent(getComponentList(entry), names);
+		} else if (entry.containsKey(STRING_VALUE)) {
+			names.put((String) entry.get(IDENTIFIER), (String) entry.get(STRING_VALUE));
+		}
 	}
 
 	@SuppressWarnings("unchecked")
-	private void addContent(List<Map<String, Object>> items, Map<String, String> names) {
-		items.stream().forEach(entry -> {
-			if (entry.containsKey(COMPONENTS)) {
-				addContent((List<Map<String, Object>>) entry.get(COMPONENTS), names);
-			} else if (entry.containsKey(STRING_VALUE)) {
-				names.put((String) entry.get(IDENTIFIER), (String) entry.get(STRING_VALUE));
-			}
-		});
+	private List<Map<String, Object>> getComponentList(Map<String, Object> entry) {
+		return (List<Map<String, Object>>) entry.get(COMPONENTS);
 	}
 
-	private Map<String, Object> removePostkorbhandle(FormData processedData) {
-		Map<String, Object> cleanedData = new HashMap<>(processedData.getFormData());
-		cleanedData.remove(POSTKORBHANDLE);
-		return cleanedData;
+	@SuppressWarnings("unchecked")
+	private List<Map<String, Object>> getAssistantPanels(Map<String, Object> formData) {
+		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/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 be8ea56a6e04d0a41c14057aff40c4514355071a..c6d959d368d02f0e977a2b1735540852f90c1780 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
@@ -24,44 +24,93 @@
 package de.itvsh.kop.eingangsadapter.semantik.enginebased;
 
 import static de.itvsh.kop.eingangsadapter.common.formdata.AntragstellerTestFactory.*;
-import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsAntragstellerMapper.*;
 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.Antragsteller;
+import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
 
 class FormSolutionsAntragstellerMapperTest {
-	private FormSolutionsAntragstellerMapper mapper = new FormSolutionsAntragstellerMapper();
 
+	@Spy
+	private final FormSolutionsAntragstellerMapper mapper = new FormSolutionsAntragstellerMapper();
+
+	@DisplayName("Parse formData")
 	@Nested
-	class TestAntragstellerMapping {
+	class TestParseFormData {
+
+		private final FormData formData = FormSolutionsAntragstellerTestFactory.create();
+
 		@Test
-		void shouldParsePostfachId() {
-			var formData = mapper.parseFormData(FormSolutionsAntragstellerTestFactory.create());
+		void shouldCallBuildAntragsteller() {
+			parseFormData();
 
-			assertThat(formData.getAntragsteller().getPostfachId())
-					.isEqualTo(POSTFACH_ID);
+			verify(mapper).buildAntragsteller(formData);
 		}
 
 		@Test
-		void shouldParseVorname() {
-			var formData = mapper.parseFormData(FormSolutionsAntragstellerTestFactory.create());
+		void shouldCallRemoveProcessedData() {
+			parseFormData();
 
-			assertThat(formData.getAntragsteller().getVorname()).isEqualTo(VORNAME);
+			verify(mapper).buildAntragsteller(formData);
 		}
 
 		@Test
-		void shouldParseNachname() {
-			var formData = mapper.parseFormData(FormSolutionsAntragstellerTestFactory.create());
+		void shouldReturnValue() {
+			var result = parseFormData();
 
-			assertThat(formData.getAntragsteller().getNachname()).isEqualTo(NACHNAME);
+			assertThat(result).usingRecursiveComparison().ignoringFields("antragsteller", "formData").isEqualTo(formData);
 		}
 
-		@Test
-		void shouldRemovedParsedPostfachId() {
-			var formData = mapper.parseFormData(FormSolutionsAntragstellerTestFactory.create());
+		private FormData parseFormData() {
+			return mapper.parseFormData(formData);
+		}
+
+		@DisplayName("build antragsteller")
+		@Nested
+		class TestBuildAntragsteller {
+
+			@Test
+			void shouldHavePostfachId() {
+				var antragsteller = buildAntragsteller();
+
+				assertThat(antragsteller.getPostfachId()).isEqualTo(POSTFACH_ID);
+			}
+
+			@Test
+			void shouldHaveVorname() {
+				var antragsteller = buildAntragsteller();
+
+				assertThat(antragsteller.getVorname()).isEqualTo(VORNAME);
+			}
+
+			@Test
+			void shouldHaveNachname() {
+				var antragsteller = buildAntragsteller();
+
+				assertThat(antragsteller.getNachname()).isEqualTo(NACHNAME);
+			}
+
+			private Antragsteller buildAntragsteller() {
+				return mapper.buildAntragsteller(formData);
+			}
+		}
+
+		@DisplayName("remove processed data")
+		@Nested
+		class TestRemoveProcessedData {
+
+			@Test
+			void shouldRemovePostkorbhandle() {
+				var formDataMap = mapper.removeProcessedData(formData);
 
-			assertThat(formData.getFormData().get(POSTKORBHANDLE)).isNull();
+				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/FormSolutionsAntragstellerTestFactory.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerTestFactory.java
index 97722d19dc0d1d37fc36ae0d9d3baaac2faa04e4..a1694d61e8e4e3296f5367a647e6f8b58179441a 100644
--- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerTestFactory.java
+++ b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerTestFactory.java
@@ -34,23 +34,30 @@ import java.util.Map;
 import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
 
 class FormSolutionsAntragstellerTestFactory {
-	static final String ANTRAGSTELLER_NAME_PANEL_IDENTIFIER = "AS_Name1";
 
-	static final List<Map<String, Object>> ANTRAGSTELLER_PANEL_CONTENT = List.of(
-			Map.of(IDENTIFIER, ANTRAGSTELLER_NAME_PANEL_IDENTIFIER),
-			Map.of(COMPONENTS, List.of(
-					Map.of(IDENTIFIER, VORNAME_KEY, STRING_VALUE, VORNAME),
-					Map.of(IDENTIFIER, NACHNAME_KEY, STRING_VALUE, NACHNAME))));
-	static final List<Map<String, Object>> PANELS_CONTENT = List.of(
-			Map.of(IDENTIFIER, ANTRAGSTELLER_PANEL_IDENTIFIER),
-			Map.of(COMPONENTS, ANTRAGSTELLER_PANEL_CONTENT));
-	static final Map<String, Object> ANTRAGSTELLER_DATA = Map.of(PANELS, PANELS_CONTENT);
+	static final String ANTRAGSTELLER_NAME_PANEL_IDENTIFIER = "AS_Name1";
 
 	public static FormData create() {
 		return createBuilder().build();
 	}
 
 	public static FormData.FormDataBuilder createBuilder() {
-		return FormData.builder().formData(Map.of(FormSolutionsAntragstellerMapper.POSTKORBHANDLE, POSTFACH_ID, ASSISTANT, ANTRAGSTELLER_DATA));
+		return FormData.builder().formData(Map.of(
+				FormSolutionsAntragstellerMapper.POSTKORBHANDLE, POSTFACH_ID,
+				ASSISTANT, createAssistantMap()));
+	}
+
+	private static Map<String, Object> createAssistantMap() {
+		return Map.of(PANELS, List.of(
+				Map.of(IDENTIFIER, ANTRAGSTELLER_PANEL_IDENTIFIER),
+				Map.of(COMPONENTS, createAntragstellerPanelContentList())));
+	}
+
+	private static List<Map<String, Object>> createAntragstellerPanelContentList() {
+		return List.of(
+				Map.of(IDENTIFIER, ANTRAGSTELLER_NAME_PANEL_IDENTIFIER),
+				Map.of(COMPONENTS, List.of(
+						Map.of(IDENTIFIER, VORNAME_KEY, STRING_VALUE, VORNAME),
+						Map.of(IDENTIFIER, NACHNAME_KEY, STRING_VALUE, NACHNAME))));
 	}
-}
+}
\ No newline at end of file