diff --git a/Jenkinsfile.admin b/Jenkinsfile.admin
new file mode 100644
index 0000000000000000000000000000000000000000..111ca2c5fff71683885dfc840a809ced2ce0c75a
--- /dev/null
+++ b/Jenkinsfile.admin
@@ -0,0 +1,48 @@
+pipeline {
+  agent {
+    node {
+      label 'ozgcloud-jenkins-build-agent'
+    }
+  }
+
+  environment {
+        BLUE_OCEAN_URL = "https://jenkins.infra.ozg-cloud.systems/job/alfa/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/"
+        RELEASE_REGEX = /\d+.\d+.\d+/
+        SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/
+        FAILED_STAGE = ""
+        SH_SUCCESS_STATUS_CODE = 0
+    }
+
+    options {
+        timeout(time: 1, unit: 'HOURS')
+        disableConcurrentBuilds()
+        buildDiscarder(logRotator(numToKeepStr: '5'))
+    }
+
+    // TODO check version
+    stage('build') {
+      steps {
+        script {
+          FAILED_STAGE=env.STAGE_NAME
+
+          dir('alfa-client') {
+            sh 'echo "registry=https://nexus.ozg-sh.de/repository/npm-proxy" >> ~/.npmrc'
+            sh 'echo "//nexus.ozg-sh.de/:_auth=amVua2luczprTSFnNVUhMVQzNDZxWQ==" >> ~/.npmrc'
+
+						sh 'npm cache verify'
+            sh 'npm install'
+
+            if (isReleaseBranch()) {
+              sh 'npm run ci-prodBuild-admin'
+            } else {
+              sh 'npm run ci-build-admin'
+            }
+          }
+        }
+      }
+    }
+}
+
+Boolean isReleaseBranch() {
+    return env.BRANCH_NAME == 'release'
+}
\ No newline at end of file
diff --git a/alfa-client/package-lock.json b/alfa-client/package-lock.json
index 14577917261bad756c03028d361bb469403a14bc..05c9ea2dd537b26dd920ae82a7b8c9e042012f16 100644
--- a/alfa-client/package-lock.json
+++ b/alfa-client/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "alfa",
-  "version": "0.0.0",
+  "version": "0.1.0",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "alfa",
-      "version": "0.0.0",
+      "version": "0.1.0",
       "license": "MIT",
       "dependencies": {
         "@angular/animations": "16.2.11",
diff --git a/alfa-client/package.json b/alfa-client/package.json
index 0ea2f44f86f68c0285268d36703bda00acd484c4..d66013f0643824ef2ae3f3eb761863774d1abec9 100644
--- a/alfa-client/package.json
+++ b/alfa-client/package.json
@@ -1,6 +1,6 @@
 {
   "name": "alfa",
-  "version": "0.0.0",
+  "version": "0.1.0",
   "license": "MIT",
   "scripts": {
     "start": "nx run alfa:serve --port 4300 --disable-host-check",
@@ -14,7 +14,9 @@
     "test:lib": "nx test ${npm_config_lib} --watchAll",
     "test:debug:lib": "nx test ${npm_config_lib} --detectOpenHandles --watchAll",
     "ci-build": "nx run alfa:build --outputHashing=all",
+    "ci-build-admin": "nx run admin:build --outputHashing=all",
     "ci-prodBuild": "nx run alfa:build --outputHashing=all --configuration production",
+    "ci-prodBuild-admin": "nx run admin:build --outputHashing=all --configuration production",
     "ci-test": "nx run-many --target=test --parallel 8 -- --runInBand",
     "ci-sonar": "nx run-many --target=test --parallel 8 -- --runInBand --codeCoverage --coverageReporters=lcov --testResultsProcessor=jest-sonar-reporter && npx sonar-scanner",
     "lint": "nx workspace-lint && nx lint",
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 89dd5f2c400be5b9b2be40f20bf873d51c4351cf..ac48de62dda65cb160e37d62a03be7583ff7ab37 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 primaerdokumentType = new PrimaerdokumentType();
-		if (ozgFile != null) {
-			primaerdokumentType.setDateiname(ExportFilenameGenerator.generateExportFilename(ozgFile));
-			primaerdokumentType.setDateinameOriginal(ozgFile.getName());
+		if (ozgFile == null) {
+			throw new IllegalStateException("Can not build Primaerdokument when ozg file is null");
 		}
+
+		var primaerdokumentType = new PrimaerdokumentType();
+		primaerdokumentType.setDateiname(ExportFilenameGenerator.generateExportFilename(ozgFile));
+		primaerdokumentType.setDateinameOriginal(ozgFile.getName());
 		primaerdokumentType.setErsteller(ersteller);
 		primaerdokumentType.setDatumUhrzeit(DateConverter.toXmlGregorianCalendar(createdAt));
 		return primaerdokumentType;
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 c239b4a0190d1ca3dc22440afa66f36f9bfd70ea..40049d86cd0da151919f637034d44d31fae801da 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
@@ -58,18 +58,28 @@ class XdomeaNachrichtBuilder {
 	}
 
 	public AbgabeAbgabe0401 build() {
-		representations.forEach(vorgang.getDokument()::add);
-		attachments.forEach(vorgang.getDokument()::add);
-		historie.forEach(vorgang.getHistorienProtokollInformation()::add);
+		addVorgangDokumente();
+		addVorgangChangeHistory();
 
 		var abgabeType = new AbgabeAbgabe0401();
 		abgabeType.setKopf(kopf);
+		abgabeType.getSchriftgutobjekt().add(createSchriftgutobjekt());
+		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);
+	}
+
+	void addVorgangChangeHistory() {
+		historie.forEach(vorgang.getHistorienProtokollInformation()::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 523c4a422a2e7df3d7dc3a6ba9d5b0419bbaf084..625313a85d2365950b6e7d0295bc8bb520b9ff72 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
@@ -11,6 +11,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;
@@ -49,12 +50,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;
 	}
 
@@ -94,4 +90,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 631b58ca17de09178637107421700d04274ef3a7..51447d711d95bd24c947899d9339d36b03e548c1 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()).isNull();
 		}
+
+		@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 170341bb8acca8b1140dba7f92f47e9e049fcfb4..6721bd0741933c922627264340621a3676ae27cb 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
@@ -111,6 +111,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();
@@ -125,24 +127,41 @@ class ExportServiceTest {
 		private final List<HistorienProtokollInformationType> historienProtokollInformationTypes = List.of(
 				HistorienProtokollInformationTypeTestFactory.create());
 
-		private final MockedStatic<XdomeaNachrichtBuilder> xdomeaNachrichtBuilderMockedStatic = mockStatic(XdomeaNachrichtBuilder.class);
 		@Mock
 		private XdomeaNachrichtBuilder xdomeaNachrichtBuilder;
 
 		@BeforeEach
 		void setUp() {
+			setUpVorgangService();
+			setUpXdomeaNachrichtBuilder();
+			setUpExportFileService();
+			setUpExportHistorieService();
+
+			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.withHistorie(historienProtokollInformationTypes)).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,
@@ -151,15 +170,11 @@ class ExportServiceTest {
 									.thenReturn(stream));
 			mockStreamToList(attachmentsDokumentTypes, stream ->
 					when(exportFileService.createDokumentTypes(attachments, EingangHeaderTestFactory.FORM_ENGINE_NAME)).thenReturn(stream));
+		}
+
+		private void setUpExportHistorieService() {
 			mockStreamToList(historienProtokollInformationTypes,
 					stream -> when(exportHistorieService.createHistorienProtokollInformationTypes(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
@@ -533,7 +548,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 58636d28abc5890749863c724368be6a3e58ef9a..332cfc515421594b8613b79ce54b31effcf7ec04 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
@@ -55,31 +55,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
@@ -125,32 +111,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
@@ -196,14 +169,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();
@@ -276,4 +249,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