diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/servicekonto/ServiceKonto.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/servicekonto/ServiceKonto.java
index dc55642a887b0d8a453a10ead82e0fb7de5970c8..c65e33018262555e9b38727cf434e221ec3ac4eb 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/servicekonto/ServiceKonto.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/servicekonto/ServiceKonto.java
@@ -24,7 +24,7 @@ public class ServiceKonto {
 	@Singular
 	private List<PostfachAddress> postfachAddresses;
 
-	static class ServiceKontoBuilder {
+	public static class ServiceKontoBuilder {
 
 		public ServiceKontoBuilder trustLevel(String trustLevel) {
 			validateTrustLevel(trustLevel);
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
new file mode 100644
index 0000000000000000000000000000000000000000..81ff258399f0ffa813c0ac5837c83d4d5e8ec544
--- /dev/null
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumITCase.java
@@ -0,0 +1,226 @@
+package de.ozgcloud.nachrichten.antragraum;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.xml.security.stax.ext.XMLSecurityConstants.DIRECTION;
+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.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.security.test.context.support.WithMockUser;
+import org.springframework.test.annotation.DirtiesContext;
+
+import de.ozgcloud.common.test.DataITCase;
+import de.ozgcloud.common.test.TestUtils;
+import de.ozgcloud.nachrichten.postfach.PostfachAddress;
+import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
+import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory;
+import de.ozgcloud.nachrichten.postfach.osi.OsiPostfachProperties;
+import de.ozgcloud.nachrichten.postfach.osi.ReplyOption;
+import de.ozgcloud.vorgang.VorgangManagerServerApplication;
+import de.ozgcloud.vorgang.attached_item.VorgangAttachedItem;
+import de.ozgcloud.vorgang.attached_item.VorgangAttachedItemTestFactory;
+import de.ozgcloud.vorgang.servicekonto.PostfachAddressTestFactory;
+import de.ozgcloud.vorgang.servicekonto.ServiceKonto;
+import de.ozgcloud.vorgang.servicekonto.ServiceKontoTestFactory;
+import de.ozgcloud.vorgang.vorgang.Vorgang;
+import de.ozgcloud.vorgang.vorgang.VorgangHeadTestFactory;
+import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
+import io.grpc.stub.StreamObserver;
+
+@SpringBootTest(classes = { VorgangManagerServerApplication.class, OsiPostfachProperties.class }, properties = {
+		"grpc.server.in-process-name=postfachitcase",
+		"ozgcloud.antragraum.url=https://localhost/dummy/antragraum",
+		"ozgcloud.antragraum.entityId=dummy-id",
+		"ozgcloud.antragraum.metadataUri=http://localhost/dummy/antragraum/uri",
+		"ozgcloud.antragraum.decryptionPrivateKey=dummyPrivateKey",
+		"ozgcloud.antragraum.decryptionCertificate=dummyCertificate",
+		"grpc.client.ozgcloud-command-manager.address=in-process:postfachitcase",
+		"grpc.client.command-manager.address=in-process:postfachitcase",
+		"grpc.client.info-manager.address=in-process:postfachitcase",
+		"grpc.client.vorgang-manager.address=in-process:postfachitcase",
+})
+@WithMockUser
+@DataITCase
+@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
+class AntragraumITCase {
+
+	@Autowired
+	private AntragraumGrpcService grpcService;
+	@Autowired
+	private MongoOperations mongoOperations;
+
+	@MockBean
+	private Saml2Decrypter decrypter;
+	@MockBean
+	private Saml2Verifier verifier;
+
+	@BeforeEach
+	void prepareDatabase() {
+		mongoOperations.dropCollection(Vorgang.COLLECTION_NAME);
+		mongoOperations.dropCollection(VorgangAttachedItem.COLLECTION_NAME);
+	}
+
+	@DisplayName("Find rueckfragen")
+	@Nested
+	class TestFindRueckfragen {
+
+		@Mock
+		private StreamObserver<GrpcFindRueckfragenResponse> responseObserver;
+
+		@Captor
+		private ArgumentCaptor<GrpcFindRueckfragenResponse> captor;
+
+		@BeforeEach
+		void mock() {
+			when(decrypter.decryptPostfachId(any())).thenReturn(PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE);
+			when(verifier.verify(any())).thenReturn(Collections.emptyList());
+		}
+
+		@DisplayName("with nachrichten from different vorgaenge")
+		@Nested
+		class TestWithDifferentVorgangId {
+
+			private Vorgang vorgangTrustLevel3;
+			private Vorgang vorgangTrustLevel2;
+
+			@BeforeEach
+			void prepareDatabase() {
+				vorgangTrustLevel3 = mongoOperations.save(createVorgang(TrustLevel.LEVEL_3), Vorgang.COLLECTION_NAME);
+				mongoOperations.save(createPostfachNachrichtVorgangAttachedItem(vorgangTrustLevel3.getId()), VorgangAttachedItem.COLLECTION_NAME);
+
+				vorgangTrustLevel2 = mongoOperations.save(createVorgang(TrustLevel.LEVEL_2), Vorgang.COLLECTION_NAME);
+				mongoOperations.save(createPostfachNachrichtVorgangAttachedItem(vorgangTrustLevel2.getId()), VorgangAttachedItem.COLLECTION_NAME);
+			}
+
+			@Test
+			void shouldHaveTrustLevelForVorgang() {
+				when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_4.getValue());
+
+				var rueckfragen = findRueckfragen().stream()
+						.filter(rueckfrage -> StringUtils.equals(rueckfrage.getVorgangId(), vorgangTrustLevel3.getId()))
+						.toList();
+
+				assertThat(rueckfragen).isNotEmpty().hasSize(1);
+				assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_3.getValue());
+				assertThat(rueckfragen.get(0).getAccessible()).isTrue();
+			}
+
+			@Test
+			void shouldHaveTrustLevelForOtherVorgang() {
+				when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_1.getValue());
+
+				var rueckfragen = findRueckfragen().stream()
+						.filter(rueckfrage -> StringUtils.equals(rueckfrage.getVorgangId(), vorgangTrustLevel2.getId()))
+						.toList();
+
+				assertThat(rueckfragen).isNotEmpty().hasSize(1);
+				assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_2.getValue());
+				assertThat(rueckfragen.get(0).getAccessible()).isFalse();
+			}
+		}
+
+		@DisplayName("with nachrichten from one vorgang")
+		@Nested
+		class TestWithOneVorgangId {
+
+			@BeforeEach
+			void prepareDatabase() {
+				var vorgang = mongoOperations.save(createVorgang(TrustLevel.LEVEL_3), Vorgang.COLLECTION_NAME);
+				mongoOperations.save(createPostfachNachrichtVorgangAttachedItem(vorgang.getId()), VorgangAttachedItem.COLLECTION_NAME);
+			}
+
+			@Test
+			void shouldReturnOnMatchingTokenTrustLevel() {
+				when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_3.getValue());
+
+				var rueckfragen = findRueckfragen();
+
+				assertThat(rueckfragen).isNotEmpty().hasSize(1);
+				assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_3.getValue());
+				assertThat(rueckfragen.get(0).getAccessible()).isTrue();
+			}
+
+			@Test
+			void shouldReturnOnLowerTokenTrustLevel() {
+				when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_1.getValue());
+
+				var rueckfragen = findRueckfragen();
+
+				assertThat(rueckfragen).isNotEmpty().hasSize(1);
+				assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_3.getValue());
+				assertThat(rueckfragen.get(0).getAccessible()).isFalse();
+			}
+
+			@Test
+			void shouldReturnOnHigherTokenTrustLevel() {
+				when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_4.getValue());
+
+				var rueckfragen = findRueckfragen();
+
+				assertThat(rueckfragen).isNotEmpty().hasSize(1);
+				assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_3.getValue());
+				assertThat(rueckfragen.get(0).getAccessible()).isTrue();
+			}
+		}
+
+		private List<GrpcRueckfrageHead> findRueckfragen() {
+			grpcService.findRueckfragen(
+					GrpcFindRueckfrageRequestTestFactory.createBuilder().setSamlToken(TestUtils.loadTextFile("SamlResponse.xml")).build(),
+					responseObserver);
+			verify(responseObserver).onNext(captor.capture());
+			return captor.getValue().getRueckfrageHeadList();
+		}
+	}
+
+	private Vorgang createVorgang(TrustLevel trustLevel) {
+		return VorgangTestFactory.createBuilder()
+				.id(null)
+				.header(VorgangHeadTestFactory.createBuilder().serviceKonto(createBayernIdServiceKonto(trustLevel)).build())
+				.build();
+	}
+
+	private ServiceKonto createBayernIdServiceKonto(TrustLevel trustLevel) {
+		return ServiceKontoTestFactory.createBuilder().type("BayernID").trustLevel(trustLevel.getValue()).build();
+	}
+
+	private VorgangAttachedItem createPostfachNachrichtVorgangAttachedItem(String vorgangId) {
+		return VorgangAttachedItemTestFactory.createBuilder()
+				.id(null)
+				.version(0)
+				.vorgangId(vorgangId)
+				.itemName("PostfachMail")
+				.client("OzgCloud_NachrichtenManager")
+				.item(createBayernIdPostfachNachrichtItem(vorgangId))
+				.build();
+	}
+
+	private Map<String, Object> createBayernIdPostfachNachrichtItem(String vorgangId) {
+		var nachrichtItem = PostfachNachrichtTestFactory.asMap();
+		nachrichtItem.put(PostfachNachricht.FIELD_DIRECTION, DIRECTION.OUT.name());
+		nachrichtItem.put(PostfachNachricht.FIELD_REPLY_OPTION, ReplyOption.POSSIBLE);
+		nachrichtItem.put(PostfachNachricht.FIELD_VORGANG_ID, vorgangId);
+		nachrichtItem.put(PostfachNachricht.FIELD_POSTFACH_ID, PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE);
+		nachrichtItem.put(PostfachNachricht.POSTFACH_ADDRESS_FIELD, Map.of(
+				PostfachAddress.TYPE_FIELD, 0,
+				PostfachAddress.VERSION_FIELD, 1,
+				PostfachAddress.IDENTIFIER_FIELD,
+				Map.of(PostfachNachricht.FIELD_POSTFACH_ID, PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE),
+				PostfachAddress.SERVICEKONTO_TYPE_FIELD, "BayernID"));
+		return nachrichtItem;
+	}
+}
\ No newline at end of file