diff --git a/vorgang-manager-server/pom.xml b/vorgang-manager-server/pom.xml
index 62d56c8cfa1e73355eb051085c6486c3c6341cd1..709bce2c579d403433d03e3f9205f08e199488fe 100644
--- a/vorgang-manager-server/pom.xml
+++ b/vorgang-manager-server/pom.xml
@@ -55,7 +55,7 @@
 		<user-manager-interface.version>2.9.0</user-manager-interface.version>
 		<bescheid-manager.version>1.19.1</bescheid-manager.version>
 		<processor-manager.version>0.4.1</processor-manager.version>
-		<nachrichten-manager.version>2.12.1</nachrichten-manager.version>
+		<nachrichten-manager.version>2.13.0-SNAPSHOT</nachrichten-manager.version>
 		<ozgcloud-starter.version>0.12.0</ozgcloud-starter.version>
 		<notification-manager.version>2.11.1</notification-manager.version>
 		<collaboration-manager.version>0.3.0</collaboration-manager.version>
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/common/errorhandling/ExceptionHandler.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/common/errorhandling/ExceptionHandler.java
index 11318a0cf33d16cc95296cef55b61c1f08a878b8..356ec36f45ceee2bd5dcbd91180b9ea20b54d23a 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/common/errorhandling/ExceptionHandler.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/common/errorhandling/ExceptionHandler.java
@@ -102,6 +102,16 @@ public class ExceptionHandler {
 		return Status.INTERNAL.withDescription(message).withCause(e.getCause());
 	}
 
+	@GrpcExceptionHandler
+	public StatusException handleNotFoundException(de.ozgcloud.apilib.common.errorhandling.NotFoundException e) {
+		var exceptionId = createExceptionId();
+		var messageWithExceptionId = ExceptionUtil.formatMessageWithExceptionId(e.getMessage(), exceptionId);
+		LOG.error("Grpc internal server error: {}", messageWithExceptionId, e);
+
+		var status = Status.NOT_FOUND.withDescription(messageWithExceptionId).withCause(e.getCause());
+		return createStatusException(status, buildMetadata(exceptionId));
+	}
+
 	private Metadata buildMetadata(String exceptionId) {
 		var metadata = new Metadata();
 		addExceptionId(metadata, exceptionId);
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumITCase.java
index 1488e8f8dd4f1baef4b2831081ccd6a078a6ef36..87606c0d30ea0ce212e59a73f4caf7a7734cf155 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumITCase.java
@@ -24,6 +24,7 @@ import org.springframework.data.mongodb.core.MongoOperations;
 import org.springframework.security.test.context.support.WithMockUser;
 import org.springframework.test.annotation.DirtiesContext;
 
+import de.ozgcloud.apilib.common.errorhandling.NotFoundException;
 import de.ozgcloud.common.test.DataITCase;
 import de.ozgcloud.common.test.TestUtils;
 import de.ozgcloud.nachrichten.postfach.PostfachAddress;
@@ -186,6 +187,58 @@ class AntragraumITCase {
 		}
 	}
 
+	@DisplayName("Ger rueckfrage")
+	@Nested
+	class TestGetRueckfrage {
+
+		@Mock
+		private StreamObserver<GrpcGetRueckfrageResponse> responseObserver;
+
+		@Captor
+		private ArgumentCaptor<GrpcGetRueckfrageResponse> captor;
+
+		private Vorgang savedVorgang;
+		private VorgangAttachedItem vorgangAttachedItem;
+
+		@BeforeEach
+		void prepareDatabase() {
+			savedVorgang = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).build(), Vorgang.COLLECTION_NAME);
+			vorgangAttachedItem = mongoOperations.save(createPostfachNachrichtVorgangAttachedItem(savedVorgang.getId()),
+					VorgangAttachedItem.COLLECTION_NAME);
+
+			when(verifier.verify(any())).thenReturn(Collections.emptyList());
+			when(decrypter.decryptTrustLevel(any())).thenReturn("STORK-QAA-Level-1");
+		}
+
+		@Test
+		void shouldReturnOnMatchingPostfachId() {
+			when(decrypter.decryptPostfachId(any())).thenReturn(PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE);
+			var request = GrpcGetRueckfrageRequestTestFactory.createBuilder()
+					.setId(vorgangAttachedItem.getId())
+					.setSamlToken(TestUtils.loadTextFile("SamlResponse.xml"))
+					.build();
+
+			grpcService.getRueckfrage(request, responseObserver);
+
+			verify(responseObserver, timeout(30000)).onNext(captor.capture());
+			assertThat(captor.getValue().getRueckfrage()).isNotNull();
+		}
+
+		@Test
+		void shouldThrowExceptionOnMismatchingPostfachId() {
+			when(decrypter.decryptPostfachId(any())).thenReturn("not-match-postfach-id");
+
+			var request = GrpcGetRueckfrageRequestTestFactory.createBuilder()
+					.setId(vorgangAttachedItem.getId())
+					.setSamlToken(TestUtils.loadTextFile("SamlResponse.xml"))
+					.build();
+			assertThatThrownBy(() -> grpcService.getRueckfrage(request, responseObserver))
+					.isInstanceOf(NotFoundException.class)
+					.hasMessageContaining("PostfachNachricht")
+					.hasMessageContaining(vorgangAttachedItem.getId());
+		}
+	}
+
 	private Vorgang createVorgang(TrustLevel trustLevel) {
 		return VorgangTestFactory.createBuilder()
 				.id(null)
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/common/errorhandling/ExceptionHandlerTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/common/errorhandling/ExceptionHandlerTest.java
index 5988d1bde47af660ad42c7ee6d613ad9aff7c3f5..5387ed1efef766385e8a769883af4c31c8c30189 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/common/errorhandling/ExceptionHandlerTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/common/errorhandling/ExceptionHandlerTest.java
@@ -29,12 +29,14 @@ import static org.mockito.Mockito.*;
 import java.util.Map;
 
 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.mockito.InjectMocks;
 import org.mockito.Spy;
 import org.springframework.security.access.AccessDeniedException;
 
+import de.ozgcloud.apilib.common.datatypes.GenericId;
 import de.ozgcloud.common.errorhandling.FunctionalErrorCode;
 import de.ozgcloud.common.errorhandling.TechnicalException;
 import de.ozgcloud.vorgang.vorgang.Vorgang;
@@ -308,4 +310,55 @@ class ExceptionHandlerTest {
 			return handler.handleSearchServiceUnavailableException(exception);
 		}
 	}
+
+	@DisplayName("Handle not found exception (from api lib)")
+	@Nested
+	class TestHandleNotFoundExceptionFromApiLib {
+
+		private final String exceptionId = "42";
+		private final GenericId id = GenericId.from(VorgangTestFactory.ID);
+		private final String entityName = Vorgang.class.toString();
+
+		@BeforeEach
+		void mockExceptionId() {
+			doReturn(exceptionId).when(handler).createExceptionId();
+		}
+
+		@Test
+		void shouldHaveStatusCode() {
+			var status = handleException().getStatus();
+
+			assertThat(status.getCode()).isEqualTo(Code.NOT_FOUND);
+		}
+
+		@Test
+		void shouldHaveMessage() {
+			var statusException = handleException();
+
+			assertThat(statusException.getMessage()).contains(id.toString());
+			assertThat(statusException.getMessage()).contains(entityName);
+			assertThat(statusException.getMessage()).contains(exceptionId);
+		}
+
+		@Test
+		void shouldHaveStatusDescription() {
+			var status = handleException().getStatus();
+
+			assertThat(status.getDescription()).contains(id.toString());
+			assertThat(status.getDescription()).contains(entityName);
+			assertThat(status.getDescription()).contains(exceptionId);
+		}
+
+		@Test
+		void shouldHaveExceptionId() {
+			var metaData = handleException().getTrailers();
+
+			assertThat(metaData.get(createExceptionIdKey())).isEqualTo(exceptionId);
+		}
+
+		private StatusException handleException() {
+			return handler.handleNotFoundException(
+					new de.ozgcloud.apilib.common.errorhandling.NotFoundException(id, entityName));
+		}
+	}
 }
\ No newline at end of file