diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/IncomingFileMapper.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/IncomingFileMapper.java
index 2e8f8d7ca9e5f6fccc295fae05c472d29ba3a392..1170b27d77f0e96d07a6c91447a5e971dbf4de3f 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/IncomingFileMapper.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/IncomingFileMapper.java
@@ -29,6 +29,7 @@ import org.mapstruct.Mapping;
 import com.google.protobuf.ByteString;
 
 import de.ozgcloud.eingang.forwarding.GrpcAttachmentFile;
+import de.ozgcloud.eingang.forwarding.GrpcRepresentationFile;
 import de.ozgcloud.vorgang.files.FileIdMapper;
 
 @Mapper(uses = FileIdMapper.class)
@@ -52,4 +53,16 @@ public interface IncomingFileMapper {
 	@Mapping(target = "allFields", ignore = true)
 	@Mapping(target = "fileName", source = "file.name")
 	GrpcAttachmentFile toAttachmentFile(String groupName, IncomingFile file);
+
+	@Mapping(target = "mergeFrom", ignore = true)
+	@Mapping(target = "clearField", ignore = true)
+	@Mapping(target = "clearOneof", ignore = true)
+	@Mapping(target = "mergeUnknownFields", ignore = true)
+	@Mapping(target = "contentTypeBytes", ignore = true)
+	@Mapping(target = "fileNameBytes", ignore = true)
+	@Mapping(target = "unknownFields", ignore = true)
+	@Mapping(target = "vendorIdBytes", ignore = true)
+	@Mapping(target = "allFields", ignore = true)
+	@Mapping(target = "fileName", source = "name")
+	GrpcRepresentationFile toRepresentationFile(IncomingFile file);
 }
\ No newline at end of file
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRemoteService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRemoteService.java
index 7f74468d3f1a1672c31df0293e0327cf4f3e2382..f9d26cb6d507f5c768b2719e9052cd557b1b6733 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRemoteService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRemoteService.java
@@ -29,6 +29,7 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
+import java.util.function.BiFunction;
 import java.util.function.Function;
 
 import org.apache.commons.io.IOUtils;
@@ -42,6 +43,7 @@ import de.ozgcloud.common.errorhandling.TechnicalException;
 import de.ozgcloud.eingang.forwarder.RouteForwardingServiceGrpc;
 import de.ozgcloud.eingang.forwarding.GrpcAttachment;
 import de.ozgcloud.eingang.forwarding.GrpcFileContent;
+import de.ozgcloud.eingang.forwarding.GrpcRepresentation;
 import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingRequest;
 import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingResponse;
 import de.ozgcloud.vorgang.callcontext.VorgangManagerClientCallContextAttachingInterceptor;
@@ -90,6 +92,7 @@ class ForwardingRemoteService {
 		var eingang = vorgangService.getById(request.getVorgangId()).getEingangs().getFirst();
 		requestStreamObserver.onNext(buildRouteForwardingRequest(request, eingang));
 		sendAttachments(eingang.getAttachments(), requestStreamObserver);
+		sendRepresentations(eingang.getRepresentations(), requestStreamObserver);
 	}
 
 	GrpcRouteForwardingRequest buildRouteForwardingRequest(ForwardingRequest request, Eingang eingang) {
@@ -106,40 +109,80 @@ class ForwardingRemoteService {
 
 	private void sendAttachmentFile(StreamObserver<GrpcRouteForwardingRequest> requestStreamObserver, String groupName, IncomingFile file) {
 		var fileContentStream = fileService.getUploadedFileStream(file.getId());
-		var fileSender = createFileSender(requestStreamObserver, groupName, file, fileContentStream).send();
+		var fileSender = createAttachmentFileSender(requestStreamObserver, groupName, file, fileContentStream).send();
 		waitForFinishedFileUpload(fileSender, fileContentStream);
 	}
 
-	FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createFileSender(
+	FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createAttachmentFileSender(
 			StreamObserver<GrpcRouteForwardingRequest> requestStreamObserver, String groupName, IncomingFile file, InputStream fileContentStream) {
-		return GrpcFileUploadUtils
-				.createSender(this::buildAttachmentChunk, fileContentStream, requestCallStreamObserverProvider(requestStreamObserver), false)
+		return createSenderWithoutMetadata(this::buildAttachmentChunk, requestStreamObserver, fileContentStream)
 				.withMetaData(buildGrpcAttachmentFile(groupName, file));
 	}
 
+	GrpcRouteForwardingRequest buildAttachmentChunk(byte[] chunk, int length) {
+		return GrpcRouteForwardingRequest.newBuilder()
+				.setAttachment(GrpcAttachment.newBuilder()
+						.setContent(buildGrpcFileContent(chunk, length))
+						.build())
+				.build();
+	}
+
+	GrpcRouteForwardingRequest buildGrpcAttachmentFile(String name, IncomingFile file) {
+		return GrpcRouteForwardingRequest.newBuilder()
+				.setAttachment(GrpcAttachment.newBuilder()
+						.setFile(incomingFileMapper.toAttachmentFile(name, file))
+						.build())
+				.build();
+	}
+
+	void sendRepresentations(List<IncomingFile> representations, StreamObserver<GrpcRouteForwardingRequest> requestObserver) {
+		representations.forEach(representation -> {
+			var fileContentStream = fileService.getUploadedFileStream(representation.getId());
+			var fileSender = createRepresentationFileSender(requestObserver, representation, fileContentStream).send();
+			waitForFinishedFileUpload(fileSender, fileContentStream);
+		});
+	}
+
+	FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createRepresentationFileSender(
+			StreamObserver<GrpcRouteForwardingRequest> requestStreamObserver, IncomingFile file, InputStream fileContentStream) {
+		return createSenderWithoutMetadata(this::buildRepresentationChunk, requestStreamObserver, fileContentStream)
+				.withMetaData(buildGrpcRepresentationFile(file));
+	}
+
+	FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createSenderWithoutMetadata(
+			BiFunction<byte[], Integer, GrpcRouteForwardingRequest> chunkBuilder,
+			StreamObserver<GrpcRouteForwardingRequest> requestStreamObserver, InputStream fileContentStream) {
+		return GrpcFileUploadUtils
+				.createSender(chunkBuilder, fileContentStream, requestCallStreamObserverProvider(requestStreamObserver), false);
+	}
+
 	private Function<StreamObserver<GrpcRouteForwardingResponse>, CallStreamObserver<GrpcRouteForwardingRequest>> requestCallStreamObserverProvider(
 			StreamObserver<GrpcRouteForwardingRequest> requestStreamObserver) {
 		return response -> (CallStreamObserver<GrpcRouteForwardingRequest>) requestStreamObserver;
 	}
 
-	GrpcRouteForwardingRequest buildAttachmentChunk(byte[] chunk, int length) {
+	GrpcRouteForwardingRequest buildRepresentationChunk(byte[] chunk, int length) {
+		return GrpcRouteForwardingRequest.newBuilder()
+				.setRepresentation(GrpcRepresentation.newBuilder()
+						.setContent(buildGrpcFileContent(chunk, length))
+						.build())
+				.build();
+	}
+
+	GrpcFileContent buildGrpcFileContent(byte[] chunk, int length) {
 		var fileContentBuilder = GrpcFileContent.newBuilder();
 		if (length <= 0) {
 			fileContentBuilder.setIsEndOfFile(true);
 		} else {
 			fileContentBuilder.setContent(ByteString.copyFrom(chunk));
 		}
-		return GrpcRouteForwardingRequest.newBuilder()
-				.setAttachment(GrpcAttachment.newBuilder()
-						.setContent(fileContentBuilder)
-						.build())
-				.build();
+		return fileContentBuilder.build();
 	}
 
-	GrpcRouteForwardingRequest buildGrpcAttachmentFile(String name, IncomingFile file) {
+	GrpcRouteForwardingRequest buildGrpcRepresentationFile(IncomingFile file) {
 		return GrpcRouteForwardingRequest.newBuilder()
-				.setAttachment(GrpcAttachment.newBuilder()
-						.setFile(incomingFileMapper.toAttachmentFile(name, file))
+				.setRepresentation(GrpcRepresentation.newBuilder()
+						.setFile(incomingFileMapper.toRepresentationFile(file))
 						.build())
 				.build();
 	}
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/EingangTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/EingangTestFactory.java
index b12ea789aec30333f8db2dbec36319945a429be7..458d34b190863132535d415c903e16c999591684 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/EingangTestFactory.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/EingangTestFactory.java
@@ -50,6 +50,7 @@ public class EingangTestFactory {
 	public static final Map<String, Object> FORM_DATA = Map.of(SINGLE_FIELD_NAME, SINGLE_FIELD, SUBFORM_NAME, SUBFORM);
 
 	public static final IncomingFileGroup ATTACHMENT = IncomingFileGroupTestFactory.create();
+	public static final IncomingFile REPRESENTATION = IncomingFileTestFactory.create();
 
 	public static Eingang create() {
 		return createBuilder().build();
@@ -62,7 +63,7 @@ public class EingangTestFactory {
 				.antragsteller(AntragstellerTestFactory.create())
 				.formData(FORM_DATA)
 				.attachment(ATTACHMENT)
-				.representation(IncomingFileTestFactory.create())
+				.representation(REPRESENTATION)
 				.zustaendigeStelle(ZustaendigeStelleTestFactory.create());
 	}
 }
\ No newline at end of file
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/IncomingFileMapperTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/IncomingFileMapperTest.java
index d6f41ddfe971f01da392390612cdf264ff5680b8..771c11f67fc9cc2e3e3116bf7e208acc05a4bc49 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/IncomingFileMapperTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/IncomingFileMapperTest.java
@@ -33,6 +33,7 @@ import org.mockito.Spy;
 
 import de.ozgcloud.vorgang.files.FileIdMapper;
 import de.ozgcloud.vorgang.vorgang.redirect.GrpcAttachmentFileTestFactory;
+import de.ozgcloud.vorgang.vorgang.redirect.GrpcRepresentationFileTestFactory;
 
 class IncomingFileMapperTest {
 
@@ -62,4 +63,15 @@ class IncomingFileMapperTest {
 			assertThat(result).isEqualTo(GrpcAttachmentFileTestFactory.create());
 		}
 	}
+
+	@Nested
+	class TestToRepresentationFile {
+
+		@Test
+		void shouldMapToGrpcRepresentationFile() {
+			var result = mapper.toRepresentationFile(IncomingFileTestFactory.create());
+
+			assertThat(result).isEqualTo(GrpcRepresentationFileTestFactory.create());
+		}
+	}
 }
\ No newline at end of file
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRemoteServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRemoteServiceTest.java
index 653549de0e8b8814b8c3c53a50ea928625bb8303..8a1de85f24f03d2d4fcf456cbe496f75827ce918 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRemoteServiceTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRemoteServiceTest.java
@@ -234,6 +234,7 @@ class ForwardingRemoteServiceTest {
 			when(vorgangService.getById(any())).thenReturn(vorgang);
 			doReturn(routeForwardingRequest).when(service).buildRouteForwardingRequest(any(), any());
 			doNothing().when(service).sendAttachments(any(), any());
+			doNothing().when(service).sendRepresentations(any(), any());
 		}
 
 		@Test
@@ -263,6 +264,13 @@ class ForwardingRemoteServiceTest {
 			verify(service).sendAttachments(List.of(EingangTestFactory.ATTACHMENT), requestObserver);
 		}
 
+		@Test
+		void shouldCallSendRepresentations() {
+			sendEingang();
+
+			verify(service).sendRepresentations(List.of(EingangTestFactory.REPRESENTATION), requestObserver);
+		}
+
 		private void sendEingang() {
 			service.sendEingang(request, requestObserver);
 		}
@@ -310,8 +318,9 @@ class ForwardingRemoteServiceTest {
 		@BeforeEach
 		void init() {
 			when(fileService.getUploadedFileStream(any())).thenReturn(inputStream);
-			doReturn(fileSender).when(service).createFileSender(any(), any(), any(), any());
+			doReturn(fileSender).when(service).createAttachmentFileSender(any(), any(), any(), any());
 			when(fileSender.send()).thenReturn(fileSender);
+			doNothing().when(service).waitForFinishedFileUpload(any(), any());
 		}
 
 		@Test
@@ -322,10 +331,10 @@ class ForwardingRemoteServiceTest {
 		}
 
 		@Test
-		void shouldCallCreateFileSender() {
+		void shouldCallCreateAttachmentFileSender() {
 			sendAttachments();
 
-			verify(service).createFileSender(requestObserver, IncomingFileGroupTestFactory.NAME, IncomingFileGroupTestFactory.FILE,
+			verify(service).createAttachmentFileSender(requestObserver, IncomingFileGroupTestFactory.NAME, IncomingFileGroupTestFactory.FILE,
 					inputStream);
 		}
 
@@ -352,107 +361,312 @@ class ForwardingRemoteServiceTest {
 	}
 
 	@Nested
-	class TestCreateFileSender {
+	class TestCreateAttachmentFileSender {
 
-		private MockedStatic<GrpcFileUploadUtils> grpcFileUploadUtilsMock;
 		@Mock
-		private CallStreamObserver<GrpcRouteForwardingRequest> requestCallStreamObserver;
+		private StreamObserver<GrpcRouteForwardingResponse> responseObserver;
+		@Mock
+		private InputStream inputStream;
 		@Mock
 		private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> fileSender;
 		@Mock
 		private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> fileSenderWithMetadata;
-		@Mock
-		private StreamObserver<GrpcRouteForwardingResponse> responseObserver;
-		@Mock
-		private InputStream inputStream;
 		@Captor
 		private ArgumentCaptor<BiFunction<byte[], Integer, GrpcRouteForwardingRequest>> chunkBuilderCaptor;
-		@Captor
-		private ArgumentCaptor<Function<StreamObserver<GrpcRouteForwardingResponse>, CallStreamObserver<GrpcRouteForwardingRequest>>> reqObserverBuilderCaptor;
 
 		private final byte[] chunk = RandomUtils.insecure().randomBytes(5);
 		private final GrpcRouteForwardingRequest metadataRequest = GrpcRouteForwardingRequestTestFactory.create();
 
 		@BeforeEach
 		void init() {
-			grpcFileUploadUtilsMock = mockStatic(GrpcFileUploadUtils.class);
-			grpcFileUploadUtilsMock.when(() -> GrpcFileUploadUtils.createSender(any(), any(), any(), anyBoolean())).thenReturn(fileSender);
+			doReturn(fileSender).when(service).createSenderWithoutMetadata(any(), any(), any());
 			doReturn(metadataRequest).when(service).buildGrpcAttachmentFile(any(), any());
 			when(fileSender.withMetaData(any())).thenReturn(fileSenderWithMetadata);
 		}
 
-		@AfterEach
-		void tearDown() {
-			grpcFileUploadUtilsMock.close();
-		}
-
 		@Test
-		void shouldCreateFileSenderWithChunkBuilder() {
-			createFileSender();
+		void shouldCallCreateSenderWithoutMetadata() {
+			createAttachmentFileSender();
 
-			grpcFileUploadUtilsMock.verify(() -> GrpcFileUploadUtils.createSender(chunkBuilderCaptor.capture(), any(), any(), anyBoolean()));
+			verify(service).createSenderWithoutMetadata(chunkBuilderCaptor.capture(), eq(requestObserver), eq(inputStream));
 			chunkBuilderCaptor.getValue().apply(chunk, chunk.length);
 			verify(service).buildAttachmentChunk(chunk, chunk.length);
 		}
 
 		@Test
-		void shouldCreateFileSenderWithInputStream() {
-			createFileSender();
+		void shouldCallBuildGrpcAttachmentFile() {
+			createAttachmentFileSender();
 
-			grpcFileUploadUtilsMock.verify(() -> GrpcFileUploadUtils.createSender(any(), eq(inputStream), any(), anyBoolean()));
+			verify(service).buildGrpcAttachmentFile(IncomingFileGroupTestFactory.NAME, IncomingFileGroupTestFactory.FILE);
 		}
 
 		@Test
-		void shouldCreateFileSenderWithRequestObserverBuilder() {
-			createFileSender();
+		void shouldSetMetaData() {
+			createAttachmentFileSender();
 
-			grpcFileUploadUtilsMock.verify(() -> GrpcFileUploadUtils.createSender(any(), any(), reqObserverBuilderCaptor.capture(), anyBoolean()));
-			assertThat(reqObserverBuilderCaptor.getValue().apply(responseObserver)).isSameAs(requestCallStreamObserver);
+			verify(fileSender).withMetaData(metadataRequest);
+		}
+
+		@Test
+		void shouldReturnBuiltFileSender() {
+			var returnedFileSender = createAttachmentFileSender();
+
+			assertThat(returnedFileSender).isSameAs(fileSenderWithMetadata);
+		}
+
+		private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createAttachmentFileSender() {
+			return service.createAttachmentFileSender(requestObserver, IncomingFileGroupTestFactory.NAME, IncomingFileGroupTestFactory.FILE,
+					inputStream);
+		}
+	}
+
+	@Nested
+	class TestBuildAttachmentChunk {
+
+		private final byte[] chunk = RandomUtils.insecure().randomBytes(5);
+
+		@BeforeEach
+		void mock() {
+			doReturn(GrpcAttachmentTestFactory.CONTENT).when(service).buildGrpcFileContent(any(), anyInt());
 		}
 
 		@Test
-		void shouldCreateFileSenderWithNotCompleteOnFileSent() {
-			createFileSender();
+		void shouldCallBuildGrpcFileContent() {
+			service.buildAttachmentChunk(chunk, chunk.length);
 
-			grpcFileUploadUtilsMock.verify(() -> GrpcFileUploadUtils.createSender(any(), any(), any(), eq(false)));
+			verify(service).buildGrpcFileContent(chunk, chunk.length);
 		}
 
 		@Test
-		void shouldCallBuildGrpcAttachmentFile() {
-			createFileSender();
+		void shouldReturnGrpcRouteForwardingRequest() {
+			var result = service.buildAttachmentChunk(chunk, chunk.length);
 
-			verify(service).buildGrpcAttachmentFile(IncomingFileGroupTestFactory.NAME, IncomingFileGroupTestFactory.FILE);
+			assertThat(result).isEqualTo(GrpcRouteForwardingRequestTestFactory.createWithAttachmentContent());
+		}
+	}
+
+	@Nested
+	class TestBuildGrpcAttachmentFile {
+
+		private IncomingFile file = IncomingFileTestFactory.create();
+
+		@BeforeEach
+		void mock() {
+			when(incomingFileMapper.toAttachmentFile(any(), any())).thenReturn(GrpcAttachmentFileTestFactory.create());
+		}
+
+		@Test
+		void shouldCallIncomingFileMapper() {
+			service.buildGrpcAttachmentFile(IncomingFileGroupTestFactory.NAME, file);
+
+			verify(incomingFileMapper).toAttachmentFile(IncomingFileGroupTestFactory.NAME, file);
+		}
+
+		@Test
+		void shoudlReturnAttachmentMetadataRequest() {
+			var result = service.buildGrpcAttachmentFile(IncomingFileGroupTestFactory.NAME, file);
+
+			assertThat(result).isEqualTo(GrpcRouteForwardingRequestTestFactory.createWithAttachmentMetadata());
+		}
+	}
+
+	@Nested
+	class TestSendRepresentations {
+
+		@Mock
+		private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> fileSender;
+		@Mock
+		private InputStream inputStream;
+
+		private final IncomingFile representation = IncomingFileTestFactory.create();
+
+		@BeforeEach
+		void init() {
+			when(fileService.getUploadedFileStream(any())).thenReturn(inputStream);
+			doReturn(fileSender).when(service).createRepresentationFileSender(any(), any(), any());
+			when(fileSender.send()).thenReturn(fileSender);
+			doNothing().when(service).waitForFinishedFileUpload(any(), any());
+		}
+
+		@Test
+		void shouldGetUploadedFileContent() {
+			sendRepresentations();
+
+			verify(fileService).getUploadedFileStream(IncomingFileTestFactory.ID);
+		}
+
+		@Test
+		void shouldCallCreateRepresentationFileSender() {
+			sendRepresentations();
+
+			verify(service).createRepresentationFileSender(requestObserver, representation, inputStream);
+		}
+
+		@Test
+		void shouldSend() {
+			sendRepresentations();
+
+			verify(fileSender).send();
+		}
+
+		@Test
+		void shouldCallWaitForFinishedFileUploadAfterSend() {
+			var inOrder = inOrder(fileSender, service);
+
+			sendRepresentations();
+
+			inOrder.verify(fileSender).send();
+			inOrder.verify(service).waitForFinishedFileUpload(fileSender, inputStream);
+		}
+
+		private void sendRepresentations() {
+			service.sendRepresentations(List.of(representation), requestObserver);
+		}
+	}
+
+	@Nested
+	class TestCreateRepresentationFileSender {
+
+		@Mock
+		private StreamObserver<GrpcRouteForwardingResponse> responseObserver;
+		@Mock
+		private InputStream inputStream;
+		@Mock
+		private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> fileSender;
+		@Mock
+		private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> fileSenderWithMetadata;
+		@Captor
+		private ArgumentCaptor<BiFunction<byte[], Integer, GrpcRouteForwardingRequest>> chunkBuilderCaptor;
+
+		private final byte[] chunk = RandomUtils.insecure().randomBytes(5);
+		private final GrpcRouteForwardingRequest metadataRequest = GrpcRouteForwardingRequestTestFactory.create();
+		private final IncomingFile incomingFile = IncomingFileTestFactory.create();
+
+		@BeforeEach
+		void init() {
+			doReturn(fileSender).when(service).createSenderWithoutMetadata(any(), any(), any());
+			doReturn(metadataRequest).when(service).buildGrpcRepresentationFile(any());
+			when(fileSender.withMetaData(any())).thenReturn(fileSenderWithMetadata);
+		}
+
+		@Test
+		void shouldCallCreateSenderWithoutMetadata() {
+			createRepresentationFileSender();
+
+			verify(service).createSenderWithoutMetadata(chunkBuilderCaptor.capture(), eq(requestObserver), eq(inputStream));
+			chunkBuilderCaptor.getValue().apply(chunk, chunk.length);
+			verify(service).buildRepresentationChunk(chunk, chunk.length);
+		}
+
+		@Test
+		void shouldCallBuildGrpcRepresentationFile() {
+			createRepresentationFileSender();
+
+			verify(service).buildGrpcRepresentationFile(incomingFile);
 		}
 
 		@Test
 		void shouldSetMetaData() {
-			createFileSender();
+			createRepresentationFileSender();
 
 			verify(fileSender).withMetaData(metadataRequest);
 		}
 
 		@Test
 		void shouldReturnBuiltFileSender() {
-			var returnedFileSender = createFileSender();
+			var returnedFileSender = createRepresentationFileSender();
 
 			assertThat(returnedFileSender).isSameAs(fileSenderWithMetadata);
 		}
 
-		private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createFileSender() {
-			return service.createFileSender(requestCallStreamObserver, IncomingFileGroupTestFactory.NAME, IncomingFileGroupTestFactory.FILE,
-					inputStream);
+		private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createRepresentationFileSender() {
+			return service.createRepresentationFileSender(requestObserver, incomingFile, inputStream);
 		}
 	}
 
 	@Nested
-	class TestBuildAttachmentChunk {
+	class TestCreateSenderWithoutMetadata {
+
+		private MockedStatic<GrpcFileUploadUtils> grpcFileUploadUtilsMock;
+		@Mock
+		private BiFunction<byte[], Integer, GrpcRouteForwardingRequest> chunkBuilder;
+		@Mock
+		private CallStreamObserver<GrpcRouteForwardingRequest> requestCallStreamObserver;
+		@Mock
+		private InputStream inputStream;
+		@Mock
+		private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> fileSender;
+		@Mock
+		private StreamObserver<GrpcRouteForwardingResponse> responseObserver;
+		@Captor
+		private ArgumentCaptor<Function<StreamObserver<GrpcRouteForwardingResponse>, CallStreamObserver<GrpcRouteForwardingRequest>>> reqObserverBuilderCaptor;
+
+		@BeforeEach
+		void init() {
+			grpcFileUploadUtilsMock = mockStatic(GrpcFileUploadUtils.class);
+			grpcFileUploadUtilsMock.when(() -> GrpcFileUploadUtils.createSender(any(), any(), any(), anyBoolean())).thenReturn(fileSender);
+		}
+
+		@AfterEach
+		void tearDown() {
+			grpcFileUploadUtilsMock.close();
+		}
+
+		@Test
+		void shouldCreateFileSender() {
+			createSenderWithoutMetadata();
+
+			grpcFileUploadUtilsMock
+					.verify(() -> GrpcFileUploadUtils.createSender(eq(chunkBuilder), eq(inputStream), reqObserverBuilderCaptor.capture(), eq(false)));
+			assertThat(reqObserverBuilderCaptor.getValue().apply(responseObserver)).isSameAs(requestCallStreamObserver);
+		}
+
+		@Test
+		void shouldReturnCreatedFileSender() {
+			var returnedFileSender = createSenderWithoutMetadata();
+
+			assertThat(returnedFileSender).isSameAs(fileSender);
+		}
+
+		private FileSender<GrpcRouteForwardingRequest, GrpcRouteForwardingResponse> createSenderWithoutMetadata() {
+			return service.createSenderWithoutMetadata(chunkBuilder, requestCallStreamObserver, inputStream);
+		}
+	}
+
+	@Nested
+	class TestBuildRepresentationChunk {
+
+		private final byte[] chunk = RandomUtils.insecure().randomBytes(5);
+
+		@BeforeEach
+		void mock() {
+			doReturn(GrpcRepresentationTestFactory.CONTENT).when(service).buildGrpcFileContent(any(), anyInt());
+		}
+
+		@Test
+		void shouldCallBuildGrpcFileContent() {
+			service.buildRepresentationChunk(chunk, chunk.length);
+
+			verify(service).buildGrpcFileContent(chunk, chunk.length);
+		}
+
+		@Test
+		void shouldReturnGrpcRouteForwardingRequest() {
+			var result = service.buildRepresentationChunk(chunk, chunk.length);
+
+			assertThat(result).isEqualTo(GrpcRouteForwardingRequestTestFactory.createWithRepresentationContent());
+		}
+	}
+
+	@Nested
+	class TestBuildGrpcFileContent {
 
 		@Nested
 		class TestOnEndOfFile {
 
 			@Test
 			void shouldBuildEndOfFileChunk() {
-				var fileContent = service.buildAttachmentChunk(new byte[0], -1).getAttachment().getContent();
+				var fileContent = service.buildGrpcFileContent(new byte[0], -1);
 
 				assertThat(fileContent).isEqualTo(GrpcFileContentTestFactory.createEndOfFile());
 			}
@@ -463,8 +677,7 @@ class ForwardingRemoteServiceTest {
 
 			@Test
 			void shouldBuildEndOfFileChunk() {
-				var fileContent = service.buildAttachmentChunk(GrpcFileContentTestFactory.CONTENT, GrpcFileContentTestFactory.CONTENT.length)
-						.getAttachment().getContent();
+				var fileContent = service.buildGrpcFileContent(GrpcFileContentTestFactory.CONTENT, GrpcFileContentTestFactory.CONTENT.length);
 
 				assertThat(fileContent).isEqualTo(GrpcFileContentTestFactory.create());
 			}
@@ -472,27 +685,27 @@ class ForwardingRemoteServiceTest {
 	}
 
 	@Nested
-	class TestBuildGrpcAttachmentFile {
+	class TestBuildGrpcRepresentationFile {
 
 		private IncomingFile file = IncomingFileTestFactory.create();
 
 		@BeforeEach
 		void mock() {
-			when(incomingFileMapper.toAttachmentFile(any(), any())).thenReturn(GrpcAttachmentFileTestFactory.create());
+			when(incomingFileMapper.toRepresentationFile(any())).thenReturn(GrpcRepresentationFileTestFactory.create());
 		}
 
 		@Test
 		void shouldCallIncomingFileMapper() {
-			service.buildGrpcAttachmentFile(IncomingFileGroupTestFactory.NAME, file);
+			service.buildGrpcRepresentationFile(file);
 
-			verify(incomingFileMapper).toAttachmentFile(IncomingFileGroupTestFactory.NAME, file);
+			verify(incomingFileMapper).toRepresentationFile(file);
 		}
 
 		@Test
-		void shoudlReturnAttachmentMetadataRequest() {
-			var result = service.buildGrpcAttachmentFile(IncomingFileGroupTestFactory.NAME, file);
+		void shoudlReturnRepresentationMetadataRequest() {
+			var result = service.buildGrpcRepresentationFile(file);
 
-			assertThat(result).isEqualTo(GrpcRouteForwardingRequestTestFactory.createWithAttachmentMetadata());
+			assertThat(result).isEqualTo(GrpcRouteForwardingRequestTestFactory.createWithRepresentationMetadata());
 		}
 	}
 
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/GrpcRepresentationFileTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/GrpcRepresentationFileTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..d832cbc58b40bb3a68f0ac65d28d557c563934d2
--- /dev/null
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/GrpcRepresentationFileTestFactory.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+package de.ozgcloud.vorgang.vorgang.redirect;
+
+import de.ozgcloud.eingang.forwarding.GrpcRepresentationFile;
+import de.ozgcloud.eingang.forwarding.GrpcRepresentationFile.Builder;
+import de.ozgcloud.vorgang.vorgang.IncomingFileTestFactory;
+
+public class GrpcRepresentationFileTestFactory {
+
+	public static GrpcRepresentationFile create() {
+		return createBuilder().build();
+	}
+
+	public static Builder createBuilder() {
+		return GrpcRepresentationFile.newBuilder()
+				.setFileName(IncomingFileTestFactory.NAME)
+				.setContentType(IncomingFileTestFactory.CONTENT_TYPE_STR)
+				.setVendorId(IncomingFileTestFactory.VENDOR_ID)
+				.setSize(IncomingFileTestFactory.SIZE);
+	}
+
+}
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/GrpcRepresentationTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/GrpcRepresentationTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..4dce5a27e1c366229b9ad697e79717ba73c09a81
--- /dev/null
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/GrpcRepresentationTestFactory.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+package de.ozgcloud.vorgang.vorgang.redirect;
+
+import de.ozgcloud.eingang.forwarding.GrpcFileContent;
+import de.ozgcloud.eingang.forwarding.GrpcRepresentation;
+import de.ozgcloud.eingang.forwarding.GrpcRepresentationFile;
+
+public class GrpcRepresentationTestFactory {
+
+	public static final GrpcRepresentationFile FILE = GrpcRepresentationFileTestFactory.create();
+	public static final GrpcFileContent CONTENT = GrpcFileContentTestFactory.create();
+
+	public static GrpcRepresentation createWithFile() {
+		return GrpcRepresentation.newBuilder()
+				.setFile(FILE)
+				.build();
+	}
+
+	public static GrpcRepresentation createWithContent() {
+		return GrpcRepresentation.newBuilder()
+				.setContent(CONTENT)
+				.build();
+	}
+}
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/GrpcRouteForwardingRequestTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/GrpcRouteForwardingRequestTestFactory.java
index c5ef1c9d55399fea9847e8e3116362b29545ed27..7d463347d23cf97551855d460b655ea3da710524 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/GrpcRouteForwardingRequestTestFactory.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/GrpcRouteForwardingRequestTestFactory.java
@@ -24,12 +24,15 @@
 package de.ozgcloud.vorgang.vorgang.redirect;
 
 import de.ozgcloud.eingang.forwarding.GrpcAttachment;
+import de.ozgcloud.eingang.forwarding.GrpcRepresentation;
 import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingRequest;
 
 class GrpcRouteForwardingRequestTestFactory {
 
 	public static final GrpcAttachment ATTACHMENT_METADATA = GrpcAttachmentTestFactory.createWithFile();
-	public static final GrpcAttachment ATTACHMENT_COTNENT = GrpcAttachmentTestFactory.createWithContent();
+	public static final GrpcAttachment ATTACHMENT_CONTENT = GrpcAttachmentTestFactory.createWithContent();
+	public static final GrpcRepresentation REPRESENTATION_METADATA = GrpcRepresentationTestFactory.createWithFile();
+	public static final GrpcRepresentation REPRESENTATION_CONTENT = GrpcRepresentationTestFactory.createWithContent();
 
 	public static GrpcRouteForwardingRequest create() {
 		return createBuilder().build();
@@ -48,7 +51,19 @@ class GrpcRouteForwardingRequestTestFactory {
 
 	public static GrpcRouteForwardingRequest createWithAttachmentContent() {
 		return GrpcRouteForwardingRequest.newBuilder()
-				.setAttachment(ATTACHMENT_METADATA)
+				.setAttachment(ATTACHMENT_CONTENT)
+				.build();
+	}
+
+	public static GrpcRouteForwardingRequest createWithRepresentationMetadata() {
+		return GrpcRouteForwardingRequest.newBuilder()
+				.setRepresentation(REPRESENTATION_METADATA)
+				.build();
+	}
+
+	public static GrpcRouteForwardingRequest createWithRepresentationContent() {
+		return GrpcRouteForwardingRequest.newBuilder()
+				.setRepresentation(REPRESENTATION_CONTENT)
 				.build();
 	}
 }