diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemEventListener.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemEventListener.java
index bc2698d065807fa34449c44f86bb2cf82e544319..cf991372cac1e53ef918bf360128a4939f9ccb6c 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemEventListener.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemEventListener.java
@@ -95,13 +95,17 @@ class VorgangAttachedItemEventListener {
 	}
 
 	private void doUpdate(Command command, VorgangAttachedItem filledItem) {
-		if (Objects.nonNull(command.getRelationVersion())) {
+		if (isVersionSet(command)) {
 			service.update(command.getId(), filledItem.toBuilder().version(command.getRelationVersion()).build());
 		} else {
 			service.forceUpdate(command.getId(), filledItem.getId(), filledItem.getItem());
 		}
 	}
 
+	private boolean isVersionSet(Command command) {
+		return Objects.nonNull(command.getRelationVersion()) && command.getRelationVersion() > 0;
+	}
+
 	VorgangAttachedItem getVorgangAttachedItem(String id) {
 		return service.getById(id);
 	}
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplITCase.java
index cbd18b8e88f7de97c722790032fab203b0bfeffc..f8709896e72698d0234579ef4dda729dd1e5126e 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplITCase.java
@@ -24,14 +24,15 @@
 package de.ozgcloud.nachrichten.postfach;
 
 import static org.assertj.core.api.Assertions.*;
+import static org.awaitility.Awaitility.*;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.commons.collections.MapUtils;
-import org.awaitility.Awaitility;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
@@ -55,6 +56,7 @@ import lombok.SneakyThrows;
 		"grpc.server.inProcessName=test",
 		"grpc.client.vorgang-manager.address=in-process:test",
 		"grpc.client.ozgcloud-command-manager.address=in-process:test",
+		"grpc.client.pluto.address=in-process:test",
 })
 @DataITCase
 @DirtiesContext
@@ -63,6 +65,8 @@ class PersistPostfachNachrichtServiceImplITCase {
 	@Autowired
 	private PersistPostfachNachrichtServiceImpl service;
 
+	@Autowired
+	private PostfachNachrichtMapper postfachNachrichtMapper;
 	@Autowired
 	private MongoOperations mongoOperations;
 
@@ -75,6 +79,36 @@ class PersistPostfachNachrichtServiceImplITCase {
 		vorgangId = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).build(), Vorgang.COLLECTION_NAME).getId();
 	}
 
+	@Nested
+	class TestPersistPostfachNachricht {
+
+		@Test
+		void shouldPersistPostfachNachricht() {
+			var postfachNachricht = PostfachNachrichtTestFactory.createBuilder().id(null).vorgangId(vorgangId).build();
+			service.persistNachricht(Optional.empty(), postfachNachricht);
+
+			assertThat(loadPostfachNachrichts()).hasSize(1).first().usingRecursiveComparison().ignoringFields("id").isEqualTo(postfachNachricht);
+		}
+
+		@Test
+		void shouldUpdatePersistedNachricht() {
+			var persistedNachrichtId = mongoOperations.save(VorgangAttachedItemTestFactory.createBuilder().id(null).version(0)
+					.itemName(PersistPostfachNachrichtServiceImpl.ITEM_NAME).item(PostfachNachrichtTestFactory.asMap()).build()).getId();
+			var postfachNachricht = PostfachNachrichtTestFactory.createBuilder().id(persistedNachrichtId).vorgangId(vorgangId)
+					.subject("updated subject").mailBody("updated body").build();
+
+			service.persistNachricht(Optional.empty(), postfachNachricht);
+
+			assertThat(loadPostfachNachrichts()).hasSize(1).first().usingRecursiveComparison().isEqualTo(postfachNachricht);
+		}
+
+		private List<PostfachNachricht> loadPostfachNachrichts() {
+			return await().atMost(60, TimeUnit.MINUTES)
+					.until(() -> mongoOperations.findAll(VorgangAttachedItem.class), list -> !list.isEmpty()).stream()
+					.map(VorgangAttachedItem::getItem).map(postfachNachrichtMapper::fromMapToPostfachMail).toList();
+		}
+	}
+
 	@DisplayName("Find rueckfragen")
 	@Nested
 	class TestFindRueckfragen {
@@ -101,7 +135,7 @@ class PersistPostfachNachrichtServiceImplITCase {
 		void shouldPersistAnswer() {
 			service.persistAnswer(referencedNachrichtId, createPostfachNachricht());
 
-			Awaitility.await().atMost(60, TimeUnit.SECONDS).untilAsserted(() -> {
+			await().atMost(60, TimeUnit.SECONDS).untilAsserted(() -> {
 				var persistedAnswers = findAllVorgangAttachedItems();
 				assertThat(persistedAnswers).hasSize(1).first()
 						.extracting(VorgangAttachedItem::getItem)
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemEventListenerTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemEventListenerTest.java
index ff6d202f4ecc7f06568d57f6405ca0e18852d7a3..28611d93e880d5012906f5dc8da81aea4c5a2846 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemEventListenerTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/VorgangAttachedItemEventListenerTest.java
@@ -38,6 +38,9 @@ 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.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.NullSource;
+import org.junit.jupiter.params.provider.ValueSource;
 import org.mapstruct.factory.Mappers;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Captor;
@@ -73,9 +76,9 @@ class VorgangAttachedItemEventListenerTest {
 	@Nested
 	class TestCreateItem {
 
-		private Map<String, Object> bodyMap = VorgangAttachedItemTestFactory.asMap();
+		private final Map<String, Object> bodyMap = VorgangAttachedItemTestFactory.asMap();
 
-		private Command command = CommandTestFactory.createBuilder().bodyObject(bodyMap).relationId(VorgangTestFactory.ID).build();
+		private final Command command = CommandTestFactory.createBuilder().bodyObject(bodyMap).relationId(VorgangTestFactory.ID).build();
 
 		@Captor
 		private ArgumentCaptor<VorgangAttachedItem> itemCaptor;
@@ -136,7 +139,7 @@ class VorgangAttachedItemEventListenerTest {
 	@DisplayName("Update item")
 	@Nested
 	class TestUpdateItem {
-		private Map<String, Object> bodyMap = VorgangAttachedItemTestFactory.asMap();
+		private final Map<String, Object> bodyMap = VorgangAttachedItemTestFactory.asMap();
 
 		private Command command = buildCommand(bodyMap);
 
@@ -195,6 +198,20 @@ class VorgangAttachedItemEventListenerTest {
 				verify(service).update(eq(CommandTestFactory.ID), itemCaptor.capture());
 				assertThat(itemCaptor.getValue().getId()).isEqualTo(VorgangAttachedItemTestFactory.ID);
 			}
+
+			@DisplayName("should call forceUpdate when")
+			@ParameterizedTest(name = "relationVersion is {0}")
+			@NullSource
+			@ValueSource(longs = { -10, 0 })
+			void shouldCallForceUpdate(Long relationVersion) {
+				command = CommandTestFactory.createBuilder().relationId(VorgangAttachedItemTestFactory.ID).relationVersion(relationVersion)
+						.bodyObject(bodyMap)
+						.build();
+
+				listener.updateItem(CommandCreatedEventTestFactory.create(command));
+
+				verify(service).forceUpdate(CommandTestFactory.ID, VorgangAttachedItemTestFactory.ID, VorgangAttachedItemTestFactory.STRING_MAP);
+			}
 		}
 
 		private void doUpdateItem() {
@@ -250,15 +267,15 @@ class VorgangAttachedItemEventListenerTest {
 		@Captor
 		private ArgumentCaptor<VorgangAttachedItemUpdatedEvent> eventCaptor;
 
-		private Map<String, Object> itemMap = Map.of("number", "73");
-		private Set<String> itemKeys = Set.of("number");
-		private Map<String, Object> bodyMap = Map.of("id", VorgangAttachedItemTestFactory.ID, VorgangAttachedItem.FIELDNAME_ITEM,
+		private final Map<String, Object> itemMap = Map.of("number", "73");
+		private final Set<String> itemKeys = Set.of("number");
+		private final Map<String, Object> bodyMap = Map.of("id", VorgangAttachedItemTestFactory.ID, VorgangAttachedItem.FIELDNAME_ITEM,
 				itemMap);
 
-		private Command command = CommandTestFactory.createBuilder().relationId(VorgangAttachedItemTestFactory.ID)
+		private final Command command = CommandTestFactory.createBuilder().relationId(VorgangAttachedItemTestFactory.ID)
 				.relationVersion(VorgangAttachedItemTestFactory.VERSION).bodyObject(bodyMap).build();
 
-		private Map<String, Object> patchMap = Collections.emptyMap();
+		private final Map<String, Object> patchMap = Collections.emptyMap();
 
 		@BeforeEach
 		void mock() {
@@ -352,7 +369,7 @@ class VorgangAttachedItemEventListenerTest {
 	@DisplayName("Delete item")
 	class TestDeleteItem {
 
-		private Command command = CommandTestFactory.createBuilder().relationId(VorgangAttachedItemTestFactory.ID)
+		private final Command command = CommandTestFactory.createBuilder().relationId(VorgangAttachedItemTestFactory.ID)
 				.relationVersion(VorgangAttachedItemTestFactory.VERSION).build();
 
 		@Nested