diff --git a/pom.xml b/pom.xml
index e373fe58bc4e49a221adf1f87747306731589e8c..ab38b5127fc5a3f2ecbb29ed5bd3e97daac85c29 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>de.ozgcloud.common</groupId>
 		<artifactId>ozgcloud-common-parent</artifactId>
-		<version>4.6.0</version>
+		<version>4.9.0-SNAPSHOT</version>
 	</parent>
 
 	<groupId>de.ozgcloud.osiv2</groupId>
@@ -42,11 +42,26 @@
 		</dependency>
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-oauth2-client</artifactId>
+			<artifactId>spring-boot-starter-web</artifactId>
 		</dependency>
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-webflux</artifactId>
+			<artifactId>spring-boot-starter-oauth2-client</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>jakarta.servlet</groupId>
+			<artifactId>jakarta.servlet-api</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>jakarta.json.bind</groupId>
+			<artifactId>jakarta.json.bind-api</artifactId>
+			<version>3.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.eclipse</groupId>
+			<artifactId>yasson</artifactId>
+			<version>3.0.4</version>
+			<scope>test</scope>
 		</dependency>
 
 		<dependency>
@@ -91,7 +106,10 @@
 			<groupId>org.apache.commons</groupId>
 			<artifactId>commons-lang3</artifactId>
 		</dependency>
-
+		<dependency>
+			<groupId>org.apache.httpcomponents.client5</groupId>
+			<artifactId>httpclient5</artifactId>
+		</dependency>
 		<!-- used by generated code -->
 		<!-- @Nullable annotation -->
 		<dependency>
@@ -148,7 +166,7 @@
 							<configOptions>
 								<sourceFolder>src/gen/java/main</sourceFolder>
 								<serializationLibrary>jackson</serializationLibrary>
-								<library>webclient</library>
+								<library>restclient</library>
 								<annotationLibrary>swagger2</annotationLibrary>
 								<apiPackage>de.ozgcloud.nachrichten.postfach.osiv2.gen.api</apiPackage>
 								<modelPackage>de.ozgcloud.nachrichten.postfach.osiv2.gen.model</modelPackage>
diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfiguration.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfiguration.java
index 4584e529a58c4b5798795afe25956a7cfb72fac5..82ea45f9be3c833242551186e6f7fea9e400c9c7 100644
--- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfiguration.java
+++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/config/ApiClientConfiguration.java
@@ -1,27 +1,36 @@
 package de.ozgcloud.nachrichten.postfach.osiv2.config;
 
+import org.apache.hc.client5.http.auth.AuthScope;
+import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
+import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
+import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
+import org.apache.hc.core5.http.HttpHost;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.http.client.reactive.ReactorClientHttpConnector;
-import org.springframework.security.oauth2.client.AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager;
-import org.springframework.security.oauth2.client.InMemoryReactiveOAuth2AuthorizedClientService;
-import org.springframework.security.oauth2.client.ReactiveOAuth2AuthorizedClientProvider;
-import org.springframework.security.oauth2.client.ReactiveOAuth2AuthorizedClientProviderBuilder;
-import org.springframework.security.oauth2.client.endpoint.WebClientReactiveClientCredentialsTokenResponseClient;
-import org.springframework.security.oauth2.client.registration.ReactiveClientRegistrationRepository;
-import org.springframework.security.oauth2.client.web.reactive.function.client.ServerOAuth2AuthorizedClientExchangeFilterFunction;
+import org.springframework.http.client.ClientHttpRequestFactory;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.springframework.http.converter.FormHttpMessageConverter;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.oauth2.client.AuthorizedClientServiceOAuth2AuthorizedClientManager;
+import org.springframework.security.oauth2.client.InMemoryOAuth2AuthorizedClientService;
+import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider;
+import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProviderBuilder;
+import org.springframework.security.oauth2.client.endpoint.RestClientClientCredentialsTokenResponseClient;
+import org.springframework.security.oauth2.client.http.OAuth2ErrorResponseErrorHandler;
+import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
+import org.springframework.security.oauth2.client.web.client.OAuth2ClientHttpRequestInterceptor;
+import org.springframework.security.oauth2.core.http.converter.OAuth2AccessTokenResponseHttpMessageConverter;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
-import org.springframework.web.reactive.function.client.WebClient;
+import org.springframework.web.client.RestClient;
 
 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;
 
 @Configuration
+@EnableWebSecurity
 @RequiredArgsConstructor
 @ConditionalOnProperty(prefix = Osi2PostfachProperties.PREFIX, name = "enabled", havingValue = "true")
 public class ApiClientConfiguration {
@@ -35,45 +44,56 @@ public class ApiClientConfiguration {
 	}
 
 	@Bean
-	ApiClient apiClient(ReactiveClientRegistrationRepository clientRegistrations) {
-		return new ApiClient(osi2PostfachWebClient(clientRegistrations))
-				.setBasePath(apiConfiguration.getUrl());
+	ApiClient apiClient(ClientRegistrationRepository clientRegistrations) {
+		var apiClient = new ApiClient(restClient(clientRegistrations));
+		apiClient.setBasePath(apiConfiguration.getUrl());
+		return apiClient;
 	}
 
-	private WebClient osi2PostfachWebClient(
-			ReactiveClientRegistrationRepository clientRegistrations) {
-		return WebClient.builder()
-				.clientConnector(new ReactorClientHttpConnector(httpClient()))
-				.filter(serverOAuth2AuthorizedClientExchangeFilterFunction(clientRegistrations))
+	private RestClient restClient(ClientRegistrationRepository clientRegistrations) {
+		OAuth2ClientHttpRequestInterceptor requestInterceptor =
+				new OAuth2ClientHttpRequestInterceptor(authorizedClientManager(clientRegistrations));
+		requestInterceptor.setClientRegistrationIdResolver(request -> "osi2");
+
+		return defaultRestClientBuilder()
+				.requestInterceptor(requestInterceptor)
 				.build();
 	}
 
-	@SuppressWarnings("ConstantConditions")
-	private HttpClient httpClient() {
-		var webClient = HttpClient.create();
-		return proxyConfiguration.isEnabled() ? webClient
-				.proxy(proxy -> proxy
-						.type(ProxyProvider.Proxy.HTTP)
-						.host(proxyConfiguration.getHost())
-						.port(proxyConfiguration.getPort())
-						.username(proxyConfiguration.getUsername())
-						.password(username -> proxyConfiguration.getPassword())
-				) : webClient;
+	private RestClient.Builder defaultRestClientBuilder() {
+		return RestClient.builder()
+				.requestFactory(createProxyRequestFactory());
 	}
 
-	private ServerOAuth2AuthorizedClientExchangeFilterFunction serverOAuth2AuthorizedClientExchangeFilterFunction(
-			ReactiveClientRegistrationRepository clientRegistrations) {
+	private ClientHttpRequestFactory createProxyRequestFactory() {
+		var requestFactory = new HttpComponentsClientHttpRequestFactory();
+		if (proxyConfiguration.isEnabled()) {
+			requestFactory.setHttpClient(
+					HttpClientBuilder.create()
+							.setProxy(new HttpHost(proxyConfiguration.getHost(), proxyConfiguration.getPort()))
+							.setDefaultCredentialsProvider(basicCredentialsProviderForProxy())
+							.build()
+			);
+		}
+		return requestFactory;
+	}
 
-		var oauth = new ServerOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager(clientRegistrations));
-		oauth.setDefaultClientRegistrationId("osi2");
-		return oauth;
+	private BasicCredentialsProvider basicCredentialsProviderForProxy() {
+		var credentialsProvider = new BasicCredentialsProvider();
+		var username = proxyConfiguration.getUsername();
+		var password = proxyConfiguration.getPassword();
+		if (username != null && password != null) {
+			credentialsProvider.setCredentials(new AuthScope(proxyConfiguration.getHost(), proxyConfiguration.getPort()),
+					new UsernamePasswordCredentials(username, password.toCharArray()));
+		}
+		return credentialsProvider;
 	}
 
-	private AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager authorizedClientManager(
-			ReactiveClientRegistrationRepository clientRegistrations) {
-		var clientService = new InMemoryReactiveOAuth2AuthorizedClientService(
+	private AuthorizedClientServiceOAuth2AuthorizedClientManager authorizedClientManager(
+			ClientRegistrationRepository clientRegistrations) {
+		var clientService = new InMemoryOAuth2AuthorizedClientService(
 				clientRegistrations);
-		var authorizedClientManager = new AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager(
+		var authorizedClientManager = new AuthorizedClientServiceOAuth2AuthorizedClientManager(
 				clientRegistrations, clientService);
 
 		authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider());
@@ -81,28 +101,33 @@ public class ApiClientConfiguration {
 		return authorizedClientManager;
 	}
 
-	private ReactiveOAuth2AuthorizedClientProvider authorizedClientProvider() {
-		return ReactiveOAuth2AuthorizedClientProviderBuilder.builder()
+	private OAuth2AuthorizedClientProvider authorizedClientProvider() {
+		return OAuth2AuthorizedClientProviderBuilder.builder()
 				.clientCredentials(builder ->
 						builder.accessTokenResponseClient(clientCredentialsTokenResponseClient())
 				)
 				.build();
 	}
 
-	private WebClientReactiveClientCredentialsTokenResponseClient clientCredentialsTokenResponseClient() {
-		var client = new WebClientReactiveClientCredentialsTokenResponseClient();
-		configureHttpClientForTokenRequests(client);
+	private RestClientClientCredentialsTokenResponseClient clientCredentialsTokenResponseClient() {
+		var client = new RestClientClientCredentialsTokenResponseClient();
+		configureClientCredentialsRestClient(client);
 		configureParametersForTokenRequests(client);
 		return client;
 	}
 
-	private void configureHttpClientForTokenRequests(WebClientReactiveClientCredentialsTokenResponseClient client) {
-		client.setWebClient(WebClient.builder()
-				.clientConnector(new ReactorClientHttpConnector(httpClient()))
+	private void configureClientCredentialsRestClient(RestClientClientCredentialsTokenResponseClient client) {
+		client.setRestClient(defaultRestClientBuilder()
+				.messageConverters(messageConverters -> {
+					messageConverters.clear();
+					messageConverters.add(new FormHttpMessageConverter());
+					messageConverters.add(new OAuth2AccessTokenResponseHttpMessageConverter());
+				})
+				.defaultStatusHandler(new OAuth2ErrorResponseErrorHandler())
 				.build());
 	}
 
-	private void configureParametersForTokenRequests(WebClientReactiveClientCredentialsTokenResponseClient client) {
+	private void configureParametersForTokenRequests(RestClientClientCredentialsTokenResponseClient client) {
 		client.addParametersConverter(source -> {
 			MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
 			// Pass a resource indicator parameter https://datatracker.ietf.org/doc/html/rfc8707
diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java
index d3aaa130fe44c77fb3734fe2456ed4c86245bc82..7f62892e8b031e4ce89a716db9c1d2a6952497c1 100644
--- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java
+++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java
@@ -29,21 +29,21 @@ public class PostfachApiFacadeService {
 		messageExchangeApi.sendMessage(
 				requestMapper.mapMailboxId(nachricht),
 				requestMapper.mapOutSendMessageRequestV2(nachricht)
-		).block();
+		);
 	}
 
 	public Stream<PostfachNachricht> receiveMessages() {
-		var response = messageExchangeApi.receiveMessages(MAX_NUMBER_RECEIVED_MESSAGES, 0).block();
+		var response = messageExchangeApi.receiveMessages(MAX_NUMBER_RECEIVED_MESSAGES, 0);
 		return response.getMessages().stream().map(this::fetchMessageByGuid);
 	}
 
 	PostfachNachricht fetchMessageByGuid(final MessageExchangeReceiveMessage message) {
-		var messageReply = messageExchangeApi.getMessage(message.getGuid()).block();
+		var messageReply = messageExchangeApi.getMessage(message.getGuid());
 		return responseMapper.toPostfachNachricht(messageReply);
 	}
 
 	public void deleteMessage(final String messageId) {
-		messageExchangeApi.deleteMessage(UUID.fromString(messageId)).block();
+		messageExchangeApi.deleteMessage(UUID.fromString(messageId));
 
 	}
 }
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 2c07c7829eecea5369ae091c96b892161fe2095d..2771bbda602f4abcee66c4c946c6c093223a4c32 100644
--- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceITCase.java
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceITCase.java
@@ -7,13 +7,11 @@ import static org.mockserver.mock.OpenAPIExpectation.*;
 import static org.mockserver.model.HttpRequest.*;
 import static org.mockserver.model.HttpResponse.*;
 
-import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.time.OffsetDateTime;
 import java.util.Arrays;
 import java.util.Map;
-import java.util.Objects;
 import java.util.UUID;
 
 import org.junit.jupiter.api.BeforeEach;
@@ -29,30 +27,31 @@ import org.springframework.test.context.DynamicPropertyRegistry;
 import org.springframework.test.context.DynamicPropertySource;
 import org.springframework.test.context.TestPropertySource;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.ObjectWriter;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-
 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.JsonUtil;
 import de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachNachrichtTestFactory;
+import de.ozgcloud.nachrichten.postfach.osiv2.factory.V1ReplyMessageFactory;
 import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.MessageExchangeReceiveMessage;
 import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.MessageExchangeReceiveMessagesResponse;
-import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.V1ReplyBehavior;
-import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.V1ReplyMessage;
 import lombok.SneakyThrows;
 
-@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.NONE)
+@SpringBootTest(classes = TestApplication.class)
 @ActiveProfiles("itcase")
 @TestPropertySource(properties = {
 		"ozgcloud.osiv2-postfach.http-proxy.enabled=false",
 })
-public class OsiPostfachRemoteServiceITCase {
+class OsiPostfachRemoteServiceITCase {
 
 	@RegisterExtension
 	static final OsiMockServerExtension OSI_MOCK_SERVER_EXTENSION = new OsiMockServerExtension();
 
+	@SneakyThrows
+	private static String getPostfachApiSpec() {
+		return Files.readString(Path.of("spec", "postfach-api-facade.yaml"));
+	}
+
 	private final PostfachNachricht postfachNachricht = PostfachNachrichtTestFactory.create();
 
 	@Autowired
@@ -75,17 +74,13 @@ public class OsiPostfachRemoteServiceITCase {
 		postfachFacadeMockClient = OSI_MOCK_SERVER_EXTENSION.getPostfachFacadeMockClient();
 	}
 
-	@DisplayName("should send dummy request with jwt")
+	@DisplayName("should send request with jwt")
 	@Test
 	@SneakyThrows
-	void shouldSendDummyRequestWithJwt() {
-		postfachFacadeMockClient.upsert(
-				openAPIExpectation()
-						.withSpecUrlOrPayload(Files.readString(Path.of("spec", "postfach-api-facade.yaml")))
-						.withOperationsAndResponses(Map.of(
-								"SendMessage", "200"
-						))
-		);
+	void shouldSendRequestWithJwt() {
+		mockOperationsAndResponses(Map.of(
+				"SendMessage", "200"
+		));
 
 		osiPostfachRemoteService.sendMessage(postfachNachricht);
 
@@ -98,86 +93,77 @@ public class OsiPostfachRemoteServiceITCase {
 		assertThat(jwt.body().read("$.aud", String.class)).isEqualTo(RESOURCE_URN);
 	}
 
-	ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule());
-
 	@DisplayName("should receive one messages")
 	@Test
 	@SneakyThrows
 	void shouldReceiveMessages() {
-		var uuid = UUID.fromString("00000000-0000-0000-0000-000000000000");
-
-		createMessagesJson(uuid, null);
-
-		createOneReplyMessageJson(uuid);
+		mockPostfachMessageAndResponse("00000000-0000-0000-0000-000000000000");
 
-		var messageStream = osiPostfachRemoteService.getAllMessages();
+		var messageList = osiPostfachRemoteService.getAllMessages().toList();
 
-		var messageList = messageStream.toList();
-		assertThat(messageList).size().isEqualTo(1);
+		assertThat(messageList).hasSize(1);
 	}
 
 	@DisplayName("should receive two messages")
 	@Test
 	@SneakyThrows
 	void shouldReceiveTwoMessages() {
-		var uuid1 = UUID.fromString("00000000-0000-0000-0000-000000000000");
-		var uuid2 = UUID.fromString("00000000-0000-0000-0000-000000000001");
+		mockPostfachMessageAndResponse("00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000001");
 
-		createMessagesJson(uuid1, uuid2);
+		var messageList = osiPostfachRemoteService.getAllMessages().toList();
 
-		createOneReplyMessageJson(uuid1);
-		createOneReplyMessageJson(uuid2);
-
-		var messageStream = osiPostfachRemoteService.getAllMessages();
-
-		var messageList = messageStream.toList();
-		assertThat(messageList).size().isEqualTo(2);
+		assertThat(messageList).hasSize(2);
 	}
 
-	private void createMessagesJson(final UUID... uuids) throws IOException {
-		var messagesList = Arrays.stream(uuids).filter(Objects::nonNull).map(uuid -> new MessageExchangeReceiveMessage().guid(uuid)).toList();
-
-		var messages = new MessageExchangeReceiveMessagesResponse().messages(messagesList);
-
-		ObjectWriter ow = objectMapper.writer().withDefaultPrettyPrinter();
-		String messagesJson = ow.writeValueAsString(messages);
-
-		createMessagesCall("receiveMessages", messagesJson);
+	private void mockPostfachMessageAndResponse(final String... uuids) {
+		// Stub message listing response
+		mockJsonOperation("receiveMessages", new MessageExchangeReceiveMessagesResponse()
+				.messages(Arrays.stream(uuids)
+						.map(uuid -> new MessageExchangeReceiveMessage()
+								.guid(UUID.fromString(uuid)))
+						.toList()));
+		for (String uuid : uuids) {
+			// Stub individual response for message
+			mockJsonOperation("getMessage", V1ReplyMessageFactory.create()
+					.messageBox(UUID.fromString(uuid))
+					.responseTime(OffsetDateTime.now()));
+		}
 	}
 
-	private void createMessagesCall(final String receiveMessages, final String messagesJson) throws IOException {
+	private void mockJsonOperation(final String operationId, final Object body) {
 		postfachFacadeMockClient
 				.when(
 						new OpenAPIDefinition()
-								.withSpecUrlOrPayload(Files.readString(Path.of("spec", "postfach-api-facade.yaml")))
-								.withOperationId(receiveMessages)
+								.withSpecUrlOrPayload(getPostfachApiSpec())
+								.withOperationId(operationId)
 				)
-				.respond(response().withHeader("Content-type", "application/json").withBody(messagesJson));
-	}
-
-	private void createOneReplyMessageJson(final UUID uuid) throws IOException {
-		ObjectWriter ow = objectMapper.writer().withDefaultPrettyPrinter();
-
-		var replyMessage = new V1ReplyMessage()
-				.body("das ist ein toller Body").replyAction(V1ReplyBehavior.REPLYPOSSIBLE).messageBox(uuid).responseTime(OffsetDateTime.now());
-		String messageJson = ow.writeValueAsString(replyMessage);
-
-		createMessagesCall("getMessage", messageJson);
+				.respond(
+						response()
+								.withHeader("Content-type", "application/json")
+								.withBody(JsonUtil.toJson(body))
+				);
 	}
 
 	@DisplayName("should delete message")
 	@Test
 	@SneakyThrows
 	void shouldDeleteMessage() {
+		mockOperationsAndResponses(Map.of(
+				"deleteMessage", "200"
+		));
+
+		assertDoesNotThrow(() -> osiPostfachRemoteService.deleteMessage("00000000-0000-0000-0000-000000000000"));
+
+		// TODO verify delete message called
+		// var requests = postfachFacadeMockClient.retrieveRecordedRequests(request());
+	}
+
+	private void mockOperationsAndResponses(Map<String, String> operationsAndResponses) {
 		postfachFacadeMockClient.upsert(
 				openAPIExpectation()
-						.withSpecUrlOrPayload(Files.readString(Path.of("spec", "postfach-api-facade.yaml")))
-						.withOperationsAndResponses(Map.of(
-								"deleteMessage", "200"
-						))
+						.withSpecUrlOrPayload(getPostfachApiSpec())
+						.withOperationsAndResponses(operationsAndResponses)
 		);
-
-		assertDoesNotThrow(() -> osiPostfachRemoteService.deleteMessage("00000000-0000-0000-0000-000000000000"));
 	}
 
 }
diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceRemoteITCase.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceRemoteITCase.java
index 344c3de7e35a2f68761a726cf963248aae4dbcf8..9978f987a8d331528a8a8b86b4bf1ed0b21348a4 100644
--- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceRemoteITCase.java
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceRemoteITCase.java
@@ -22,8 +22,8 @@ import de.ozgcloud.nachrichten.postfach.osiv2.factory.DummyStringBasedIdentifier
 import de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachAddressTestFactory;
 import de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachNachrichtTestFactory;
 
-@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.NONE)
-@ActiveProfiles("itcase")
+@SpringBootTest(classes = TestApplication.class)
+@ActiveProfiles("local")
 @EnabledIfEnvironmentVariable(named = "SH_STAGE_CLIENT_SECRET", matches = ".+")
 public class OsiPostfachRemoteServiceRemoteITCase {
 
@@ -83,8 +83,10 @@ public class OsiPostfachRemoteServiceRemoteITCase {
 		@Test
 		void shouldReceiveAllMessage(){
 			Stream<PostfachNachricht> allMessages = osiPostfachRemoteService.getAllMessages();
+
 			var messages = allMessages.toList();
-			assertThat(messages.size() > 0);
+
+			assertThat(messages).isNotEmpty();
 		}
 	}
 
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 5ce2169b26b87ac81589556b0a6f5469d89f68fb..9d59d950c805922702d0a18bf38cbdb30e6c3a5c 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
@@ -105,7 +105,7 @@ public class OsiMockServerExtension implements BeforeAllCallback, AfterAllCallba
 								.withMethod("POST")
 								.withPath("/access-token")
 								.withHeaders(
-										header("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8")
+										header("Content-Type", "application/x-www-form-urlencoded")
 								)
 								.withBody(
 										params(
diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/factory/JsonUtil.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/factory/JsonUtil.java
index 5353606ac693ef6d98d03dc58d77d900c4943279..ac01337f93e1fb6223b049dd616f1a94dd1ab9c9 100644
--- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/factory/JsonUtil.java
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/factory/JsonUtil.java
@@ -1,11 +1,13 @@
 package de.ozgcloud.nachrichten.postfach.osiv2.factory;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
 
 import lombok.SneakyThrows;
 
 public class JsonUtil {
-	private static final ObjectMapper jsonMapper = new ObjectMapper();
+	private static final ObjectMapper jsonMapper = new ObjectMapper()
+			.registerModule(new JavaTimeModule());
 
 	@SneakyThrows
 	public static String toJson(Object object) {
diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeServiceTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeServiceTest.java
index f8a3c19c34125ece0bf242dea493888a2fd2050c..139ba192c9394ddb55d2657e094a2d9d15765866 100644
--- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeServiceTest.java
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeServiceTest.java
@@ -22,7 +22,6 @@ import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.MessageExchangeReceiveMe
 import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.MessageExchangeSendMessageResponse;
 import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.OutSendMessageRequestV2;
 import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.V1ReplyMessage;
-import reactor.core.publisher.Mono;
 
 class PostfachApiFacadeServiceTest {
 
@@ -52,10 +51,9 @@ class PostfachApiFacadeServiceTest {
 
 		@BeforeEach
 		void mock() {
-			var responseMono = Mono.just(messageExchangeSendMessageResponse);
 			when(requestMapper.mapMailboxId(nachricht)).thenReturn(MAILBOX_ID);
 			when(requestMapper.mapOutSendMessageRequestV2(nachricht)).thenReturn(outSendMessageRequestV2);
-			when(messageExchangeApi.sendMessage(any(), any())).thenReturn(responseMono);
+			when(messageExchangeApi.sendMessage(any(), any())).thenReturn(messageExchangeSendMessageResponse);
 		}
 
 		@DisplayName("should call sendMessage")
@@ -77,8 +75,7 @@ class PostfachApiFacadeServiceTest {
 
 		@BeforeEach
 		void mock(){
-			var responseMono = Mono.just(messageExchangeReceiveMessagesResponse);
-			when(messageExchangeApi.receiveMessages(anyInt(),anyInt())).thenReturn(responseMono);
+			when(messageExchangeApi.receiveMessages(anyInt(),anyInt())).thenReturn(messageExchangeReceiveMessagesResponse);
 		}
 
 		@Test
@@ -100,8 +97,7 @@ class PostfachApiFacadeServiceTest {
 
 		@Test
 		void shouldCallGetMessage(){
-			var replyMono = Mono.just(replyMessage);
-			when(messageExchangeApi.getMessage(any())).thenReturn(replyMono);
+			when(messageExchangeApi.getMessage(any())).thenReturn(replyMessage);
 
 			postfachApiFacadeService.fetchMessageByGuid(receiveMessage);
 
@@ -110,8 +106,7 @@ class PostfachApiFacadeServiceTest {
 
 		@Test
 		void shouldCallResponseMapper(){
-			var replyMono = Mono.just(replyMessage);
-			when(messageExchangeApi.getMessage(any())).thenReturn(replyMono);
+			when(messageExchangeApi.getMessage(any())).thenReturn(replyMessage);
 			when(responseMapper.toPostfachNachricht(any())).thenReturn(PostfachNachrichtTestFactory.create());
 
 			postfachApiFacadeService.fetchMessageByGuid(receiveMessage);
@@ -121,8 +116,7 @@ class PostfachApiFacadeServiceTest {
 
 		@Test
 		void shouldReturnPostfachNachricht(){
-			var replyMono = Mono.just(replyMessage);
-			when(messageExchangeApi.getMessage(any())).thenReturn(replyMono);
+			when(messageExchangeApi.getMessage(any())).thenReturn(replyMessage);
 			when(responseMapper.toPostfachNachricht(any())).thenReturn(PostfachNachrichtTestFactory.create());
 
 			var postfachNachricht = postfachApiFacadeService.fetchMessageByGuid(receiveMessage);
@@ -139,8 +133,7 @@ class PostfachApiFacadeServiceTest {
 
 		@Test
 		void shouldCallDeleteMessage(){
-			var replyMono = Mono.just(replyMessage);
-			when(messageExchangeApi.deleteMessage(any())).thenReturn(replyMono);
+			when(messageExchangeApi.deleteMessage(any())).thenReturn(replyMessage);
 
 			postfachApiFacadeService.deleteMessage(UUID.randomUUID().toString());