diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java
index 94f756da0ce48a1286e5483afaec6928bb0ca43c..2dc3a7f665e7adc01738d8c7e7ff07ef4b919f3a 100644
--- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java
+++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java
@@ -37,6 +37,8 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public class FormDataTestFactory {
 
+	public static final Antragsteller ANTRAGSTELLER = AntragstellerTestFactory.create();
+	public static final FormHeader HEADER = FormHeaderTestFactory.create();
 	public static final String ID = UUID.randomUUID().toString();
 	public static final String SIMPLE_VALUE_KEY = "kontaktsystemtypid";
 	public static final String SIMPLE_VALUE = "233034600";
@@ -76,8 +78,8 @@ public class FormDataTestFactory {
 	public static FormData.FormDataBuilder createBuilder() {
 		return FormData.builder()
 				.id(ID)
-				.header(FormHeaderTestFactory.create())
-				.antragsteller(AntragstellerTestFactory.create())
+				.header(HEADER)
+				.antragsteller(ANTRAGSTELLER)
 				.zustaendigeStelle(ZustaendigeStelleTestFactory.create())
 				.control(FORM_DATA_CONTROL)
 				.formData(FORM_DATA)
diff --git a/eingang-manager-interface/src/main/protobuf/forward.model.proto b/eingang-manager-interface/src/main/protobuf/forward.model.proto
index 963450aa4a9dc840b62348838b197cac75bef3a8..5b0c4a989ab6d31927aee1a2ceae52a24bd58809 100644
--- a/eingang-manager-interface/src/main/protobuf/forward.model.proto
+++ b/eingang-manager-interface/src/main/protobuf/forward.model.proto
@@ -56,7 +56,7 @@ message GrpcEingangStub {
 }
 
 message GrpcRouteCriteria {
-  string organisationseinheitenId = 1;
+  string organisationEinheitId = 1;
 }
 
 message GrpcAttachment {
diff --git a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/EingangStubReceiverStreamObserver.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/EingangStubReceiverStreamObserver.java
index 4031741b077e26d2beb795750d9e099ce47a1c9a..8f6381157f1548fda31ef6187d770c16f7283f9d 100644
--- a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/EingangStubReceiverStreamObserver.java
+++ b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/EingangStubReceiverStreamObserver.java
@@ -84,7 +84,7 @@ public class EingangStubReceiverStreamObserver implements StreamObserver<GrpcRou
 		if (Objects.nonNull(formData)) {
 			throw new IllegalStateException("Received second RouteForwarding. Send only one per request.");
 		}
-		formData = routeForwardingMapper.toFormData(routeForwarding.getEingangStub(), routeForwarding.getRouteCriteria());
+		formData = routeForwardingMapper.toFormData(routeForwarding);
 	}
 
 	private void handleAttachment(GrpcAttachment attachment) {
diff --git a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteria.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteria.java
deleted file mode 100644
index 65583d7cfbf7a5eca3ad9c28bd59303712783798..0000000000000000000000000000000000000000
--- a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteria.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2023 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.eingang.forwarder;
-
-import java.util.Optional;
-
-import lombok.Builder;
-import lombok.Getter;
-
-@Getter
-@Builder
-public class RouteCriteria {
-
-	private Optional<String> organisationEinheitId;
-}
diff --git a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteriaMapper.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteriaMapper.java
deleted file mode 100644
index 7fcb6cea6b4b70b8b785e331dfbf7ecb5d2f67ed..0000000000000000000000000000000000000000
--- a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteriaMapper.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2023 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.eingang.forwarder;
-
-import java.util.Optional;
-
-import org.apache.commons.lang3.StringUtils;
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-
-import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria;
-
-@Mapper
-interface RouteCriteriaMapper {
-
-	@Mapping(target = "organisationEinheitId", source = "organisationseinheitenId")
-	RouteCriteria fromGrpc(GrpcRouteCriteria grpcRouteCriteria);
-
-	default Optional<String> wrapWithOptional(String val) {
-		return Optional.ofNullable(StringUtils.trimToNull(val));
-	}
-}
diff --git a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingMapper.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingMapper.java
index 315ba8131148d9d25a7701b1b82c222ccad2626a..5d519d5c9e817768dea9ffce13d20a2fc068d7b5 100644
--- a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingMapper.java
+++ b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingMapper.java
@@ -23,32 +23,44 @@
  */
 package de.ozgcloud.eingang.forwarder;
 
-import java.util.Map;
-
 import org.mapstruct.CollectionMappingStrategy;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 import org.mapstruct.NullValueCheckStrategy;
 import org.mapstruct.NullValuePropertyMappingStrategy;
-import org.mapstruct.ReportingPolicy;
 
+import de.ozgcloud.eingang.common.formdata.Antragsteller;
 import de.ozgcloud.eingang.common.formdata.FormData;
-import de.ozgcloud.eingang.forwarding.GrpcEingangStub;
-import de.ozgcloud.eingang.forwarding.GrpcFormData;
+import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
 import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria;
+import de.ozgcloud.eingang.forwarding.GrpcRouteForwarding;
+import de.ozgcloud.eingang.router.ServiceKontoMapper;
+import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper;
+import de.ozgcloud.vorgang.vorgang.GrpcAntragsteller;
 
-@Mapper(unmappedTargetPolicy = ReportingPolicy.WARN, //
-		nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, //
+@Mapper(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, //
 		nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, //
-		collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED)
+		collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, //
+		uses = { ServiceKontoMapper.class, GrpcFormDataMapper.class })
 public interface RouteForwardingMapper {
 
+	@Mapping(target = "id", ignore = true)
+	@Mapping(target = "attachment", ignore = true)
 	@Mapping(target = "attachments", ignore = true)
+	@Mapping(target = "numberOfAttachments", ignore = true)
+	@Mapping(target = "representation", ignore = true)
 	@Mapping(target = "representations", ignore = true)
+	@Mapping(target = "numberOfRepresentations", ignore = true)
 	@Mapping(target = "control", ignore = true)
-	FormData toFormData(GrpcEingangStub eingangStub, GrpcRouteCriteria routeCriteria); // TODO: Test
+	@Mapping(target = "zustaendigeStelles", ignore = true)
+	@Mapping(target = ".", source = "eingangStub")
+	@Mapping(target = "zustaendigeStelle", source = "routeCriteria")
+	FormData toFormData(GrpcRouteForwarding routeForwarding);
+
+	@Mapping(target = "data", source = "otherData")
+	Antragsteller mapAntragstellerFromGrpc(GrpcAntragsteller antragsteller);
 
-	default Map<String, Object> map(GrpcFormData value) {
-		return null; // TODO: Implement
-	};
+	default ZustaendigeStelle toZustaendigeStelle(GrpcRouteCriteria routeCriteria) {
+		return ZustaendigeStelle.builder().organisationseinheitenId(routeCriteria.getOrganisationEinheitId()).build();
+	}
 }
diff --git a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingService.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingService.java
index 13058871d8e820752231fee04f820418b9a79c97..8a455d31e3f3836f102d240467f1454b6aabd6ac 100644
--- a/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingService.java
+++ b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingService.java
@@ -26,7 +26,6 @@ package de.ozgcloud.eingang.forwarder;
 import org.springframework.stereotype.Service;
 
 import de.ozgcloud.eingang.common.formdata.FormData;
-import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
 import de.ozgcloud.eingang.router.VorgangService;
 import lombok.RequiredArgsConstructor;
 
@@ -36,15 +35,16 @@ class RouteForwardingService {
 
 	private final VorgangService vorgangService;
 
-	public void route(RouteCriteria criteria, FormData formData) {
-		vorgangService.createVorgang(formData.toBuilder()
-				.clearZustaendigeStelles()
-				.zustaendigeStelle(ZustaendigeStelle.builder()
-						.organisationseinheitenId(criteria.getOrganisationEinheitId()
-								.orElseThrow(() -> new UnsupportedOperationException("OrganisationseinheitId is required!")))
-						.build())
-				.build());
-	}
+	// public void route(RouteCriteria criteria, FormData formData) {
+	// vorgangService.createVorgang(formData.toBuilder()
+	// .clearZustaendigeStelles()
+	// .zustaendigeStelle(ZustaendigeStelle.builder()
+	// .organisationseinheitenId(criteria.getOrganisationEinheitId()
+	// .orElseThrow(() -> new UnsupportedOperationException("OrganisationseinheitId
+	// is required!")))
+	// .build())
+	// .build());
+	// }
 
 	public void route(FormData formData) {
 		// TODO Auto-generated method stub
diff --git a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcEingangStubTestFactory.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcEingangStubTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..ac07fe28f953d9402172d8342a0234da43c5a819
--- /dev/null
+++ b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcEingangStubTestFactory.java
@@ -0,0 +1,28 @@
+package de.ozgcloud.eingang.forwarder;
+
+import de.ozgcloud.eingang.forwarding.GrpcEingangStub;
+import de.ozgcloud.eingang.forwarding.GrpcEingangStub.Builder;
+import de.ozgcloud.eingang.router.GrpcAntragstellerTestFactory;
+import de.ozgcloud.eingang.router.GrpcEingangHeaderTestFactory;
+import de.ozgcloud.vorgang.common.grpc.GrpcFormDataTestFactory;
+import de.ozgcloud.vorgang.vorgang.GrpcAntragsteller;
+import de.ozgcloud.vorgang.vorgang.GrpcEingangHeader;
+import de.ozgcloud.vorgang.vorgang.GrpcFormData;
+
+public class GrpcEingangStubTestFactory {
+
+	public static final GrpcEingangHeader HEADER = GrpcEingangHeaderTestFactory.create();
+	public static final GrpcAntragsteller ANTRAGSTELLER = GrpcAntragstellerTestFactory.create();
+	public static final GrpcFormData FORM_DATA = GrpcFormDataTestFactory.create();
+
+	public static GrpcEingangStub create() {
+		return createBuilder().build();
+	}
+
+	public static Builder createBuilder() {
+		return GrpcEingangStub.newBuilder()
+				.setHeader(HEADER)
+				.setAntragsteller(ANTRAGSTELLER)
+				.setFormData(FORM_DATA);
+	}
+}
diff --git a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteCriteriaTestFactory.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteCriteriaTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..b10b58cc09a68556eee180557558fe6ffe21c27b
--- /dev/null
+++ b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteCriteriaTestFactory.java
@@ -0,0 +1,21 @@
+package de.ozgcloud.eingang.forwarder;
+
+import java.util.UUID;
+
+import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria;
+import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria.Builder;
+
+public class GrpcRouteCriteriaTestFactory {
+
+	public static final String ORGANISATION_EINHEIT_ID = UUID.randomUUID().toString();
+
+	public static GrpcRouteCriteria create() {
+		return createBuilder().build();
+	}
+
+	public static Builder createBuilder() {
+		return GrpcRouteCriteria.newBuilder()
+				.setOrganisationEinheitId(ORGANISATION_EINHEIT_ID);
+	}
+
+}
diff --git a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingRequestTestFactory.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingRequestTestFactory.java
index ddd6a44d25ba98b0c757030b5439ecf8fbe2ceb2..9df66980d798c65b5d2eb35cbf3610d5691c1fc7 100644
--- a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingRequestTestFactory.java
+++ b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingRequestTestFactory.java
@@ -31,7 +31,7 @@ import de.ozgcloud.vorgang.vorgang.GrpcEingang;
 public class GrpcRouteForwardingRequestTestFactory {
 
 	public static final GrpcEingang EINGANG = GrpcEingangTestFactory.create();
-	public static final GrpcRouteCriteria CRITERIA = RouteCriteriaTestFactory.createGrpc();
+	public static final GrpcRouteCriteria CRITERIA = GrpcRouteCriteriaTestFactory.create();
 
 	public static GrpcRouteForwardingRequest create() {
 		return createBuilder().build();
diff --git a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingTestFactory.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..76192949b2e52651b6984584954fef6a95bc78d7
--- /dev/null
+++ b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingTestFactory.java
@@ -0,0 +1,23 @@
+package de.ozgcloud.eingang.forwarder;
+
+import de.ozgcloud.eingang.forwarding.GrpcEingangStub;
+import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria;
+import de.ozgcloud.eingang.forwarding.GrpcRouteForwarding;
+import de.ozgcloud.eingang.forwarding.GrpcRouteForwarding.Builder;
+
+public class GrpcRouteForwardingTestFactory {
+
+	public static final GrpcRouteCriteria ROUTE_CRITERIA = GrpcRouteCriteriaTestFactory.create();
+	public static final GrpcEingangStub EINGANG_STUB = GrpcEingangStubTestFactory.create();
+
+	public static GrpcRouteForwarding create() {
+		return createBuilder().build();
+	}
+
+	public static Builder createBuilder() {
+		return GrpcRouteForwarding.newBuilder()
+				.setEingangStub(EINGANG_STUB)
+				.setRouteCriteria(ROUTE_CRITERIA);
+	}
+
+}
diff --git a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteCriteriaTestFactory.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteCriteriaTestFactory.java
deleted file mode 100644
index 49c265a75f1ee39f30b54680894e98a43347dcc4..0000000000000000000000000000000000000000
--- a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteCriteriaTestFactory.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2023 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.eingang.forwarder;
-
-import java.util.Optional;
-import java.util.UUID;
-
-import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria;
-
-public class RouteCriteriaTestFactory {
-
-	public static final String ORGANISATION_EINHEIT_ID = UUID.randomUUID().toString();
-
-	public static RouteCriteria create() {
-		return createBuilder().build();
-	}
-
-	public static RouteCriteria.RouteCriteriaBuilder createBuilder() {
-		return RouteCriteria.builder()
-				.organisationEinheitId(Optional.of(ORGANISATION_EINHEIT_ID));
-	}
-
-	public static GrpcRouteCriteria createGrpc() {
-		return createGrpcBuilder().build();
-	}
-
-	public static GrpcRouteCriteria.Builder createGrpcBuilder() {
-		return GrpcRouteCriteria.newBuilder()
-				.setOrganisationseinheitenId(ORGANISATION_EINHEIT_ID);
-	}
-}
diff --git a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingMapperTest.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingMapperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..c3475b803ecccc274d97b45ece197d0f9b87a04a
--- /dev/null
+++ b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingMapperTest.java
@@ -0,0 +1,101 @@
+package de.ozgcloud.eingang.forwarder;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mapstruct.factory.Mappers;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+
+import de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory;
+import de.ozgcloud.eingang.common.formdata.FormDataTestFactory;
+import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory;
+import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
+import de.ozgcloud.eingang.forwarding.GrpcRouteForwarding;
+import de.ozgcloud.eingang.router.GrpcAntragstellerTestFactory;
+import de.ozgcloud.eingang.router.GrpcEingangHeaderTestFactory;
+import de.ozgcloud.eingang.router.ServiceKontoMapper;
+import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper;
+
+class RouteForwardingMapperTest {
+
+	@InjectMocks
+	private RouteForwardingMapper mapper = Mappers.getMapper(RouteForwardingMapper.class);
+
+	@Mock
+	private GrpcFormDataMapper grpcFormDataMapper;
+	@Mock
+	private ServiceKontoMapper serviceKontoMapper;
+
+	@Nested
+	class TestToFormData {
+
+		private final GrpcRouteForwarding routeForwarding = GrpcRouteForwardingTestFactory.create();
+
+		@BeforeEach
+		void mock() {
+			when(serviceKontoMapper.fromGrpc(any())).thenReturn(ServiceKontoTestFactory.create());
+			when(grpcFormDataMapper.mapFromFormData(GrpcAntragstellerTestFactory.OTHER_DATA)).thenReturn(AntragstellerTestFactory.DATA);
+			when(grpcFormDataMapper.mapFromFormData(GrpcEingangStubTestFactory.FORM_DATA)).thenReturn(FormDataTestFactory.FORM_DATA);
+		}
+
+		@Test
+		void shouldCallServiceKontoMapper() {
+			mapper.toFormData(routeForwarding);
+
+			verify(serviceKontoMapper).fromGrpc(GrpcEingangHeaderTestFactory.SERVICE_KONTO);
+		}
+
+		@Test
+		void shouldCallFormDataMapperWithAntragstellerData() {
+			mapper.toFormData(routeForwarding);
+
+			verify(grpcFormDataMapper).mapFromFormData(GrpcAntragstellerTestFactory.OTHER_DATA);
+		}
+
+		@Test
+		void shouldCallFormDataMapperWithFormData() {
+			mapper.toFormData(routeForwarding);
+
+			verify(grpcFormDataMapper).mapFromFormData(GrpcEingangStubTestFactory.FORM_DATA);
+		}
+
+		@Test
+		void shouldMapHeader() {
+			var formDataHeader = mapper.toFormData(routeForwarding).getHeader();
+
+			assertThat(formDataHeader).usingRecursiveComparison().isEqualTo(FormDataTestFactory.HEADER);
+		}
+
+		@Test
+		void shouldMapAntragsteller() {
+			var expectedAntragSteller = AntragstellerTestFactory.createBuilder().firmaName(AntragstellerTestFactory.FIRMA_NAME).build();
+
+			var antragsteller = mapper.toFormData(routeForwarding).getAntragsteller();
+
+			assertThat(antragsteller).usingRecursiveComparison().isEqualTo(expectedAntragSteller);
+		}
+
+		@Test
+		void shouldMapFormData() {
+			var formData = mapper.toFormData(routeForwarding).getFormData();
+
+			assertThat(formData).isSameAs(FormDataTestFactory.FORM_DATA);
+		}
+
+		@Test
+		void shouldMapZustaendigeStelles() {
+			var expectedZustaendigeStelle = ZustaendigeStelle.builder()
+					.organisationseinheitenId(GrpcRouteCriteriaTestFactory.ORGANISATION_EINHEIT_ID)
+					.build();
+
+			var zustaendigeStelles = mapper.toFormData(routeForwarding).getZustaendigeStelles();
+
+			assertThat(zustaendigeStelles).usingRecursiveFieldByFieldElementComparator().containsExactly(expectedZustaendigeStelle);
+		}
+	}
+}
diff --git a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingServiceTest.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingServiceTest.java
index e4c711fbc6b9ae53e3ff4b530541ee70d10418fa..f43db02d1aa55c86d3bd0e434c9d3648fa830d27 100644
--- a/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingServiceTest.java
+++ b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingServiceTest.java
@@ -1,13 +1,6 @@
 package de.ozgcloud.eingang.forwarder;
 
-import static org.assertj.core.api.Assertions.*;
-import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
-import java.util.Optional;
-
 import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Captor;
 import org.mockito.InjectMocks;
@@ -15,7 +8,6 @@ import org.mockito.Mock;
 
 import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.formdata.FormDataTestFactory;
-import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle;
 import de.ozgcloud.eingang.router.VorgangService;
 
 class RouteForwardingServiceTest {
@@ -32,35 +24,37 @@ class RouteForwardingServiceTest {
 
 		private final FormData formData = FormDataTestFactory.create();
 
-		@Test
-		void shouldCallVorgangService() {
-			var criteria = RouteCriteriaTestFactory.create();
+		// @Test
+		// void shouldCallVorgangService() {
+		// var criteria = RouteCriteriaTestFactory.create();
 
-			routeForwardingService.route(criteria, formData);
+		// routeForwardingService.route(criteria, formData);
 
-			verify(vorgangService).createVorgang(formDataCaptor.capture());
-			assertThat(formDataCaptor.getValue()).usingRecursiveComparison().ignoringFields("zustaendigeStelles").isEqualTo(formData);
-		}
+		// verify(vorgangService).createVorgang(formDataCaptor.capture());
+		// assertThat(formDataCaptor.getValue()).usingRecursiveComparison().ignoringFields("zustaendigeStelles").isEqualTo(formData);
+		// }
 
-		@Test
-		void shouldSetOrganisationEinheitIdInFormData() {
-			var criteria = RouteCriteriaTestFactory.create();
-			var expectedZustaendigeStelle = ZustaendigeStelle.builder()
-					.organisationseinheitenId(RouteCriteriaTestFactory.ORGANISATION_EINHEIT_ID)
-					.build();
+		// @Test
+		// void shouldSetOrganisationEinheitIdInFormData() {
+		// var criteria = RouteCriteriaTestFactory.create();
+		// var expectedZustaendigeStelle = ZustaendigeStelle.builder()
+		// .organisationseinheitenId(RouteCriteriaTestFactory.ORGANISATION_EINHEIT_ID)
+		// .build();
 
-			routeForwardingService.route(criteria, formData);
+		// routeForwardingService.route(criteria, formData);
 
-			verify(vorgangService).createVorgang(formDataCaptor.capture());
-			assertThat(formDataCaptor.getValue().getZustaendigeStelles()).usingRecursiveFieldByFieldElementComparator()
-					.containsExactly(expectedZustaendigeStelle);
-		}
+		// verify(vorgangService).createVorgang(formDataCaptor.capture());
+		// assertThat(formDataCaptor.getValue().getZustaendigeStelles()).usingRecursiveFieldByFieldElementComparator()
+		// .containsExactly(expectedZustaendigeStelle);
+		// }
 
-		@Test
-		void shouldThrowUnsupportedOperationException() {
-			var criteria = RouteCriteriaTestFactory.createBuilder().organisationEinheitId(Optional.empty()).build();
+		// @Test
+		// void shouldThrowUnsupportedOperationException() {
+		// var criteria =
+		// RouteCriteriaTestFactory.createBuilder().organisationEinheitId(Optional.empty()).build();
 
-			assertThrows(UnsupportedOperationException.class, () -> routeForwardingService.route(criteria, formData));
-		}
+		// assertThrows(UnsupportedOperationException.class, () ->
+		// routeForwardingService.route(criteria, formData));
+		// }
 	}
 }
diff --git a/router/src/main/java/de/ozgcloud/eingang/router/ServiceKontoMapper.java b/router/src/main/java/de/ozgcloud/eingang/router/ServiceKontoMapper.java
index 85b8a16857fe3cda1c21ec411888572c6d1e4287..97aed9ca47f8d3de4a560c577687186f56b4a7e3 100644
--- a/router/src/main/java/de/ozgcloud/eingang/router/ServiceKontoMapper.java
+++ b/router/src/main/java/de/ozgcloud/eingang/router/ServiceKontoMapper.java
@@ -48,7 +48,7 @@ import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto;
 		nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, //
 		collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, //
 		uses = { GrpcObjectMapper.class })
-abstract class ServiceKontoMapper {
+public abstract class ServiceKontoMapper {
 
 	static final String DEFAULT_TRUST_LEVEL = "STORK-QAA-Level-1";
 
@@ -71,7 +71,7 @@ abstract class ServiceKontoMapper {
 	@Mapping(target = "postfachAddresses", source = "postfachAddressesList")
 	@Mapping(target = "trustLevel", source = "trustLevel", qualifiedByName = "mapTrustLevel")
 	@Mapping(target = "postfachAddress", ignore = true)
-	abstract ServiceKonto fromGrpc(GrpcServiceKonto serviceKonto);
+	public abstract ServiceKonto fromGrpc(GrpcServiceKonto serviceKonto);
 
 	PostfachAddressIdentifier mapToIdentifier(GrpcObject identifier) {
 		var stringIdentifier = MapUtils.getString(grpcObjectMapper.mapFromGrpc(identifier), StringBasedIdentifier.POSTFACH_ID_FIELD);