diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteService.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteService.java
index 22dc5bb4d7146b3c0f19655d0df078f481d71766..6559227d384fd2af43f561149553e38c91029b82 100644
--- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteService.java
+++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteService.java
@@ -29,13 +29,20 @@ public record OsiPostfachRemoteService(
 
 	@Override
 	public Stream<PostfachNachricht> getAllMessages() {
-		// TODO handle exceptions?
-		return postfachApiFacadeService.receiveMessages();
+		try {
+			return postfachApiFacadeService.receiveMessages();
+		}catch (RuntimeException e) {
+			throw new OsiPostfachException("Failed to get messages", e);
+		}
 	}
 
 	@Override
 	public void deleteMessage(String messageId) {
-		// TODO
+		try {
+			postfachApiFacadeService.deleteMessage(messageId);
+		} catch (RuntimeException e) {
+			throw new OsiPostfachException("Failed to delete messages", e);
+		}
 	}
 
 	@Override
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 336143e3d52f052a29fb1054188599af964b3705..636883f9fabf3aa6d7aadb76a2714d5f44135e96 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
@@ -1,5 +1,7 @@
 package de.ozgcloud.nachrichten.postfach.osiv2.transfer;
 
+import java.util.UUID;
+import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -7,8 +9,10 @@ import org.springframework.stereotype.Service;
 
 import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
 import de.ozgcloud.nachrichten.postfach.osiv2.gen.api.MessageExchangeApi;
+import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.MessageExchangeDeleteMessageResponse;
 import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.MessageExchangeReceiveMessage;
 import lombok.extern.log4j.Log4j2;
+import reactor.core.publisher.Mono;
 
 @Log4j2
 @Service
@@ -27,7 +31,6 @@ public record PostfachApiFacadeService(
 
 	public Stream<PostfachNachricht> receiveMessages() {
 		var response = messageExchangeApi.receiveMessages(100, 0).block();
-
 		return response.getMessages().stream().map(this::fetchMessageByGuid);
 	}
 
@@ -36,4 +39,10 @@ public record PostfachApiFacadeService(
 		return responseMapper.toPostfachNachricht(messageReply);
 	}
 
+	public void deleteMessage(final String messageId) {
+		var deleteMessage = messageExchangeApi.messageExchangeV1DeleteMessageIdDelete(
+				UUID.fromString(messageId)
+				).block();
+
+	}
 }
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 06a81e9346182e2258f65801afd0803e7d0939e6..7a3a00f50eba25c51d8b5766e8c94a08ae0e4227 100644
--- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceRemoteITCase.java
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceRemoteITCase.java
@@ -83,11 +83,22 @@ public class OsiPostfachRemoteServiceRemoteITCase {
 	class TestReceiveAllMessages{
 
 		@Test
-		void renameMe(){
+		void shouldReceiveAllMessage(){
 			Stream<PostfachNachricht> allMessages = osiPostfachRemoteService.getAllMessages();
+			var messages = allMessages.toList();
+			assertThat(messages.size() > 0);
+		}
+	}
 
-			List<PostfachNachricht> list = allMessages.toList();
-			assertThat(allMessages.count() > 0);
+	@Disabled
+	@DisplayName("delete message")
+	@Nested
+	class TestDeleteMessageById{
+
+		@Test
+		void shouldDeleteMessage(){
+			assertThatCode(() -> osiPostfachRemoteService.deleteMessage("5dd65c1e-bd41-4c3d-bf98-be769ca341dc"))
+					.doesNotThrowAnyException();
 		}
 	}
 }
diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java
index 2759035d7ff6c1a76a7bf31ed01f9cfe12fbfbf4..a00ab88ae8b7d18aa79a228c651d55ff472a8289 100644
--- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java
@@ -3,6 +3,7 @@ package de.ozgcloud.nachrichten.postfach.osiv2;
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
+import java.util.UUID;
 import java.util.stream.Stream;
 
 import org.junit.jupiter.api.DisplayName;
@@ -72,7 +73,21 @@ class OsiPostfachRemoteServiceTest {
 	@DisplayName("delete message")
 	@Nested
 	class TestDeleteMessage {
-		// TODO
+
+		@DisplayName("should call deleteMessage")
+		@Test
+		void shouldCallDeleteMessage() {
+			postfachApiFacadeService.deleteMessage(UUID.randomUUID().toString());
+
+			verify(postfachApiFacadeService).deleteMessage(any());
+		}
+		@DisplayName("should throw osi postfach exception on runtime exception")
+		@Test
+		void shouldThrowOsiPostfachExceptionOnRuntimeException() {
+			doThrow(new RuntimeException()).when(postfachApiFacadeService).deleteMessage(UUID.randomUUID().toString());
+
+			assertThatThrownBy(() -> osiPostfachRemoteService.deleteMessage(anyString())).isInstanceOf(OsiPostfachException.class);
+		}
 	}
 
 	@DisplayName("get postfach type")
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 911e86ecb066594e6866d6993912d71907538a79..38e9f18206b4e10f3d6e1fb7709d93cd4f132069 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
@@ -4,6 +4,8 @@ import static de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachAddressTest
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
+import java.util.UUID;
+
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
@@ -14,6 +16,7 @@ import org.mockito.Mock;
 import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
 import de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachNachrichtTestFactory;
 import de.ozgcloud.nachrichten.postfach.osiv2.gen.api.MessageExchangeApi;
+import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.MessageExchangeDeleteMessageResponse;
 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.MessageExchangeSendMessageResponse;
@@ -128,4 +131,21 @@ class PostfachApiFacadeServiceTest {
 		}
 	}
 
+	@DisplayName("Delete Message")
+	@Nested
+	class TestDeleteMessage{
+		@Mock
+		MessageExchangeDeleteMessageResponse replyMessage;
+
+		@Test
+		void shouldCallDeleteMessage(){
+			var replyMono = Mono.just(replyMessage);
+			when(messageExchangeApi.messageExchangeV1DeleteMessageIdDelete(any())).thenReturn(replyMono);
+
+			postfachApiFacadeService.deleteMessage(UUID.randomUUID().toString());
+
+			verify(messageExchangeApi).messageExchangeV1DeleteMessageIdDelete(any());
+		}
+	}
+
 }
\ No newline at end of file