diff --git a/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapper.java b/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapper.java
index 218a7c9d3789b4b2f7f7235dd4af3a2b78b6c329..1c4fb0545a16cb00f0ca4ad92df343494260bb78 100644
--- a/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapper.java
+++ b/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapper.java
@@ -47,14 +47,40 @@ public class XdomeaMessageDataMapper {
 
 	private final XdomeaXMLValueReader valueReader;
 
-	public EingangRepresentationsAndAttachments mapIncomingFilesToRepresentationsAttachmentsPair(List<IncomingFile> incomingFileList) {
+	public EingangRepresentationsAndAttachments mapEingangRepresentationsAndAttachments(List<IncomingFile> incomingFileList) {
+		return removeUuidPrefixFromEingangFiles(
+				mapRawEingangRepresentationsAndAttachments(incomingFileList)
+		);
+	}
+
+	private EingangRepresentationsAndAttachments removeUuidPrefixFromEingangFiles(EingangRepresentationsAndAttachments eingang) {
+		return EingangRepresentationsAndAttachments.builder()
+				.primaryFormDataFileName(removeUuidPrefix(eingang.primaryFormDataFileName()))
+				.primaryFormDataPdfFileName(removeUuidPrefix(eingang.primaryFormDataPdfFileName()))
+				.representations(removeUuidPrefixFromIncomingFiles(eingang.representations()))
+				.attachments(removeUuidPrefixFromIncomingFileGroups(eingang.attachments()))
+				.build();
+	}
+
+	private EingangRepresentationsAndAttachments mapRawEingangRepresentationsAndAttachments(List<IncomingFile> incomingFileList) {
 		var xdomeaMessageData = mapIncomingFilesToXdomeaMessageData(incomingFileList);
 		return EingangRepresentationsAndAttachments.builder()
-				.representations(removeUuidPrefixFromIncomingFiles(getPairRepresentations(xdomeaMessageData)))
-				.attachments(removeUuidPrefixFromIncomingFileGroups(xdomeaMessageData.attachments()))
+				.primaryFormDataFileName(findRepresentationFileNameBySuffixFromMetadata(xdomeaMessageData, ".xml"))
+				.primaryFormDataPdfFileName(findRepresentationFileNameBySuffixFromMetadata(xdomeaMessageData, ".pdf"))
+				.representations(getPairRepresentations(xdomeaMessageData))
+				.attachments(xdomeaMessageData.attachments())
 				.build();
 	}
 
+	private String findRepresentationFileNameBySuffixFromMetadata(XdomeaMessageData xdomeaMessageData, String suffix) {
+		return findRepresentationFileNameBySuffix(
+				xdomeaMessageData.representations().stream()
+						.map(IncomingFile::getName)
+						.toList(),
+				suffix
+		);
+	}
+
 	private List<IncomingFileGroup> removeUuidPrefixFromIncomingFileGroups(List<IncomingFileGroup> incomingFileGroups) {
 		return incomingFileGroups.stream()
 				.map(group -> group.toBuilder()
@@ -116,10 +142,7 @@ public class XdomeaMessageDataMapper {
 	}
 
 	private List<IncomingFile> getRepresentations(List<String> representationFileNames, Map<String, IncomingFile> fileNameToFileMap) {
-		return getFilesByName(
-				movePrimaryRepresentationFileNameToFirstPosition(representationFileNames),
-				fileNameToFileMap
-		);
+		return getFilesByName(representationFileNames.stream(), fileNameToFileMap);
 	}
 
 	private List<IncomingFileGroup> getAttachments(Stream<String> attachmentFileNames, Map<String, IncomingFile> fileNameToFileMap) {
@@ -137,14 +160,6 @@ public class XdomeaMessageDataMapper {
 				.toList();
 	}
 
-	private Stream<String> movePrimaryRepresentationFileNameToFirstPosition(List<String> representationFileNames) {
-		var primaryRepresentationFileName = findPrimaryRepresentationName(representationFileNames);
-		return Stream.concat(
-				Stream.of(primaryRepresentationFileName),
-				dropNames(representationFileNames.stream(), Set.of(primaryRepresentationFileName))
-		);
-	}
-
 	private List<IncomingFile> getFilesByName(Stream<String> names, Map<String, IncomingFile> fileNameToFileMap) {
 		return names.map(fileNameToFileMap::get).toList();
 	}
@@ -153,16 +168,17 @@ public class XdomeaMessageDataMapper {
 		return names.filter(name -> !namesToDrop.contains(name));
 	}
 
-	String findPrimaryRepresentationName(List<String> representationFileNames) {
-		var xmlFileNames = representationFileNames.stream()
-				.filter(name -> name.endsWith(".xml"))
+	String findRepresentationFileNameBySuffix(List<String> representationFileNames, String suffix) {
+		var fileNames = representationFileNames.stream()
+				.filter(name -> name.endsWith(suffix))
 				.toList();
-		if (xmlFileNames.isEmpty()) {
-			throw new TechnicalException("No xml representation file name found!");
-		} else if (xmlFileNames.size() > 1) {
-			LOG.warn("There is more than one xml representations. Choosing the first of {}.", xmlFileNames.size());
+		if (fileNames.isEmpty()) {
+			LOG.warn("There is no representation with suffix {}!.", suffix);
+			return "";
+		} else if (fileNames.size() > 1) {
+			LOG.warn("There is more than one representation with suffix {}. Choosing the first of {}.", suffix, fileNames.size());
 		}
-		return xmlFileNames.getFirst();
+		return fileNames.getFirst();
 	}
 
 	IncomingFile findXdomeaXMLFile(List<IncomingFile> incomingFileList) {
diff --git a/src/main/java/de/ozgcloud/eingang/xta/XtaService.java b/src/main/java/de/ozgcloud/eingang/xta/XtaService.java
index cee05fbdc39b3ef0685832794323677f95cff119..1898f89e539569c93f14507b846fbcf23c14f6c1 100644
--- a/src/main/java/de/ozgcloud/eingang/xta/XtaService.java
+++ b/src/main/java/de/ozgcloud/eingang/xta/XtaService.java
@@ -29,9 +29,6 @@ import java.util.List;
 import java.util.Optional;
 import java.util.function.Consumer;
 
-import lombok.NonNull;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.log4j.Log4j2;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
@@ -51,6 +48,9 @@ import de.ozgcloud.xta.client.model.XtaMessage;
 import de.ozgcloud.xta.client.model.XtaMessageMetaData;
 import de.ozgcloud.xta.client.model.XtaMessageStatus;
 import de.ozgcloud.xta.client.model.XtaTransportReport;
+import lombok.NonNull;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.log4j.Log4j2;
 
 @Service
 @Log4j2
@@ -71,7 +71,6 @@ class XtaService {
 	private final XdomeaMessageDataMapper xdomeaMessageDataMapper;
 	private final XtaIncomingFilesMapper xtaIncomingFilesMapper;
 
-
 	public void fetchMessages() throws XtaClientException {
 
 		var transportReports = xtaClient.fetchMessages(messageProcessor);
@@ -114,7 +113,7 @@ class XtaService {
 
 	EingangRepresentationsAndAttachments getRepresentationsAttachmentsPair(XtaMessageMetaData metaData, List<IncomingFile> incomingFiles) {
 		if (isXDomeaMessageType(metaData.messageTypeCode())) {
-			return xdomeaMessageDataMapper.mapIncomingFilesToRepresentationsAttachmentsPair(incomingFiles);
+			return xdomeaMessageDataMapper.mapEingangRepresentationsAndAttachments(incomingFiles);
 		}
 		if (isFimMessageType(metaData.messageTypeCode())) {
 			return mapIncomingFilesToRepresentations(incomingFiles);
diff --git a/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapperTest.java b/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapperTest.java
index 92c8ca837ca4aa6ded9bd6d7a1238e801ef19bcd..a82bd209f46b9e00bc6312445ad8cb9cc6528441 100644
--- a/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapperTest.java
+++ b/src/test/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapperTest.java
@@ -26,7 +26,6 @@ package de.ozgcloud.eingang.xdomea;
 import static de.ozgcloud.eingang.xdomea.XdomeaMessageDataMapper.*;
 import static de.ozgcloud.eingang.xdomea.XdomeaMessageDataTestFactory.*;
 import static org.assertj.core.api.Assertions.*;
-import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
 import java.util.Collection;
@@ -57,9 +56,9 @@ class XdomeaMessageDataMapperTest {
 	@Mock
 	private XdomeaXMLValueReader valueReader;
 
-	@DisplayName("map incoming files to representations attachments pair")
+	@DisplayName("map EingangRepresentationsAndAttachments")
 	@Nested
-	class TestMapIncomingFilesToEingangRepresentationsAndAttachments {
+	class TestMapEingangRepresentationsAndAttachments {
 
 		@Mock
 		private List<IncomingFile> incomingFileList;
@@ -70,7 +69,7 @@ class XdomeaMessageDataMapperTest {
 		void shouldMapRepresentations(boolean useUuidPrefix) {
 			mockXdomeaMessageData(useUuidPrefix);
 
-			var pair = fileClassifier.mapIncomingFilesToRepresentationsAttachmentsPair(incomingFileList);
+			var pair = fileClassifier.mapEingangRepresentationsAndAttachments(incomingFileList);
 
 			var representationFilenames = pair.representations().stream().map(IncomingFile::getName).toList();
 			assertThat(representationFilenames).containsExactly(XDOMEA_XML_NAME, REPR_XML_NAME, REPR_PDF_NAME);
@@ -82,7 +81,7 @@ class XdomeaMessageDataMapperTest {
 		void shouldMapAttachments(boolean useUuidPrefix) {
 			mockXdomeaMessageData(useUuidPrefix);
 
-			var pair = fileClassifier.mapIncomingFilesToRepresentationsAttachmentsPair(incomingFileList);
+			var pair = fileClassifier.mapEingangRepresentationsAndAttachments(incomingFileList);
 
 			var attachmentFilenames = pair.attachments().stream()
 					.map(IncomingFileGroup::getFiles)
@@ -92,6 +91,28 @@ class XdomeaMessageDataMapperTest {
 			assertThat(attachmentFilenames).containsExactly(ATTATCHMENT_XML_NAME, ATTATCHMENT_PNG_NAME, ATTATCHMENT_PDF_NAME);
 		}
 
+		@DisplayName("should map primaryFormDataFileName")
+		@ParameterizedTest
+		@ValueSource(booleans = { true, false })
+		void shouldMapPrimaryFormDataFileName(boolean useUuidPrefix) {
+			mockXdomeaMessageData(useUuidPrefix);
+
+			var pair = fileClassifier.mapEingangRepresentationsAndAttachments(incomingFileList);
+
+			assertThat(pair.primaryFormDataFileName()).isEqualTo(REPR_XML_NAME);
+		}
+
+		@DisplayName("should map primaryFormDataPdfFileName")
+		@ParameterizedTest
+		@ValueSource(booleans = { true, false })
+		void shouldMapPrimaryFormPdfDataFileName(boolean useUuidPrefix) {
+			mockXdomeaMessageData(useUuidPrefix);
+
+			var pair = fileClassifier.mapEingangRepresentationsAndAttachments(incomingFileList);
+
+			assertThat(pair.primaryFormDataPdfFileName()).isEqualTo(REPR_PDF_NAME);
+		}
+
 		private void mockXdomeaMessageData(boolean useUuidPrefix) {
 			doReturn(XdomeaMessageDataTestFactory.create(useUuidPrefix)).when(fileClassifier).mapIncomingFilesToXdomeaMessageData(incomingFileList);
 		}
@@ -129,31 +150,53 @@ class XdomeaMessageDataMapperTest {
 		}
 	}
 
-	@DisplayName("find primary representation name")
+	@DisplayName("find representation file name by suffix")
 	@Nested
-	class TestFindPrimaryRepresentationName {
-		private static final String FILE_NAME_WITHOUT_XML_SUFFIX = "some-file-name.pdf";
-		private static final String FILE_NAME_WITHOUT_XML_SUFFIX2 = "some-file-name.xml.pdf";
-		private static final String FILE_NAME_WITH_XML_SUFFIX = "some-file-name.xml";
-		private static final String FILE_NAME_WITH_XML_SUFFIX2 = "some-file-name.pdf.xml";
+	class TestFindRepresentationFileNameBySuffix {
+		private static final String PDF_FILE_NAME = "some-file-name.pdf";
+		private static final String PDF_FILE_NAME2 = "some-file-name.xml.pdf";
+		private static final String XML_FILE_NAME = "some-file-name.xml";
+		private static final String XML_FILE_NAME2 = "some-file-name.pdf.xml";
 
-		@DisplayName("should throw if no xml suffix")
+		@DisplayName("should return empty if no xml suffix")
 		@Test
-		void shouldThrowIfNoXmlSuffix() {
-			var listWithoutSuffix = List.of(FILE_NAME_WITHOUT_XML_SUFFIX, FILE_NAME_WITHOUT_XML_SUFFIX2);
+		void shouldReturnEmptyIfNoXmlSuffix() {
+			var namesWithSuffix = List.of(PDF_FILE_NAME, PDF_FILE_NAME2);
+
+			var fileName = fileClassifier.findRepresentationFileNameBySuffix(namesWithSuffix, ".xml");
 
-			assertThrows(TechnicalException.class, () -> fileClassifier.findPrimaryRepresentationName(listWithoutSuffix));
+			assertThat(fileName).isEmpty();
 		}
 
 		@DisplayName("should return first with xml suffix")
 		@Test
 		void shouldReturnFirstWithXmlSuffix() {
-			var listWithSuffix = List.of(FILE_NAME_WITHOUT_XML_SUFFIX, FILE_NAME_WITH_XML_SUFFIX, FILE_NAME_WITHOUT_XML_SUFFIX2,
-					FILE_NAME_WITH_XML_SUFFIX2);
+			var namesWithSuffix = List.of(PDF_FILE_NAME, XML_FILE_NAME, PDF_FILE_NAME2,
+					XML_FILE_NAME2);
+
+			var fileName = fileClassifier.findRepresentationFileNameBySuffix(namesWithSuffix, ".xml");
+
+			assertThat(fileName).isEqualTo(XML_FILE_NAME);
+		}
+
+		@DisplayName("should return empty if no pdf suffix")
+		@Test
+		void shouldReturnEmptyIfNoPdfSuffix() {
+			var namesWithoutSuffix = List.of(XML_FILE_NAME, XML_FILE_NAME2);
 
-			var fileName = fileClassifier.findPrimaryRepresentationName(listWithSuffix);
+			var fileName = fileClassifier.findRepresentationFileNameBySuffix(namesWithoutSuffix, ".pdf");
 
-			assertThat(fileName).isEqualTo(FILE_NAME_WITH_XML_SUFFIX);
+			assertThat(fileName).isEmpty();
+		}
+
+		@DisplayName("should return first with pdf suffix")
+		@Test
+		void shouldReturnFirstWithPdfSuffix() {
+			var namesWithSuffix = List.of(PDF_FILE_NAME, XML_FILE_NAME, PDF_FILE_NAME2, XML_FILE_NAME2);
+
+			var fileName = fileClassifier.findRepresentationFileNameBySuffix(namesWithSuffix, ".pdf");
+
+			assertThat(fileName).isEqualTo(PDF_FILE_NAME);
 		}
 	}
 
@@ -184,7 +227,6 @@ class XdomeaMessageDataMapperTest {
 
 			var representationFileNames = List.of(REPR_PDF_NAME, REPR_XML_NAME);
 			when(valueReader.readRepresentationFileNames(xdomeaXMLFile)).thenReturn(representationFileNames);
-			doReturn(REPR_XML_NAME).when(fileClassifier).findPrimaryRepresentationName(representationFileNames);
 		}
 
 		@DisplayName("should contain xdomea metadata file")
@@ -204,8 +246,8 @@ class XdomeaMessageDataMapperTest {
 			var resultRepresentationFileNames = classification.representations().stream()
 					.map(IncomingFile::getName)
 					.toList();
-			// Expect that the primary representation xml file is moved to the first position
-			assertThat(resultRepresentationFileNames).isEqualTo(List.of(REPR_XML_NAME, REPR_PDF_NAME));
+
+			assertThat(resultRepresentationFileNames).isEqualTo(List.of(REPR_PDF_NAME, REPR_XML_NAME));
 		}
 
 		@DisplayName("should contain attachments")
diff --git a/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java b/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java
index ee254b4e7c8b0c985a722a5f7917469b191a22a6..7959874bcc2db472b5224680b550a2427ef3a16b 100644
--- a/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java
+++ b/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java
@@ -296,7 +296,7 @@ class XtaServiceTest {
 		@Test
 		void shouldUseCorrectMapperXdomeaMessageType() {
 			when(messageMetaData.messageTypeCode()).thenReturn(XtaService.XDOMEA_0201_MESSAGE_TYPE);
-			when(xdomeaMessageDataMapper.mapIncomingFilesToRepresentationsAttachmentsPair(incomingFiles))
+			when(xdomeaMessageDataMapper.mapEingangRepresentationsAndAttachments(incomingFiles))
 					.thenReturn(classification);
 
 			var result = service.getRepresentationsAttachmentsPair(messageMetaData, incomingFiles);