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 e6d9f6836b5ef0d26087356de2545d512683b863..918de441398cb8e34af14340063760b6c1cd640f 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
@@ -11,6 +11,7 @@ import org.springframework.stereotype.Component;
 import de.ozgcloud.eingang.common.errorhandling.TechnicalException;
 import de.ozgcloud.eingang.common.formdata.IncomingFile;
 import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
+import de.ozgcloud.eingang.xta.RepresentationsAttachmentsPair;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
 
@@ -23,7 +24,22 @@ public class XdomeaMessageDataMapper {
 
 	private final XdomeaXMLValueReader valueReader;
 
-	public XdomeaMessageData mapIncomingFilesToXdomeaMessageData(List<IncomingFile> incomingFileList) {
+	public RepresentationsAttachmentsPair mapIncomingFilesToRepresentationsAttachmentsPair(List<IncomingFile> incomingFileList) {
+		var xdomeaMessageData = mapIncomingFilesToXdomeaMessageData(incomingFileList);
+		return RepresentationsAttachmentsPair.builder()
+				.representations(getPairRepresentations(xdomeaMessageData))
+				.attachments(xdomeaMessageData.attachments())
+				.build();
+	}
+
+	private List<IncomingFile> getPairRepresentations(XdomeaMessageData xdomeaMessageData) {
+		return Stream.concat(
+				Stream.of(xdomeaMessageData.metadataFile()),
+				xdomeaMessageData.representations().stream()
+		).toList();
+	}
+
+	XdomeaMessageData mapIncomingFilesToXdomeaMessageData(List<IncomingFile> incomingFileList) {
 		var xdomeaXMLFile = findXdomeaXMLFile(incomingFileList);
 		var representationFileNames = valueReader.readRepresentationFileNames(xdomeaXMLFile);
 		var attachmentFileNames = getFileNamesExcluding(
diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPair.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPair.java
new file mode 100644
index 0000000000000000000000000000000000000000..0639e78e5439c4811ba1cd3c57d6f780fb7b7cbe
--- /dev/null
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPair.java
@@ -0,0 +1,14 @@
+package de.ozgcloud.eingang.xta;
+
+import java.util.List;
+
+import de.ozgcloud.eingang.common.formdata.IncomingFile;
+import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
+import lombok.Builder;
+
+@Builder
+public record RepresentationsAttachmentsPair(
+		List<IncomingFile> representations,
+		List<IncomingFileGroup> attachments
+) {
+}
diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java
index af561ff948a92bee781a4745cd9b98af4ece0c8e..35e60dc6ffa846c57121ad889fe7e3b524d3e129 100644
--- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java
@@ -1,18 +1,13 @@
 package de.ozgcloud.eingang.xta;
 
-import java.util.List;
-import java.util.stream.Stream;
-
 import org.mapstruct.Context;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 
 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.vorgang.VorgangNummerSupplier;
 import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper;
-import de.ozgcloud.eingang.xdomea.XdomeaMessageData;
 
 @Mapper(imports = FilesMapperHelper.class)
 interface XtaMessageMapper {
@@ -23,19 +18,12 @@ interface XtaMessageMapper {
 	@Mapping(target = "id", ignore = true)
 	@Mapping(target = "zustaendigeStelle", ignore = true)
 	@Mapping(target = "header", source = "metaData")
-	@Mapping(target = "numberOfAttachments", expression = "java(FilesMapperHelper.countAttachedFiles(xdomeaMessageData.attachments()))")
-	@Mapping(target = "numberOfRepresentations", dependsOn = "representations", expression = "java(getRepresentations(xdomeaMessageData).size())")
-	@Mapping(target = "representations", source = "xdomeaMessageData")
+	@Mapping(target = "numberOfAttachments", expression = "java(FilesMapperHelper.countAttachedFiles(representationsAttachmentsPair.attachments()))")
+	@Mapping(target = "numberOfRepresentations", dependsOn = "representations", expression = "java(representationsAttachmentsPair.representations().size())")
 	@Mapping(target = "representation", ignore = true)
 	@Mapping(target = "attachment", ignore = true)
-	FormData toFormData(XdomeaMessageData xdomeaMessageData, XtaMessageMetaData metaData, @Context VorgangNummerSupplier vorgangNummerSupplier);
-
-	default List<IncomingFile> getRepresentations(XdomeaMessageData xdomeaMessageData) {
-		return Stream.concat(
-				Stream.of(xdomeaMessageData.metadataFile()),
-				xdomeaMessageData.representations().stream()
-		).toList();
-	}
+	FormData toFormData(RepresentationsAttachmentsPair representationsAttachmentsPair, XtaMessageMetaData metaData,
+			@Context VorgangNummerSupplier vorgangNummerSupplier);
 
 	@Mapping(target = "formId", source = "messageType")
 	@Mapping(target = "requestId", source = "messageId")
diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java
index 2341fbf6dc93899cb0c195ee6f09be52266c5c81..c4e512132e17182bdee35b3d4e049f4de6a0c821 100644
--- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java
@@ -1,17 +1,19 @@
 package de.ozgcloud.eingang.xta;
 
+import java.util.List;
 import java.util.Spliterators;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
 
-import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier;
-import de.ozgcloud.eingang.xdomea.XdomeaMessageDataMapper;
-import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import de.ozgcloud.eingang.common.errorhandling.TechnicalException;
 import de.ozgcloud.eingang.common.formdata.FormData;
+import de.ozgcloud.eingang.common.formdata.IncomingFile;
+import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier;
+import de.ozgcloud.eingang.xdomea.XdomeaMessageDataMapper;
 import lombok.NonNull;
 import lombok.extern.log4j.Log4j2;
 
@@ -53,9 +55,15 @@ class XtaService {
 	public FormData getFormData(@NonNull XtaMessageMetaData metaData) {
 		var msg = remoteService.getMessage(metaData.getMessageId());
 		var incomingFiles = xtaIncomingFilesMapper.toIncomingFiles(msg.getMessageFiles());
-		var xdomeaMessageData = xdomeaMessageDataMapper.mapIncomingFilesToXdomeaMessageData(incomingFiles);
 
-		return mapper.toFormData(xdomeaMessageData, metaData, vorgangNummerSupplier);
+		return mapper.toFormData(getRepresentationsAttachmentsPair(metaData, incomingFiles), metaData, vorgangNummerSupplier);
+	}
+
+	RepresentationsAttachmentsPair getRepresentationsAttachmentsPair(XtaMessageMetaData metaData, List<IncomingFile> incomingFiles) {
+		if (StringUtils.equals(metaData.getMessageType(), XDOMEA_0201_MESSAGE_TYPE)) {
+			return xdomeaMessageDataMapper.mapIncomingFilesToRepresentationsAttachmentsPair(incomingFiles);
+		}
+		throw new TechnicalException("Unexpected XTA message type: %s".formatted(metaData.getMessageType()));
 	}
 
 	public void acknowledgeReceive(@NonNull XtaMessageId messageId) {
diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPairTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPairTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..735e3d1f79b967c3b3f7401ece6183e91333c04b
--- /dev/null
+++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/RepresentationsAttachmentsPairTestFactory.java
@@ -0,0 +1,31 @@
+package de.ozgcloud.eingang.xta;
+
+import java.util.List;
+
+import de.ozgcloud.eingang.common.formdata.IncomingFile;
+import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
+import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory;
+import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory;
+
+public class RepresentationsAttachmentsPairTestFactory {
+	static List<IncomingFile> PAIR_REPRESENTATIONS = List.of(
+			IncomingFileTestFactory.createBuilder().name("representation1.xml").build(),
+			IncomingFileTestFactory.createBuilder().name("representation1.pdf").build()
+	);
+
+	static List<IncomingFileGroup> PAIR_ATTACHMENTS = List.of(
+			IncomingFileGroupTestFactory.create(),
+			IncomingFileGroupTestFactory.create(),
+			IncomingFileGroupTestFactory.create()
+	);
+
+	static RepresentationsAttachmentsPair create() {
+		return createBuilder().build();
+	}
+
+	static RepresentationsAttachmentsPair.RepresentationsAttachmentsPairBuilder createBuilder() {
+		return RepresentationsAttachmentsPair.builder()
+				.representations(PAIR_REPRESENTATIONS)
+				.attachments(PAIR_ATTACHMENTS);
+	}
+}
diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java
index b9bcda822a302872474e1c4341cbe08b11675b99..653f1c4f8884f1a61543b7bbc3be19af8042aa35 100644
--- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java
+++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java
@@ -14,8 +14,6 @@ import org.mockito.Spy;
 
 import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier;
-import de.ozgcloud.eingang.xdomea.XdomeaMessageDataTestFactory;
-import de.ozgcloud.eingang.xdomea.XdomeaMessageData;
 
 class XtaMessageMapperTest {
 
@@ -30,12 +28,12 @@ class XtaMessageMapperTest {
 	class TestToFormData {
 
 		private XtaMessageMetaData xtaMessageMetaData;
-		private XdomeaMessageData xdomeaMessageData;
+		private RepresentationsAttachmentsPair representationsAttachmentsPair;
 
 		@BeforeEach
 		void mock() {
 			xtaMessageMetaData = XtaMessageMetaDataTestFactory.create();
-			xdomeaMessageData = XdomeaMessageDataTestFactory.create();
+			representationsAttachmentsPair = RepresentationsAttachmentsPairTestFactory.create();
 			when(vorgangNummerSupplier.get(VORGANG_NUMMER_SUFFIX_LENGTH)).thenReturn(FormHeaderTestFactory.VORGANGNUMMER);
 		}
 
@@ -43,14 +41,14 @@ class XtaMessageMapperTest {
 		void shouldMapRepresentations() {
 			var formData = doMapping();
 
-			assertThat(formData.getRepresentations()).containsExactly(xdomeaMessageData.metadataFile(), xdomeaMessageData.representations().getFirst());
+			assertThat(formData.getRepresentations()).isEqualTo(representationsAttachmentsPair.representations());
 		}
 
 		@Test
 		void shouldSetNumberOfAttachments() {
 			var formData = doMapping();
 
-			assertThat(formData.getNumberOfAttachments()).isEqualTo(1);
+			assertThat(formData.getNumberOfAttachments()).isEqualTo(3);
 		}
 
 		@Test
@@ -64,7 +62,7 @@ class XtaMessageMapperTest {
 		void shouldMapAttachments() {
 			var formData = doMapping();
 
-			assertThat(formData.getAttachments()).isEqualTo(xdomeaMessageData.attachments());
+			assertThat(formData.getAttachments()).isEqualTo(representationsAttachmentsPair.attachments());
 		}
 
 		@Test
@@ -75,7 +73,7 @@ class XtaMessageMapperTest {
 		}
 
 		private FormData doMapping() {
-			return mapper.toFormData(xdomeaMessageData, xtaMessageMetaData, vorgangNummerSupplier);
+			return mapper.toFormData(representationsAttachmentsPair, xtaMessageMetaData, vorgangNummerSupplier);
 		}
 	}
 }
diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java
index 75a00a6610db89ffeaed0ba620d4676038fda296..d695eded2528aa7ee88c3bd90146874e86f716b5 100644
--- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java
+++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java
@@ -8,6 +8,7 @@ import java.util.List;
 import java.util.stream.Stream;
 
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
@@ -16,10 +17,11 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 
+import de.ozgcloud.eingang.common.errorhandling.TechnicalException;
+import de.ozgcloud.eingang.common.formdata.FormData;
+import de.ozgcloud.eingang.common.formdata.IncomingFile;
 import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory;
 import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier;
-import de.ozgcloud.eingang.xdomea.XdomeaMessageData;
-import de.ozgcloud.eingang.xdomea.XdomeaMessageDataTestFactory;
 import de.ozgcloud.eingang.xdomea.XdomeaMessageDataMapper;
 
 class XtaServiceTest {
@@ -117,60 +119,99 @@ class XtaServiceTest {
 	@Nested
 	class TestGetFormData {
 
+		@Mock
+		private FormData formData;
+
 		private XtaMessage message;
-		private XdomeaMessageData classification;
+		private XtaMessageMetaData messageMetaData;
+		private RepresentationsAttachmentsPair classification;
 
 		@Captor
 		private ArgumentCaptor<XtaMessageMetaData> messageMetaDataCaptor;
 
 		@Captor
-		private ArgumentCaptor<XdomeaMessageData>  classificationCaptor;
+		private ArgumentCaptor<RepresentationsAttachmentsPair> classificationCaptor;
 
 		@BeforeEach
 		void init() {
 			message = XtaMessageTestFactory.create();
 			when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message);
-
-			classification = XdomeaMessageDataTestFactory.create();
 			var incomingFiles = List.of(IncomingFileTestFactory.create(), IncomingFileTestFactory.create());
+
+			messageMetaData = XtaMessageMetaDataTestFactory.create();
+			classification = RepresentationsAttachmentsPairTestFactory.create();
+			doReturn(classification).when(service).getRepresentationsAttachmentsPair(messageMetaData, incomingFiles);
 			when(incomingFilesMapper.toIncomingFiles(message.getMessageFiles())).thenReturn(incomingFiles);
-			classification = XdomeaMessageDataTestFactory.create();
-			when(xdomeaMessageDataMapper.mapIncomingFilesToXdomeaMessageData(incomingFiles)).thenReturn(classification);
+			when(mapper.toFormData(classification, messageMetaData, vorgangNummerSupplier)).thenReturn(formData);
 		}
 
 		@Test
 		void shouldCallRemoteService() {
-			service.getFormData(XtaMessageMetaDataTestFactory.create());
+			service.getFormData(messageMetaData);
 
 			verify(remoteService).getMessage(XtaMessageTestFactory.MESSAGE_ID);
 		}
 
 		@Test
 		void shouldCallMapper() {
-			service.getFormData(XtaMessageMetaDataTestFactory.create());
+			service.getFormData(messageMetaData);
 
-			verify(mapper).toFormData(any(), any(), eq(vorgangNummerSupplier));
+			verify(mapper).toFormData(classification, messageMetaData, vorgangNummerSupplier);
 		}
 
 		@Test
-		void shouldHaveMetaData() {
-			XtaMessageMetaData metaData = XtaMessageMetaDataTestFactory.create();
-
-			service.getFormData(metaData);
+		void shouldCallMapperToFormData() {
+			service.getFormData(messageMetaData);
 
 			verify(mapper).toFormData(classificationCaptor.capture(), messageMetaDataCaptor.capture(), eq(vorgangNummerSupplier));
-			assertThat(messageMetaDataCaptor.getValue()).isEqualTo(metaData);
+			assertThat(messageMetaDataCaptor.getValue()).isEqualTo(messageMetaData);
 			assertThat(classificationCaptor.getValue()).isEqualTo(classification);
 		}
 
 		@Test
 		void shouldReturnMappedResult() {
-			var mapped = FormDataTestFactory.create();
-			when(mapper.toFormData(any(), any(), eq(vorgangNummerSupplier))).thenReturn(mapped);
+			var result = service.getFormData(messageMetaData);
+
+			assertThat(result).isEqualTo(formData);
+		}
+	}
+
+	@DisplayName("get representations attachments pair")
+	@Nested
+	class TestGetRepresentationsAttachmentsPair {
+
+		@Mock
+		private XtaMessageMetaData messageMetaData;
+
+		@Mock
+		private RepresentationsAttachmentsPair classification;
 
-			var result = service.getFormData(XtaMessageMetaDataTestFactory.create());
+		private List<IncomingFile> incomingFiles;
+
+		@BeforeEach
+		void mock() {
+			incomingFiles = List.of(IncomingFileTestFactory.create(), IncomingFileTestFactory.create());
+		}
+
+		@DisplayName("should use correct mapper xdomea message type")
+		@Test
+		void shouldUseCorrectMapperXdomeaMessageType() {
+			when(messageMetaData.getMessageType()).thenReturn(XtaService.XDOMEA_0201_MESSAGE_TYPE);
+			when(xdomeaMessageDataMapper.mapIncomingFilesToRepresentationsAttachmentsPair(incomingFiles))
+					.thenReturn(classification);
+
+			var result = service.getRepresentationsAttachmentsPair(messageMetaData, incomingFiles);
+
+			assertThat(result).isEqualTo(classification);
+		}
+
+		@DisplayName("should throw exception for unexpected message type")
+		@Test
+		void shouldThrowExceptionForUnexpectedMessageType() {
+			when(messageMetaData.getMessageType()).thenReturn("unexpected");
 
-			assertThat(result).isSameAs(mapped);
+			assertThatThrownBy(() -> service.getRepresentationsAttachmentsPair(messageMetaData, incomingFiles))
+					.isInstanceOf(TechnicalException.class);
 		}
 	}