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 f7c2600ff4cac30a5464e5db0967ae506d68f14e..6df32e72ef34ffea7b8eeedf601d29d1527cc7d9 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
@@ -30,9 +30,6 @@ import java.util.Set;
 import java.util.function.Predicate;
 import java.util.stream.Stream;
 
-import jakarta.annotation.PostConstruct;
-import jakarta.validation.Valid;
-
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationEventPublisher;
@@ -46,6 +43,8 @@ import de.ozgcloud.nachrichten.postfach.PostfachNachricht.Direction;
 import de.ozgcloud.nachrichten.postfach.PostfachNachricht.ReplyOption;
 import de.ozgcloud.nachrichten.postfach.osi.OsiPostfachServerProcessException;
 import de.ozgcloud.vorgang.callcontext.CurrentUserService;
+import jakarta.annotation.PostConstruct;
+import jakarta.validation.Valid;
 import lombok.NonNull;
 import lombok.extern.log4j.Log4j2;
 
@@ -54,8 +53,8 @@ import lombok.extern.log4j.Log4j2;
 @Validated
 class PostfachService {
 
-	static final Predicate<PostfachNachricht> IS_MUK_ANTWORT = nachricht -> StringUtils.isEmpty(nachricht.getVorgangId()) && StringUtils.isNotEmpty(
-	  nachricht.getReferencedNachricht());
+	static final Predicate<PostfachNachricht> IS_MUK_ANSWER = 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");
@@ -88,9 +87,9 @@ class PostfachService {
 
 	public void saveDraft(String vorgangId, PostfachNachricht nachricht) {
 		persistMail(userService.getUser().getUserId(),
-		  nachricht.toBuilder().vorgangId(vorgangId)
-			.createdBy(userService.getUser().getUserId().orElse(null))
-			.build());
+				nachricht.toBuilder().vorgangId(vorgangId)
+						.createdBy(userService.getUser().getUserId().orElse(null))
+						.build());
 	}
 
 	public void sendMail(String commandId, String userId, @Valid PostfachNachricht mail) {
@@ -100,15 +99,15 @@ class PostfachService {
 
 	PostfachNachricht addMailSentInformation(PostfachNachricht mail, SendPostfachNachrichtResponse sendResponse) {
 		return mail.toBuilder().sentAt(ZonedDateTime.now()).sentSuccessful(sendResponse.isSentSuccessful())
-		  .messageCode(sendResponse.getMessageCode().getMessageCode())
-		  .build();
+				.messageCode(sendResponse.getMessageCode().getMessageCode())
+				.build();
 	}
 
 	void persistSentMail(@NonNull String userId, PostfachNachricht mail) {
 		persistMail(Optional.of(userId), mail.toBuilder()
-		  .direction(Direction.OUT)
-		  .createdAt(ZonedDateTime.now().withNano(0)).createdBy(userId)
-		  .build());
+				.direction(Direction.OUT)
+				.createdAt(ZonedDateTime.now().withNano(0)).createdBy(userId)
+				.build());
 
 	}
 
@@ -125,19 +124,18 @@ class PostfachService {
 	}
 
 	private void persistReceivedMail(PostfachNachricht nachricht) {
-		if (IS_MUK_ANTWORT.test(nachricht)) {
-			var persistedNachricht = getNachricht(nachricht.getReferencedNachricht());
-			nachricht = nachricht.toBuilder().vorgangId(persistedNachricht.getVorgangId()).build();
+		if (IS_MUK_ANSWER.test(nachricht)) {
+			nachricht = linkToVorgang(nachricht);
 		}
 
 		persistMail(Optional.empty(), nachricht);
 
 		postfachRemoteService.deleteMessage(nachricht.getMessageId());
-
 	}
 
-	PostfachNachricht getNachricht(String id) {
-		return mapper.fromMapToPostfachMail(persistingService.getById(id));
+	PostfachNachricht linkToVorgang(PostfachNachricht nachricht) {
+		var persistedNachricht = mapper.fromMapToPostfachMail(persistingService.getById(nachricht.getReferencedNachricht()));
+		return nachricht.toBuilder().vorgangId(persistedNachricht.getVorgangId()).build();
 	}
 
 	void persistMail(Optional<String> userId, PostfachNachricht mail) {
@@ -220,8 +218,8 @@ class PostfachService {
 
 	Map<String, Object> createResendPatchMap(SendPostfachNachrichtResponse sendResponse) {
 		return Map.of(PostfachNachricht.FIELD_SENT_AT, ZonedDateTime.now().withNano(0).toString(),
-		  PostfachNachricht.FIELD_SENT_SUCCESSFUL, sendResponse.isSentSuccessful(),
-		  PostfachNachricht.FIELD_MESSAGE_CODE, sendResponse.getMessageCode().getMessageCode());
+				PostfachNachricht.FIELD_SENT_SUCCESSFUL, sendResponse.isSentSuccessful(),
+				PostfachNachricht.FIELD_MESSAGE_CODE, sendResponse.getMessageCode().getMessageCode());
 	}
 
 	private void patchMail(String postfachMailId, Map<String, Object> propertyMap) {
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 e705bd9641d97c0303992be796df0cd9623a4901..bbd0a7960db399403af064c593b498dd42c0276c 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
@@ -22,6 +22,7 @@
  */
 package de.ozgcloud.nachrichten.postfach;
 
+import static de.ozgcloud.nachrichten.postfach.osi.MessageTestFactory.*;
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
@@ -155,7 +156,7 @@ class PostfachServiceTest {
 		@Test
 		void shouldAddMailSentInformation() {
 			var postfachMail = service.addMailSentInformation(PostfachNachrichtTestFactory.createBuilder().sentAt(null).sentSuccessful(null).build(),
-			  SendPostfachNachrichtResponseTestFactory.create());
+					SendPostfachNachrichtResponseTestFactory.create());
 
 			assertThat(postfachMail.getSentAt()).isNotNull();
 			assertThat(postfachMail.getSentSuccessful()).isEqualTo(SendPostfachNachrichtResponseTestFactory.SENT_SUCCESSFUL);
@@ -493,7 +494,7 @@ class PostfachServiceTest {
 
 			assertThat(map).containsKey(PostfachNachricht.FIELD_SENT_AT);
 			assertThat(ZonedDateTime.parse(map.get(PostfachNachricht.FIELD_SENT_AT).toString())).isCloseTo(ZonedDateTime.now(),
-			  within(2, ChronoUnit.SECONDS));
+					within(2, ChronoUnit.SECONDS));
 		}
 
 		@Test
@@ -508,7 +509,7 @@ class PostfachServiceTest {
 			var map = service.createResendPatchMap(SendPostfachNachrichtResponseTestFactory.create());
 
 			assertThat(map).containsEntry(PostfachNachricht.FIELD_MESSAGE_CODE,
-			  SendPostfachNachrichtResponseTestFactory.MESSAGE_CODE.getMessageCode());
+					SendPostfachNachrichtResponseTestFactory.MESSAGE_CODE.getMessageCode());
 		}
 	}
 
@@ -594,7 +595,7 @@ class PostfachServiceTest {
 				void mockService() {
 					when(postfachRemoteService.getPostfachType()).thenReturn(PostfachTestFactory.POSTFACH_TYPE);
 					doThrow(new PostfachException(MESSAGE, PostfachMessageCode.SEND_SUCCESSFUL_MESSAGE_CODE)).when(postfachRemoteService)
-					  .sendMessage(any());
+							.sendMessage(any());
 				}
 
 				@Test
@@ -796,41 +797,49 @@ class PostfachServiceTest {
 	}
 
 	@Nested
-	class TestSavingMukAntwort {
+	class TestSavingMukAnswer {
 		private final String refId = ObjectId.get().toHexString();
-		private PostfachNachricht antwort;
-
-		@BeforeEach
-		void setup() {
-			antwort = PostfachNachrichtTestFactory.createBuilder().vorgangId(null).referencedNachricht(refId).build();
-		}
+		private PostfachNachricht answer = PostfachNachrichtTestFactory.createBuilder().vorgangId(null).referencedNachricht(refId).build();
 
 		@Test
-		void shouldIdentifyAsAntwort() {
-			assertThat(PostfachService.IS_MUK_ANTWORT.test(antwort)).isTrue();
+		void shouldIdentifyAsAnswer() {
+			var isMukAnswer = PostfachService.IS_MUK_ANSWER.test(answer);
+
+			assertThat(isMukAnswer).isTrue();
 		}
 
 		@Test
-		void shouldNotIdentifyAsAntwort() {
-			assertThat(PostfachService.IS_MUK_ANTWORT.test(PostfachNachrichtTestFactory.create())).isFalse();
+		void shouldNotIdentifyAsAnswer() {
+			var isMukAnswer = PostfachService.IS_MUK_ANSWER.test(PostfachNachrichtTestFactory.create());
+
+			assertThat(isMukAnswer).isFalse();
 		}
 
 		@Nested
-		class TestLinkingMukAntwortToVorgang {
+		class TestLinkingMukAnswerToVorgang {
 			@BeforeEach
 			void setup() {
-				antwort = PostfachNachrichtTestFactory.createBuilder().vorgangId(null).referencedNachricht(refId).build();
-				when(service.isPostfachConfigured()).thenReturn(Boolean.TRUE);
-				when(postfachRemoteService.getAllMessages()).thenReturn(Stream.of(antwort));
+				answer = PostfachNachrichtTestFactory.createBuilder().vorgangId(null).referencedNachricht(refId).build();
 			}
 
 			@Test
 			void shouldLoadPersistedNachricht() {
+				when(service.isPostfachConfigured()).thenReturn(Boolean.TRUE);
+				when(postfachRemoteService.getAllMessages()).thenReturn(Stream.of(answer));
 				when(persistingService.getById(anyString())).thenReturn(PostfachNachrichtTestFactory.asMap());
 
 				service.fetchAndPersistReplies();
 
-				verify(service).getNachricht(anyString());
+				verify(persistingService).getById(any());
+			}
+
+			@Test
+			void shouldSetVorgangId() {
+				when(persistingService.getById(anyString())).thenReturn(PostfachNachrichtTestFactory.asMap());
+
+				var linkedNachricht = service.linkToVorgang(answer);
+
+				assertThat(linkedNachricht.getVorgangId()).isEqualTo(VORGANG_ID);
 			}
 		}
 	}
diff --git a/nachrichten-manager-server/src/test/resources/bayernid-test-enc.crt b/nachrichten-manager-server/src/test/resources/bayernid-test-enc.crt
new file mode 100644
index 0000000000000000000000000000000000000000..fe04bc8d5ad148f0e84ca1c98160c111f3aeba5d
--- /dev/null
+++ b/nachrichten-manager-server/src/test/resources/bayernid-test-enc.crt
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDsTCCApmgAwIBAgIUdw/27be5+2vj+MhGtoJjDsMsdDEwDQYJKoZIhvcNAQEL
+BQAwaDELMAkGA1UEBhMCREUxDzANBgNVBAgMBkJheWVybjERMA8GA1UEBwwITXVl
+bmNoZW4xDzANBgNVBAoMBm1nbSB0cDEkMCIGCSqGSIb3DQEJARYVamVucy5yZWVz
+ZUBtZ20tdHAuY29tMB4XDTI0MDExNjEyMjI0OVoXDTI1MDExNTEyMjI0OVowaDEL
+MAkGA1UEBhMCREUxDzANBgNVBAgMBkJheWVybjERMA8GA1UEBwwITXVlbmNoZW4x
+DzANBgNVBAoMBm1nbSB0cDEkMCIGCSqGSIb3DQEJARYVamVucy5yZWVzZUBtZ20t
+dHAuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/HBBWBDSrEgd
+wXkSy15V00EaVTyLgc4vh/JcDiGIYZSqmcMwBd+B1u36xbdBf/duEtCUymMNP48O
+MjgFZtR6xn0meuR4NR6Ykn9mYGdU/GhldGuGv9XLAEAkVuTlo0H1QYyBS/6JwKQo
+SsHDkJ3YwDwKcyOt7QtpSadRZjQEN3gDvWoRYjgXTxj2I1ovllmi0zOHsFi5PBIu
+iPWUdJvBrHxpD/XVS9R/qzJpHPu3bjQ6UVRmhiZCUF7H5F/PQNwk+qXvjV0ooBeS
+WWO5hywhk4OP4QEgbYMOSo20YukYX8TJEsum1pwIcQrw7kW4GyKaAycyRsa1fbM3
+tEkj+TiBKwIDAQABo1MwUTAdBgNVHQ4EFgQUfDL/6R33SJodsONCvxKy96AtU18w
+HwYDVR0jBBgwFoAUfDL/6R33SJodsONCvxKy96AtU18wDwYDVR0TAQH/BAUwAwEB
+/zANBgkqhkiG9w0BAQsFAAOCAQEA+PCnvSwKU+bArTCIg5lfrwONbzKkjvPUymDN
+YX3oj1wVEN75hNf0RD7Rr0//ZYT3Rt0G193gjDcH1gbGIYhMLeGGkxEous2l3O+p
+RIQRR+hprjr6HzF8IphaJy1RbDwyGsXyLcyOylPL4cX9IjUdhklHiLZusBq95LSy
+w7hsCOAL2+vn816O7yv+28EWXXbnP2XEUjW36nxcZvR6oTJUplXyHRuuJJTsOxGR
+NuXA3UVgNbkdm1HnoSGpnsGdUKsUFoEmEJkcSdQRwxeH21WzYGOZmKMcvx2gObaS
+P8tafWh5z4Jx+Z7z5WP72Jt44/lnVjaV8aGo0KHXwgqQOtYftQ==
+-----END CERTIFICATE-----
diff --git a/nachrichten-manager-server/src/test/resources/bayernid-test-enc.key b/nachrichten-manager-server/src/test/resources/bayernid-test-enc.key
new file mode 100644
index 0000000000000000000000000000000000000000..8d1c8b69c3fce7bea45c73efd06983e3c419a92f
--- /dev/null
+++ b/nachrichten-manager-server/src/test/resources/bayernid-test-enc.key
@@ -0,0 +1 @@
+