diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2ResponseMapper.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2ResponseMapper.java
index 0b20678b622bcfc0df1bc2a009554693870c277e..cbd164b320d2d0275be14c42b8044542a9dfa3d6 100644
--- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2ResponseMapper.java
+++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2ResponseMapper.java
@@ -21,9 +21,9 @@ public interface Osi2ResponseMapper {
 	String POSTFACH_ADDRESS_VERSION = "2.0";
 	int POSTFACH_ADDRESS_TYPE = 2;
 
-	@Mapping(target = "id", source = "guid")
+	@Mapping(target = "id", ignore = true)
 	@Mapping(target = "postfachAddress", expression = "java(buildPostfachAddressByPostfachId(message.getMessageBox().toString()))")
-	@Mapping(target = "messageId", ignore = true)
+	@Mapping(target = "messageId", source = "guid")
 	@Mapping(target = "createdAt", expression = "java(java.time.ZonedDateTime.now())")
 	@Mapping(target = "createdBy", source = "displayName")
 	@Mapping(target = "sentAt", expression = "java(message.getResponseTime().toZonedDateTime())")
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 be0f329f70b0c21b27b6fadf053334f948b37c15..cecfbcab7392725972e938405a473a4ae74c16f0 100644
--- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceRemoteITCase.java
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceRemoteITCase.java
@@ -2,12 +2,13 @@ package de.ozgcloud.nachrichten.postfach.osiv2;
 
 import static org.assertj.core.api.Assertions.*;
 
+import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-import java.util.stream.Stream;
 
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,14 +30,7 @@ public class OsiPostfachRemoteServiceRemoteITCase {
 	@Autowired
 	private OsiPostfachRemoteService osiPostfachRemoteService;
 
-	private final PostfachNachricht nachricht = PostfachNachrichtTestFactory.createBuilder()
-			.replyOption(PostfachNachricht.ReplyOption.POSSIBLE)
-			.postfachAddress(PostfachAddressTestFactory.createBuilder()
-					.identifier(DummyStringBasedIdentifier.builder()
-							.mailboxId("49b5a7e2-5e60-4baf-8ccf-1f5b94b570f3")
-							.build())
-					.build())
-			.build();
+	private List<String> initialMessageIds;
 
 	@DynamicPropertySource
 	static void dynamicProperties(DynamicPropertyRegistry registry) {
@@ -62,40 +56,56 @@ public class OsiPostfachRemoteServiceRemoteITCase {
 		throw new IllegalArgumentException("Proxy host and port not found in '%s'".formatted(text));
 	}
 
-	@DisplayName("send message")
-	@Nested
-	class TestSendMessage {
-
-		@DisplayName("should not fail")
-		@Test
-		void shouldNotFail() {
-			assertThatCode(() -> osiPostfachRemoteService.sendMessage(nachricht))
-					.doesNotThrowAnyException();
-		}
+	List<String> fetchPostfachMessagesIds() {
+		return osiPostfachRemoteService.getAllMessages()
+				.map(PostfachNachricht::getMessageId)
+				.toList();
 	}
 
-	@DisplayName("receive all messages")
-	@Nested
-	class TestReceiveAllMessages {
+	@BeforeEach
+	void setup() {
+		initialMessageIds = fetchPostfachMessagesIds();
+		assertThat(initialMessageIds).doesNotContainNull();
+	}
 
-		@Test
-		void shouldReceiveAllMessage() {
-			Stream<PostfachNachricht> allMessages = osiPostfachRemoteService.getAllMessages();
+	@AfterEach
+	void validateMessagesBackAtOriginalState() {
+		var currentGuids = fetchPostfachMessagesIds();
 
-			var messages = allMessages.toList();
+		assertThat(currentGuids).containsExactlyElementsOf(initialMessageIds);
+	}
 
-			assertThat(messages).isNotEmpty();
-		}
+	private PostfachNachricht createNachricht() {
+		return PostfachNachrichtTestFactory.createBuilder()
+				.replyOption(PostfachNachricht.ReplyOption.POSSIBLE)
+				.postfachAddress(PostfachAddressTestFactory.createBuilder()
+						.identifier(DummyStringBasedIdentifier.builder()
+								.mailboxId("49b5a7e2-5e60-4baf-8ccf-1f5b94b570f3")
+								.build())
+						.build())
+				.build();
 	}
 
-	@DisplayName("delete message")
-	@Nested
-	class TestDeleteMessageById {
+	@DisplayName("should send and receive message without attachment")
+	@Test
+	void shouldSendAndReceiveMessage() {
+		var nachricht = createNachricht();
 
-		@Test
-		void shouldDeleteMessage() {
-			assertThatCode(() -> osiPostfachRemoteService.deleteMessage("5dd65c1e-bd41-4c3d-bf98-be769ca341dc"))
-					.doesNotThrowAnyException();
-		}
+		osiPostfachRemoteService.sendMessage(nachricht);
+
+		var messages = osiPostfachRemoteService.getAllMessages().toList();
+		assertThat(messages).isNotEmpty();
+
+		var newMessages = messages.stream()
+				.filter(m -> !initialMessageIds.contains(m.getMessageId()))
+				.toList();
+		assertThat(newMessages).hasSize(1);
+		var newMessage = newMessages.getFirst();
+		assertThat(newMessage.getSubject()).isEqualTo(nachricht.getSubject());
+		assertThat(newMessage.getMailBody()).isEqualTo(nachricht.getMailBody());
+		assertThat(newMessage.getPostfachAddress())
+				.isEqualTo(nachricht.getPostfachAddress());
+
+		osiPostfachRemoteService.deleteMessage(newMessage.getMessageId());
 	}
 }
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 e24b966431f23e9de36aac29539323a0c456a25b..aaf929ea7d99c7b3262df9458295e8bc7c647e90 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,12 +1,15 @@
 package de.ozgcloud.nachrichten.postfach.osiv2.factory;
 
 import java.time.ZonedDateTime;
+import java.util.UUID;
+
+import com.thedeanda.lorem.LoremIpsum;
 
 import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
 
 public class PostfachNachrichtTestFactory {
-	public static final String MAIL_BODY = "mail body";
-	public static final String MAIL_SUBJECT = "mail subject";
+	public static final String MAIL_BODY = "Hallo,\n" + LoremIpsum.getInstance().getParagraphs(1, 4);
+	public static final String MAIL_SUBJECT = "AW: " + LoremIpsum.getInstance().getTitle(2, 6);
 	public static final String VORGANG_ID = "test-vorgang-id";
 	public static final String USER_ID = "test-user-id";
 
diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/factory/V1ReplyMessageTestFactory.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/factory/V1ReplyMessageTestFactory.java
index 84fec5a318a83aafc58fe20142b84367db2aa30f..3797d54977d7ecb6a0dc197ded47e69a5dddef89 100644
--- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/factory/V1ReplyMessageTestFactory.java
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/factory/V1ReplyMessageTestFactory.java
@@ -17,13 +17,13 @@ public class V1ReplyMessageTestFactory {
 	public static final String REPLY_BODY = """
 			Das ist das Multiline&&lt;b&gt;a&lt;/b&gt<br><br/>
 			Body""";
+	public static final String MESSAGE_ID = UUID.randomUUID().toString();
 	private static final String DISPLAY_NAME = "Das ist der Absender";
 	private static final String ORIGIN_SENDER = "das ist der original Sender";
 	private static final String REPLAY_ACTION = "Replypossible";
 	private static final String EIDAS_LEVEL = "Low";
 	private static final Boolean IS_OBLIGATORY = Boolean.FALSE;
 	private static final Boolean IS_HTML = Boolean.FALSE;
-	private static final String GUID = "123-guid-456";
 	private static final String MESSAGE_BOX = "Mailbox-Id-Antwortender";
 	private static final OffsetDateTime RESPONSE_TIME = OffsetDateTime.now();
 
@@ -38,7 +38,7 @@ public class V1ReplyMessageTestFactory {
 				.eidasLevel(V1EidasLevel.fromValue(EIDAS_LEVEL))
 				.isObligatory(IS_OBLIGATORY)
 				.isHtml(IS_HTML)
-				.guid(UUID.nameUUIDFromBytes(GUID.getBytes()))
+				.guid(UUID.fromString(MESSAGE_ID))
 				.messageBox(UUID.nameUUIDFromBytes(MESSAGE_BOX.getBytes()))
 				.responseTime(RESPONSE_TIME);
 	}
diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2ResponseMapperTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2ResponseMapperTest.java
index 1c417e577b9134818309cc5a0ecdc9b976d8423a..e692451fc530c988380623f5bc90e826071994d8 100644
--- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2ResponseMapperTest.java
+++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/Osi2ResponseMapperTest.java
@@ -3,13 +3,21 @@ package de.ozgcloud.nachrichten.postfach.osiv2.transfer;
 import static de.ozgcloud.nachrichten.postfach.osiv2.factory.V1ReplyMessageTestFactory.*;
 import static org.assertj.core.api.Assertions.*;
 
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
 import java.time.ZonedDateTime;
 import java.time.temporal.ChronoUnit;
 import java.util.UUID;
+import java.util.stream.Stream;
 
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
 import org.mapstruct.factory.Mappers;
 import org.mockito.InjectMocks;
 
@@ -26,86 +34,93 @@ class Osi2ResponseMapperTest {
 	@DisplayName("map V1ReplyMessage to PostfachNachricht")
 	@Nested
 	class V1ReplyMessageToPostfachNachricht {
-		@Test
-		void shouldHaveId() {
-			var postfachNachricht = mapper.toPostfachNachricht(message);
-
-			assertThat(postfachNachricht.getId()).isEqualTo(UUID.nameUUIDFromBytes("123-guid-456".getBytes()).toString());
-		}
 
 		@Test
 		void shouldHaveVorgangId() {
-			var postfachNachricht = mapper.toPostfachNachricht(message);
+			var result = doMapping();
 
-			assertThat(postfachNachricht.getVorgangId()).isEqualTo("OZG-Cloud-VorgangId");
+			assertThat(result.getVorgangId()).isEqualTo("OZG-Cloud-VorgangId");
 		}
 
 		@Test
 		void shouldHavePostfachAddress() {
-			var postfachNachricht = mapper.toPostfachNachricht(message);
+			var result = doMapping();
 
-			assertThat(postfachNachricht.getPostfachAddress().getIdentifier().toString())
+			assertThat(result.getPostfachAddress().getIdentifier().toString())
 					.hasToString(UUID.nameUUIDFromBytes("Mailbox-Id-Antwortender".getBytes()).toString());
 		}
 
 		@Test
 		void shouldHaveCreatedAt() {
-			var postfachNachricht = mapper.toPostfachNachricht(message);
+			var result = doMapping();
 
-			assertThat(postfachNachricht.getCreatedAt()).isNotNull().isCloseTo(ZonedDateTime.now(), within(5, ChronoUnit.SECONDS));
+			assertThat(result.getCreatedAt()).isNotNull().isCloseTo(ZonedDateTime.now(), within(5, ChronoUnit.SECONDS));
 		}
 
 		@Test
 		void shouldHaveCreatedBy() {
-			var postfachNachricht = mapper.toPostfachNachricht(message);
+			var result = doMapping();
 
-			assertThat(postfachNachricht.getCreatedBy()).isEqualTo("Das ist der Absender");
+			assertThat(result.getCreatedBy()).isEqualTo("Das ist der Absender");
 		}
 
 		@Test
 		void shouldHaveSentAt() {
-			var postfachNachricht = mapper.toPostfachNachricht(message);
+			var result = doMapping();
 
-			assertThat(postfachNachricht.getSentAt()).isNotNull().isCloseTo(ZonedDateTime.now(), within(5, ChronoUnit.SECONDS));
+			assertThat(result.getSentAt()).isNotNull().isCloseTo(ZonedDateTime.now(), within(5, ChronoUnit.SECONDS));
 		}
 
 		@Test
 		void shouldHaveDirection() {
-			var postfachNachricht = mapper.toPostfachNachricht(message);
+			var result = doMapping();
 
-			assertThat(postfachNachricht.getDirection()).isEqualTo(PostfachNachricht.Direction.IN);
+			assertThat(result.getDirection()).isEqualTo(PostfachNachricht.Direction.IN);
 		}
 
 		@Test
 		void shouldHaveSubject() {
-			var postfachNachricht = mapper.toPostfachNachricht(message);
+			var result = doMapping();
 
-			assertThat(postfachNachricht.getSubject()).isEqualTo("Das ist das Subject");
+			assertThat(result.getSubject()).isEqualTo("Das ist das Subject");
 		}
 
 		@Test
 		void shouldHaveBody() {
-			var postfachNachricht = mapper.toPostfachNachricht(message);
+			var result = doMapping();
 
-			assertThat(postfachNachricht.getMailBody()).isEqualTo(REPLY_BODY);
+			assertThat(result.getMailBody()).isEqualTo(REPLY_BODY);
 		}
 
 		@Test
 		void shouldMapHTMLBody() {
-			var postfachNachricht = mapper.toPostfachNachricht(message
+			var htmlMessage = V1ReplyMessageTestFactory.create()
 					.body(HTML_REPLY_BODY)
-					.isHtml(true));
+					.isHtml(true);
 
-			assertThat(postfachNachricht.getMailBody()).isEqualTo(REPLY_BODY);
+			var result = mapper.toPostfachNachricht(htmlMessage);
+
+			assertThat(result.getMailBody()).isEqualTo(REPLY_BODY);
 		}
 
 		@Test
 		void shouldHaveReplyOption() {
-			var postfachNachricht = mapper.toPostfachNachricht(message);
+			var result = doMapping();
+
+			assertThat(result.getReplyOption()).isEqualTo(PostfachNachricht.ReplyOption.POSSIBLE);
+		}
+
+		@DisplayName("should map messageId")
+		@Test
+		void shouldMapMessageId() {
+			var result = doMapping();
+
+			assertThat(result.getMessageId()).isEqualTo(MESSAGE_ID);
+		}
 
-			assertThat(postfachNachricht.getReplyOption()).isEqualTo(PostfachNachricht.ReplyOption.POSSIBLE);
+		private PostfachNachricht doMapping() {
+			return mapper.toPostfachNachricht(message);
 		}
 
-		//		TODO:prüfen das Attachments in der PostfachNachricht enthalten sind
 	}
 }