diff --git a/pom.xml b/pom.xml
index 0a7a5bd184a4a38bebdbc4a8ab427f1465484eca..e8c8ec64c40f1795975863be8bc7a4fe76ef4549 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,7 +65,6 @@
 		<jaxb2-plugin.version>0.15.2</jaxb2-plugin.version>
 		<jaxb3-plugin.version>0.15.0</jaxb3-plugin.version>
 		<mojo-jaxb2-plugin.version>3.1.0</mojo-jaxb2-plugin.version>
-		<grpcmock.version>0.13.0</grpcmock.version>
 	</properties>
 
 	<dependencyManagement>
@@ -135,12 +134,6 @@
 				<type>test-jar</type>
 				<scope>test</scope>
 			</dependency>
-			<dependency>
-				<groupId>org.grpcmock</groupId>
-				<artifactId>grpcmock-spring-boot</artifactId>
-				<version>${grpcmock.version}</version>
-				<scope>test</scope>
-			</dependency>
 		</dependencies>
 	</dependencyManagement>
 
diff --git a/semantik-adapter/pom.xml b/semantik-adapter/pom.xml
index 1b88eb4cd3a10839f277a1e4d52526eaf9b9e408..18c5fe1bb8ace2afd5e890daf9196ed782046a29 100644
--- a/semantik-adapter/pom.xml
+++ b/semantik-adapter/pom.xml
@@ -61,15 +61,6 @@
 			<type>test-jar</type>
 			<scope>test</scope>
 		</dependency>
-		<dependency>
-			<groupId>org.grpcmock</groupId>
-			<artifactId>grpcmock-spring-boot</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.ozgcloud.vorgang</groupId>
-			<artifactId>vorgang-manager-interface</artifactId>
-			<scope>test</scope>
-		</dependency>
 	</dependencies>
 	
 	<build>
diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragITCase.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragITCase.java
index 68276370784ab74c52ed506b1e75345f9c042b09..e80eeca2598ef00dc45d827401744d80eb10ba4c 100644
--- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragITCase.java
+++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/mantelantrag/MantelantragITCase.java
@@ -2,25 +2,27 @@ package de.ozgcloud.eingang.semantik.formbased.mantelantrag;
 
 import static de.ozgcloud.eingang.common.formdata.FormDataTestFactory.*;
 import static org.assertj.core.api.Assertions.*;
-import static org.grpcmock.GrpcMock.*;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
 
 import java.io.File;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.Collections;
 import java.util.List;
-import java.util.function.Predicate;
+import java.util.Optional;
 
-import org.grpcmock.interceptors.CapturedRequest;
-import org.grpcmock.springboot.AutoConfigureGrpcMock;
-import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeAll;
 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;
+import org.mockito.Captor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.boot.test.mock.mockito.SpyBean;
 import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.DynamicPropertyRegistry;
 import org.springframework.test.context.DynamicPropertySource;
@@ -30,92 +32,31 @@ import de.ozgcloud.common.test.TestUtils;
 import de.ozgcloud.eingang.Application;
 import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory;
+import de.ozgcloud.eingang.router.VorgangRemoteService;
 import de.ozgcloud.eingang.semantik.SemantikAdapter;
 import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapterITCase;
-import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileRequest;
-import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileResponse;
-import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangRequest;
-import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangResponse;
-import de.ozgcloud.vorgang.vorgang.GrpcEingang;
-import de.ozgcloud.vorgang.vorgang.GrpcFinishCreationResponse;
-import de.ozgcloud.vorgang.vorgang.GrpcZustaendigeStelle;
-import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc;
 import lombok.SneakyThrows;
 
-@ActiveProfiles({ "itcase" })
-@SpringBootTest(classes = Application.class, properties = {
-		"ozgcloud.adapter.targetVorgangManagerName=itcase",
-		"grpc.client.vorgang-manager-itcase.address=in-process:vorgang-manager-itcase",
-		"grpc.client.vorgang-manager-itcase.negotiationType=PLAINTEXT",
-})
-@AutoConfigureGrpcMock(name = "vorgang-manager-itcase", useInProcessServer = true)
+@ActiveProfiles({ "local", "itcase" })
+@SpringBootTest(classes = Application.class)
 public class MantelantragITCase {
 
 	private static final String FILE_NAME_XDOMEA = "mantelantrag/4620-EH6C_b3c9168a-6ae9-4361-8b2f-6837bb341021_Geschaeftsgang.Geschaeftsgang.0201.xml";
 	private static final String FILE_NAME_MANTELANTRAG = "mantelantrag/4620-EH6C_7d703670-15b6-42b2-8cd1-88a7e4c494b9_Antrag_Max_Mustermann_SGBXII.xml";
 
-	@BeforeEach
-	void setup() {
-		mockStartVorgangCreation();
-		mockUploadBinaryFiles();
-		mockFinishVorgangCreation();
-	}
-
-	private void mockStartVorgangCreation() {
-		stubFor(
-				unaryMethod(VorgangServiceGrpc.getStartCreationMethod())
-						.willReturn(GrpcCreateVorgangResponse.getDefaultInstance()));
-	}
-
-	private void mockUploadBinaryFiles() {
-		stubFor(
-				clientStreamingMethod(BinaryFileServiceGrpc.getUploadBinaryFileAsStreamMethod())
-						.willReturn(GrpcUploadBinaryFileResponse.getDefaultInstance()));
-	}
-
-	private void mockFinishVorgangCreation() {
-		stubFor(
-				unaryMethod(VorgangServiceGrpc.getFinishCreationMethod())
-						.willReturn(GrpcFinishCreationResponse.getDefaultInstance()));
-	}
+	@MockBean
+	VorgangRemoteService vorgangRemoteService;
 
-	@AfterEach
-	void teardown() {
-		try {
-			expectOneVorgangCreateAndFinishCall();
-			expectTwoUploadCallsForXmlRepresentations();
-		} finally {
-			resetMappings();
-		}
-	}
-
-	private void expectOneVorgangCreateAndFinishCall() {
-		verifyThat(
-				calledMethod(VorgangServiceGrpc.getStartCreationMethod())
-						.withRequest(GrpcCreateVorgangRequest::hasEingang),
-				times(1));
-		verifyThat(
-				calledMethod(VorgangServiceGrpc.getFinishCreationMethod()),
-				times(1));
-	}
-
-	private void expectTwoUploadCallsForXmlRepresentations() {
-		Predicate<GrpcUploadBinaryFileRequest> hasXMLContentType = request -> request.hasMetadata() && request
-				.getMetadata()
-				.getContentType()
-				.contains("xml");
-		verifyThat(
-				calledMethod(BinaryFileServiceGrpc.getUploadBinaryFileAsStreamMethod())
-						.withRequestsContaining(hasXMLContentType),
-				times(2));
-	}
-
-	@Autowired
+	@SpyBean
 	SemantikAdapter semantikAdapter;
 
+	@Captor
+	ArgumentCaptor<FormData> formDataCaptor;
 	private FormData formData;
 
+	@Captor
+	ArgumentCaptor<Optional<String>> oeIdCaptor;
+
 	@Autowired
 	MantelantragZustaendigeStelleMapper mantelantragZustaendigeStelleMapper;
 
@@ -123,6 +64,8 @@ public class MantelantragITCase {
 
 	@BeforeEach
 	void mock() {
+		clearInvocations(vorgangRemoteService);
+		doReturn(VORGANG_ID).when(vorgangRemoteService).createVorgang(any(FormData.class), any());
 		formData = prepareTestData();
 		mantelantragZustaendigeStelleMapper.init();
 	}
@@ -146,9 +89,8 @@ public class MantelantragITCase {
 		void shouldCreateOneVorgang() {
 			semantikAdapter.processFormData(formData);
 
-			var eingangs = captureEingangs();
-			assertThat(eingangs).hasSize(1);
-			assertThat(eingangs.getFirst().getZustaendigeStelle().getOrganisationseinheitenId()).isEmpty();
+			verify(vorgangRemoteService, times(1)).createVorgang(formDataCaptor.capture(), oeIdCaptor.capture());
+			assertThat(oeIdCaptor.getValue()).isEmpty();
 		}
 	}
 
@@ -165,10 +107,8 @@ public class MantelantragITCase {
 		void shouldCreateOneVorgang() {
 			semantikAdapter.processFormData(formData);
 
-			var eingangs = captureEingangs();
-			assertThat(eingangs).extracting(GrpcEingang::getZustaendigeStelle)
-					.extracting(GrpcZustaendigeStelle::getOrganisationseinheitenId)
-					.containsOnly("123");
+			verify(vorgangRemoteService, times(1)).createVorgang(formDataCaptor.capture(), oeIdCaptor.capture());
+			assertThat(oeIdCaptor.getValue()).contains("123");
 		}
 	}
 
@@ -186,10 +126,8 @@ public class MantelantragITCase {
 		void shouldCreateTwoVorangsWithPartiallyMatchingZustaendigeStelle() {
 			semantikAdapter.processFormData(formData);
 
-			var eingangs = captureEingangs();
-			assertThat(eingangs).extracting(GrpcEingang::getZustaendigeStelle)
-					.extracting(GrpcZustaendigeStelle::getOrganisationseinheitenId)
-					.containsOnly("123", "444");
+			verify(vorgangRemoteService, times(2)).createVorgang(formDataCaptor.capture(), oeIdCaptor.capture());
+			assertThat(oeIdCaptor.getAllValues()).contains(Optional.of("123"), Optional.of("444"));
 		}
 	}
 
@@ -207,10 +145,8 @@ public class MantelantragITCase {
 		void shouldCreateThreeVorgangs() {
 			semantikAdapter.processFormData(formData);
 
-			var eingangs = captureEingangs();
-			assertThat(eingangs).extracting(GrpcEingang::getZustaendigeStelle)
-					.extracting(GrpcZustaendigeStelle::getOrganisationseinheitenId)
-					.containsOnly("123", "321", "444");
+			verify(vorgangRemoteService, times(3)).createVorgang(formDataCaptor.capture(), oeIdCaptor.capture());
+			assertThat(oeIdCaptor.getAllValues()).contains(Optional.of("123"), Optional.of("321"), Optional.of("444"));
 		}
 	}
 
@@ -239,16 +175,6 @@ public class MantelantragITCase {
 		return FormData.builder().representations(List.of(xdomeaFile, mantelantragFile)).build();
 	}
 
-	private List<GrpcEingang> captureEingangs() {
-		return capturedRequestsFor(
-				calledMethod(VorgangServiceGrpc.getStartCreationMethod()))
-				.stream()
-				.map(CapturedRequest::requests)
-				.flatMap(List::stream)
-				.map(GrpcCreateVorgangRequest::getEingang)
-				.toList();
-	}
-
 	@SneakyThrows
 	private long getFileSize(String fileName) {
 		Path filePath = Path.of(FormSolutionsEngineBasedAdapterITCase.class.getClassLoader().getResource(fileName).toURI());
diff --git a/xta-adapter/pom.xml b/xta-adapter/pom.xml
index 20aea7aa8aa90ed1c38c4c4f2f430ee774b83cad..e96fb6c3dd46267839a27a0e6c9b19dea237b91d 100644
--- a/xta-adapter/pom.xml
+++ b/xta-adapter/pom.xml
@@ -92,11 +92,6 @@
 			<type>test-jar</type>
 			<scope>test</scope>
 		</dependency>
-		<dependency>
-			<groupId>org.grpcmock</groupId>
-			<artifactId>grpcmock-spring-boot</artifactId>
-			<scope>test</scope>
-		</dependency>
 	</dependencies>
 	
 	<build>