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 eaf8f546886bd13409d8f28596bc86b23c530d25..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,17 +7,14 @@ 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;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
@@ -30,18 +27,14 @@ 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)
@@ -49,11 +42,16 @@ import lombok.SneakyThrows;
 @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
@@ -76,19 +74,13 @@ public class OsiPostfachRemoteServiceITCase {
 		postfachFacadeMockClient = OSI_MOCK_SERVER_EXTENSION.getPostfachFacadeMockClient();
 	}
 
-//	@Disabled
-	@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);
 
@@ -101,89 +93,77 @@ public class OsiPostfachRemoteServiceITCase {
 		assertThat(jwt.body().read("$.aud", String.class)).isEqualTo(RESOURCE_URN);
 	}
 
-	ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule());
-
-	@Disabled
 	@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);
 	}
 
-	@Disabled
 	@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));
+				.respond(
+						response()
+								.withHeader("Content-type", "application/json")
+								.withBody(JsonUtil.toJson(body))
+				);
 	}
 
-	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);
-	}
-
-	@Disabled
 	@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/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) {