diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java
index 0d576aabd573e0bce86a53334a0914068b0a842a..f0c954007b2aabfa4ed9c3af1e3a3499bb323a04 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java
@@ -84,6 +84,7 @@ interface AntragraumNachrichtMapper {
 		return ZonedDateTime.parse(sentAt);
 	}
 
+	@Mapping(target = "sentAtBytes", ignore = true)
 	@Mapping(target = "mergeFrom", ignore = true)
 	@Mapping(target = "clearField", ignore = true)
 	@Mapping(target = "clearOneof", ignore = true)
diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/NachrichtId.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/NachrichtId.java
new file mode 100644
index 0000000000000000000000000000000000000000..dbba4ee93f6c56f350c6968a78f122b5231e8477
--- /dev/null
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/NachrichtId.java
@@ -0,0 +1,17 @@
+package de.ozgcloud.nachrichten.postfach;
+
+import org.mapstruct.ObjectFactory;
+
+import de.ozgcloud.common.datatype.StringBasedValue;
+
+class NachrichtId extends StringBasedValue {
+
+	NachrichtId(String vorgangId) {
+		super(vorgangId);
+	}
+
+	@ObjectFactory
+	public static NachrichtId from(String vorgangId) {
+		return new NachrichtId(vorgangId);
+	}
+}
diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImpl.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImpl.java
index 260983f3386173286bddb7641b19d7ab1e7b8df6..154404a4d8c7fb71f22e51016e004f8f63a0f5d6 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImpl.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImpl.java
@@ -29,7 +29,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Stream;
 
-import org.apache.commons.codec.binary.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.annotation.Primary;
@@ -37,19 +37,24 @@ import org.springframework.stereotype.Service;
 
 import de.ozgcloud.apilib.common.command.OzgCloudCommand;
 import de.ozgcloud.apilib.common.command.OzgCloudCommandService;
+import de.ozgcloud.apilib.user.OzgCloudUserId;
 import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId;
 import de.ozgcloud.nachrichten.NachrichtenManagerConfiguration;
+import de.ozgcloud.nachrichten.attributes.ClientAttributeService;
 import de.ozgcloud.nachrichten.common.vorgang.VorgangService;
+import de.ozgcloud.nachrichten.postfach.PostfachNachricht.Direction;
 
 @Service
 @Primary
 public class PersistPostfachNachrichtServiceImpl implements PersistPostfachNachrichtService {
 
 	private static final String NOT_IMPLEMENTED_MESSAGE = "Not implemented. Use gRPC API instead.";
+
 	static final String CLIENT = "OzgCloud_NachrichtenManager";
 	static final String ITEM_NAME = "PostfachMail";
 
 	static final String CREATE_ATTACHED_ITEM_ORDER = "CREATE_ATTACHED_ITEM";
+	static final String UPDATE_ATTACHED_ITEM_ORDER = "UPDATE_ATTACHED_ITEM";
 
 	static final String CLIENT_FIELD = "client";
 	static final String VORGANG_ID_FIELD = "vorgangId";
@@ -68,6 +73,8 @@ public class PersistPostfachNachrichtServiceImpl implements PersistPostfachNachr
 	private AttachedItemRemoteService attachedItemRemoteService;
 	@Autowired
 	private PostfachNachrichtMapper postfachNachrichtMapper;
+	@Autowired
+	private ClientAttributeService clientAttributeService;
 
 	@Autowired(required = false)
 	@Qualifier("persistPostfachNachrichtByCommandService")
@@ -75,11 +82,75 @@ public class PersistPostfachNachrichtServiceImpl implements PersistPostfachNachr
 
 	@Override
 	public void persistNachricht(Optional<String> userId, PostfachNachricht nachricht) {
-		if (vorgangManagerNachrichtService != null) {
-			vorgangManagerNachrichtService.persistNachricht(userId, nachricht);
-			return;
+		commandService.create(buildNachrichtCommand(userId, nachricht));
+
+		setHasNewPostfachNachricht(nachricht);
+	}
+
+	OzgCloudCommand buildNachrichtCommand(Optional<String> userId, PostfachNachricht nachricht) {
+		return StringUtils.isBlank(nachricht.getId()) ? buildCreateCommand(userId, nachricht) : buildUpdateCommand(userId, nachricht);
+	}
+
+	OzgCloudCommand buildUpdateCommand(Optional<String> userId, PostfachNachricht nachricht) {
+		return createBaseCommandBuilder(userId, nachricht)
+				.order(UPDATE_ATTACHED_ITEM_ORDER)
+				.relationId(NachrichtId.from(nachricht.getId()))
+				.bodyObject(buildUpdateItem(nachricht))
+				.build();
+	}
+
+	private Map<String, Object> buildUpdateItem(PostfachNachricht nachricht) {
+		return Map.of(
+				CLIENT_FIELD, CLIENT,
+				ITEM_FIELD, postfachNachrichtMapper.mapToMap(nachricht));
+	}
+
+	// TODO pruefen ob referencedNachricht existiert
+	// TODO pruefen ob referencedNachricht in dem postfach des anfragenden liegt
+	@Override
+	public String persistAnswer(String referencedNachrichtId, PostfachNachricht answer) {
+		var enhancedAnswer = answer.toBuilder().referencedNachricht(referencedNachrichtId).build();
+		var command = buildCreateCommand(Optional.ofNullable(answer.getCreatedBy()), enhancedAnswer);
+
+		var commandId = commandService.create(command).getId().toString();
+
+		setHasNewPostfachNachricht(answer);
+
+		return commandId;
+	}
+
+	OzgCloudCommand buildCreateCommand(Optional<String> userId, PostfachNachricht nachricht) {
+		return createBaseCommandBuilder(userId, nachricht)
+				.order(CREATE_ATTACHED_ITEM_ORDER)
+				.relationId(OzgCloudVorgangId.from(nachricht.getVorgangId()))
+				.bodyObject(buildCreateItem(nachricht))
+				.build();
+	}
+
+	OzgCloudCommand.OzgCloudCommandBuilder createBaseCommandBuilder(Optional<String> userId, PostfachNachricht nachricht) {
+		var commandBuilder = OzgCloudCommand.builder().vorgangId(OzgCloudVorgangId.from(nachricht.getVorgangId()));
+
+		userId.map(OzgCloudUserId::from).ifPresent(commandBuilder::createdBy);
+
+		return commandBuilder;
+	}
+
+	Map<String, Object> buildCreateItem(PostfachNachricht nachricht) {
+		return Map.of(
+				CLIENT_FIELD, CLIENT,
+				VORGANG_ID_FIELD, nachricht.getVorgangId(),
+				ITEM_NAME_FIELD, ITEM_NAME,
+				ITEM_FIELD, postfachNachrichtMapper.mapToMap(nachricht));
+	}
+
+	void setHasNewPostfachNachricht(PostfachNachricht nachricht) {
+		if (isIncomingNachricht(nachricht)) {
+			clientAttributeService.setHasNewPostfachNachricht(nachricht.getVorgangId());
 		}
-		throw new UnsupportedOperationException(NOT_IMPLEMENTED_MESSAGE);
+	}
+
+	private boolean isIncomingNachricht(PostfachNachricht nachricht) {
+		return nachricht.getDirection() == Direction.IN;
 	}
 
 	@Override
@@ -129,33 +200,6 @@ public class PersistPostfachNachrichtServiceImpl implements PersistPostfachNachr
 				.flatMap(attachedItemRemoteService::findReplyAllowedPostfachNachrichts);
 	}
 
-	// TODO pruefen ob referencedNachricht existiert
-	// TODO pruefen ob referencedNachricht in dem postfach des anfragenden liegt
-	@Override
-	public String persistAnswer(String referencedNachrichtId, PostfachNachricht answer) {
-		return commandService.create(buildCommand(setReferencedNachricht(referencedNachrichtId, answer))).getId().toString();
-	}
-
-	private PostfachNachricht setReferencedNachricht(String referencedNachrichtId, PostfachNachricht answer) {
-		return answer.toBuilder().referencedNachricht(referencedNachrichtId).build();
-	}
-
-	OzgCloudCommand buildCommand(PostfachNachricht nachricht) {
-		return OzgCloudCommand.builder().order(CREATE_ATTACHED_ITEM_ORDER)
-				.vorgangId(OzgCloudVorgangId.from(nachricht.getVorgangId()))
-				.relationId(OzgCloudVorgangId.from(nachricht.getVorgangId()))
-				.bodyObject(buildCommandBody(nachricht))
-				.build();
-	}
-
-	Map<String, Object> buildCommandBody(PostfachNachricht nachricht) {
-		return Map.of(
-				CLIENT_FIELD, CLIENT,
-				VORGANG_ID_FIELD, nachricht.getVorgangId(),
-				ITEM_NAME_FIELD, ITEM_NAME,
-				ITEM_FIELD, postfachNachrichtMapper.mapToMap(nachricht));
-	}
-
 	@Override
 	public Stream<PostfachNachricht> findAnswers(String serviceKontoType, String postfachId, String rueckfrageId) {
 		return findPostfachNachricht(serviceKontoType, postfachId)
diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java
index c2783a9fbe16fea8bf94b4740b5f304e937d3547..7c9ce56fee998de321c44bb1b0ee9348a33466cc 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java
@@ -104,6 +104,7 @@ public abstract class PostfachNachrichtMapper {
 		return (attachments instanceof String attachment && StringUtils.isNotBlank(attachment)) || attachments instanceof Collection;
 	}
 
+	@SuppressWarnings("unchecked")
 	private Iterable<String> getAttachments(Object attachments) {
 		if (attachments instanceof String attachment) {
 			return Collections.singletonList(attachment);
diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachService.java
index bf5ef519eff7a69d61e9b443a1a6dbb67f049992..90d28db00fc2502aa4397ce64077e7769edbcd33 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachService.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachService.java
@@ -128,7 +128,6 @@ class PostfachService {
 
 	private void persistReceivedMail(PostfachNachricht nachricht) {
 		persistMail(Optional.empty(), nachricht);
-		clientAttributeService.setHasNewPostfachNachricht(nachricht.getVorgangId());
 
 		postfachRemoteService.deleteMessage(nachricht.getMessageId());
 	}
diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplTest.java
index 02d2d73f90b8d8147e58adcb2c19a5117aa37c0f..844c0e77fa1221167695b1c49e89ca594e2b8fa6 100644
--- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplTest.java
+++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplTest.java
@@ -5,6 +5,7 @@ import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
 import java.util.Map;
+import java.util.Optional;
 import java.util.UUID;
 import java.util.stream.Stream;
 
@@ -21,7 +22,9 @@ import org.mockito.Spy;
 import de.ozgcloud.apilib.common.command.OzgCloudCommand;
 import de.ozgcloud.apilib.common.command.OzgCloudCommandId;
 import de.ozgcloud.apilib.common.command.OzgCloudCommandService;
+import de.ozgcloud.nachrichten.attributes.ClientAttributeService;
 import de.ozgcloud.nachrichten.common.vorgang.VorgangService;
+import de.ozgcloud.nachrichten.postfach.PostfachNachricht.Direction;
 import de.ozgcloud.nachrichten.postfach.osi.MessageTestFactory;
 
 class PersistPostfachNachrichtServiceImplTest {
@@ -37,6 +40,221 @@ class PersistPostfachNachrichtServiceImplTest {
 	private AttachedItemRemoteService attachedItemRemoteService;
 	@Mock
 	private PostfachNachrichtMapper postfachNachrichtMapper;
+	@Mock
+	private ClientAttributeService clientAttributeService;
+
+	@DisplayName("Persist nachricht")
+	@Nested
+	class TestPersistNachricht {
+
+		private final String userId = UUID.randomUUID().toString();
+		private final Optional<String> userIdOpt = Optional.of(userId);
+
+		private final PostfachNachricht nachricht = PostfachNachrichtTestFactory.createBuilder().id(null).build();
+
+		private final OzgCloudCommand command = OzgCloudCommand.builder().build();
+
+		@BeforeEach
+		void mock() {
+			doReturn(command).when(service).buildNachrichtCommand(any(), any());
+		}
+
+		@Test
+		void shouldBuildNachrichtCommand() {
+			persistNachricht();
+
+			verify(service).buildNachrichtCommand(userIdOpt, nachricht);
+		}
+
+		@Test
+		void shouldCallCommandService() {
+			persistNachricht();
+
+			verify(commandService).create(command);
+		}
+
+		@Test
+		void shouldSetHasNewPostfachNachricht() {
+			persistNachricht();
+
+			verify(service).setHasNewPostfachNachricht(nachricht);
+		}
+
+		private void persistNachricht() {
+			service.persistNachricht(userIdOpt, nachricht);
+		}
+	}
+
+	@DisplayName("Create base command builder")
+	@Nested
+	class TestCreateBaseComandBuilder {
+
+		private final String userId = UUID.randomUUID().toString();
+		private final Optional<String> userIdOpt = Optional.of(userId);
+
+		private final PostfachNachricht nachricht = PostfachNachrichtTestFactory.createBuilder().id(null).build();
+
+		@Test
+		void shouldContainVorgangId() {
+			var command = service.createBaseCommandBuilder(userIdOpt, nachricht).build();
+
+			assertThat(command.getVorgangId()).hasToString(MessageTestFactory.VORGANG_ID);
+		}
+
+		@DisplayName("created by")
+		@Nested
+		class TestCreatedBy {
+
+			@Test
+			void shouldBeAddIfIsPresent() {
+				var command = service.createBaseCommandBuilder(userIdOpt, nachricht).build();
+
+				assertThat(command.getCreatedBy()).hasToString(userId);
+			}
+
+			@Test
+			void shouldNotBeAddIfMissing() {
+				var command = service.createBaseCommandBuilder(Optional.empty(), nachricht).build();
+
+				assertThat(command.getCreatedBy()).isNull();
+			}
+		}
+	}
+
+	@DisplayName("Build nachricht command")
+	@Nested
+	class TestBuildNachrichtCommand {
+
+		private final String userId = UUID.randomUUID().toString();
+		private final Optional<String> userIdOpt = Optional.of(userId);
+
+		private final OzgCloudCommand command = OzgCloudCommand.builder().build();
+
+		@DisplayName("on present id")
+		@Nested
+		class TestOnPresentId {
+
+			private final PostfachNachricht nachricht = PostfachNachrichtTestFactory.create();
+
+			@BeforeEach
+			void mock() {
+				doReturn(command).when(service).buildUpdateCommand(any(), any());
+			}
+
+			@Test
+			void shouldBuildUpdateCommand() {
+				service.buildNachrichtCommand(userIdOpt, nachricht);
+
+				verify(service).buildUpdateCommand(userIdOpt, nachricht);
+			}
+
+			@Test
+			void shouldReturnValue() {
+				var nachrichtCommand = service.buildNachrichtCommand(userIdOpt, nachricht);
+
+				assertThat(nachrichtCommand).isEqualTo(command);
+			}
+		}
+
+		@DisplayName("on missing id")
+		@Nested
+		class TestOnMissingId {
+
+			private final PostfachNachricht nachricht = PostfachNachrichtTestFactory.createBuilder().id(null).build();
+
+			@BeforeEach
+			void mock() {
+				doReturn(command).when(service).buildCreateCommand(any(), any());
+			}
+
+			@Test
+			void shouldBuildCreateCommand() {
+				service.buildNachrichtCommand(userIdOpt, nachricht);
+
+				verify(service).buildCreateCommand(userIdOpt, nachricht);
+			}
+
+			@Test
+			void shouldReturnValue() {
+				var nachrichtCommand = service.buildNachrichtCommand(userIdOpt, nachricht);
+
+				assertThat(nachrichtCommand).isEqualTo(command);
+			}
+		}
+
+		@DisplayName("for update")
+		@Nested
+		class TestBuildUpdateCommand {
+
+			private final OzgCloudCommand.OzgCloudCommandBuilder commandBuilder = OzgCloudCommand.builder();
+
+			private final PostfachNachricht nachricht = PostfachNachrichtTestFactory.create();
+
+			@BeforeEach
+			void mock() {
+				doReturn(commandBuilder).when(service).createBaseCommandBuilder(any(), any());
+			}
+
+			@Test
+			void shouldCallCreateBaseCommandBuilder() {
+				buildUpdateCommand();
+
+				verify(service).createBaseCommandBuilder(userIdOpt, nachricht);
+			}
+
+			@Test
+			void shouldContainOrder() {
+				var command = buildUpdateCommand();
+
+				assertThat(command.getOrder()).isEqualTo(PersistPostfachNachrichtServiceImpl.UPDATE_ATTACHED_ITEM_ORDER);
+			}
+
+			@Test
+			void shouldContainRelationId() {
+				var command = buildUpdateCommand();
+
+				assertThat(command.getRelationId()).hasToString(PostfachNachrichtTestFactory.ID);
+			}
+
+			@DisplayName("bodyObject")
+			@Nested
+			class TestBodyObject {
+
+				private final Map<String, Object> itemMap = Map.of("dummyKey", "dummyValue");
+
+				@BeforeEach
+				void mock() {
+					when(postfachNachrichtMapper.mapToMap(any())).thenReturn(itemMap);
+				}
+
+				@Test
+				void shouldContainClient() {
+					var command = buildUpdateCommand();
+
+					assertThat(command.getBodyObject()).containsEntry(PersistPostfachNachrichtServiceImpl.CLIENT_FIELD,
+							PersistPostfachNachrichtServiceImpl.CLIENT);
+				}
+
+				@Test
+				void shouldCallMapper() {
+					buildUpdateCommand();
+
+					verify(postfachNachrichtMapper).mapToMap(nachricht);
+				}
+
+				@Test
+				void shouldContainItem() {
+					var command = buildUpdateCommand();
+
+					assertThat(command.getBodyObject()).containsEntry(PersistPostfachNachrichtServiceImpl.ITEM_FIELD, itemMap);
+				}
+			}
+
+			private OzgCloudCommand buildUpdateCommand() {
+				return service.buildUpdateCommand(userIdOpt, nachricht);
+			}
+		}
+	}
 
 	@DisplayName("Persist answer")
 	@Nested
@@ -46,83 +264,98 @@ class PersistPostfachNachrichtServiceImplTest {
 		private ArgumentCaptor<PostfachNachricht> postfachNachrichtCaptor;
 
 		private final OzgCloudCommand command = OzgCloudCommand.builder().id(OzgCloudCommandId.from(UUID.randomUUID().toString())).build();
-		private final PostfachNachricht postfachNachricht = PostfachNachrichtTestFactory.createBuilder().referencedNachricht(null).build();
+		private final PostfachNachricht nachricht = PostfachNachrichtTestFactory.createBuilder().referencedNachricht(null).build();
 
 		@BeforeEach
 		void mock() {
-			doReturn(command).when(service).buildCommand(any());
+			doReturn(command).when(service).buildCreateCommand(any(), any());
 			when(commandService.create(any())).thenReturn(command);
 		}
 
 		@Test
 		void shouldCallBuildCommand() {
-			service.persistAnswer(GrpcPostfachMailTestFactory.REFERENCED_NACHRICHT_ID, postfachNachricht);
+			persistAnswer();
 
-			verify(service).buildCommand(postfachNachrichtCaptor.capture());
+			verify(service).buildCreateCommand(eq(Optional.of(PostfachNachrichtTestFactory.CREATED_BY)), postfachNachrichtCaptor.capture());
 			assertThat(postfachNachrichtCaptor.getValue().getReferencedNachricht()).isEqualTo(GrpcPostfachMailTestFactory.REFERENCED_NACHRICHT_ID);
 		}
 
 		@Test
 		void shouldCallCommandService() {
-			service.persistAnswer(GrpcPostfachMailTestFactory.REFERENCED_NACHRICHT_ID, postfachNachricht);
+			persistAnswer();
 
 			verify(commandService).create(command);
 		}
+
+		@Test
+		void shouldSetHasNewPostfachNachricht() {
+			persistAnswer();
+
+			verify(service).setHasNewPostfachNachricht(nachricht);
+		}
+
+		void persistAnswer() {
+			service.persistAnswer(GrpcPostfachMailTestFactory.REFERENCED_NACHRICHT_ID, nachricht);
+		}
 	}
 
-	@DisplayName("Build command")
+	@DisplayName("Build create command")
 	@Nested
-	class TestBuildCommand {
+	class TestBuildCreateCommand {
 
-		private final PostfachNachricht postfachNachricht = PostfachNachrichtTestFactory.create();
+		private final OzgCloudCommand.OzgCloudCommandBuilder commandBuilder = OzgCloudCommand.builder();
+
+		private final String userId = UUID.randomUUID().toString();
+		private final Optional<String> userIdOpt = Optional.of(userId);
+
+		private final PostfachNachricht nachricht = PostfachNachrichtTestFactory.createBuilder().id(null).build();
+		private final Map<String, Object> itemMap = Map.of("dummyKey", "dummyValue");
 
 		@BeforeEach
 		void mock() {
-			doReturn(Map.of("dummyKey", "dummyValue")).when(service).buildCommandBody(any());
+			doReturn(itemMap).when(service).buildCreateItem(any());
+			doReturn(commandBuilder).when(service).createBaseCommandBuilder(any(), any());
 		}
 
 		@Test
-		void shouldHaveSetOrder() {
-			var command = service.buildCommand(postfachNachricht);
+		void shouldCallCreateBaseCommandBuilder() {
+			buildCreateCommand();
 
-			assertThat(command.getOrder()).isEqualTo(PersistPostfachNachrichtServiceImpl.CREATE_ATTACHED_ITEM_ORDER);
+			verify(service).createBaseCommandBuilder(userIdOpt, nachricht);
 		}
 
 		@Test
-		void shouldHaveSetVorgangId() {
-			var command = service.buildCommand(postfachNachricht);
+		void shouldContainOrder() {
+			var command = buildCreateCommand();
 
-			assertThat(command.getVorgangId()).hasToString(MessageTestFactory.VORGANG_ID);
+			assertThat(command.getOrder()).isEqualTo(PersistPostfachNachrichtServiceImpl.CREATE_ATTACHED_ITEM_ORDER);
 		}
 
 		@Test
-		void shouldHaveSetRelationId() {
-			var command = service.buildCommand(postfachNachricht);
+		void shouldContainRelationId() {
+			var command = buildCreateCommand();
 
 			assertThat(command.getRelationId()).hasToString(MessageTestFactory.VORGANG_ID);
 		}
 
 		@Test
-		void shouldCallBuildCommandBody() {
-			service.buildCommand(postfachNachricht);
+		void shouldContainBodyObject() {
+			var command = buildCreateCommand();
 
-			verify(service).buildCommandBody(postfachNachricht);
+			assertThat(command.getBodyObject()).isEqualTo(itemMap);
 		}
 
-		@Test
-		void shouldHaveSetBodyObjet() {
-			var command = service.buildCommand(postfachNachricht);
-
-			assertThat(command.getBodyObject()).isNotEmpty();
+		private OzgCloudCommand buildCreateCommand() {
+			return service.buildCreateCommand(userIdOpt, nachricht);
 		}
 	}
 
-	@DisplayName("Build command body")
+	@DisplayName("Build create item")
 	@Nested
 	class TestBuildCommandBody {
 
 		private final PostfachNachricht postfachNachricht = PostfachNachrichtTestFactory.create();
-		private Map<String, Object> postfachNachrichtAsMap = Map.of("dummyKey", "dummyValue");
+		private final Map<String, Object> postfachNachrichtAsMap = Map.of("dummyKey", "dummyValue");
 
 		@BeforeEach
 		void mock() {
@@ -131,40 +364,63 @@ class PersistPostfachNachrichtServiceImplTest {
 
 		@Test
 		void shouldHaveSetClient() {
-			var body = service.buildCommandBody(postfachNachricht);
+			var body = service.buildCreateItem(postfachNachricht);
 
 			assertThat(body).containsEntry(PersistPostfachNachrichtServiceImpl.CLIENT_FIELD, PersistPostfachNachrichtServiceImpl.CLIENT);
 		}
 
 		@Test
 		void shouldHaveSetVorgangId() {
-			var body = service.buildCommandBody(postfachNachricht);
+			var body = service.buildCreateItem(postfachNachricht);
 
 			assertThat(body).containsEntry(PersistPostfachNachrichtServiceImpl.VORGANG_ID_FIELD, MessageTestFactory.VORGANG_ID);
 		}
 
 		@Test
 		void shouldHaveSetItemName() {
-			var body = service.buildCommandBody(postfachNachricht);
+			var body = service.buildCreateItem(postfachNachricht);
 
 			assertThat(body).containsEntry(PersistPostfachNachrichtServiceImpl.ITEM_NAME_FIELD, PersistPostfachNachrichtServiceImpl.ITEM_NAME);
 		}
 
 		@Test
 		void shouldCallMapper() {
-			service.buildCommandBody(postfachNachricht);
+			service.buildCreateItem(postfachNachricht);
 
 			verify(postfachNachrichtMapper).mapToMap(postfachNachricht);
 		}
 
 		@Test
 		void shouldHaveSetItem() {
-			var body = service.buildCommandBody(postfachNachricht);
+			var body = service.buildCreateItem(postfachNachricht);
 
 			assertThat(body).containsEntry(PersistPostfachNachrichtServiceImpl.ITEM_FIELD, postfachNachrichtAsMap);
 		}
 	}
 
+	@DisplayName("Set has new postfach nachricht")
+	@Nested
+	class TestSetHasNewPostfachNachricht {
+
+		@Test
+		void shouldCallClientAttributeServiceIfIsIncomingNachricht() {
+			var incomingNachricht = PostfachNachrichtTestFactory.createBuilder().direction(Direction.IN).build();
+
+			service.setHasNewPostfachNachricht(incomingNachricht);
+
+			verify(clientAttributeService).setHasNewPostfachNachricht(MessageTestFactory.VORGANG_ID);
+		}
+
+		@Test
+		void shouldNOTCallClientAttributeServiceIfIsOutgoindNachricht() {
+			var outgoingNachricht = PostfachNachrichtTestFactory.createBuilder().direction(Direction.OUT).build();
+
+			service.setHasNewPostfachNachricht(outgoingNachricht);
+
+			verify(clientAttributeService, never()).setHasNewPostfachNachricht(any());
+		}
+	}
+
 	@DisplayName("Find answers")
 	@Nested
 	class TestFindAnswers {
diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachServiceTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachServiceTest.java
index 495a14faa0c0a0889dae79daf0d11a6703860748..ac8d6773fd1e363c8d9552a3307ea4a11c3c613d 100644
--- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachServiceTest.java
+++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachServiceTest.java
@@ -399,20 +399,6 @@ class PostfachServiceTest {
 			verify(postfachRemoteService).deleteMessage(MessageTestFactory.MESSAGE_ID);
 		}
 
-		@Test
-		void shouldSetNewPostfachNachricht() {
-			service.fetchAndPersistReplies();
-
-			verify(clientAttributeService).setHasNewPostfachNachricht(MessageTestFactory.VORGANG_ID);
-		}
-
-		@Test
-		void shouldCallClientAttributeService() {
-			service.fetchAndPersistReplies();
-
-			verify(clientAttributeService).setHasNewPostfachNachricht(MessageTestFactory.VORGANG_ID);
-		}
-
 		@Test
 		void shouldThrowNotConfiguredException() {
 			doReturn(false).when(service).isPostfachConfigured();