diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/common/PrimaerdokumentTypeBuilder.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/common/PrimaerdokumentTypeBuilder.java
index b2e764890e9a0ba6997c4d3dff0e03e4aca51017..b97093224e299529603354f5f9a2d03172753cd6 100644
--- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/common/PrimaerdokumentTypeBuilder.java
+++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/common/PrimaerdokumentTypeBuilder.java
@@ -31,11 +31,13 @@ public class PrimaerdokumentTypeBuilder {
 	}
 
 	public PrimaerdokumentType build() {
-		var primaerdokument = new PrimaerdokumentType();
-		if (ozgFile != null) {
-			primaerdokument.setDateiname(ExportFilenameGenerator.generateExportFilename(ozgFile));
-			primaerdokument.setDateinameOriginal(ozgFile.getName());
+		if (ozgFile == null) {
+			throw new IllegalStateException("Can not build Primaerdokument when ozg file is null");
 		}
+
+		var primaerdokument = new PrimaerdokumentType();
+		primaerdokument.setDateiname(ExportFilenameGenerator.generateExportFilename(ozgFile));
+		primaerdokument.setDateinameOriginal(ozgFile.getName());
 		primaerdokument.setErsteller(ersteller);
 		if (createdAt != null) {
 			primaerdokument.setDatumUhrzeit(DateConverter.toXmlGregorianCalendar(createdAt));
diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/ExportConfiguration.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/ExportConfiguration.java
index cc24f2e704bc7184fae776617db700bb6515771f..8840c0ac344b8d8d84fde3d7d48a96ec76794267 100644
--- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/ExportConfiguration.java
+++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/ExportConfiguration.java
@@ -5,11 +5,13 @@ import java.util.Map;
 
 import jakarta.xml.bind.Marshaller;
 
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.oxm.jaxb.Jaxb2Marshaller;
 
+import lombok.RequiredArgsConstructor;
+
+@RequiredArgsConstructor
 @Configuration
 class ExportConfiguration {
 
@@ -17,8 +19,7 @@ class ExportConfiguration {
 	static final String PROPERTY_NAMESPACE_PREFIX_MAPPER = "org.glassfish.jaxb.namespacePrefixMapper";
 	static final String CONTEXT_PATH = "de.xoev.xdomea";
 
-	@Autowired
-	private XdomeaNamespacePrefixMapper prefixMapper;
+	private final XdomeaNamespacePrefixMapper prefixMapper;
 
 	@Bean
 	Jaxb2Marshaller marshaller() {
diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/XdomeaNachrichtBuilder.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/XdomeaNachrichtBuilder.java
index 45dfdb51563cd3d7c0fe048fa9172fb154b252cb..1f0e6db45378dda2b1e8a2d07d99a071f03fb821 100644
--- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/XdomeaNachrichtBuilder.java
+++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/XdomeaNachrichtBuilder.java
@@ -57,18 +57,26 @@ class XdomeaNachrichtBuilder {
 	}
 
 	public AbgabeAbgabe0401 build() {
-		representations.forEach(vorgang.getDokument()::add);
-		attachments.forEach(vorgang.getDokument()::add);
-		kommentare.forEach(vorgang.getDokument()::add);
+		var schriftgutobjekt = createSchriftgutobjekt();
+		addVorgangDokumente();
 
 		var abgabeType = new AbgabeAbgabe0401();
 		abgabeType.setKopf(kopf);
+		abgabeType.getSchriftgutobjekt().add(schriftgutobjekt);
+		return abgabeType;
+	}
 
+	private Schriftgutobjekt createSchriftgutobjekt() {
 		var schriftgutobjekt = new Schriftgutobjekt();
 		schriftgutobjekt.setVorgang(vorgang);
 		schriftgutobjekt.setAkte(aktenzeichen);
-		abgabeType.getSchriftgutobjekt().add(schriftgutobjekt);
-		return abgabeType;
+		return schriftgutobjekt;
+	}
+
+	void addVorgangDokumente() {
+		representations.forEach(vorgang.getDokument()::add);
+		attachments.forEach(vorgang.getDokument()::add);
+		kommentare.forEach(vorgang.getDokument()::add);
 	}
 
 }
diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/file/DokumentTypeBuilder.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/file/DokumentTypeBuilder.java
index 651f195bc7784f8a7f23dbea965da9686dd04a4b..e927b380f5a9ea4731a30347a20091404f23a0aa 100644
--- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/file/DokumentTypeBuilder.java
+++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/file/DokumentTypeBuilder.java
@@ -10,6 +10,7 @@ import de.xoev.xdomea.DokumentType;
 import de.xoev.xdomea.FormatType;
 import de.xoev.xdomea.IdentifikationObjektType;
 import de.xoev.xdomea.MediumCodeType;
+import de.xoev.xdomea.PrimaerdokumentType;
 import de.xoev.xdomea.VersionType;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
@@ -48,12 +49,7 @@ public class DokumentTypeBuilder {
 		dokumentType.setIdentifikation(createIdentifikation());
 		dokumentType.setAllgemeineMetadaten(createAllgemeineMetadaten());
 		dokumentType.getVersion().add(createVersionType());
-		dokumentType.getVersion().get(0).getFormat().get(0).setPrimaerdokument(
-				PrimaerdokumentTypeBuilder.builder()
-						.withOzgFile(ozgFile)
-						.withErsteller(formEngineName)
-						.build()
-		);
+		dokumentType.getVersion().get(0).getFormat().get(0).setPrimaerdokument(createPrimaerdokument());
 		return dokumentType;
 	}
 
@@ -93,4 +89,11 @@ public class DokumentTypeBuilder {
 		mediumCode.setCode(ALLGEMEINE_METADATEN_MEDIUM_CODE);
 		return mediumCode;
 	}
+
+	PrimaerdokumentType createPrimaerdokument() {
+		return PrimaerdokumentTypeBuilder.builder()
+				.withOzgFile(ozgFile)
+				.withErsteller(formEngineName)
+				.build();
+	}
 }
diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataMapper.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataMapper.java
index 9365c58f7075c8159f0b1ce2dba513d846c7c491..b5b8a45e9e650bc8e193de707b082ec057e8758f 100644
--- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataMapper.java
+++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/FormDataMapper.java
@@ -9,8 +9,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 
-import jakarta.validation.constraints.NotNull;
-
 import org.springframework.stereotype.Component;
 
 import de.ozgcloud.alfa.common.DateConverter;
@@ -28,7 +26,7 @@ class FormDataMapper {
 
 	private final DatatypeMapper datatypeMapper;
 
-	public Antragsdaten toAntragsdaten(@NotNull VorgangWithEingang vorgang) {
+	public Antragsdaten toAntragsdaten(VorgangWithEingang vorgang) {
 		var antragsdaten = new Antragsdaten();
 		antragsdaten.getItem().addAll(mapFormData(vorgang));
 		antragsdaten.getItem().addAll(mapOtherData(vorgang));
diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/common/PrimaerdokumentTypeBuilderTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/common/PrimaerdokumentTypeBuilderTest.java
index 020607af3d231c567a66212f46c61f8bea63b671..6cb3903532e148f066ce17718fb90ef3e3580e0a 100644
--- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/common/PrimaerdokumentTypeBuilderTest.java
+++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/common/PrimaerdokumentTypeBuilderTest.java
@@ -16,7 +16,7 @@ import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
 
 class PrimaerdokumentTypeBuilderTest {
 
-	private final PrimaerdokumentTypeBuilder builder = PrimaerdokumentTypeBuilder.builder();
+	private final PrimaerdokumentTypeBuilder builder = PrimaerdokumentTypeBuilder.builder().withOzgFile(OzgFileTestFactory.create());
 
 	@Nested
 	class TestBuild {
@@ -46,13 +46,6 @@ class PrimaerdokumentTypeBuilderTest {
 			exportFilenameGeneratorMockedStatic.verify(() -> ExportFilenameGenerator.generateExportFilename(ozgFile));
 		}
 
-		@Test
-		void shouldNotGenerateExportFilename() {
-			builder.build();
-
-			exportFilenameGeneratorMockedStatic.verify(() -> ExportFilenameGenerator.generateExportFilename(null), never());
-		}
-
 		@Test
 		void shouldHaveDateiname() {
 			var primaerdokumentType = builder.withOzgFile(ozgFile).build();
@@ -74,13 +67,6 @@ class PrimaerdokumentTypeBuilderTest {
 			assertThat(primaerdokumentType.getDateinameOriginal()).isEqualTo(OzgFileTestFactory.NAME);
 		}
 
-		@Test
-		void shouldNotHaveDateinameOriginal() {
-			var primaerdokumentType = builder.build();
-
-			assertThat(primaerdokumentType.getDateinameOriginal()).isNull();
-		}
-
 		@Test
 		void shouldHaveErsteller() {
 			var primaerdokumentType = builder.withErsteller(ERSTELLER).build();
@@ -108,6 +94,11 @@ class PrimaerdokumentTypeBuilderTest {
 
 			assertThat(primaerdokumentType.getDatumUhrzeit().getYear()).isNegative();
 		}
+
+		@Test
+		void shouldThrowIllegalgStateException() {
+			assertThatThrownBy(() -> builder.withOzgFile(null).build()).isInstanceOf(IllegalStateException.class);
+		}
 	}
 
 }
\ No newline at end of file
diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/ExportServiceTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/ExportServiceTest.java
index 3042b94e020f3c3e9d34240bc04407b90bfc7483..ff7fb7bdd34403759f8ca946d467d3b59ba1654e 100644
--- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/ExportServiceTest.java
+++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/ExportServiceTest.java
@@ -110,6 +110,8 @@ class ExportServiceTest {
 	@Nested
 	class TestCollectExportData {
 
+		private MockedStatic<XdomeaNachrichtBuilder> xdomeaNachrichtBuilderMockedStatic;
+
 		private static final String FILENAME_ID = UUID.randomUUID().toString();
 		private static final String FILE_NAME = "file.zip";
 		private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
@@ -123,24 +125,40 @@ class ExportServiceTest {
 		private final List<DokumentType> attachmentsDokumentTypes = List.of(DokumentTypeTestFactory.create());
 		private final List<DokumentType> kommentareDokumentTypes = List.of(DokumentTypeTestFactory.create());
 
-		private final MockedStatic<XdomeaNachrichtBuilder> xdomeaNachrichtBuilderMockedStatic = mockStatic(XdomeaNachrichtBuilder.class);
 		@Mock
 		private XdomeaNachrichtBuilder xdomeaNachrichtBuilder;
 
 		@BeforeEach
 		void setUp() {
+			setUpVorgangService();
+			setUpXdomeaNachrichtBuilder();
+			setUpExportFileService();
+
+			doReturn(FILE_NAME).when(service).buildXmlFilename(FILENAME_ID);
+			doReturn(EingangHeaderTestFactory.FORM_ENGINE_NAME).when(service).getFormEngineName(vorgang);
+
+		}
+
+		private void setUpVorgangService() {
 			when(exportVorgangService.getVorgang(VorgangHeaderTestFactory.ID)).thenReturn(vorgang);
 			when(exportVorgangService.createVorgangType(vorgang)).thenReturn(vorgangType);
 			when(exportVorgangService.createKopf(vorgang)).thenReturn(kopfType);
 			when(exportVorgangService.createAkteType(vorgang)).thenReturn(akteType);
+		}
 
+		private void setUpXdomeaNachrichtBuilder() {
+			xdomeaNachrichtBuilderMockedStatic = mockStatic(XdomeaNachrichtBuilder.class);
 			when(xdomeaNachrichtBuilder.withKopf(kopfType)).thenReturn(xdomeaNachrichtBuilder);
 			when(xdomeaNachrichtBuilder.withVorgang(vorgangType)).thenReturn(xdomeaNachrichtBuilder);
 			when(xdomeaNachrichtBuilder.withAktenzeichen(akteType)).thenReturn(xdomeaNachrichtBuilder);
 			when(xdomeaNachrichtBuilder.withRepresentations(representationsDokumentTypes)).thenReturn(xdomeaNachrichtBuilder);
 			when(xdomeaNachrichtBuilder.withAttachments(attachmentsDokumentTypes)).thenReturn(xdomeaNachrichtBuilder);
 			when(xdomeaNachrichtBuilder.withKommentare(kommentareDokumentTypes)).thenReturn(xdomeaNachrichtBuilder);
+			xdomeaNachrichtBuilderMockedStatic.when(XdomeaNachrichtBuilder::builder).thenReturn(xdomeaNachrichtBuilder);
+			when(xdomeaNachrichtBuilder.build()).thenReturn(abgabe);
+		}
 
+		private void setUpExportFileService() {
 			mockStreamToList(representations, stream -> when(exportFileService.getRepresentations(vorgang)).thenReturn(stream));
 			mockStreamToList(attachments, stream -> when(exportFileService.getAttachments(vorgang)).thenReturn(stream));
 			mockStreamToList(representationsDokumentTypes,
@@ -150,13 +168,6 @@ class ExportServiceTest {
 			mockStreamToList(attachmentsDokumentTypes, stream ->
 					when(exportFileService.createDokumentTypes(attachments, EingangHeaderTestFactory.FORM_ENGINE_NAME)).thenReturn(stream));
 			mockStreamToList(kommentareDokumentTypes, stream -> when(exportKommentarService.createDokumentTypes(vorgang)).thenReturn(stream));
-
-			doReturn(FILE_NAME).when(service).buildXmlFilename(FILENAME_ID);
-			doReturn(EingangHeaderTestFactory.FORM_ENGINE_NAME).when(service).getFormEngineName(vorgang);
-
-			when(xdomeaNachrichtBuilder.build()).thenReturn(abgabe);
-
-			xdomeaNachrichtBuilderMockedStatic.when(XdomeaNachrichtBuilder::builder).thenReturn(xdomeaNachrichtBuilder);
 		}
 
 		@AfterEach
@@ -529,7 +540,7 @@ class ExportServiceTest {
 	class TestGetFormEngineName {
 
 		@Test
-		void shouldReturnEmptyOnNullEingang() {
+		void shouldReturnEmptyStringOnNullEingang() {
 			var vorgang = VorgangWithEingangTestFactory.createBuilder().eingang(null).build();
 
 			var formEngineName = service.getFormEngineName(vorgang);
diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/file/DokumentTypeBuilderTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/file/DokumentTypeBuilderTest.java
index e77319c32f2fb2139f2345af96390e53265d94b4..4c22c5ed9f4d5614dac9e71114ad0f661d7b7eae 100644
--- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/file/DokumentTypeBuilderTest.java
+++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/file/DokumentTypeBuilderTest.java
@@ -54,31 +54,17 @@ class DokumentTypeBuilderTest {
 	@Nested
 	class TestBuild {
 
-		private MockedStatic<PrimaerdokumentTypeBuilder> primaerdokumentTypeBuilderMockedStatic;
-		@Mock
-		private PrimaerdokumentTypeBuilder primaerdokumentTypeBuilder;
-
 		private final IdentifikationObjektType identifikationObjekt = IdentifikationObjektTypeTestFactory.create();
 		private final AllgemeineMetadatenType allgemeineMetadaten = AllgemeineMetadatenTypeTestFactory.create();
 		private final VersionType versionType = VersionTypeTestFactory.create();
-		private final PrimaerdokumentType primaerdokumentType = PrimaerdokumentTypeTestFactory.create();
+		private final PrimaerdokumentType primaerdokument = PrimaerdokumentTypeTestFactory.create();
 
 		@BeforeEach
 		void setUp() {
-			primaerdokumentTypeBuilderMockedStatic = mockStatic(PrimaerdokumentTypeBuilder.class);
-			primaerdokumentTypeBuilderMockedStatic.when(PrimaerdokumentTypeBuilder::builder).thenReturn(primaerdokumentTypeBuilder);
-
 			doReturn(identifikationObjekt).when(builder).createIdentifikation();
 			doReturn(versionType).when(builder).createVersionType();
 			doReturn(allgemeineMetadaten).when(builder).createAllgemeineMetadaten();
-			when(primaerdokumentTypeBuilder.withOzgFile(ozgFile)).thenReturn(primaerdokumentTypeBuilder);
-			when(primaerdokumentTypeBuilder.withErsteller(FORM_ENGINE_NAME)).thenReturn(primaerdokumentTypeBuilder);
-			when(primaerdokumentTypeBuilder.build()).thenReturn(primaerdokumentType);
-		}
-
-		@AfterEach
-		void tearDown() {
-			primaerdokumentTypeBuilderMockedStatic.close();
+			doReturn(primaerdokument).when(builder).createPrimaerdokument();
 		}
 
 		@Test
@@ -124,32 +110,19 @@ class DokumentTypeBuilderTest {
 		}
 
 		@Test
-		void shouldPrimaerdokumentWithOzgFile() {
-			builder.build();
-
-			verify(primaerdokumentTypeBuilder).withOzgFile(ozgFile);
-		}
-
-		@Test
-		void shouldPrimaerdokumentWithErsteller() {
-			builder.build();
-
-			verify(primaerdokumentTypeBuilder).withErsteller(FORM_ENGINE_NAME);
-		}
-
-		@Test
-		void shouldBuildPrimaerdokumentType() {
+		void shouldCreatePrimaerdokument() {
 			builder.build();
 
-			verify(primaerdokumentTypeBuilder).build();
+			verify(builder).createPrimaerdokument();
 		}
 
 		@Test
 		void shouldHavePrimaerdokument() {
 			var dokument = builder.build();
 
-			assertThat(dokument.getVersion().get(0).getFormat().get(0).getPrimaerdokument()).isEqualTo(primaerdokumentType);
+			assertThat(dokument.getVersion().get(0).getFormat().get(0).getPrimaerdokument()).isEqualTo(primaerdokument);
 		}
+
 	}
 
 	@Nested
@@ -195,14 +168,14 @@ class DokumentTypeBuilderTest {
 		}
 
 		@Test
-		void shouldHaveKennzeichen() {
+		void shouldHaveEmptyKennzeichen() {
 			var allgemeineMetadaten = builder.createAllgemeineMetadaten();
 
 			assertThat(allgemeineMetadaten.getKennzeichen()).isEmpty();
 		}
 
 		@Test
-		void shouldHaveBemerkung() {
+		void shouldHaveEmptyBemerkung() {
 			var allgemeineMetadaten = builder.createAllgemeineMetadaten();
 
 			assertThat(allgemeineMetadaten.getBemerkung()).isEmpty();
@@ -275,4 +248,56 @@ class DokumentTypeBuilderTest {
 		}
 	}
 
+	@Nested
+	class TestCreatePrimaerdokument {
+
+		private MockedStatic<PrimaerdokumentTypeBuilder> primaerdokumentTypeBuilderMockedStatic;
+		@Mock
+		private PrimaerdokumentTypeBuilder primaerdokumentTypeBuilder;
+
+		private final PrimaerdokumentType primaerdokumentType = PrimaerdokumentTypeTestFactory.create();
+
+		@BeforeEach
+		void setUp() {
+			primaerdokumentTypeBuilderMockedStatic = mockStatic(PrimaerdokumentTypeBuilder.class);
+			primaerdokumentTypeBuilderMockedStatic.when(PrimaerdokumentTypeBuilder::builder).thenReturn(primaerdokumentTypeBuilder);
+			when(primaerdokumentTypeBuilder.withOzgFile(ozgFile)).thenReturn(primaerdokumentTypeBuilder);
+			when(primaerdokumentTypeBuilder.withErsteller(FORM_ENGINE_NAME)).thenReturn(primaerdokumentTypeBuilder);
+			when(primaerdokumentTypeBuilder.build()).thenReturn(primaerdokumentType);
+		}
+
+		@AfterEach
+		void tearDown() {
+			primaerdokumentTypeBuilderMockedStatic.close();
+		}
+
+		@Test
+		void shouldCreatePrimaerdokumentWithOzgFile() {
+			builder.createPrimaerdokument();
+
+			verify(primaerdokumentTypeBuilder).withOzgFile(ozgFile);
+		}
+
+		@Test
+		void shouldCreatePrimaerdokumentWithErsteller() {
+			builder.createPrimaerdokument();
+
+			verify(primaerdokumentTypeBuilder).withErsteller(FORM_ENGINE_NAME);
+		}
+
+		@Test
+		void shouldBuildPrimaerdokument() {
+			builder.createPrimaerdokument();
+
+			verify(primaerdokumentTypeBuilder).build();
+		}
+
+		@Test
+		void shouldReturnBuildPrimaerdokument() {
+			var primaerdokument = builder.createPrimaerdokument();
+
+			assertThat(primaerdokument).isEqualTo(primaerdokument);
+		}
+	}
+
 }
\ No newline at end of file