diff --git a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java
index 6dd87bd4b8bb2423fe933e8d4e098e056890f8fc..07c961a2ea1358c9f6ffb50daf83c30b4433ea8f 100644
--- a/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java
+++ b/bescheid-manager/src/main/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteService.java
@@ -120,23 +120,29 @@ class SmartDocumentsBescheidRemoteService implements BescheidRemoteService {
 	}
 
 	Optional<String> extractTextFormXmlFile(File xmlFile) {
-		var xPath = XPathFactory.newInstance().newXPath();
 		try {
-			var document = DocumentBuilderFactory.newDefaultInstance().newDocumentBuilder().parse(xmlFile);
-			var expr = xPath.compile("/root/SmartDocument/Fields/NachrichtenText/text()");
-			var text = (Text) expr.evaluate(document, XPathConstants.NODE);
-
-			return Optional.ofNullable(text.getTextContent());
+			return doExtractText(xmlFile);
 		} catch (XPathExpressionException | SAXException | IOException | ParserConfigurationException e) {
-			LOG.error("XML-Parsing error on extracting Nachricht-Text: {}", e.getMessage(), e);
+			LOG.warn("XML-Parsing error on extracting Nachricht-Text: {}", e.getMessage(), e);
 		} catch (ClassCastException e) {
-			LOG.error("Error on extraction Nachricht-Text. XPath return unexpected Type.", e);
+			LOG.warn("Error on extraction Nachricht-Text. XPath return unexpected Type.", e);
 		} catch (RuntimeException e) {
-			LOG.error("Unexpected Error on extracting NachrichtText: {}", e.getMessage(), e);
+			LOG.warn("Unexpected Error on extracting NachrichtText: {}", e.getMessage(), e);
 		}
 		return Optional.empty();
 	}
 
+	Optional<String> doExtractText(File xmlFile)
+			throws SAXException, IOException, ParserConfigurationException, XPathExpressionException {
+		var xPath = XPathFactory.newInstance().newXPath();
+
+		var document = DocumentBuilderFactory.newDefaultInstance().newDocumentBuilder().parse(xmlFile);
+		var expr = xPath.compile("/root/SmartDocument/Fields/NachrichtenText/text()");
+
+		return Optional.ofNullable((Text) expr.evaluate(document, XPathConstants.NODE))
+				.map(Text::getTextContent);
+	}
+
 	Optional<File> getXMLFile(SmartDocumentsResponse response) {
 		return getSmartDocumentsFile(response, FILE_TYPE_XML)
 				.map(SmartDocumentFile::getDocument)
diff --git a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceTest.java b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceTest.java
index 9696b3cba965a5c2a3c9cdfb50e87dc330b7e37a..41ad8368a3b350af6790e6cc20c0d3e327d792ae 100644
--- a/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceTest.java
+++ b/bescheid-manager/src/test/java/de/ozgcloud/bescheid/smartdocuments/SmartDocumentsBescheidRemoteServiceTest.java
@@ -20,6 +20,7 @@ import de.ozgcloud.bescheid.smartdocuments.SmartDocumentsRequest.CustomerData.Us
 import de.ozgcloud.bescheid.vorgang.VorgangTestFactory;
 import de.ozgcloud.common.binaryfile.TempFileUtils;
 import de.ozgcloud.common.test.TestUtils;
+import lombok.SneakyThrows;
 
 class SmartDocumentsBescheidRemoteServiceTest {
 
@@ -84,6 +85,16 @@ class SmartDocumentsBescheidRemoteServiceTest {
 				assertThat(text).isEmpty();
 			}
 
+			@Test
+			@SneakyThrows
+			void shouldExpectMissingTextNode() {
+				File xmlFileWithoutText = TempFileUtils.writeTmpFile(TestUtils.loadFile("SD_answer_without_text.xml"));
+
+				var text = service.doExtractText(xmlFileWithoutText);
+
+				assertThat(text).isEmpty();
+			}
+
 		}
 	}
 }
diff --git a/bescheid-manager/src/test/resources/SD_answer_without_text.xml b/bescheid-manager/src/test/resources/SD_answer_without_text.xml
new file mode 100644
index 0000000000000000000000000000000000000000..62f2d02636091f1b13e7ce9c05208096415be20f
--- /dev/null
+++ b/bescheid-manager/src/test/resources/SD_answer_without_text.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<root>
+   <SmartDocument Version="2.0">
+      <Fields>
+     
+      </Fields>
+   </SmartDocument>
+</root>
\ No newline at end of file
diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl
index 1eab24ce9e68caf7c7c3bbf797a34d61186ddcf9..35eee9f27086f7ea5c6b9de7772cac3787f701df 100644
--- a/src/main/helm/templates/_helpers.tpl
+++ b/src/main/helm/templates/_helpers.tpl
@@ -83,4 +83,21 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }}
 
 {{- define "app.serviceAccountName" -}}
 {{ printf "%s" ( (.Values.serviceAccount).name | default "vorgang-manager-service-account" ) }}
+{{- end -}}
+
+{{- define "app.getCustomList" -}}
+{{- with (.Values.env).customList -}}
+{{- if kindIs "map" . -}}
+{{ include "app.dictToList" . }}
+{{- else if kindIs "slice" . -}}
+{{ . | toYaml }}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{- define "app.dictToList" -}}
+{{- range $key, $value := . -}}
+- name: {{ $key }}
+  value: {{ $value }}
+{{- end -}}
 {{- end -}}
\ No newline at end of file
diff --git a/src/main/helm/templates/deployment.yaml b/src/main/helm/templates/deployment.yaml
index 6465ac5f120cc4ed9494484bc5e670820f3d9ff9..c4c3a142df17fa568ecaa7bfa0f681d339ea3185 100644
--- a/src/main/helm/templates/deployment.yaml
+++ b/src/main/helm/templates/deployment.yaml
@@ -137,8 +137,8 @@ spec:
           - name: spring_ssl_bundle_pem_es-root-ca_truststore_certificate
             value: "/bindings/ca-certificates/es-root-ca.pem"
           {{- end }}
-          {{- with (.Values.env).customList }}
-{{ toYaml . | indent 10 }}
+          {{- with include "app.getCustomList" . }}
+{{ . | indent 10 }}
           {{- end }}
           - name: grpc_client_user-manager_address
             value: {{ include "app.grpc_client_user-manager_address" . }}
diff --git a/src/main/helm/templates/network_policy.yaml b/src/main/helm/templates/network_policy.yaml
index 88ad059ed4898240276aa3f9a0dc05775705a87e..4e92477186bd11308c58de1cc1c5f05c3d6207f0 100644
--- a/src/main/helm/templates/network_policy.yaml
+++ b/src/main/helm/templates/network_policy.yaml
@@ -45,10 +45,10 @@ spec:
     - podSelector: 
         matchLabels:
           ozg-component: eingangsadapter
-{{- with (.Values.networkPolicy).additionalIngressConfig }}
+{{- with (.Values.networkPolicy).additionalIngressConfigLocal }}
 {{ toYaml . | indent 2 }}
 {{- end }}
-{{- with (.Values.networkPolicy).additionalIngressConfigNamespace }}
+{{- with (.Values.networkPolicy).additionalIngressConfigGlobal }}
 {{ toYaml . | indent 2 }}
 {{- end }}
   egress:
@@ -101,10 +101,10 @@ spec:
         protocol: UDP
       - port: 5353
         protocol: TCP
-{{- with (.Values.networkPolicy).additionalEgressConfig }}
+{{- with (.Values.networkPolicy).additionalEgressConfigLocal }}
 {{ toYaml . | indent 2 }}
 {{- end }}
-{{- with (.Values.networkPolicy).additionalEgressConfigNamespace }}
+{{- with (.Values.networkPolicy).additionalEgressConfigGlobal }}
 {{ toYaml . | indent 2 }}
 {{- end }}
 
diff --git a/src/test/helm/deployment_env_test.yaml b/src/test/helm/deployment_env_test.yaml
index f4306525a9696b7c8c57b8dfe940712c09ad516c..6ba187adc9668db175feadd3026645ff68817a1e 100644
--- a/src/test/helm/deployment_env_test.yaml
+++ b/src/test/helm/deployment_env_test.yaml
@@ -30,7 +30,7 @@ set:
     environment: dev
   imagePullSecret: test-image-pull-secret
 tests:
-  - it: check customList
+  - it: check customList as list
     set:
       env.customList:
         - name: my_test_environment_name
@@ -41,6 +41,16 @@ tests:
           content:
             name: my_test_environment_name
             value: "A test value"
+  - it: check customList as dict
+    set:
+      env.customList:
+        my_test_environment_name: "A test value"
+    asserts:
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: my_test_environment_name
+            value: "A test value"
 
   - it: check customList test value is not set by default
     asserts:
diff --git a/src/test/helm/network_policy_test.yaml b/src/test/helm/network_policy_test.yaml
index ac7df6574a59eae14b64a88872f8f37a182dfa89..21ac219c19905e33604d003d0c5f7ba32da173ef 100644
--- a/src/test/helm/network_policy_test.yaml
+++ b/src/test/helm/network_policy_test.yaml
@@ -234,12 +234,12 @@ tests:
       - failedTemplate:
           errorMessage: ozgcloud.bayernid.proxy.namespace must be set if bayernid is enabled
 
-  - it: add ingress rule by values
+  - it: add ingress rule local by values
     set:
       networkPolicy:
         ssoPublicIp: 51.89.117.53/32
         dnsServerNamespace: test-namespace-dns
-        additionalIngressConfig:
+        additionalIngressConfigGlobal:
         - from:
           - podSelector: 
               matchLabels:
@@ -252,16 +252,16 @@ tests:
             - podSelector: 
                 matchLabels:
                   component: client2
-
-  - it: should add additionalIngressConfig
+  - it: add ingress rule global by values
     set:
       networkPolicy:
+        ssoPublicIp: 51.89.117.53/32
         dnsServerNamespace: test-namespace-dns
-        additionalIngressConfig:
+        additionalIngressConfigLocal:
         - from:
           - podSelector: 
               matchLabels:
-                additionalIngressConfig: yes
+                component: client2
     asserts:
       - contains:
           path: spec.ingress
@@ -269,54 +269,53 @@ tests:
             from:
             - podSelector: 
                 matchLabels:
-                  additionalIngressConfig: yes
+                  component: client2
 
-  - it: should add additionalEgressConfig
+  - it: add egress rules local by values
     set:
       networkPolicy:
-        dnsServerNamespace: test-namespace-dns
-        additionalEgressConfig:
+        additionalEgressConfigGlobal:
+        - to:
+          - ipBlock:
+              cidr: 1.2.3.4/32
         - to:
           - podSelector:
               matchLabels:
-                additionalEgressConfig: yes
+                component: ozg-testservice
+          ports:
+            - port: 12345
+              protocol: TCP
+
+        dnsServerNamespace: test-dns-namespace
     asserts:
+    - contains:
+        path: spec.egress
+        content:
+          to:
+          - ipBlock:
+              cidr: 1.2.3.4/32
     - contains:
         path: spec.egress
         content:
           to:
           - podSelector:
               matchLabels:
-                additionalEgressConfig: yes
-
-
-  - it: should add additionalIngressConfigNamespace
-    set:
-      networkPolicy:
-        dnsServerNamespace: test-namespace-dns
-        additionalIngressConfigNamespace:
-        - from:
-          - podSelector: 
-              matchLabels:
-                additionalIngressConfigNamespace: yes
-    asserts:
-      - contains:
-          path: spec.ingress
-          content:
-            from:
-            - podSelector: 
-                matchLabels:
-                  additionalIngressConfigNamespace: yes
-
-  - it: should add additionalEgressConfigNamespace
+                component: ozg-testservice
+          ports:
+            - port: 12345
+              protocol: TCP
+  - it: add egress rules global by values
     set:
       networkPolicy:
         dnsServerNamespace: test-dns-namespace
-        additionalEgressConfigNamespace:
+        additionalEgressConfigLocal:
+        - to:
+          - ipBlock:
+              cidr: 1.2.3.4/32
         - to:
           - podSelector:
               matchLabels:
-                additionalEgressConfigNamespace: yes
+                additionalEgressConfigLocal: yes
     asserts:
     - contains:
         path: spec.egress
@@ -324,7 +323,7 @@ tests:
           to:
           - podSelector:
               matchLabels:
-                additionalEgressConfigNamespace: yes
+                additionalEgressConfigLocal: yes
 
   - it: test network policy disabled
     set:
diff --git a/vorgang-manager-server/pom.xml b/vorgang-manager-server/pom.xml
index a1cf7433e59147d9d2a9ad0bd427a77f7ffd5142..a7eb857b2513f868d27f73a78a70284ab7b83e33 100644
--- a/vorgang-manager-server/pom.xml
+++ b/vorgang-manager-server/pom.xml
@@ -80,7 +80,7 @@
 
 		<dependency>
 			<groupId>de.ozgcloud.nachrichten</groupId>
-			<artifactId>nachrichten-manager-postfach-interface</artifactId>
+			<artifactId>nachrichten-manager-server</artifactId>
 			<version>${nachrichten-manager.version}</version>
 		</dependency>
 		<dependency>
@@ -248,7 +248,14 @@
 		<!-- Test -->
 		<dependency>
 			<groupId>de.ozgcloud.nachrichten</groupId>
-			<artifactId>nachrichten-manager-postfach-interface</artifactId>
+			<artifactId>nachrichten-manager-server</artifactId>
+			<version>${project.version}</version>
+			<type>test-jar</type>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>de.ozgcloud.nachrichten</groupId>
+			<artifactId>nachrichten-manager-interface</artifactId>
 			<version>${project.version}</version>
 			<type>test-jar</type>
 			<scope>test</scope>
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/PersistPostfachNachrichtByCommandService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/PersistPostfachNachrichtByCommandService.java
index 63aee3c41f4aaa594572b35da58cd5270575336e..82bebdd9762ee1a3a698a4a49b3aae60ef7d4e7e 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/PersistPostfachNachrichtByCommandService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/PersistPostfachNachrichtByCommandService.java
@@ -50,8 +50,6 @@ import de.ozgcloud.nachrichten.postfach.AttachmentFile;
 import de.ozgcloud.nachrichten.postfach.PersistPostfachNachrichtService;
 import de.ozgcloud.nachrichten.postfach.PostfachAddress;
 import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
-import de.ozgcloud.nachrichten.postfach.PostfachNachricht.Direction;
-import de.ozgcloud.nachrichten.postfach.PostfachNachricht.ReplyOption;
 import de.ozgcloud.nachrichten.postfach.StringBasedIdentifier;
 import de.ozgcloud.vorgang.attached_item.VorgangAttachedItem;
 import de.ozgcloud.vorgang.attached_item.VorgangAttachedItemMapper;
@@ -67,7 +65,7 @@ import lombok.extern.log4j.Log4j2;
  * @deprecated Temporally replacement for using GRPC Api by MailService
  */
 @Deprecated
-@Service
+@Service("persistPostfachNachrichtByCommandService")
 @Log4j2
 class PersistPostfachNachrichtByCommandService implements PersistPostfachNachrichtService {
 
@@ -258,21 +256,8 @@ class PersistPostfachNachrichtByCommandService implements PersistPostfachNachric
 	}
 
 	@Override
-	public Stream<PostfachNachricht> findRueckfragen(String postfachId) {
-		// Dummy Implementierung
-		// TODO OZG-5132 do real implementation
-		return Stream.of(PostfachNachricht.builder()
-				.attachments(Collections.emptyList())
-				.createdAt(ZonedDateTime.now())
-				.sentAt(ZonedDateTime.now())
-				.vorgangId("VORGANG_DUMMY_URI")
-				.createdBy("Klaus")
-				.direction(Direction.OUT)
-				.replyOption(ReplyOption.POSSIBLE)
-				.mailBody("Lorem ipsum dolres est")
-				.id(UUID.randomUUID().toString())
-				.subject("Test")
-				.build());
+	public Stream<PostfachNachricht> findRueckfragen(String servicekontoType, String postfachId) {
+		throw new UnsupportedOperationException("Not implemented.");
 	}
 
 	@Override
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderService.java
index 16ce17aab587901272f51788567cb3f365b9b909..4642e7c3fd2b68dec5f473c237ababc288747913 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangHeaderService.java
@@ -48,7 +48,7 @@ class VorgangHeaderService {
 	private SearchService searchService;
 
 	public Page<VorgangHeader> findAll(FindVorgangRequest request) {
-	if (nonNull(searchService) && nonNull(request.getSearchBy())) {
+		if (nonNull(searchService) && nonNull(request.getSearchBy())) {
 			return removeUnpermitted(searchService.find(request));
 		}
 		return removeUnpermitted(repository.findAll(request));
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/FindVorgangIteratorITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/FindVorgangIteratorITCase.java
new file mode 100644
index 0000000000000000000000000000000000000000..6364448d2c6449bd7726118475033fc9915448bd
--- /dev/null
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/FindVorgangIteratorITCase.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+package de.ozgcloud.nachrichten.postfach;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.IntStream;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+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.test.annotation.DirtiesContext;
+
+import de.ozgcloud.common.test.DataITCase;
+import de.ozgcloud.vorgang.VorgangManagerServerApplication;
+import de.ozgcloud.vorgang.callcontext.CallContextUser;
+import de.ozgcloud.vorgang.callcontext.CurrentUserService;
+import de.ozgcloud.vorgang.servicekonto.PostfachAddressTestFactory;
+import de.ozgcloud.vorgang.servicekonto.ServiceKontoTestFactory;
+import de.ozgcloud.vorgang.vorgang.GrpcVorgangHeader;
+import de.ozgcloud.vorgang.vorgang.Vorgang;
+import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
+import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
+import net.devh.boot.grpc.client.inject.GrpcClient;
+
+@SpringBootTest(classes = { VorgangManagerServerApplication.class }, properties = {
+		"grpc.server.inProcessName=test",
+		"grpc.client.inProcess.address=in-process:test"
+})
+@DirtiesContext
+@DataITCase
+class FindVorgangIteratorITCase {
+
+	@GrpcClient("inProcess")
+	private VorgangServiceBlockingStub vorgangServiceStub;
+
+	@Autowired
+	private MongoOperations mongoOperations;
+
+	@MockBean
+	private CurrentUserService currentUserService;
+	@Mock
+	private CallContextUser callContextUser;
+
+	private FindVorgangIterator findVorgangIterator;
+
+	@BeforeEach
+	void init() {
+		mongoOperations.dropCollection(Vorgang.COLLECTION_NAME);
+		when(currentUserService.getUser()).thenReturn(callContextUser);
+		findVorgangIterator = new FindVorgangIterator(vorgangServiceStub, ServiceKontoTestFactory.TYPE,
+				PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE);
+	}
+
+	@Test
+	void shouldFindVorgangs() {
+		var vorgang = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).build());
+
+		var hasNext = findVorgangIterator.hasNext();
+		assertThat(hasNext).isTrue();
+
+		var result = findVorgangIterator.next();
+		assertThat(result.getId()).isEqualTo(vorgang.getId());
+	}
+
+	@Test
+	void shouldLoadAllVorgangs() {
+		IntStream.range(0, FindVorgangIterator.LIMIT + 1).forEach(i -> mongoOperations.save(VorgangTestFactory.createBuilder().id(null).build()));
+
+		var result = loadAllVorgangs();
+
+		assertThat(result).hasSize(FindVorgangIterator.LIMIT + 1);
+	}
+
+	private List<GrpcVorgangHeader> loadAllVorgangs() {
+		var result = new ArrayList<GrpcVorgangHeader>();
+		while (findVorgangIterator.hasNext()) {
+			result.add(findVorgangIterator.next());
+		}
+		return result;
+	}
+
+}
\ No newline at end of file
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplITCase.java
new file mode 100644
index 0000000000000000000000000000000000000000..81592955e5001a335b2984ac65cab48c325b3507
--- /dev/null
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplITCase.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+package de.ozgcloud.nachrichten.postfach;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mock;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.util.ReflectionTestUtils;
+
+import de.ozgcloud.common.test.ITCase;
+import de.ozgcloud.vorgang.VorgangManagerServerApplication;
+import de.ozgcloud.vorgang.attached_item.GrpcVorgangAttachedItemTestFactory;
+import de.ozgcloud.vorgang.common.GrpcObject;
+import de.ozgcloud.vorgang.common.GrpcProperty;
+import de.ozgcloud.vorgang.servicekonto.PostfachAddressTestFactory;
+import de.ozgcloud.vorgang.servicekonto.ServiceKontoTestFactory;
+import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangResponse;
+import de.ozgcloud.vorgang.vorgang.GrpcVorgangHeader;
+import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
+import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemResponse;
+import de.ozgcloud.vorgang.vorgangAttachedItem.VorgangAttachedItemServiceGrpc.VorgangAttachedItemServiceBlockingStub;
+
+@SpringBootTest(classes = { VorgangManagerServerApplication.class })
+@ITCase
+class PersistPostfachNachrichtServiceImplITCase {
+
+	private static final String MESSAGE_ID = "message-id";
+	@Autowired
+	private PersistPostfachNachrichtServiceImpl service;
+	@Autowired
+	private VorgangRemoteService vorgangRemoteService;
+	@Autowired
+	private AttachedItemRemoteService attachedItemRemoteService;
+
+	private AtomicInteger counter = new AtomicInteger(1);
+	@Mock
+	private VorgangServiceBlockingStub vorgangServiceStub;
+	@Mock
+	private VorgangAttachedItemServiceBlockingStub vorgangAttachedItemServiceStub;
+
+	@BeforeEach
+	void init() {
+		when(vorgangServiceStub.withInterceptors(any())).thenReturn(vorgangServiceStub);
+		ReflectionTestUtils.setField(vorgangRemoteService, "vorgangServiceStub", vorgangServiceStub);
+
+		when(vorgangAttachedItemServiceStub.withInterceptors(any())).thenReturn(vorgangAttachedItemServiceStub);
+		ReflectionTestUtils.setField(attachedItemRemoteService, "vorgangAttachedItemServiceStub", vorgangAttachedItemServiceStub);
+
+		mockFindVorgang();
+		mockFindAttachedItems();
+	}
+
+	@Test
+	void shouldFindRuckfragen() {
+		var rueckfragen = service.findRueckfragen(ServiceKontoTestFactory.TYPE, PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE);
+
+		assertThat(rueckfragen).hasSize(1).first().extracting(PostfachNachricht::getId).isEqualTo(MESSAGE_ID);
+	}
+
+	private void mockFindVorgang() {
+		when(vorgangServiceStub.findVorgang(any())).thenAnswer(invocation -> {
+			if (counter.getAndDecrement() == 0) {
+				return GrpcFindVorgangResponse.newBuilder().build();
+			}
+			return GrpcFindVorgangResponse.newBuilder().setTotal(1).addVorgang(GrpcVorgangHeader.newBuilder().build()).build();
+		});
+	}
+
+	private void mockFindAttachedItems() {
+		var attachedItemResponse = GrpcFindVorgangAttachedItemResponse.newBuilder()
+				.addVorgangAttachedItems(GrpcVorgangAttachedItemTestFactory.create())
+				.addVorgangAttachedItems(GrpcVorgangAttachedItemTestFactory.createBuilder().setItem(buildGrpcObject())).build();
+		when(vorgangAttachedItemServiceStub.find(any())).thenReturn(attachedItemResponse);
+	}
+
+	private GrpcObject buildGrpcObject() {
+		return GrpcObject.newBuilder()
+				.addProperty(GrpcProperty.newBuilder()
+						.setName(PostfachNachricht.FIELD_REPLY_OPTION).addValue(PostfachNachricht.ReplyOption.POSSIBLE.name()).build())
+				.addProperty(GrpcProperty.newBuilder()
+						.setName(PostfachNachricht.FIELD_CREATED_AT).addValue(PostfachNachrichtTestFactory.CREATED_AT_STR))
+				.addProperty(GrpcProperty.newBuilder()
+						.setName(PostfachNachricht.FIELD_DIRECTION).addValue(PostfachNachrichtTestFactory.DIRECTION.name()))
+				.addProperty(GrpcProperty.newBuilder()
+						.setName(PostfachNachricht.FIELD_ID).addValue(MESSAGE_ID).build())
+				.build();
+	}
+}
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachMailITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachMailITCase.java
index 8db9ce23a49f33ee2b2a058eb33906fd56882813..3c854a2b30507856ca155319bf708256f53f681a 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachMailITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachMailITCase.java
@@ -231,7 +231,8 @@ class PostfachMailITCase {
 		}
 
 		private GrpcSendPostfachMailRequest buildSendPostfachMailRequestWithoutAttachments() {
-			var grpcPostfachMail = GrpcPostfachMailTestFactory.createBuilder().clearId().clearAttachment().clearCreatedAt().clearDirection().build();
+			var grpcPostfachMail = GrpcPostfachMailTestFactory.createBuilder().clearId().clearAttachment().clearCreatedAt().clearDirection()
+					.setVorgangId(MessageTestFactory.VORGANG_ID).build();
 			return GrpcSendPostfachMailRequestTestFactory.createBuilder().setMail(grpcPostfachMail).build();
 		}
 
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/GrpcVorgangAttachedItemTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/GrpcVorgangAttachedItemTestFactory.java
index 764b878dd36d4c900547277227d05eb8d49b1329..712d28ebb0f6a91f18f27fc6d7514323509ced74 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/GrpcVorgangAttachedItemTestFactory.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/attached_item/GrpcVorgangAttachedItemTestFactory.java
@@ -33,11 +33,11 @@ public class GrpcVorgangAttachedItemTestFactory {
 	public static final GrpcObject OBJECT = GrpcObject.newBuilder()
 			.addProperty(GrpcProperty.newBuilder().setName(PROPERTY_NAME).addValue(PROPERTY_NAME_VALUE).build()).build();
 
-	static GrpcVorgangAttachedItem create() {
+	public static GrpcVorgangAttachedItem create() {
 		return createBuilder().build();
 	}
 
-	static GrpcVorgangAttachedItem.Builder createBuilder() {
+	public static GrpcVorgangAttachedItem.Builder createBuilder() {
 		return GrpcVorgangAttachedItem.newBuilder()
 				.setId(VorgangAttachedItemTestFactory.ID)
 				.setClient(VorgangAttachedItemTestFactory.CLIENT)
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceITCase.java
index e067a39f8f711cf6ada2b9801e93fde04cf1ae87..cc936fbc36384816f4eddfc9cc82c9ef66a8d7f9 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceITCase.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceITCase.java
@@ -99,7 +99,7 @@ class CommandServiceITCase {
 					.build();
 
 			Command persistedCommand = commandService.createCommand(request);
-			verify(commandService, timeout(500)).setCommandFinished(eq(persistedCommand.getId()), any());
+			verify(commandService, timeout(60000)).setCommandFinished(eq(persistedCommand.getId()), any());
 
 			Optional<Command> commandOpt = commandService.findCommand(persistedCommand.getId());
 			assertThat(commandOpt).isPresent();