diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java
index c090b773514c9547f55c20ca2cf981abc67ceb86..0f808337e735facf53907a528625137260ca09a6 100644
--- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java
+++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java
@@ -1,28 +1,51 @@
 package de.ozgcloud.eingang.semantik.enginebased.afm;
 
+import static java.util.Objects.*;
+import static org.apache.commons.lang3.StringUtils.*;
+
+import java.util.Collections;
+import java.util.Map;
+
 import org.springframework.stereotype.Component;
 
+import de.ozgcloud.eingang.common.errorhandling.TechnicalException;
 import de.ozgcloud.eingang.common.formdata.FormData;
 
 @Component
 public class AfmAntragstellerHeaderMapper {
 
-	static final String HEADER_POSTFACH_ID = "u:saml_legacypostkorbhandle";
-	static final String HEADER_VORNAME = "u:saml_givenname";
-	static final String HEADER_NACHNAME = "u:saml_surename";
-	static final String HEADER_GEBURTSORT = "u:saml_placeofbirth";
+	static final String KEY_POSTFACH_ID = "u:saml_legacypostkorbhandle";
+	static final String KEY_VORNAME = "u:saml_givenname";
+	static final String KEY_NACHNAME = "u:saml_surename";
+	static final String KEY_GEBURTSORT = "u:saml_placeofbirth";
 	// TODO: public static final String HEADER_GEBURTSNAME = "u:saml_??";
-	static final String HEADER_EMAIL = "u:saml_mail";
-	static final String HEADER_TELEFON = "u:saml_telephonenumber";
-	static final String HEADER_STRASSE = "u:saml_postaladdress";
-	static final String HEADER_PLZ = "u:saml_postalcode";
-	static final String HEADER_ORT = "u:saml_localityname";
+	static final String KEY_EMAIL = "u:saml_mail";
+	static final String KEY_TELEFON = "u:saml_telephonenumber";
+	static final String KEY_STRASSE = "u:saml_postaladdress";
+	static final String KEY_PLZ = "u:saml_postalcode";
+	static final String KEY_ORT = "u:saml_localityname";
 
 	public FormData parseAntragstellerData(FormData formData) {
 		return formData;
 	}
 
 	public boolean isResponsible(FormData formData) {
-		return false;
+		var headers = getHeaders(formData);
+		return headers.containsKey(KEY_POSTFACH_ID) && isPostfachIdNotBlank(headers.get(KEY_POSTFACH_ID));
+	}
+
+	@SuppressWarnings("unchecked")
+	Map<String, Object> getHeaders(FormData formData) {
+		return (Map<String, Object>) formData.getFormData().getOrDefault(AfmHeaderMapper.HEADER_FIELD, Collections.emptyMap());
+	}
+
+	boolean isPostfachIdNotBlank(Object postfachId) {
+		if (isNull(postfachId)) {
+			return false;
+		}
+		if (postfachId instanceof String id) {
+			return isNotBlank(id);
+		}
+		throw new TechnicalException("Unexpected type of postfach id: " + postfachId.getClass().getName());
 	}
 }
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..f659992813a66eb649b627e4d979f8e154031d0c
--- /dev/null
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java
@@ -0,0 +1,142 @@
+package de.ozgcloud.eingang.semantik.enginebased.afm;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.NullAndEmptySource;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Spy;
+
+import de.ozgcloud.eingang.common.errorhandling.TechnicalException;
+import de.ozgcloud.eingang.common.formdata.FormData;
+
+class AfmAntragstellerHeaderMapperTest {
+
+	@Spy
+	@InjectMocks
+	private AfmAntragstellerHeaderMapper mapper;
+
+	@Nested
+	class TestParseAntragstellerData {
+
+	}
+
+	@Nested
+	class TestIsResponsible {
+
+		@Mock
+		private FormData formData;
+
+		@BeforeEach
+		void setup() {
+
+		}
+
+		@Test
+		void shouldApproveResponsibility() {
+			doReturn(true).when(mapper).isPostfachIdNotBlank(any());
+			doReturn(createHeaders(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, "123")).when(mapper).getHeaders(any());
+
+			var isResponsible = mapper.isResponsible(formData);
+
+			assertTrue(isResponsible);
+		}
+
+		@Nested
+		class TestDenyResponsibility {
+
+			@Test
+			void shouldDenyWhenNoHeader() {
+				doReturn(Collections.emptyMap()).when(mapper).getHeaders(any());
+
+				var isResponsible = mapper.isResponsible(FormData.builder().build());
+
+				assertFalse(isResponsible);
+			}
+
+			@Test
+			void shouldDenyWhenNoPostfachId() {
+				doReturn(createHeaders(AfmAntragstellerHeaderMapper.KEY_VORNAME, "name")).when(mapper).getHeaders(any());
+
+				var isResponsible = mapper.isResponsible(formData);
+
+				assertFalse(isResponsible);
+			}
+
+			void shouldDenyWhenPostfachIdIsBlank() {
+				doReturn(createHeaders(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, null)).when(mapper).getHeaders(any());
+				doReturn(false).when(mapper).isPostfachIdNotBlank(any());
+
+				var isResponsible = mapper.isResponsible(formData);
+
+				assertFalse(isResponsible);
+			}
+
+			@Nested
+			class TestGetHeaders {
+
+				@Test
+				void shouldReturnHeaders() {
+					var headers = createHeaders(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, "123");
+					var formData =  FormData.builder().formData(createHeaders(AfmHeaderMapper.HEADER_FIELD, headers)).build();
+
+					var result = mapper.getHeaders(formData);
+
+					assertThat(result).isEqualTo(headers);
+				}
+
+				@Test
+				void shouldReturnEmptyMapWhenNoHeaders() {
+					var formData = FormData.builder().build();
+
+					var result = mapper.getHeaders(formData);
+
+					assertThat(result).isEmpty();
+				}
+			}
+
+			@Nested
+			class TestIsPostfachIdNotBlank {
+
+				@ParameterizedTest
+				@NullAndEmptySource
+				void shouldReturnFalseWhenPostfachIdIsBlank(String postfachId) {
+					var isNotBlank = mapper.isPostfachIdNotBlank(postfachId);
+
+					assertFalse(isNotBlank);
+				}
+
+				@Test
+				void shouldApprove() {
+					var isNotBlank = mapper.isPostfachIdNotBlank("123");
+
+					assertTrue(isNotBlank);
+				}
+
+				@Test
+				void shouldFailOnUnexpectedType() {
+					var postfachId = new Object();
+
+					assertThrows(TechnicalException.class, () -> mapper.isPostfachIdNotBlank(postfachId));
+				}
+			}
+		}
+	}
+
+	private Map<String, Object> createHeaders(String key, Object value) {
+		var map = new HashMap<String, Object>();
+		map.put(key, value);
+		return map;
+	}
+}
\ No newline at end of file
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java
index b59daddd07d84cfd5743880836dfb15d0b500c62..2ade6abdcc57a9963450a108e33bc88f3380cec9 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java
@@ -74,15 +74,15 @@ public class AfmHeaderTestFactory {
 
 	public static Map<String, Object> createCustomHeaderMap() {
 		var map = new HashMap<String, Object>();
-		map.put(AfmAntragstellerHeaderMapper.HEADER_POSTFACH_ID, CUSTOM_POSTFACH_ID);
-		map.put(AfmAntragstellerHeaderMapper.HEADER_VORNAME, CUSTOM_VORNAME);
-		map.put(AfmAntragstellerHeaderMapper.HEADER_NACHNAME, CUSTOM_NACHNAME);
-		map.put(AfmAntragstellerHeaderMapper.HEADER_GEBURTSORT, CUSTOM_GEBURTSORT);
-		map.put(AfmAntragstellerHeaderMapper.HEADER_EMAIL, CUSTOM_EMAIL);
-		map.put(AfmAntragstellerHeaderMapper.HEADER_TELEFON, CUSTOM_TELEFON);
-		map.put(AfmAntragstellerHeaderMapper.HEADER_STRASSE, CUSTOM_STRASSE);
-		map.put(AfmAntragstellerHeaderMapper.HEADER_PLZ, CUSTOM_PLZ);
-		map.put(AfmAntragstellerHeaderMapper.HEADER_ORT, CUSTOM_ORT);
+		map.put(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, CUSTOM_POSTFACH_ID);
+		map.put(AfmAntragstellerHeaderMapper.KEY_VORNAME, CUSTOM_VORNAME);
+		map.put(AfmAntragstellerHeaderMapper.KEY_NACHNAME, CUSTOM_NACHNAME);
+		map.put(AfmAntragstellerHeaderMapper.KEY_GEBURTSORT, CUSTOM_GEBURTSORT);
+		map.put(AfmAntragstellerHeaderMapper.KEY_EMAIL, CUSTOM_EMAIL);
+		map.put(AfmAntragstellerHeaderMapper.KEY_TELEFON, CUSTOM_TELEFON);
+		map.put(AfmAntragstellerHeaderMapper.KEY_STRASSE, CUSTOM_STRASSE);
+		map.put(AfmAntragstellerHeaderMapper.KEY_PLZ, CUSTOM_PLZ);
+		map.put(AfmAntragstellerHeaderMapper.KEY_ORT, CUSTOM_ORT);
 		return map;
 	}