diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapper.java
index 9f9f2f93c60d21fe2faa903601e1db37dd4206d4..e6d9f6836b5ef0d26087356de2545d512683b863 100644
--- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapper.java
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xdomea/XdomeaMessageDataMapper.java
@@ -25,37 +25,54 @@ public class XdomeaMessageDataMapper {
 
 	public XdomeaMessageData mapIncomingFilesToXdomeaMessageData(List<IncomingFile> incomingFileList) {
 		var xdomeaXMLFile = findXdomeaXMLFile(incomingFileList);
-
 		var representationFileNames = valueReader.readRepresentationFileNames(xdomeaXMLFile);
+		var attachmentFileNames = getFileNamesExcluding(
+				incomingFileList,
+				Stream.concat(Stream.of(xdomeaXMLFile.getName()), representationFileNames.stream())
+		);
 
-		var fileNameToFileMap = incomingFileList.stream()
-				.collect(Collectors.toMap(IncomingFile::getName, file -> file));
+		var fileNameToFileMap = createFileNameToIncomingFileMap(incomingFileList);
 		return XdomeaMessageData.builder()
 				.metadataFile(xdomeaXMLFile)
-				// Representations are incoming files which are referenced in the xdomea-xml in 'Dateiname' elements
-				.representations(getFilesByName(
-								movePrimaryRepresentationFileNameToFirstPosition(representationFileNames),
-								fileNameToFileMap
-						)
-				)
-				// Attachments are all incoming files which are neither the xdomea-xml nor representations
-				.attachments(Stream.of(IncomingFileGroup.builder()
-								.name(ATTACHMENT_GROUP_NAME)
-								.files(getFilesByName(
-										dropNames(
-												incomingFileList.stream().map(IncomingFile::getName),
-												Stream.concat(Stream.of(xdomeaXMLFile.getName()), representationFileNames.stream())
-														.collect(Collectors.toSet())
-										),
-										fileNameToFileMap))
-								.build())
-						// Do not include empty attachment group
-						.filter(group -> !group.getFiles().isEmpty())
-						.toList()
-				)
+				.representations(getRepresentations(representationFileNames, fileNameToFileMap))
+				.attachments(getAttachments(attachmentFileNames, fileNameToFileMap))
 				.build();
 	}
 
+	private Map<String, IncomingFile> createFileNameToIncomingFileMap(List<IncomingFile> incomingFileList) {
+		return incomingFileList.stream()
+				.collect(Collectors.toMap(IncomingFile::getName, file -> file));
+	}
+
+	private Stream<String> getFileNamesExcluding(List<IncomingFile> incomingFileList, Stream<String> excludedFileNames) {
+		return dropNames(
+				incomingFileList.stream().map(IncomingFile::getName),
+				excludedFileNames.collect(Collectors.toSet())
+		);
+	}
+
+	private List<IncomingFile> getRepresentations(List<String> representationFileNames, Map<String, IncomingFile> fileNameToFileMap) {
+		return getFilesByName(
+				movePrimaryRepresentationFileNameToFirstPosition(representationFileNames),
+				fileNameToFileMap
+		);
+	}
+
+	private List<IncomingFileGroup> getAttachments(Stream<String> attachmentFileNames, Map<String, IncomingFile> fileNameToFileMap) {
+		return Stream.of(IncomingFileGroup.builder()
+						.name(ATTACHMENT_GROUP_NAME)
+						.files(
+								getFilesByName(
+										attachmentFileNames,
+										fileNameToFileMap
+								)
+						)
+						.build())
+				// Do not include empty attachment group
+				.filter(group -> !group.getFiles().isEmpty())
+				.toList();
+	}
+
 	private Stream<String> movePrimaryRepresentationFileNameToFirstPosition(List<String> representationFileNames) {
 		var primaryRepresentationFileName = findPrimaryRepresentationName(representationFileNames);
 		return Stream.concat(