diff --git a/spec/postfach-api-facade.yaml b/spec/postfach-api-facade.yaml
index 5355a6bb12d8aacd1f525710545f5f351f89f9bf..13769a953eb304dc17edf51731d8c6cb36cd28d3 100644
--- a/spec/postfach-api-facade.yaml
+++ b/spec/postfach-api-facade.yaml
@@ -4,8 +4,6 @@ info:
   description: <h3>Zentraler Service zur Nutzung der Plattformdienste des <i>Plattformdienstteams
     Postfach</i></h3>siehe auch <a href=https://docs.osi.dataport.de/x/VgO8Bw>PF-Facade</a>
   version: '1.0'
-servers:
-- url: /facade
 paths:
   /Filestorage/v1:
     post:
@@ -4854,12 +4852,6 @@ components:
       description: SeverityLevel</p><table><tr><td>Low</td><td>Low - wird grĂ¼n angezeigt</td></tr>
         <tr><td>Medium</td><td>Medium - wird gelb angezeigt</td></tr> <tr><td>High</td><td>High
         - wird rot angezeigt</td></tr> </table><p>
-  securitySchemes:
-    OIDC:
-      type: openIdConnect
-      openIdConnectUrl: /Facade/WellKnownOpenidConfiguration
-security:
-- OIDC: []
 tags:
 - name: Filestorage
   description: Der <i>Filestorage Controller</i> bietet eine Schnittstelle zum <i>Plattformdienst
diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/WebClientConfiguration.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfiguration.java
similarity index 92%
rename from src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/WebClientConfiguration.java
rename to src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfiguration.java
index 90c751b1bb1b99e89d42f99b1d38e3944b7cd7f3..16d7d79b1155b63b0dffbbc6a87351ecf1aecbc0 100644
--- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/WebClientConfiguration.java
+++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfiguration.java
@@ -16,6 +16,7 @@ import org.springframework.util.MultiValueMap;
 import org.springframework.web.reactive.function.client.WebClient;
 
 import de.ozgcloud.nachrichten.postfach.osiv2.gen.ApiClient;
+import de.ozgcloud.nachrichten.postfach.osiv2.gen.api.MessageExchangeApi;
 import lombok.RequiredArgsConstructor;
 import reactor.netty.http.client.HttpClient;
 import reactor.netty.transport.ProxyProvider;
@@ -23,21 +24,25 @@ import reactor.netty.transport.ProxyProvider;
 @Configuration
 @RequiredArgsConstructor
 @ConditionalOnProperty("ozgcloud.osiv2-postfach.enabled")
-public class WebClientConfiguration {
+public class ApiClientConfiguration {
 
 	private final OsiPostfachProperties.ApiConfiguration apiConfiguration;
 	private final OsiPostfachProperties.ProxyConfiguration proxyConfiguration;
 
+	@Bean
+	MessageExchangeApi messageExchangeApi(ApiClient apiClient) {
+		return new MessageExchangeApi(apiClient);
+	}
 
 	@Bean
-	public ApiClient apiClient(ReactiveClientRegistrationRepository clientRegistrations) {
-		return new ApiClient(osi2PostfachWebClient(clientRegistrations));
+	ApiClient apiClient(ReactiveClientRegistrationRepository clientRegistrations) {
+		return new ApiClient(osi2PostfachWebClient(clientRegistrations))
+				.setBasePath(apiConfiguration.getUrl());
 	}
 
 	private WebClient osi2PostfachWebClient(
 			ReactiveClientRegistrationRepository clientRegistrations) {
 		return WebClient.builder()
-				.baseUrl(apiConfiguration.getUrl())
 				.clientConnector(new ReactorClientHttpConnector(httpClient()))
 				.filter(serverOAuth2AuthorizedClientExchangeFilterFunction(clientRegistrations))
 				.build();
diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapper.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapper.java
index 43f6b20e003bcb2ac30e7ce896835e543a096745..127d16d1eb77c9994d2ec99607706db67cdc7cfb 100644
--- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapper.java
+++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapper.java
@@ -32,7 +32,7 @@ public interface RequestMapper {
 				.map(PostfachAddress::getIdentifier)
 				.filter(PostfachAddressIdentifier::isStringBasedIdentifier)
 				.map(Object::toString)
-				.orElseThrow(() -> new IllegalArgumentException("Expect MailboxId to be a string-based PostfachAddress of PostfachNachricht!"));
+				.orElseThrow(() -> new IllegalArgumentException("Missing MailboxId! Expect MailboxId to be a string-based PostfachAddress of PostfachNachricht."));
 	}
 
 }
diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceITCase.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceITCase.java
index c1f97ce6707679c77aa262b661607912dd62c457..b980765e60ab7dd886636fd865ca6d321e469f4a 100644
--- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceITCase.java
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceITCase.java
@@ -1,10 +1,9 @@
 package de.ozgcloud.nachrichten.postfach.osiv2;
 
 import static de.ozgcloud.nachrichten.postfach.osiv2.factory.JwtFactory.*;
+import static de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachAddressTestFactory.*;
 import static org.assertj.core.api.Assertions.*;
-import static org.mockserver.matchers.Times.*;
 import static org.mockserver.model.HttpRequest.*;
-import static org.mockserver.model.HttpResponse.*;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
@@ -22,6 +21,7 @@ import org.springframework.test.context.TestPropertySource;
 import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
 import de.ozgcloud.nachrichten.postfach.osiv2.extension.Jwt;
 import de.ozgcloud.nachrichten.postfach.osiv2.extension.OsiMockServerExtension;
+import de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachNachrichtTestFactory;
 import lombok.SneakyThrows;
 
 @SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.NONE)
@@ -34,10 +34,7 @@ public class OsiPostfachRemoteServiceITCase {
 	@RegisterExtension
 	static final OsiMockServerExtension OSI_MOCK_SERVER_EXTENSION = new OsiMockServerExtension();
 
-	private static final String MESSAGE_ID = "message-id";
-	private final PostfachNachricht postfachNachricht = PostfachNachricht.builder()
-			.messageId(MESSAGE_ID)
-			.build();
+	private final PostfachNachricht postfachNachricht = PostfachNachrichtTestFactory.create();
 
 	@Autowired
 	private OsiPostfachRemoteService osiPostfachRemoteService;
@@ -56,7 +53,7 @@ public class OsiPostfachRemoteServiceITCase {
 	@BeforeEach
 	@SneakyThrows
 	public void setup() {
-		mockClient = OSI_MOCK_SERVER_EXTENSION.getMockClient();
+		mockClient = OSI_MOCK_SERVER_EXTENSION.getPostfachFacadeMockClient();
 	}
 
 	@DisplayName("send message")
@@ -66,25 +63,11 @@ public class OsiPostfachRemoteServiceITCase {
 		@DisplayName("should send dummy request with jwt")
 		@Test
 		void shouldSendDummyRequestWithJwt() {
-			mockClient
-					.when(
-							request()
-									.withMethod("GET")
-									.withPath("/_metrics"),
-							exactly(1)
-					)
-					.respond(
-							response()
-									.withStatusCode(200)
-					);
-
 			osiPostfachRemoteService.sendMessage(postfachNachricht);
 
-			var requests = mockClient.retrieveRecordedRequests(
-					request()
-							.withMethod("GET")
-							.withPath("/_metrics")
-			);
+			var requests = mockClient.retrieveRecordedRequests(request()
+					.withPathParameter("mailboxId", MAILBOX_ID)
+					.withPath("/MessageExchange/v1/Send/{mailboxId}"));
 			assertThat(requests).hasSize(1);
 			var jwt = Jwt.parseAuthHeaderValue(
 					requests[0].getHeader("Authorization").getFirst()
diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/extension/OsiMockServerExtension.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/extension/OsiMockServerExtension.java
index 1c745f5ae52029bd7719b4d9f4a9860e4997d55f..7de1108b7365907a45a7f8372c0d8960c192af2b 100644
--- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/extension/OsiMockServerExtension.java
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/extension/OsiMockServerExtension.java
@@ -2,12 +2,16 @@ package de.ozgcloud.nachrichten.postfach.osiv2.extension;
 
 import static de.ozgcloud.nachrichten.postfach.osiv2.factory.JwtFactory.*;
 import static org.mockserver.matchers.Times.*;
+import static org.mockserver.mock.OpenAPIExpectation.*;
 import static org.mockserver.model.Header.*;
 import static org.mockserver.model.HttpRequest.*;
 import static org.mockserver.model.HttpResponse.*;
 import static org.mockserver.model.Parameter.*;
 import static org.mockserver.model.ParameterBody.*;
 
+import java.nio.file.Files;
+import java.nio.file.Path;
+
 import org.junit.jupiter.api.extension.AfterAllCallback;
 import org.junit.jupiter.api.extension.AfterEachCallback;
 import org.junit.jupiter.api.extension.BeforeAllCallback;
@@ -21,6 +25,7 @@ import org.testcontainers.utility.DockerImageName;
 import de.ozgcloud.nachrichten.postfach.osiv2.factory.JwtFactory;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
 import lombok.extern.log4j.Log4j2;
 
 @Log4j2
@@ -28,9 +33,13 @@ import lombok.extern.log4j.Log4j2;
 @RequiredArgsConstructor
 public class OsiMockServerExtension implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback {
 
-	private MockServerClient mockClient;
-	private final MockServerContainer mockServerContainer = new MockServerContainer(DockerImageName.parse("mockserver/mockserver")
-			.withTag("mockserver-5.15.0"))
+	private MockServerClient serviceKontoMockClient;
+	private MockServerClient postfachFacadeMockClient;
+
+	private static final DockerImageName MOCK_SERVER_IMAGE = DockerImageName.parse("mockserver/mockserver")
+			.withTag("mockserver-5.15.0");
+
+	private final MockServerContainer serviceKontoMockContainer = new MockServerContainer(MOCK_SERVER_IMAGE)
 			.withLogConsumer(outputFrame -> {
 				var line = outputFrame.getUtf8String().stripTrailing();
 				if (outputFrame.getType() == OutputFrame.OutputType.STDERR) {
@@ -39,46 +48,66 @@ public class OsiMockServerExtension implements BeforeAllCallback, AfterAllCallba
 					LOG.info(line);
 				}
 			});
+	private final MockServerContainer postfachFacadeMockContainer = new MockServerContainer(MOCK_SERVER_IMAGE);
 
 	@Override
 	public void beforeAll(ExtensionContext context) {
-		setupMockServer();
+		setupPostfachFacadeMock();
+		setupServiceKontoMock();
 	}
 
 	@Override
 	public void afterEach(ExtensionContext context) {
-		mockClient.reset();
+		postfachFacadeMockClient.reset();
+		serviceKontoMockClient.reset();
 	}
 
 	@Override
 	public void afterAll(ExtensionContext context) {
-		mockServerContainer.stop();
-		mockClient.stop();
+		serviceKontoMockClient.stop();
+		serviceKontoMockContainer.stop();
+
+		postfachFacadeMockClient.stop();
+		postfachFacadeMockContainer.stop();
 	}
 
-	private void setupMockServer() {
-		mockServerContainer.start();
-		mockClient = new MockServerClient(
-				mockServerContainer.getHost(),
-				mockServerContainer.getServerPort()
+	@SneakyThrows
+	private void setupPostfachFacadeMock() {
+		postfachFacadeMockContainer.start();
+		postfachFacadeMockClient = new MockServerClient(
+				postfachFacadeMockContainer.getHost(),
+				postfachFacadeMockContainer.getServerPort()
+		);
+	}
+
+	@SneakyThrows
+	private void setupServiceKontoMock() {
+		serviceKontoMockContainer.start();
+		serviceKontoMockClient = new MockServerClient(
+				serviceKontoMockContainer.getHost(),
+				serviceKontoMockContainer.getServerPort()
 		);
 	}
 
 	public String getAccessTokenUrl() {
-		return getMockServerUrl() + "/access-token";
+		return getMockServerUrl(serviceKontoMockClient) + "/access-token";
 	}
 
 	public String getPostfachFacadeUrl() {
-		return getMockServerUrl();
+		return getMockServerUrl(postfachFacadeMockClient);
 	}
 
-	private String getMockServerUrl() {
+	private String getMockServerUrl(MockServerClient mockClient) {
 		return "http://" + mockClient.remoteAddress().getHostName() + ":" + mockClient.remoteAddress().getPort();
 	}
 
+	@SneakyThrows
 	@Override
 	public void beforeEach(ExtensionContext context) {
-		mockClient
+		postfachFacadeMockClient.upsert(
+				openAPIExpectation(Files.readString(Path.of("spec", "postfach-api-facade.yaml")))
+		);
+		serviceKontoMockClient
 				.when(
 						request()
 								.withMethod("POST")
diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/factory/PostfachNachrichtTestFactory.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/factory/PostfachNachrichtTestFactory.java
index 2f217ee56bd79626faa0f67c012f2a02512ad3c5..c57b2aafc06fbd8ded48cea7bf624f42fb8d1d72 100644
--- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/factory/PostfachNachrichtTestFactory.java
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/factory/PostfachNachrichtTestFactory.java
@@ -1,5 +1,7 @@
 package de.ozgcloud.nachrichten.postfach.osiv2.factory;
 
+import java.time.ZonedDateTime;
+
 import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
 
 public class PostfachNachrichtTestFactory {
@@ -15,6 +17,8 @@ public class PostfachNachrichtTestFactory {
 		return PostfachNachricht.builder()
 				.mailBody(MAIL_BODY)
 				.subject(MAIL_SUBJECT)
+				.createdAt(ZonedDateTime.now())
+				.vorgangId("test-vorgang-id")
 				.postfachAddress(PostfachAddressTestFactory.create());
 	}
 }