diff --git a/pom.xml b/pom.xml
index e373fe58bc4e49a221adf1f87747306731589e8c..936b09e1df9175f5393b78446501b528c4fb395b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -91,6 +91,11 @@
 			<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 -->
@@ -148,7 +153,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 16d7d79b1155b63b0dffbbc6a87351ecf1aecbc0..4fad50c977fdf20a3bddfe5f72fe7dfa5063ae25 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,11 +1,21 @@
 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.classic.HttpClient;
+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.ClientHttpRequestFactory;
+import org.springframework.http.client.ClientHttpRequestInterceptor;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
 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.OAuth2AuthorizedClientManager;
 import org.springframework.security.oauth2.client.ReactiveOAuth2AuthorizedClientProvider;
 import org.springframework.security.oauth2.client.ReactiveOAuth2AuthorizedClientProviderBuilder;
 import org.springframework.security.oauth2.client.endpoint.WebClientReactiveClientCredentialsTokenResponseClient;
@@ -13,13 +23,12 @@ import org.springframework.security.oauth2.client.registration.ReactiveClientReg
 import org.springframework.security.oauth2.client.web.reactive.function.client.ServerOAuth2AuthorizedClientExchangeFilterFunction;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestClient;
 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;
 
 @Configuration
 @RequiredArgsConstructor
@@ -34,6 +43,41 @@ public class ApiClientConfiguration {
 		return new MessageExchangeApi(apiClient);
 	}
 
+	@Bean
+	ApiClient apiClient(OAuth2AuthorizedClientManager authorizedClientManager) {
+		RestClient restClient = RestClient.builder()
+				.requestFactory(createProxyRequestFactory())
+				.requestInterceptor(createOAuth2Interceptor(authorizedClientManager))
+				.baseUrl(apiConfiguration.getUrl()).build();
+
+		return new ApiClient(restClient);
+	}
+
+
+
+	private ClientHttpRequestFactory createProxyRequestFactory(){
+		var requestFactory = new HttpComponentsClientHttpRequestFactory();
+		if(proxyConfiguration.isEnabled()){
+			var credsProvider = new BasicCredentialsProvider();
+			credsProvider.setCredentials(
+					new AuthScope(proxyConfiguration.getHost(), proxyConfiguration.getPort()),
+					new UsernamePasswordCredentials(proxyConfiguration.getUsername(), proxyConfiguration.getPassword().toCharArray())
+			);
+			var httpClient = HttpClientBuilder.create()
+					.setProxy(new HttpHost(proxyConfiguration.getHost(), proxyConfiguration.getPort()))
+					.setDefaultCredentialsProvider(credsProvider)
+					.build();
+			requestFactory.setHttpClient(httpClient);
+		}
+		return requestFactory;
+	}
+
+	private ClientHttpRequestInterceptor createOAuth2Interceptor(OAuth2AuthorizedClientManager authorizedClientManager) {
+		OAuth2ClientHttpRequestInterceptor interceptor = new OAuth2ClientHttpRequestInterceptor(authorizedClientManager);
+
+	}
+
+
 	@Bean
 	ApiClient apiClient(ReactiveClientRegistrationRepository clientRegistrations) {
 		return new ApiClient(osi2PostfachWebClient(clientRegistrations))
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 246a12108b9fdc919df2bd87b11aa93219f71d8a..858f50cdc1c140138cf63e258dbaa318fbdcdf90 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
@@ -21,21 +21,21 @@ public record PostfachApiFacadeService(MessageExchangeApi messageExchangeApi, Re
 		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));
 
 	}
 }