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 73439cf67fd9959222f2e8ae78b84aa641f62a41..f7c2600ff4cac30a5464e5db0967ae506d68f14e 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
@@ -22,8 +22,6 @@
  */
 package de.ozgcloud.nachrichten.postfach;
 
-import static de.ozgcloud.nachrichten.postfach.PersistPostfachNachrichtServiceImpl.*;
-
 import java.time.ZonedDateTime;
 import java.util.EnumSet;
 import java.util.Map;
@@ -41,7 +39,6 @@ import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
-import de.ozgcloud.common.errorhandling.TechnicalException;
 import de.ozgcloud.nachrichten.antragraum.AntragraumService;
 import de.ozgcloud.nachrichten.attributes.ClientAttributeService;
 import de.ozgcloud.nachrichten.info.InfoManagerService;
@@ -57,16 +54,13 @@ import lombok.extern.log4j.Log4j2;
 @Validated
 class PostfachService {
 
-	private static final Predicate<PostfachNachricht> IS_FROM_HUMAN_USER = nachricht -> !StringUtils.startsWith(nachricht.getCreatedBy(), "system");
 	static final Predicate<PostfachNachricht> IS_MUK_ANTWORT = nachricht -> StringUtils.isEmpty(nachricht.getVorgangId()) && StringUtils.isNotEmpty(
 	  nachricht.getReferencedNachricht());
+	static final Set<ReplyOption> REPLY_POSSIBLE_OPTION = EnumSet.of(ReplyOption.POSSIBLE, ReplyOption.MANDATORY);
+	private static final Predicate<PostfachNachricht> IS_FROM_HUMAN_USER = nachricht -> !StringUtils.startsWith(nachricht.getCreatedBy(), "system");
 	private static final Set<String> POSTFACH_TYPES_WITH_ANTRAGSRAUM = Set.of("BayernId");
-
 	@Autowired(required = false)
 	private PostfachRemoteService postfachRemoteService;
-
-	static final Set<ReplyOption> REPLY_POSSIBLE_OPTION = EnumSet.of(ReplyOption.POSSIBLE, ReplyOption.MANDATORY);
-
 	@Autowired
 	private PostfachNachrichtMapper mapper;
 
@@ -131,27 +125,19 @@ class PostfachService {
 	}
 
 	private void persistReceivedMail(PostfachNachricht nachricht) {
-		Optional<PostfachNachricht> linkedNachrichtOptional = Optional.of(nachricht);
 		if (IS_MUK_ANTWORT.test(nachricht)) {
-			var vorgangMapOptional = findById(nachricht.getReferencedNachricht());
-			linkedNachrichtOptional = vorgangMapOptional.map(
-				vorgangMap -> Optional.of(setVorgangId((String) vorgangMap.get(VORGANG_ID_FIELD), nachricht)))
-			  .orElseThrow();
+			var persistedNachricht = getNachricht(nachricht.getReferencedNachricht());
+			nachricht = nachricht.toBuilder().vorgangId(persistedNachricht.getVorgangId()).build();
 		}
 
-		linkedNachrichtOptional.ifPresent(linkedNachricht -> {
-			persistMail(Optional.empty(), linkedNachricht);
+		persistMail(Optional.empty(), nachricht);
 
-			postfachRemoteService.deleteMessage(linkedNachricht.getMessageId());
-		});
-	}
+		postfachRemoteService.deleteMessage(nachricht.getMessageId());
 
-	PostfachNachricht setVorgangId(String vorgangId, PostfachNachricht nachricht) {
-		if (StringUtils.isNotEmpty(vorgangId)) {
-			return nachricht.toBuilder().vorgangId(vorgangId).build();
-		}
+	}
 
-		throw new TechnicalException("Cannot link nachricht [" + nachricht + "] to vorgang because vorgangId is empty");
+	PostfachNachricht getNachricht(String id) {
+		return mapper.fromMapToPostfachMail(persistingService.getById(id));
 	}
 
 	void persistMail(Optional<String> userId, PostfachNachricht mail) {