diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java
index cdba687ee3c7f2dc369d8b2342afc66972cdaf75..592fea25bbffbe37a4ac7bc4896ddd8086ad0816 100644
--- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java
+++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java
@@ -8,8 +8,6 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.function.Predicate;
-import java.util.function.UnaryOperator;
-import java.util.stream.Stream;
 
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -19,12 +17,11 @@ import org.springframework.stereotype.Component;
 import com.fasterxml.jackson.dataformat.xml.XmlMapper;
 
 import de.ozgcloud.eingang.common.formdata.FormData;
-import de.ozgcloud.eingang.common.formdata.FormHeader;
 import de.ozgcloud.eingang.common.formdata.IncomingFile;
 import de.ozgcloud.eingang.common.formdata.ServiceKonto;
 import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
-import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory;
 import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter;
+import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory;
 import lombok.NonNull;
 import lombok.extern.log4j.Log4j2;
 
@@ -39,9 +36,8 @@ public class DFoerdermittelEngineBasedSemantikAdapter implements EngineBasedSema
 	private static final String KEY_POSTFACH_ID = "InboxReference";
 	private static final String KEY_ORGANISATIONS_EINHEIT_ID = "MetaText1";
 	private static final String KEY_FORM_NAME = "Title";
-	private static final String KEY_FORM_ID = "ProjectTitle";
 
-	static final String DEFAULT_FORM_NAME = "dFördermittelantrag";
+	static final String DEFAULT_FORM_NAME = "dFördermittelantrag: Ohne Titel";
 
 	@Autowired
 	private ServiceKontoFactory serviceKontoFactory;
@@ -55,49 +51,26 @@ public class DFoerdermittelEngineBasedSemantikAdapter implements EngineBasedSema
 	}
 
 	FormData processFachnachricht(FormData formData) {
-		return pipe(
-				Stream.of(
-						this::addFormName,
-						this::addFormEngineName,
-						this::addServiceKonto,
-						this::addOrganisationsEinheitId,
-						this::addFormId
-				)
-		).apply(formData);
-	}
+		Map<String, Object> fachnachricht = getFachnachricht(formData);
 
-	private UnaryOperator<FormData> pipe(Stream<UnaryOperator<FormData>> functions) {
-		return (formData) -> functions
-				.reduce(formData, (acc, f) -> f.apply(acc), (a, b) -> a);
+		var extendedFormData = addFormName(formData);
+		extendedFormData = addFormEngineName(extendedFormData);
+		extendedFormData = addServiceKonto(extendedFormData, fachnachricht);
+		return addOrganisationsEinheitId(extendedFormData, fachnachricht);
 	}
 
-	FormData addFormId(FormData formData) {
-		return getNonEmptyFachnachrichtValueByKey(formData, KEY_FORM_ID)
-				.map(formId -> mapWithModifiedHeader(formData, headerBuilder -> headerBuilder.formId(formId)))
-				.orElse(formData);
-	}
 
-	private Optional<String> getNonEmptyFachnachrichtValueByKey(FormData formData, String key) {
-		return Optional.ofNullable((String) getFachnachricht(formData).get(key))
-				.filter(StringUtils::isNotBlank);
-	}
-
-	private FormData mapWithModifiedHeader(FormData formData, UnaryOperator<FormHeader.FormHeaderBuilder> headerBuilderOperator) {
-		return formData.toBuilder()
-				.header(headerBuilderOperator.apply(formData.getHeader().toBuilder()).build())
-				.build();
-	}
-
-	FormData addServiceKonto(FormData formData) {
-		return Optional.ofNullable((String) getFachnachricht(formData).get(KEY_POSTFACH_ID))
+	FormData addServiceKonto(FormData formData, Map<String, Object> fachnachricht) {
+		return Optional.ofNullable((String) fachnachricht.get(KEY_POSTFACH_ID))
 				.map(this::extractPrefix)
 				.map(this::createServiceKonto)
-				.map(serviceKonto -> mapWithModifiedHeader(formData, headerBuilder -> headerBuilder.serviceKonto(serviceKonto)))
+				.map(serviceKonto -> formData.getHeader().toBuilder().serviceKonto(serviceKonto).build())
+				.map(header -> formData.toBuilder().header(header).build())
 				.orElse(formData);
 	}
 
-	FormData addOrganisationsEinheitId(FormData formData) {
-		return Optional.ofNullable((String) getFachnachricht(formData).get(KEY_ORGANISATIONS_EINHEIT_ID))
+	FormData addOrganisationsEinheitId(FormData formData, Map<String, Object> fachnachricht) {
+		return Optional.ofNullable((String) fachnachricht.get(KEY_ORGANISATIONS_EINHEIT_ID))
 				.map(orgaId -> addOrganisationsEinheitId(orgaId, formData.getZustaendigeStelle()))
 				.map(zustStelle -> formData.toBuilder().zustaendigeStelle(zustStelle).build())
 				.orElse(formData);
@@ -115,10 +88,16 @@ public class DFoerdermittelEngineBasedSemantikAdapter implements EngineBasedSema
 	}
 
 	FormData addFormName(FormData formData) {
-		return mapWithModifiedHeader(formData, headerBuilder -> headerBuilder.formName(
-				getNonEmptyFachnachrichtValueByKey(formData, KEY_FORM_NAME)
-						.orElse(DEFAULT_FORM_NAME)
-		));
+		return formData.toBuilder()
+				.header(formData.getHeader().toBuilder()
+						.formName(getFormName(formData).orElse(DEFAULT_FORM_NAME))
+						.build()
+				)
+				.build();
+	}
+	private Optional<String> getFormName(FormData formData) {
+		return Optional.ofNullable((String) getFachnachricht(formData).get(KEY_FORM_NAME))
+				.filter(StringUtils::isNotBlank);
 	}
 
 	@SuppressWarnings("unchecked")
@@ -127,7 +106,12 @@ public class DFoerdermittelEngineBasedSemantikAdapter implements EngineBasedSema
 	}
 
 	FormData addFormEngineName(FormData formData) {
-		return mapWithModifiedHeader(formData, headerBuilder -> headerBuilder.formEngineName("dFördermittelantrag"));
+		return formData.toBuilder()
+				.header(formData.getHeader().toBuilder()
+						.formEngineName("dFördermittelantrag")
+						.build()
+				)
+				.build();
 	}
 
 	String extractPrefix(@NonNull String postfachId) {
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java
index 110e80b7d0a2f055a9624458e3ae15594ef87d86..8f3bcec4c6ac8eb48984b6f40c38fca0473d5fe5 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java
@@ -22,7 +22,6 @@ import de.ozgcloud.common.binaryfile.TempFileUtils;
 import de.ozgcloud.common.test.TestUtils;
 import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.formdata.FormDataTestFactory;
-import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory;
 import de.ozgcloud.eingang.common.formdata.IncomingFile;
 import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory;
 import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory;
@@ -154,23 +153,22 @@ class DFoerdermittelEngineBasedSemantikAdapterTest {
 		@Mock
 		FormData formData4;
 
-		@Mock
-		FormData formData5;
-
 		@BeforeEach
 		void mock() {
+			var formData = DFoerdermittelFormDataTestFactory.create();
+			var fachnachrichtMap = DFoerdermittelFormDataTestFactory.createFachnachrichtMap();
+			when(formData0.getFormData()).thenReturn(formData.getFormData());
 			doReturn(formData1).when(adapter).addFormName(formData0);
 			doReturn(formData2).when(adapter).addFormEngineName(formData1);
-			doReturn(formData3).when(adapter).addServiceKonto(formData2);
-			doReturn(formData4).when(adapter).addOrganisationsEinheitId(formData3);
-			doReturn(formData5).when(adapter).addFormId(formData4);
+			doReturn(formData3).when(adapter).addServiceKonto(formData2, fachnachrichtMap);
+			doReturn(formData4).when(adapter).addOrganisationsEinheitId(formData3, fachnachrichtMap);
 		}
 
 		@Test
 		void shouldReturn() {
 			var processedFormData = adapter.processFachnachricht(formData0);
 
-			assertThat(processedFormData).isEqualTo(formData5);
+			assertThat(processedFormData).isEqualTo(formData4);
 		}
 	}
 
@@ -184,7 +182,8 @@ class DFoerdermittelEngineBasedSemantikAdapterTest {
 
 		@Test
 		void shouldHaveServiceKonto() {
-			var formData = adapter.addServiceKonto(DFoerdermittelFormDataTestFactory.create());
+			var formData = adapter.addServiceKonto(DFoerdermittelFormDataTestFactory.create(),
+					DFoerdermittelFormDataTestFactory.createFachnachrichtMap());
 
 			assertThat(formData.getHeader().getServiceKonto().getPostfachAddresses().get(0).getIdentifier())
 					.asInstanceOf(type(StringBasedIdentifier.class)).extracting(StringBasedIdentifier::getPostfachId)
@@ -193,7 +192,7 @@ class DFoerdermittelEngineBasedSemantikAdapterTest {
 
 		@Test
 		void shouldRemovePrefix() {
-			adapter.addServiceKonto(DFoerdermittelFormDataTestFactory.create());
+			adapter.addServiceKonto(DFoerdermittelFormDataTestFactory.create(), DFoerdermittelFormDataTestFactory.createFachnachrichtMap());
 
 			verify(serviceKontoFactory).buildOsiServiceKonto(DFoerdermittelFormDataTestFactory.POSTFACH_ID);
 		}
@@ -220,7 +219,8 @@ class DFoerdermittelEngineBasedSemantikAdapterTest {
 	class TestAddOrganisationsEinheitId {
 		@Test
 		void shouldHaveOrganisationsEinheitId() {
-			var formData = adapter.addOrganisationsEinheitId(DFoerdermittelFormDataTestFactory.create());
+			var formData = adapter.addOrganisationsEinheitId(DFoerdermittelFormDataTestFactory.create(),
+					DFoerdermittelFormDataTestFactory.createFachnachrichtMap());
 
 			assertThat(formData.getZustaendigeStelle()).isNotNull().extracting(ZustaendigeStelle::getOrganisationseinheitenId)
 					.isEqualTo(ORGANISATIONS_EINHEIT_ID);
@@ -260,40 +260,6 @@ class DFoerdermittelEngineBasedSemantikAdapterTest {
 
 	}
 
-	@DisplayName("add form id")
-	@Nested
-	class TestAddFormId {
-
-		@DisplayName("should get form id from project title")
-		@Test
-		void shouldGetFormIdFromProjectTitle() {
-			var formData = adapter.addFormId(createFormDataWithProjectTitle(FORM_ID));
-
-			assertThat(formData.getHeader().getFormId()).isEqualTo(FORM_ID);
-		}
-
-		@DisplayName("should keep form id if project title is empty")
-		@Test
-		void shouldKeepFormIdIfProjectTitleIsEmpty() {
-			var formData = adapter.addFormId(createFormDataWithProjectTitle(""));
-
-			assertThat(formData.getHeader().getFormId()).isEqualTo(FormHeaderTestFactory.FORM_ID);
-		}
-
-		@DisplayName("should keep form id if project title is null")
-		@Test
-		void shouldKeepFormIdIfProjectTitleIsNull() {
-			var formData = adapter.addFormId(createFormDataWithProjectTitle(null));
-
-			assertThat(formData.getHeader().getFormId()).isEqualTo(FormHeaderTestFactory.FORM_ID);
-		}
-
-		FormData createFormDataWithProjectTitle(String projectTitle) {
-			return createFachnachrichtBuilder().projectTitle(projectTitle).build().createFormData();
-		}
-
-	}
-
 	@Nested
 	class TestAddFormEngineName {
 
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java
index 8b8c9bf4103b13f085a7910361925a11e7b90297..969f4a635ed892e59106591f73d945b27f0b40be 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java
@@ -8,20 +8,17 @@ import java.util.function.Predicate;
 import java.util.stream.IntStream;
 
 import de.ozgcloud.eingang.common.formdata.FormData;
-import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory;
 import lombok.Builder;
 
 class DFoerdermittelFormDataTestFactory {
 
 	static final String FORM_NAME = "Name of form";
-	static final String FORM_ID = "Wert von ProjectTitle";
 	static final String POSTFACH_ID = "4dd01647-b9d9-4775-1b50-08da3d83800a";
 	static final String ORGANISATIONS_EINHEIT_ID = "9795669";
 
 	static Fachnachricht.FachnachrichtBuilder createFachnachrichtBuilder() {
 		return Fachnachricht.builder()
 				.title(FORM_NAME)
-				.projectTitle(FORM_ID)
 				.postfachId(POSTFACH_ID)
 				.organisationsEinheitId(ORGANISATIONS_EINHEIT_ID);
 	}
@@ -36,7 +33,6 @@ class DFoerdermittelFormDataTestFactory {
 
 	static FormData.FormDataBuilder createBuilderWithFachnachricht(Fachnachricht fachnachricht) {
 		return FormData.builder()
-				.header(FormHeaderTestFactory.create())
 				.formData(Map.of("Fachnachricht", createFachnachrichtMapWithFachnachricht(fachnachricht)));
 	}
 
@@ -48,7 +44,6 @@ class DFoerdermittelFormDataTestFactory {
 		return createMapWithValueFilter(
 				Objects::nonNull,
 				"Title", fachnachricht.title(),
-				"ProjectTitle", fachnachricht.projectTitle(),
 				"InboxReference", "sh/sh/" + fachnachricht.postfachId(),
 				"MetaText1", fachnachricht.organisationsEinheitId()
 		);
@@ -66,7 +61,7 @@ class DFoerdermittelFormDataTestFactory {
 	}
 
 	@Builder
-	record Fachnachricht(String title, String projectTitle, String postfachId, String organisationsEinheitId) {
+	record Fachnachricht(String title, String postfachId, String organisationsEinheitId) {
 		FormData createFormData() {
 			return createBuilderWithFachnachricht(this).build();
 		}