diff --git a/nachrichten-manager/pom.xml b/nachrichten-manager/pom.xml
index e569a9df0fd76405975f30c968f21291846c2da2..aeaac44692b56cda777a843885651a86dddccb0c 100644
--- a/nachrichten-manager/pom.xml
+++ b/nachrichten-manager/pom.xml
@@ -24,8 +24,9 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
 
 	<parent>
 		<groupId>de.ozgcloud.common</groupId>
@@ -39,278 +40,310 @@
 	<version>2.6.0-SNAPSHOT</version>
 	<name>OZG-Cloud Nachrichten Manager</name>
 
-	<properties>
-		<java.version>21</java.version>
-		<!-- TODO version management -->
-		<shedlock.version>4.25.0</shedlock.version>
-		<logcaptor.version>2.7.10</logcaptor.version>
-		<ozgcloud.license.version>1.3.0</ozgcloud.license.version>
-		<jaxb-maven-plugin.version>3.0.1</jaxb-maven-plugin.version>
-		<ozg-info-manager-interface.version>0.10.0-22.8503e49-20240124.071709-1</ozg-info-manager-interface.version>
-		<bayernid-proxy-interface.version>0.1.0</bayernid-proxy-interface.version>
-	</properties>
+    <properties>
+        <java.version>17</java.version>
+        <!-- TODO version management -->
+        <shedlock.version>4.25.0</shedlock.version>
+        <logcaptor.version>2.7.10</logcaptor.version>
+        <ozgcloud.license.version>1.3.0</ozgcloud.license.version>
+        <jaxb-maven-plugin.version>3.0.1</jaxb-maven-plugin.version>
+        <ozg-info-manager-interface.version>0.10.0-22.8503e49-20240124.071709-1</ozg-info-manager-interface.version>
+        <bayernid-proxy-interface.version>0.1.0</bayernid-proxy-interface.version>
+    </properties>
 
-	<dependencies>
-		<dependency>
-			<groupId>de.ozgcloud.vorgang</groupId>
-			<artifactId>vorgang-manager-base</artifactId>
-			<version>${project.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>de.ozgcloud.vorgang</groupId>
-			<artifactId>vorgang-manager-interface</artifactId>
-			<version>${project.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>de.ozgcloud.command</groupId>
-			<artifactId>command-manager</artifactId>
-			<version>${project.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>de.ozgcloud.vorgang</groupId>
-			<artifactId>vorgang-manager-utils</artifactId>
-			<version>${project.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>de.ozgcloud.nachrichten</groupId>
-			<artifactId>bayernid-proxy-interface</artifactId>
-			<version>${bayernid-proxy-interface.version}</version>
-		</dependency>
+    <repositories>
+        <repository>
+            <id>shibboleth-releases</id>
+            <name>Shibboleth Releases Repository</name>
+            <url>https://build.shibboleth.net/maven/releases/</url>
+            <releases>
+                <enabled>true</enabled>
+                <checksumPolicy>warn</checksumPolicy>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+        <repository>
+            <id>shibboleth-thirdparty</id>
+            <name>Shibboleth Thirdparty Repository</name>
+            <url>https://build.shibboleth.net/maven/thirdparty/</url>
+            <releases>
+                <enabled>true</enabled>
+                <checksumPolicy>fail</checksumPolicy>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
 
-		<dependency>
-			<groupId>com.mgmtp.bup.ozg</groupId>
-			<artifactId>ozg-info-manager-interface</artifactId>
-			<version>${ozg-info-manager-interface.version}</version>
-		</dependency>
+    <dependencies>
+        <dependency>
+            <groupId>de.ozgcloud.vorgang</groupId>
+            <artifactId>vorgang-manager-base</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>de.ozgcloud.vorgang</groupId>
+            <artifactId>vorgang-manager-interface</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>de.ozgcloud.command</groupId>
+            <artifactId>command-manager</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>de.ozgcloud.vorgang</groupId>
+            <artifactId>vorgang-manager-utils</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>de.ozgcloud.nachrichten</groupId>
+            <artifactId>bayernid-proxy-interface</artifactId>
+            <version>${bayernid-proxy-interface.version}</version>
+        </dependency>
 
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-mail</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>com.mgmtp.bup.ozg</groupId>
+            <artifactId>ozg-info-manager-interface</artifactId>
+            <version>${ozg-info-manager-interface.version}</version>
+        </dependency>
 
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-json</artifactId>
-			<scope>compile</scope>
-		</dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-mail</artifactId>
+        </dependency>
 
-		<dependency>
-			<groupId>org.springframework</groupId>
-			<artifactId>spring-web</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-json</artifactId>
+            <scope>compile</scope>
+        </dependency>
 
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-validation</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-web</artifactId>
+        </dependency>
 
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-web-services</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
 
-		<dependency>
-			<groupId>org.glassfish.jaxb</groupId>
-			<artifactId>jaxb-runtime</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web-services</artifactId>
+        </dependency>
 
-		<dependency>
-			<groupId>net.javacrumbs.shedlock</groupId>
-			<artifactId>shedlock-spring</artifactId>
-			<version>${shedlock.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.javacrumbs.shedlock</groupId>
-			<artifactId>shedlock-provider-mongo</artifactId>
-			<version>${shedlock.version}</version>
-		</dependency>
+        <dependency>
+            <groupId>org.glassfish.jaxb</groupId>
+            <artifactId>jaxb-runtime</artifactId>
+        </dependency>
 
-		<dependency>
-			<groupId>org.mapstruct</groupId>
-			<artifactId>mapstruct</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>net.javacrumbs.shedlock</groupId>
+            <artifactId>shedlock-spring</artifactId>
+            <version>${shedlock.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>net.javacrumbs.shedlock</groupId>
+            <artifactId>shedlock-provider-mongo</artifactId>
+            <version>${shedlock.version}</version>
+        </dependency>
 
-		<!-- grpc -->
-		<dependency>
-			<groupId>net.devh</groupId>
-			<artifactId>grpc-server-spring-boot-starter</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>net.devh</groupId>
-			<artifactId>grpc-client-spring-boot-starter</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct</artifactId>
+        </dependency>
 
-		<!-- commons -->
-		<dependency>
-			<groupId>org.apache.commons</groupId>
-			<artifactId>commons-lang3</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.httpcomponents.client5</groupId>
-			<artifactId>httpclient5</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>commons-beanutils</groupId>
-			<artifactId>commons-beanutils</artifactId>
-		</dependency>
+        <dependency>
+            <groupId>org.springframework.security</groupId>
+            <artifactId>spring-security-saml2-service-provider</artifactId>
+        </dependency>
 
-		<!-- DEV -->
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-devtools</artifactId>
-			<scope>runtime</scope>
-			<optional>true</optional>
-		</dependency>
-		<dependency>
-			<groupId>org.projectlombok</groupId>
-			<artifactId>lombok</artifactId>
-			<optional>true</optional>
-			<scope>provided</scope>
-		</dependency>
+ 
+        <dependency>
+            <groupId>net.devh</groupId>
+            <artifactId>grpc-server-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>net.devh</groupId>
+            <artifactId>grpc-client-spring-boot-starter</artifactId>
+        </dependency>
 
-		<!-- TEST -->
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-test</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-configuration-processor</artifactId>
-			<optional>true</optional>
-		</dependency>
-		<dependency>
-			<groupId>io.github.hakky54</groupId>
-			<artifactId>logcaptor</artifactId>
-			<version>${logcaptor.version}</version>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>de.ozgcloud.vorgang</groupId>
-			<artifactId>vorgang-manager-base</artifactId>
-			<version>${project.version}</version>
-			<type>test-jar</type>
-			<scope>test</scope>
-		</dependency>
-	</dependencies>
+        <!-- commons -->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents.client5</groupId>
+            <artifactId>httpclient5</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-beanutils</groupId>
+            <artifactId>commons-beanutils</artifactId>
+        </dependency>
 
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.springframework.boot</groupId>
-				<artifactId>spring-boot-maven-plugin</artifactId>
-				<configuration>
-					<skip>true</skip>
-				</configuration>
-			</plugin>
+        <!-- DEV -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <scope>runtime</scope>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+            <scope>provided</scope>
+        </dependency>
 
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-jar-plugin</artifactId>
-				<executions>
-					<execution>
-						<goals>
-							<goal>test-jar</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
+        <!-- TEST -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>io.github.hakky54</groupId>
+            <artifactId>logcaptor</artifactId>
+            <version>${logcaptor.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>de.ozgcloud.vorgang</groupId>
+            <artifactId>vorgang-manager-base</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 
-			<plugin>
-				<groupId>org.jvnet.jaxb</groupId>
-				<artifactId>jaxb-maven-plugin</artifactId>
-				<version>${jaxb-maven-plugin.version}</version>
-				<configuration>
-					<schemas>
-						<schema>
-							<fileset>
-								<directory>${basedir}/src/main/resources/bayernid</directory>
-								<includes>
-									<include>*.wsdl</include>
-								</includes>
-							</fileset>
-						</schema>
-						<schema>
-							<fileset>
-								<directory>${basedir}/src/main/resources/bayernid</directory>
-								<includes>
-									<include>*.xsd</include>
-								</includes>
-							</fileset>
-						</schema>
-					</schemas>
-					<episode>false</episode>
-				</configuration>
-				<executions>
-					<execution>
-						<goals>
-							<goal>generate</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-			
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-compiler-plugin</artifactId>
-			</plugin>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
 
-			<plugin>
-				<groupId>org.sonarsource.scanner.maven</groupId>
-				<artifactId>sonar-maven-plugin</artifactId>
-			</plugin>
-			<plugin>
-				<groupId>org.jacoco</groupId>
-				<artifactId>jacoco-maven-plugin</artifactId>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-failsafe-plugin</artifactId>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-surefire-plugin</artifactId>
-			</plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>test-jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
 
-			<plugin>
-				<groupId>com.mycila</groupId>
-				<artifactId>license-maven-plugin</artifactId>
-				<configuration>
-					<mapping>
-						<config>SCRIPT_STYLE</config>
-					</mapping>
-					<licenseSets>
-						<licenseSet>
-							<header>license/eupl_v1_2_de/header.txt</header>
-							<excludes>
-								<exclude>**/README</exclude>
-								<exclude>src/test/resources/**</exclude>
-								<exclude>src/main/resources/**</exclude>
-							</excludes>
-						</licenseSet>
-					</licenseSets>
-				</configuration>
-				<dependencies>
-					<dependency>
-						<groupId>de.ozgcloud.common</groupId>
-						<artifactId>ozgcloud-common-license</artifactId>
-						<version>${ozgcloud.license.version}</version>
-					</dependency>
-				</dependencies>
-			</plugin>
-		</plugins>
-	</build>
+            <plugin>
+                <groupId>org.jvnet.jaxb</groupId>
+                <artifactId>jaxb-maven-plugin</artifactId>
+                <version>${jaxb-maven-plugin.version}</version>
+                <configuration>
+                    <schemas>
+                        <schema>
+                            <fileset>
+                                <directory>${basedir}/src/main/resources/bayernid</directory>
+                                <includes>
+                                    <include>*.wsdl</include>
+                                </includes>
+                            </fileset>
+                        </schema>
+                        <schema>
+                            <fileset>
+                                <directory>${basedir}/src/main/resources/bayernid</directory>
+                                <includes>
+                                    <include>*.xsd</include>
+                                </includes>
+                            </fileset>
+                        </schema>
+                    </schemas>
+                    <episode>false</episode>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
 
-	<distributionManagement>
-		<repository>
-			<id>ozg-nexus</id>
-			<name>ozg-releases</name>
-			<url>https://nexus.ozg-sh.de/repository/ozg-releases/</url>
-		</repository>
-		<snapshotRepository>
-			<id>ozg-snapshots-nexus</id>
-			<name>ozg-snapshots</name>
-			<url>https://nexus.ozg-sh.de/repository/ozg-snapshots/</url>
-		</snapshotRepository>
-	</distributionManagement>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.sonarsource.scanner.maven</groupId>
+                <artifactId>sonar-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.jacoco</groupId>
+                <artifactId>jacoco-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>com.mycila</groupId>
+                <artifactId>license-maven-plugin</artifactId>
+                <configuration>
+                    <mapping>
+                        <config>SCRIPT_STYLE</config>
+                    </mapping>
+                    <licenseSets>
+                        <licenseSet>
+                            <header>license/eupl_v1_2_de/header.txt</header>
+                            <excludes>
+                                <exclude>**/README</exclude>
+                                <exclude>src/test/resources/**</exclude>
+                                <exclude>src/main/resources/**</exclude>
+                            </excludes>
+                        </licenseSet>
+                    </licenseSets>
+                </configuration>
+                <dependencies>
+                    <dependency>
+                        <groupId>de.ozgcloud.common</groupId>
+                        <artifactId>ozgcloud-common-license</artifactId>
+                        <version>${ozgcloud.license.version}</version>
+                    </dependency>
+                </dependencies>
+            </plugin>
+        </plugins>
+    </build>
+
+    <distributionManagement>
+        <repository>
+            <id>ozg-nexus</id>
+            <name>ozg-releases</name>
+            <url>https://nexus.ozg-sh.de/repository/ozg-releases/</url>
+        </repository>
+        <snapshotRepository>
+            <id>ozg-snapshots-nexus</id>
+            <name>ozg-snapshots</name>
+            <url>https://nexus.ozg-sh.de/repository/ozg-snapshots/</url>
+        </snapshotRepository>
+    </distributionManagement>
 </project>
diff --git a/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java b/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java
new file mode 100644
index 0000000000000000000000000000000000000000..6977a57499fc8ab21257ee7ffa79ab19f62daf38
--- /dev/null
+++ b/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java
@@ -0,0 +1,56 @@
+/*
+ * 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.antragraum;
+
+import org.apache.commons.lang3.NotImplementedException;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+
+import de.ozgcloud.vorgang.grpc.command.GrpcCommand;
+import io.grpc.stub.StreamObserver;
+import lombok.RequiredArgsConstructor;
+import net.devh.boot.grpc.server.service.GrpcService;
+
+@GrpcService
+@RequiredArgsConstructor
+@ConditionalOnProperty(AntragraumProperties.PROPERTY_ANTRAGSRAUM_URL)
+class AntragraumGrpcService extends AntragraumServiceGrpc.AntragraumServiceImplBase {
+	private final AntragraumService antragraumService;
+	private final AntragraumNachrichtMapper mapper;
+
+	@Override
+	public void findRueckfragen(GrpcFindRueckfragenRequest request, StreamObserver<GrpcFindRueckfragenResponse> streamObserver) {
+		var rueckfragen = antragraumService.findRueckfragen(request.getSamlToken()).map(mapper::toGrpc).toList();
+		var response = GrpcFindRueckfragenResponse.newBuilder().addAllRueckfrage(rueckfragen).build();
+
+		streamObserver.onNext(response);
+		streamObserver.onCompleted();
+	}
+
+	@Override
+	public void sendRueckfrageAnswer(GrpcSendRueckfrageAnswerRequest request, StreamObserver<GrpcCommand> streamObserver) {
+		throw new NotImplementedException("sendRueckfrageAnswer not implemented yet");
+	}
+
+}
diff --git a/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java b/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..136b02ff864ec238cd4db5068f2ec40b4ccecc6f
--- /dev/null
+++ b/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java
@@ -0,0 +1,44 @@
+/*
+ * 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.antragraum;
+
+import org.mapstruct.CollectionMappingStrategy;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.NullValueCheckStrategy;
+
+import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
+
+@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
+interface AntragraumNachrichtMapper {
+	String DEFAULT_STATUS = "NEU";
+
+	@Mapping(source = "sentAt", target = "sentAt", dateFormat = "yyyy-MM-dd'T'HH:mm:ss")
+	@Mapping(source = "mailBody", target = "text")
+	@Mapping(source = "subject", target = "vorgangName")
+	@Mapping(source = "attachments", target = "attachmentFileIdList")
+	@Mapping(target = "status", constant = DEFAULT_STATUS)
+	GrpcRueckfrage toGrpc(PostfachNachricht postfachNachricht);
+}
diff --git a/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumProperties.java b/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumProperties.java
index 860818fa9c7e82e7331fca1ef06bcb1939d73a8d..9db391f6c208a0aa6c1c1849d9a6c588a031ceb2 100644
--- a/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumProperties.java
+++ b/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumProperties.java
@@ -1,3 +1,26 @@
+/*
+ * 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.antragraum;
 
 import jakarta.validation.constraints.NotEmpty;
@@ -5,6 +28,7 @@ import jakarta.validation.constraints.NotEmpty;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.Resource;
 import org.springframework.validation.annotation.Validated;
 
 import lombok.Getter;
@@ -23,4 +47,22 @@ public class AntragraumProperties {
 	@NotEmpty
 	private String url;
 
+	/**
+	 * The entityId as defined the BayernId SAML Metadata
+	 */
+	@NotEmpty
+	private String entityId;
+	/**
+	 * The uri where to load the idp Metadata from
+	 */
+	private Resource metadataUri;
+	/**
+	 * The location of the private key for decrypting the saml token data
+	 */
+	private Resource decryptionPrivateKey;
+	/**
+	 * The location of the certificate for decrypting the saml token data
+	 */
+	private Resource decryptionCertificate;
+
 }
diff --git a/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java b/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java
index 0bbdf0ab26d16ad9f9c14f164f63f241995963f1..52ca34b72393453155420fbc8f345b229b134d49 100644
--- a/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java
+++ b/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java
@@ -1,19 +1,50 @@
+/*
+ * 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.antragraum;
 
 import static java.util.Objects.*;
 
-import jakarta.annotation.PostConstruct;
+import java.util.stream.Stream;
 
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.stereotype.Service;
 
 import de.ozgcloud.nachrichten.NachrichtenManagerProperties;
+import de.ozgcloud.nachrichten.postfach.PersistPostfachNachrichtService;
+import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
+import jakarta.annotation.PostConstruct;
 import lombok.RequiredArgsConstructor;
 
 @Service
 @RequiredArgsConstructor
 @ConditionalOnProperty(AntragraumProperties.PROPERTY_ANTRAGSRAUM_URL)
 public class AntragraumService {
+	private final PersistPostfachNachrichtService postfachNachrichtService;
+	private final Saml2Verifier verifier;
+	private final Saml2Parser parser;
+	private final Saml2Decrypter decrypter;
 
 	static final String USER_NOTIFICATION_TEMPLATE = """
 			Guten Tag,
@@ -44,4 +75,18 @@ public class AntragraumService {
 		return USER_NOTIFICATION_TEMPLATE.formatted(getAntragsraumUrl());
 	}
 
+	public Stream<PostfachNachricht> findRueckfragen(String samlToken) {
+		verifyToken(samlToken);
+		var postfachId = decrypter.decryptPostfachId(parser.parse(samlToken));
+
+		return postfachNachrichtService.findRueckfragen(postfachId);
+	}
+
+	void verifyToken(String token) {
+		var errors = verifier.verify(token);
+		if (CollectionUtils.isNotEmpty(errors)) {
+			throw new SecurityException("SAML Token verification failed. Errors: %s".formatted(errors));
+		}
+	}
+
 }
diff --git a/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/BayernIdSamlConfiguration.java b/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/BayernIdSamlConfiguration.java
new file mode 100644
index 0000000000000000000000000000000000000000..0961155476fed54722e9572435b34c5225e67e80
--- /dev/null
+++ b/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/BayernIdSamlConfiguration.java
@@ -0,0 +1,242 @@
+/*
+ * 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.antragraum;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+import java.security.interfaces.RSAPrivateKey;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import jakarta.annotation.PostConstruct;
+
+import org.opensaml.core.config.ConfigurationService;
+import org.opensaml.core.config.InitializationService;
+import org.opensaml.core.criterion.EntityIdCriterion;
+import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.config.XMLObjectProviderRegistry;
+import org.opensaml.saml.common.xml.SAMLConstants;
+import org.opensaml.saml.criterion.ProtocolCriterion;
+import org.opensaml.saml.metadata.criteria.role.impl.EvaluableProtocolRoleDescriptorCriterion;
+import org.opensaml.saml.saml2.metadata.EntitiesDescriptor;
+import org.opensaml.saml.saml2.metadata.EntityDescriptor;
+import org.opensaml.saml.saml2.metadata.KeyDescriptor;
+import org.opensaml.security.credential.Credential;
+import org.opensaml.security.credential.CredentialResolver;
+import org.opensaml.security.credential.UsageType;
+import org.opensaml.security.credential.criteria.impl.EvaluableEntityIDCredentialCriterion;
+import org.opensaml.security.credential.criteria.impl.EvaluableUsageCredentialCriterion;
+import org.opensaml.security.credential.impl.CollectionCredentialResolver;
+import org.opensaml.security.criteria.UsageCriterion;
+import org.opensaml.security.x509.BasicX509Credential;
+import org.opensaml.xmlsec.config.impl.DefaultSecurityConfigurationBootstrap;
+import org.opensaml.xmlsec.keyinfo.KeyInfoSupport;
+import org.opensaml.xmlsec.signature.support.SignatureTrustEngine;
+import org.opensaml.xmlsec.signature.support.impl.ExplicitKeySignatureTrustEngine;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.Resource;
+import org.springframework.security.converter.RsaKeyConverters;
+import org.springframework.security.saml2.Saml2Exception;
+import org.springframework.security.saml2.core.Saml2X509Credential;
+import org.springframework.util.Assert;
+
+import lombok.Getter;
+import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.utilities.java.support.xml.BasicParserPool;
+import net.shibboleth.utilities.java.support.xml.ParserPool;
+import net.shibboleth.utilities.java.support.xml.XMLParserException;
+
+@Configuration
+@ConditionalOnProperty(AntragraumProperties.PROPERTY_ANTRAGSRAUM_URL)
+class BayernIdSamlConfiguration {
+	private XMLObjectProviderRegistry registry;
+	@Getter
+	private ParserPool parserPool;
+	@Autowired
+	private AntragraumProperties antragraumProperties;
+
+	@PostConstruct
+	void initOpenSAML() {
+		try {
+			registry = new XMLObjectProviderRegistry();
+			ConfigurationService.register(XMLObjectProviderRegistry.class, registry);
+			parserPool = initParserPool();
+
+			registry.setParserPool(parserPool);
+			InitializationService.initialize();
+		} catch (Exception e) {
+			throw new RuntimeException("Initialization failed");
+		}
+	}
+
+	private ParserPool initParserPool() throws ComponentInitializationException {
+		var localParserPool = new BasicParserPool();
+
+		final var features = createFeatureMap();
+
+		localParserPool.setBuilderFeatures(features);
+
+		localParserPool.setBuilderAttributes(new HashMap<>());
+
+		localParserPool.initialize();
+
+		return localParserPool;
+	}
+
+	private Map<String, Boolean> createFeatureMap() {
+		final Map<String, Boolean> features = new HashMap<>();
+		features.put("http://xml.org/sax/features/external-general-entities", Boolean.FALSE);
+		features.put("http://xml.org/sax/features/external-parameter-entities", Boolean.FALSE);
+		features.put("http://apache.org/xml/features/disallow-doctype-decl", Boolean.TRUE);
+		features.put("http://apache.org/xml/features/validation/schema/normalized-value", Boolean.FALSE);
+		features.put("http://javax.xml.XMLConstants/feature/secure-processing", Boolean.TRUE);
+		return features;
+	}
+
+	SignatureTrustEngine getTrustEngine() {
+		Set<Credential> credentials = new HashSet<>();
+		Collection<Saml2X509Credential> keys = getCertificatesFromMetadata();
+
+		for (Saml2X509Credential key : keys) {
+			var cred = new BasicX509Credential(key.getCertificate());
+			cred.setUsageType(UsageType.SIGNING);
+			cred.setEntityId(antragraumProperties.getEntityId());
+			credentials.add(cred);
+		}
+
+		CredentialResolver credentialsResolver = new CollectionCredentialResolver(credentials);
+		return new ExplicitKeySignatureTrustEngine(credentialsResolver,
+				DefaultSecurityConfigurationBootstrap.buildBasicInlineKeyInfoCredentialResolver());
+	}
+
+	CriteriaSet getVerificationCriteria() {
+		var criteria = new CriteriaSet();
+		criteria.add(new EvaluableEntityIDCredentialCriterion(new EntityIdCriterion(antragraumProperties.getEntityId())));
+		criteria.add(new EvaluableProtocolRoleDescriptorCriterion(new ProtocolCriterion("urn:oasis:names:tc:SAML:2.0:protocol")));
+		criteria.add(new EvaluableUsageCredentialCriterion(new UsageCriterion(UsageType.SIGNING)));
+		return criteria;
+	}
+
+	Saml2X509Credential getDecryptionCredential() {
+		var privateKey = readPrivateKey(antragraumProperties.getDecryptionPrivateKey());
+		var certificate = readCertificateFromResource(antragraumProperties.getDecryptionCertificate());
+		return new Saml2X509Credential(privateKey, certificate, Saml2X509Credential.Saml2X509CredentialType.DECRYPTION);
+	}
+
+	private RSAPrivateKey readPrivateKey(Resource location) {
+		Assert.state(location != null, "No private key location specified");
+		Assert.state(location.exists(), () -> "Private key location '" + location + "' does not exist");
+		try (var inputStream = location.getInputStream()) {
+			return RsaKeyConverters.pkcs8().convert(inputStream);
+		} catch (IOException e) {
+			throw new IllegalArgumentException(e);
+		}
+	}
+
+	private X509Certificate readCertificateFromResource(Resource location) {
+		Assert.state(location != null, "No certificate location specified");
+		Assert.state(location.exists(), () -> "Certificate  location '" + location + "' does not exist");
+		try (var inputStream = location.getInputStream()) {
+
+			return (X509Certificate) CertificateFactory.getInstance("X.509").generateCertificate(inputStream);
+		} catch (IOException | CertificateException e) {
+			throw new IllegalArgumentException(e);
+		}
+	}
+
+	List<Saml2X509Credential> getCertificatesFromMetadata() {
+		try (var metadata = antragraumProperties.getMetadataUri().getInputStream()) {
+			var xmlObject = xmlObject(metadata);
+			if (xmlObject instanceof EntitiesDescriptor descriptors) {
+				for (EntityDescriptor descriptor : descriptors.getEntityDescriptors()) {
+					if (descriptor.getIDPSSODescriptor(SAMLConstants.SAML20P_NS) != null) {
+						return getVerificationCertificates(descriptor);
+					}
+				}
+			}
+		} catch (IOException e) {
+			throw new Saml2Exception("Error reading idp metadata.", e);
+		} catch (ComponentInitializationException | XMLParserException e) {
+			throw new Saml2Exception("Error initializing parser pool.", e);
+		}
+
+		throw new Saml2Exception("No IDPSSO Descriptors found");
+	}
+
+	private XMLObject xmlObject(InputStream inputStream) throws ComponentInitializationException, XMLParserException {
+		var document = getParserPool().parse(inputStream);
+		var element = document.getDocumentElement();
+		var unmarshaller = this.registry.getUnmarshallerFactory().getUnmarshaller(element);
+		if (unmarshaller == null) {
+			throw new Saml2Exception("Unsupported element of type " + element.getTagName());
+		}
+		try {
+			return unmarshaller.unmarshall(element);
+		} catch (Exception ex) {
+			throw new Saml2Exception(ex);
+		}
+	}
+
+	List<Saml2X509Credential> getVerificationCertificates(EntityDescriptor descriptor) {
+		var idpssoDescriptor = descriptor.getIDPSSODescriptor(SAMLConstants.SAML20P_NS);
+		if (idpssoDescriptor == null) {
+			throw new Saml2Exception("Metadata response is missing the necessary IDPSSODescriptor element");
+		}
+		List<Saml2X509Credential> verification = new ArrayList<>();
+		for (KeyDescriptor keyDescriptor : idpssoDescriptor.getKeyDescriptors()) {
+			if (keyDescriptor.getUse().equals(UsageType.SIGNING)) {
+				var certificates = certificates(keyDescriptor);
+				for (X509Certificate certificate : certificates) {
+					verification.add(Saml2X509Credential.verification(certificate));
+				}
+			}
+		}
+		if (verification.isEmpty()) {
+			throw new Saml2Exception(
+					"Metadata response is missing verification certificates, necessary for verifying SAML assertions");
+		}
+
+		return verification;
+	}
+
+	private List<X509Certificate> certificates(KeyDescriptor keyDescriptor) {
+		try {
+			return KeyInfoSupport.getCertificates(keyDescriptor.getKeyInfo());
+		} catch (CertificateException ex) {
+			throw new Saml2Exception(ex);
+		}
+	}
+}
diff --git a/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Decrypter.java b/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Decrypter.java
new file mode 100644
index 0000000000000000000000000000000000000000..9728ddba81bb0105dde77407ea24b44214e0b29d
--- /dev/null
+++ b/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Decrypter.java
@@ -0,0 +1,105 @@
+/*
+ * 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.antragraum;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+
+import jakarta.annotation.PostConstruct;
+
+import org.opensaml.core.xml.schema.XSString;
+import org.opensaml.saml.saml2.core.AttributeStatement;
+import org.opensaml.saml.saml2.core.EncryptedAssertion;
+import org.opensaml.saml.saml2.core.Response;
+import org.opensaml.saml.saml2.encryption.Decrypter;
+import org.opensaml.saml.saml2.encryption.EncryptedElementTypeEncryptedKeyResolver;
+import org.opensaml.security.credential.Credential;
+import org.opensaml.security.credential.CredentialSupport;
+import org.opensaml.xmlsec.encryption.support.ChainingEncryptedKeyResolver;
+import org.opensaml.xmlsec.encryption.support.EncryptedKeyResolver;
+import org.opensaml.xmlsec.encryption.support.InlineEncryptedKeyResolver;
+import org.opensaml.xmlsec.encryption.support.SimpleRetrievalMethodEncryptedKeyResolver;
+import org.opensaml.xmlsec.keyinfo.KeyInfoCredentialResolver;
+import org.opensaml.xmlsec.keyinfo.impl.CollectionKeyInfoCredentialResolver;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.security.saml2.Saml2Exception;
+import org.springframework.stereotype.Service;
+
+import lombok.RequiredArgsConstructor;
+
+@Service
+@RequiredArgsConstructor
+@ConditionalOnProperty(AntragraumProperties.PROPERTY_ANTRAGSRAUM_URL)
+class Saml2Decrypter {
+	private final BayernIdSamlConfiguration configuration;
+
+	public static final String LEGACY_POSTKORB_HANDLE_KEY = "legacyPostkorbHandle";
+	private Decrypter decrypter;
+	private static final EncryptedKeyResolver encryptedKeyResolver = new ChainingEncryptedKeyResolver(
+			Arrays.asList(new InlineEncryptedKeyResolver(), new EncryptedElementTypeEncryptedKeyResolver(),
+					new SimpleRetrievalMethodEncryptedKeyResolver()));
+
+	@PostConstruct
+	void init() {
+		Collection<Credential> credentials = new ArrayList<>();
+		var decryptionX509Credential = configuration.getDecryptionCredential();
+
+		Credential cred = CredentialSupport.getSimpleCredential(decryptionX509Credential.getCertificate(), decryptionX509Credential.getPrivateKey());
+		credentials.add(cred);
+
+		KeyInfoCredentialResolver resolver = new CollectionKeyInfoCredentialResolver(credentials);
+		var setupDecrypter = new Decrypter(null, resolver, encryptedKeyResolver);
+		setupDecrypter.setRootInNewDocument(true);
+
+		decrypter = setupDecrypter;
+	}
+
+	void decryptResponseElements(Response response) {
+		for (EncryptedAssertion encryptedAssertion : response.getEncryptedAssertions()) {
+			try {
+				var assertion = decrypter.decrypt(encryptedAssertion);
+				response.getAssertions().add(assertion);
+			} catch (Exception ex) {
+				throw new Saml2Exception(ex);
+			}
+		}
+	}
+
+	String decryptPostfachId(Response response) {
+		decryptResponseElements(response);
+
+		var samlAssertion = response.getAssertions().get(0);
+		var statements = (AttributeStatement) samlAssertion.getStatements().get(1);
+		var attributes = statements.getAttributes();
+		var postfachIdOptional = attributes.stream().filter(attribute -> LEGACY_POSTKORB_HANDLE_KEY.equals(attribute.getFriendlyName())).findFirst();
+
+		return postfachIdOptional.map(postfachIdAttribute -> {
+			var values = postfachIdAttribute.getAttributeValues();
+			return ((XSString) values.get(0)).getValue();
+		}).orElseThrow();
+
+	}
+}
diff --git a/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Parser.java b/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Parser.java
new file mode 100644
index 0000000000000000000000000000000000000000..fa23252ab39606a73825a3981127f0731f0f7e49
--- /dev/null
+++ b/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Parser.java
@@ -0,0 +1,74 @@
+/*
+ * 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.antragraum;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Objects;
+
+import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
+import org.opensaml.core.xml.io.UnmarshallingException;
+import org.opensaml.saml.saml2.core.Response;
+import org.opensaml.saml.saml2.core.impl.ResponseUnmarshaller;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.security.saml2.Saml2Exception;
+import org.springframework.stereotype.Service;
+
+import lombok.RequiredArgsConstructor;
+import net.shibboleth.utilities.java.support.xml.XMLParserException;
+
+@Service
+@ConditionalOnProperty(AntragraumProperties.PROPERTY_ANTRAGSRAUM_URL)
+@RequiredArgsConstructor
+class Saml2Parser {
+	private final BayernIdSamlConfiguration configuration;
+	private ResponseUnmarshaller unmarshaller;
+
+	Response parse(String request) {
+		return (Response) xmlObject(new ByteArrayInputStream(request.getBytes(StandardCharsets.UTF_8)));
+	}
+
+	XMLObject xmlObject(InputStream inputStream) throws Saml2Exception {
+		try {
+			var document = configuration.getParserPool().parse(inputStream);
+			var element = document.getDocumentElement();
+			return getUnmarshaller().unmarshall(element);
+		} catch (XMLParserException | UnmarshallingException e) {
+			throw new Saml2Exception("Failed to deserialize LogoutRequest", e);
+		}
+	}
+
+	private ResponseUnmarshaller getUnmarshaller() {
+		if (Objects.nonNull(unmarshaller)) {
+			return unmarshaller;
+		}
+
+		unmarshaller = (ResponseUnmarshaller) XMLObjectProviderRegistrySupport.getUnmarshallerFactory()
+				.getUnmarshaller(Response.DEFAULT_ELEMENT_NAME);
+		return unmarshaller;
+	}
+}
diff --git a/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Verifier.java b/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Verifier.java
new file mode 100644
index 0000000000000000000000000000000000000000..e8cdf4d18e1ce1846294a165a1da80175aef452e
--- /dev/null
+++ b/nachrichten-manager/src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Verifier.java
@@ -0,0 +1,90 @@
+/*
+ * 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.antragraum;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+import jakarta.annotation.PostConstruct;
+
+import org.opensaml.saml.security.impl.SAMLSignatureProfileValidator;
+import org.opensaml.xmlsec.signature.support.SignatureTrustEngine;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.security.saml2.core.Saml2Error;
+import org.springframework.security.saml2.core.Saml2ErrorCodes;
+import org.springframework.stereotype.Service;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.log4j.Log4j2;
+import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+
+@Log4j2
+@RequiredArgsConstructor
+@Service
+@ConditionalOnProperty(AntragraumProperties.PROPERTY_ANTRAGSRAUM_URL)
+class Saml2Verifier {
+	public static final String INVALID_SIGNATURE = "Invalid signature for object [%s]: ";
+	public static final String SIGNATURE_MISSING = "Signature missing";
+	private final Saml2Parser parser;
+	private final BayernIdSamlConfiguration configuration;
+	private SignatureTrustEngine trustEngine;
+	private CriteriaSet verificationCriteria;
+
+	@PostConstruct
+	void init() {
+		trustEngine = configuration.getTrustEngine();
+		verificationCriteria = configuration.getVerificationCriteria();
+	}
+
+	List<Saml2Error> verify(String samlToken) {
+		var response = parser.parse(samlToken);
+
+		List<Saml2Error> errors = new ArrayList<>();
+		var signature = response.getSignature();
+		var profileValidator = new SAMLSignatureProfileValidator();
+		if (Objects.nonNull(signature)) {
+			try {
+				profileValidator.validate(signature);
+			} catch (Exception ex) {
+				LOG.error("Error validating SAML Token: ", ex);
+				errors.add(new Saml2Error(Saml2ErrorCodes.INVALID_SIGNATURE, INVALID_SIGNATURE.formatted(response.getID())));
+			}
+
+			try {
+				if (!trustEngine.validate(signature, verificationCriteria)) {
+					errors.add(new Saml2Error(Saml2ErrorCodes.INVALID_SIGNATURE, INVALID_SIGNATURE.formatted(response.getID())));
+				}
+			} catch (Exception ex) {
+				LOG.error("Error validating SAML Token: ", ex);
+				errors.add(new Saml2Error(Saml2ErrorCodes.INVALID_SIGNATURE, INVALID_SIGNATURE.formatted(response.getID())));
+			}
+		} else {
+			errors.add(new Saml2Error(Saml2ErrorCodes.INVALID_SIGNATURE, SIGNATURE_MISSING));
+		}
+
+		return errors;
+	}
+}
diff --git a/nachrichten-manager/src/main/resources/application-bayern.yaml b/nachrichten-manager/src/main/resources/application-bayern.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f8fcba293cb9f21fd400b4f86a3c0320c0fa6aa3
--- /dev/null
+++ b/nachrichten-manager/src/main/resources/application-bayern.yaml
@@ -0,0 +1,3 @@
+ozgcloud:
+  antragraum:
+    entityId: https://antragsraum.ozgcloud.de/
\ No newline at end of file
diff --git a/nachrichten-manager/src/main/resources/application-bayernlocal.yaml b/nachrichten-manager/src/main/resources/application-bayernlocal.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..898a6a6d7a85c34656f5ba0a34611a10025f4962
--- /dev/null
+++ b/nachrichten-manager/src/main/resources/application-bayernlocal.yaml
@@ -0,0 +1,7 @@
+ozgcloud:
+  antragraum:
+    url: https://dev.antragsraum.de/
+    entityId: https://antragsraum.ozgcloud.de/
+    metadataUri: "classpath:/bayernid/metadata/bayernid-idp-infra.xml"
+    decryptionPrivateKey: "classpath:/bayernid/bayernid-test-enc.key"
+    decryptionCertificate: "classpath:/bayernid/bayernid-test-enc.crt"
\ No newline at end of file
diff --git a/nachrichten-manager/src/main/resources/bayernid/metadata/bayernid-idp-infra.xml b/nachrichten-manager/src/main/resources/bayernid/metadata/bayernid-idp-infra.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ec1ed7ca7099b8be7a8cff7448a740f0b9404c34
--- /dev/null
+++ b/nachrichten-manager/src/main/resources/bayernid/metadata/bayernid-idp-infra.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?><md:EntitiesDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
+    <md:EntityDescriptor entityID="https://infra-pre-id.bayernportal.de/idp">
+        <md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
+            <md:KeyDescriptor use="signing">
+                <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+                    <ds:X509Data>
+                        <ds:X509Certificate>MIIFbzCCA1egAwIBAgIJAPdFXXarkBN2MA0GCSqGSIb3DQEBCwUAME4xCzAJBgNV
+                            BAYTAkRFMQ8wDQYDVQQIDAZCYXllcm4xETAPBgNVBAcMCE11ZW5jaGVuMQ0wCwYD
+                            VQQKDARBS0RCMQwwCgYDVQQLDANJRE0wHhcNMjAxMDI3MTMxODQxWhcNMjUxMDI2
+                            MTMxODQxWjBOMQswCQYDVQQGEwJERTEPMA0GA1UECAwGQmF5ZXJuMREwDwYDVQQH
+                            DAhNdWVuY2hlbjENMAsGA1UECgwEQUtEQjEMMAoGA1UECwwDSURNMIICIjANBgkq
+                            hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzDtWAEdC3J9FD+ti1exRhN1lzNgKWqO2
+                            gQNdJvlt7KGHA2VGGO7tqRogTuoqi/ydtiHJ8+lhp4kcWqyfv7i9HXOncvcsRRmR
+                            dZjUY2Iui6ozJqD5LVm/vP5YfdP7vQPdbqyyfpoJhf3mbMEtdNDdGRnGIPUfDn+C
+                            Fbo37f9tPwMgf3jgh4gxaujtLIhhr9gevVTEeZAFu9EvzLNd3kEtRb7MuXqIOdu1
+                            rW8HlGYFwwVLqEyBn8XG0QAIfhMmGjFMG7z+Kco2quwOmmZVzWQfeH/3AlN2KbcP
+                            t7j+pl+6Bew2AAivP7O+95YKORqQjTu3rPWMF4txPId37MSjoytwBRyd5EACTvhQ
+                            BOGrDFKQUOx6fTtRc8+7XGVz8MdQaZQWQXXh1ByU783twNdnRSrSVIyLdjiy1uCb
+                            jvsSAtbzGBygPIvDo3skCNLNFXsChtHIfFFDK20KPGb0ghEDf2q3hDbFG3ZDGGyn
+                            ZmJcZKuZhJqodJ/++sAXADyTJNAPVYDjKCF4ypELp2Eu/p1gaQPJEb74L/ZFZVOE
+                            JFyXIiaqB9J+fcn/biqHHOmcCi8n9aIiNt1fatr1Z4lQRWoGtKaGU0+bzUSH4Bgs
+                            2EG4u1CI2MKDWqK2aEsHrtu8tbS9LrUmDVKtaEUOeul8xWVa036vp/YUIdiJNZSx
+                            ZG4iTmSOATECAwEAAaNQME4wHQYDVR0OBBYEFFYeltslkaolOmcINXQeSe7nURwp
+                            MB8GA1UdIwQYMBaAFFYeltslkaolOmcINXQeSe7nURwpMAwGA1UdEwQFMAMBAf8w
+                            DQYJKoZIhvcNAQELBQADggIBAKqAlXoO41SAiycYUOrR90pfwTCysmbtHF5RWSCM
+                            jF2aCG8URJ7bXwC0lBH8E5zCetFZwdqZziQtxzRkIOfhS5uWbH0RDhwuxZG+5RTP
+                            yaHPAZI6e5xHDu8vHl/VbC3lnL/6K8l+Purr/yo8qkJqrPgThZRL9jBQyYRhDSsJ
+                            UyIw5zcKKUQC/JWtMQAQcopbjekCs6xDT1HqIN90Sc/gOfYjNo0dGMNmro9mxcw8
+                            2Iow18KNVdtEexfD+/6x4NPD61pzuQEe09TR+Cv3XyzBoGQ/2arijcPnGvth79ff
+                            VFtRSf3fSs7wEKV9g3mEWXFDtPBhDj6K0kKU/kJfEZixkXl92MY+bmugrtTIrazj
+                            tfrgMglIAHu9XCYWd/gef0J+PNfHsxgbTEr3XSC+5/xoFKPQSw3PgV8lkUDq4mJU
+                            Ky/q4YmA37XQxourFR5pWvF03YACdtq6zPjtVeI7Cvkte6k0YW5S3cx9RmPv6YZh
+                            laZ5ERpWNiv6IjokLsvNeemf2PApjO7Q2EDBIoHBYH31wwJSsyRDrSVmbaqLFI15
+                            fLXeh2A4YbaBDZdGvDiLOAk+dG1wdZ2aGw/uNBzMtc8VeKqI1HPcqIluBA3uUPpy
+                            LLA+9hDPf6Pp4j0gkXxBikz+/h22bFxE1HmDiOSkEn+2NmOHuEFeA+D8jsCAL5VJ
+                            3emK</ds:X509Certificate>
+                    </ds:X509Data>
+                </ds:KeyInfo>
+            </md:KeyDescriptor>
+            <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
+            <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://infra-pre-id.bayernportal.de/idp/profile/SAML2/POST/SSO"/>
+            <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://infra-pre-id.bayernportal.de/idp/profile/SAML2/Redirect/SSO"/>
+        </md:IDPSSODescriptor>
+    </md:EntityDescriptor>
+</md:EntitiesDescriptor>
\ No newline at end of file
diff --git a/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcServiceTest.java b/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..e421e9f1e88b9333da6caa1427fa7a80c78dc98e
--- /dev/null
+++ b/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcServiceTest.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2024.
+ * 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.antragraum;
+
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
+
+import java.util.stream.Stream;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Spy;
+
+import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
+import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory;
+import io.grpc.stub.StreamObserver;
+
+class AntragraumGrpcServiceTest {
+	@Spy
+	@InjectMocks
+	private AntragraumGrpcService antragsraumGrpcService;
+	@Mock
+	private AntragraumService antragraumService;
+	@Mock
+	private AntragraumNachrichtMapper mapper;
+
+	@Nested
+	class TestFindRueckfragen {
+
+		@Nested
+		class TestFindRueckfragenGrpc {
+			@Mock
+			private StreamObserver<GrpcFindRueckfragenResponse> streamObserver;
+
+			@BeforeEach
+			void setup() {
+				when(antragraumService.findRueckfragen(any())).thenReturn(Stream.of(PostfachNachrichtTestFactory.create()));
+				when(mapper.toGrpc(any(PostfachNachricht.class))).thenReturn(GrpcRueckfrage.getDefaultInstance());
+			}
+
+			@Test
+			void shouldCallMapper() {
+				antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver);
+
+				verify(mapper).toGrpc(any(PostfachNachricht.class));
+			}
+
+			@Test
+			void shouldCallOnNext() {
+				antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver);
+
+				verify(streamObserver).onNext(any(GrpcFindRueckfragenResponse.class));
+			}
+
+			@Test
+			void shouldCallOnCompleted() {
+				antragsraumGrpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver);
+
+				verify(streamObserver).onCompleted();
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java b/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d07db58ecf7c183b3afef36cdcf27d8d7e7cbded
--- /dev/null
+++ b/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2024.
+ * 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.antragraum;
+
+import static org.assertj.core.api.Assertions.*;
+
+import java.time.format.DateTimeFormatter;
+
+import org.junit.jupiter.api.Test;
+import org.mapstruct.factory.Mappers;
+
+import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory;
+import de.ozgcloud.nachrichten.postfach.osi.MessageTestFactory;
+
+class AntragraumNachrichtMapperTest {
+
+	AntragraumNachrichtMapper mapper = Mappers.getMapper(AntragraumNachrichtMapper.class);
+
+	@Test
+	void shouldMapVorgangId() {
+		var result = map();
+
+		assertThat(result.getVorgangId()).isEqualTo(MessageTestFactory.VORGANG_ID);
+	}
+
+	@Test
+	void shouldMapId() {
+		var result = map();
+
+		assertThat(result.getId()).isEqualTo(PostfachNachrichtTestFactory.ID);
+	}
+
+	@Test
+	void shouldMapVorgangName() {
+		var result = map();
+
+		assertThat(result.getVorgangName()).isEqualTo(MessageTestFactory.SUBJECT);
+	}
+
+	@Test
+	void shouldMapStatus() {
+		var result = map();
+
+		assertThat(result.getStatus()).isEqualTo(AntragraumNachrichtMapper.DEFAULT_STATUS);
+	}
+
+	@Test
+	void shouldMapSentAt() {
+		var result = map();
+
+		assertThat(result.getSentAt()).isEqualTo(PostfachNachrichtTestFactory.SENT_AT.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
+	}
+
+	@Test
+	void shouldMapText() {
+		var result = map();
+
+		assertThat(result.getText()).isEqualTo(PostfachNachrichtTestFactory.MAIL_BODY);
+	}
+
+	@Test
+	void shouldMapAttachments() {
+		var result = map();
+
+		assertThat(result.getAttachmentFileIdCount()).isEqualTo(1);
+		assertThat(result.getAttachmentFileId(0)).isEqualTo(PostfachNachrichtTestFactory.ATTACHMENTS.get(0));
+	}
+
+	private GrpcRueckfrage map() {
+		return mapper.toGrpc(PostfachNachrichtTestFactory.create());
+	}
+}
\ No newline at end of file
diff --git a/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java b/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java
index fb81269bda54f4e645399c75c7cf666bfaeaa11c..887e0f460bca95ca85d196645e9db1a88c9bf968 100644
--- a/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java
+++ b/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java
@@ -1,19 +1,21 @@
 package de.ozgcloud.nachrichten.antragraum;
 
 import static org.assertj.core.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.Spy;
+import org.opensaml.saml.saml2.core.Response;
 
 import de.ozgcloud.nachrichten.NachrichtenManagerProperties;
-import de.ozgcloud.nachrichten.antragraum.AntragraumProperties;
-import de.ozgcloud.nachrichten.antragraum.AntragraumService;
+import de.ozgcloud.nachrichten.postfach.PersistPostfachNachrichtService;
 
 class AntragraumServiceTest {
-
+	@Spy
 	@InjectMocks
 	private AntragraumService service;
 
@@ -21,6 +23,14 @@ class AntragraumServiceTest {
 	private AntragraumProperties properties;
 	@Mock
 	private NachrichtenManagerProperties nachrichtenManagerProperties;
+	@Mock
+	private PersistPostfachNachrichtService postfachNachrichtService;
+	@Mock
+	private Saml2Verifier verifier;
+	@Mock
+	private Saml2Parser parser;
+	@Mock
+	private Saml2Decrypter decrypter;
 
 	@Nested
 	class TestGetAntragsraumUrl {
@@ -38,4 +48,40 @@ class AntragraumServiceTest {
 
 	}
 
+	@Nested
+	class TestFindRueckfragen {
+		static final String SAML_TOKEN = "TOKEN";
+
+		@Test
+		void shouldCallVerify() {
+			service.findRueckfragen(SAML_TOKEN);
+
+			verify(service).verifyToken(anyString());
+		}
+
+		@Test
+		void shouldCallVerifier() {
+			service.findRueckfragen(SAML_TOKEN);
+
+			verify(verifier).verify(anyString());
+		}
+
+		@Test
+		void shouldCallDecrypt() {
+			when(parser.parse(anyString())).thenReturn(mock(Response.class));
+
+			service.findRueckfragen(SAML_TOKEN);
+
+			verify(decrypter).decryptPostfachId(any(Response.class));
+		}
+
+		@Test
+		void shouldCallPostfachService() {
+			when(decrypter.decryptPostfachId(any())).thenReturn(GrpcFindRueckfrageRequestTestFactory.POSTFACH_ID);
+
+			service.findRueckfragen(SAML_TOKEN);
+
+			verify(postfachNachrichtService).findRueckfragen(anyString());
+		}
+	}
 }
\ No newline at end of file
diff --git a/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/BayernIdSamlConfigurationTest.java b/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/BayernIdSamlConfigurationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..045f5caf46429366373499cfd279563895d3d9ad
--- /dev/null
+++ b/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/BayernIdSamlConfigurationTest.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2024.
+ * 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.antragraum;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.springframework.core.io.InputStreamResource;
+
+import de.ozgcloud.common.test.TestUtils;
+
+class BayernIdSamlConfigurationTest {
+	@Mock
+	private AntragraumProperties properties;
+	@InjectMocks
+	private BayernIdSamlConfiguration bayernIdSamlConfiguration;
+
+	@Nested
+	class TestCreationOfParserPool {
+		@BeforeEach
+		void setup() throws Exception {
+			bayernIdSamlConfiguration.initOpenSAML();
+		}
+
+		@Test
+		void shouldCreateParserPool() {
+			assertThat(bayernIdSamlConfiguration.getParserPool()).isNotNull();
+		}
+	}
+
+	@Nested
+	class TestCreatingTrustEngine {
+		@BeforeEach
+		void setup() throws Exception {
+			when(properties.getMetadataUri()).thenReturn(new InputStreamResource(TestUtils.loadFile("bayernid-idp-infra.xml")));
+			when(properties.getEntityId()).thenReturn("https://antragsraum.ozgcloud.de/");
+			bayernIdSamlConfiguration.initOpenSAML();
+		}
+
+		@Test
+		void shouldCreateTrustEngine() {
+			assertThat(bayernIdSamlConfiguration.getTrustEngine()).isNotNull();
+		}
+	}
+
+	@Nested
+	class TestLoadingVerficationData {
+		@Test
+		void shouldCreateVerificationCriteria() {
+			when(properties.getEntityId()).thenReturn("https://antragsraum.ozgcloud.de/");
+			bayernIdSamlConfiguration.initOpenSAML();
+
+			assertThat(bayernIdSamlConfiguration.getVerificationCriteria()).isNotNull();
+		}
+
+		@Test
+		void shouldLoadVerificationCert() throws Exception {
+			when(properties.getMetadataUri()).thenReturn(new InputStreamResource(TestUtils.loadFile("bayernid-idp-infra.xml")));
+			bayernIdSamlConfiguration.initOpenSAML();
+
+			assertThat(bayernIdSamlConfiguration.getCertificatesFromMetadata()).isNotNull();
+		}
+	}
+}
\ No newline at end of file
diff --git a/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcFindRueckfrageRequestTestFactory.java b/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcFindRueckfrageRequestTestFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..9795428ab0d6020b63251d765af3e25e0f89cfa4
--- /dev/null
+++ b/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcFindRueckfrageRequestTestFactory.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2024.
+ * 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.antragraum;
+
+import de.ozgcloud.common.test.TestUtils;
+
+import java.util.UUID;
+
+public class GrpcFindRueckfrageRequestTestFactory {
+	static final String POSTFACH_ID = UUID.randomUUID().toString();
+	static final String SAML_TOKEN = TestUtils.loadTextFile("SamlResponse.xml");
+
+	static GrpcFindRueckfragenRequest create() {
+		return createBuilder().build();
+	}
+
+	static GrpcFindRueckfragenRequest.Builder createBuilder() {
+		return GrpcFindRueckfragenRequest.newBuilder()
+				.setPostfachId(POSTFACH_ID)
+				.setSamlToken(SAML_TOKEN);
+	}
+}
diff --git a/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2DecrypterTest.java b/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2DecrypterTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..1dd94cea3e8ef54e5b7d62ac936921ed583d748b
--- /dev/null
+++ b/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2DecrypterTest.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2024.
+ * 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.antragraum;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mock;
+import org.opensaml.saml.saml2.core.Attribute;
+import org.opensaml.saml.saml2.core.AttributeStatement;
+import org.opensaml.saml.saml2.core.Response;
+import org.springframework.core.io.InputStreamResource;
+import org.springframework.test.util.ReflectionTestUtils;
+
+import de.ozgcloud.common.test.TestUtils;
+
+@Disabled("Passende certificat und key file muessen local vorhanden sein")
+class Saml2DecrypterTest {
+	private Response samlResponse;
+
+	@Mock
+	private AntragraumProperties properties;
+
+	private BayernIdSamlConfiguration configuration;
+
+	private Saml2Decrypter decrypter;
+
+	@BeforeEach
+	void setup() throws Exception {
+		when(properties.getDecryptionCertificate()).thenReturn(new InputStreamResource(TestUtils.loadFile("bayernid-test-enc.crt")));
+		when(properties.getDecryptionPrivateKey()).thenReturn(new InputStreamResource(TestUtils.loadFile("bayernid-test-enc.key")));
+
+		configuration = new BayernIdSamlConfiguration();
+		ReflectionTestUtils.setField(configuration, "antragraumProperties", properties);
+		configuration.initOpenSAML();
+
+		var samlResponseString = TestUtils.loadTextFile("SamlResponse.xml");
+		var parser = new Saml2Parser(configuration);
+		samlResponse = parser.parse(samlResponseString);
+
+		decrypter = new Saml2Decrypter(configuration);
+		decrypter.init();
+	}
+
+	@Test
+	void shouldDecrypt() {
+		assertThat(samlResponse.getAssertions()).isEmpty();
+
+		decrypter.decryptResponseElements(samlResponse);
+
+		assertThat(samlResponse.getAssertions()).isNotEmpty();
+	}
+
+	@Test
+	void shouldHaveSubject() {
+		decrypter.decryptResponseElements(samlResponse);
+		var samlAssertion = samlResponse.getAssertions().get(0);
+
+		assertThat(samlAssertion.getSubject()).isNotNull();
+	}
+
+	@Test
+	void shouldHaveAuthnStatements() {
+		decrypter.decryptResponseElements(samlResponse);
+		var samlAssertion = samlResponse.getAssertions().get(0);
+		var authnStatements = samlAssertion.getAuthnStatements();
+
+		assertThat(authnStatements).isNotNull();
+	}
+
+	@Test
+	void shouldHaveStatements() {
+		decrypter.decryptResponseElements(samlResponse);
+		var samlAssertion = samlResponse.getAssertions().get(0);
+		var statements = samlAssertion.getStatements();
+
+		assertThat(statements).isNotNull();
+	}
+
+	@Test
+	void shouldHaveAttributes() {
+		decrypter.decryptResponseElements(samlResponse);
+		var samlAssertion = samlResponse.getAssertions().get(0);
+		var statements = (AttributeStatement) samlAssertion.getStatements().get(1);
+		var attributes = statements.getAttributes();
+		assertThat(attributes).hasSize(7);
+	}
+
+	@Test
+	void shouldHavePostfachId() {
+		decrypter.decryptResponseElements(samlResponse);
+		var samlAssertion = samlResponse.getAssertions().get(0);
+		var statements = (AttributeStatement) samlAssertion.getStatements().get(1);
+		var attributes = statements.getAttributes();
+		var postfachIdOptional = attributes.stream().filter(attribute -> "legacyPostkorbHandle".equals(attribute.getFriendlyName())).findFirst();
+		assertThat(postfachIdOptional).map(Attribute::getAttributeValues).isNotNull();
+	}
+
+	@Test
+	void shouldGetPostfachId() {
+		var postfachId = decrypter.decryptPostfachId(samlResponse);
+
+		assertThat(postfachId).isEqualTo("28721c6f-b78f-4d5c-a048-19fd2fc429d2");
+	}
+}
\ No newline at end of file
diff --git a/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2ParserTest.java b/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2ParserTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..afcca2fbe9c930eebf72c015495ac38f3a3ed2bd
--- /dev/null
+++ b/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2ParserTest.java
@@ -0,0 +1,72 @@
+
+package de.ozgcloud.nachrichten.antragraum;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.opensaml.saml.saml2.core.Response;
+import org.springframework.test.util.ReflectionTestUtils;
+
+import de.ozgcloud.common.test.TestUtils;
+
+class Saml2ParserTest {
+	private BayernIdSamlConfiguration configuration;
+
+	@BeforeEach
+	void setup() {
+		var properties = mock(AntragraumProperties.class);
+		configuration = new BayernIdSamlConfiguration();
+		ReflectionTestUtils.setField(configuration, "antragraumProperties", properties);
+		configuration.initOpenSAML();
+	}
+
+	@Test
+	void shouldInit() {
+		var parser = new Saml2Parser(configuration);
+
+		assertThat(parser).isNotNull();
+	}
+
+	@Test
+	void shouldParseSamlToken() throws Exception {
+		var response = getResponse();
+		assertThat(response).isNotNull();
+	}
+
+	@Test
+	void shouldHaveAssertions() throws Exception {
+		var response = getResponse();
+		assertThat(response.getAssertions()).isNotNull();
+	}
+
+	@Test
+	void shouldHaveEncryptedAssertions() throws Exception {
+		var response = getResponse();
+		assertThat(response.getEncryptedAssertions()).isNotNull();
+	}
+
+	@Test
+	void shouldHaveIssuer() throws Exception {
+		var response = getResponse();
+		assertThat(response.getIssuer().getValue()).isEqualTo("https://infra-pre-id.bayernportal.de/idp");
+	}
+
+	@Test
+	void shouldGetXMLObject() throws Exception {
+		var parser = new Saml2Parser(configuration);
+
+		try (var tokenStream = TestUtils.loadFile("SamlResponse.xml")) {
+			assertThat(parser.xmlObject(tokenStream)).isNotNull();
+		}
+	}
+
+	private Response getResponse() throws Exception {
+		var token = TestUtils.loadTextFile("SamlResponse.xml");
+		var parser = new Saml2Parser(configuration);
+
+		return parser.parse(token);
+	}
+
+}
\ No newline at end of file
diff --git a/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2VerifierTest.java b/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2VerifierTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..03dbcb5983d097f1516bdea5bc6f284345d43b15
--- /dev/null
+++ b/nachrichten-manager/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2VerifierTest.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2024.
+ * 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.antragraum;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mock;
+import org.springframework.core.io.InputStreamResource;
+import org.springframework.test.util.ReflectionTestUtils;
+
+import de.ozgcloud.common.test.TestUtils;
+
+class Saml2VerifierTest {
+	private String samlResponse;
+
+	private Saml2Verifier verifier;
+
+	@Mock
+	private AntragraumProperties properties;
+
+	private BayernIdSamlConfiguration configuration;
+
+	@BeforeEach
+	void setup() throws Exception {
+		when(properties.getMetadataUri()).thenReturn(new InputStreamResource(TestUtils.loadFile("bayernid-idp-infra.xml")));
+		when(properties.getEntityId()).thenReturn("https://antragsraum.ozgcloud.de");
+		samlResponse = TestUtils.loadTextFile("SamlResponse.xml");
+
+		configuration = new BayernIdSamlConfiguration();
+		ReflectionTestUtils.setField(configuration, "antragraumProperties", properties);
+		configuration.initOpenSAML();
+
+		var parser = new Saml2Parser(configuration);
+
+		verifier = new Saml2Verifier(parser, configuration);
+		verifier.init();
+	}
+
+	@Test
+	void shouldGetVerificationError() {
+		var res = verifier.verify(samlResponse);
+
+		assertThat(res).isNotEmpty();
+	}
+}
\ No newline at end of file
diff --git a/nachrichten-manager/src/test/resources/SamlResponse.xml b/nachrichten-manager/src/test/resources/SamlResponse.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d28738585aa627bc0bd4e6b7288ff3346ea4029e
--- /dev/null
+++ b/nachrichten-manager/src/test/resources/SamlResponse.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright (c) 2024.
+  ~ 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.
+  -->
+
+<saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
+                 Destination="https://deep-touching-condor.ngrok-free.app/login/saml2/sso/bayernid"
+                 ID="_d75103771f4e3869ca4bf743efb51320" InResponseTo="ARQf371368-b6eb-4708-b90d-e8a9c5fc0ffd"
+                 IssueInstant="2024-02-07T10:27:18.456Z" Version="2.0">
+    <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">https://infra-pre-id.bayernportal.de/idp
+    </saml2:Issuer>
+    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+        <ds:SignedInfo>
+            <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+            <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
+            <ds:Reference URI="#_d75103771f4e3869ca4bf743efb51320">
+                <ds:Transforms>
+                    <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
+                    <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+                </ds:Transforms>
+                <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+                <ds:DigestValue>y8O2/uKwgap3hb7Ym/sn+v0e3l+w0Z+wIFe11xXkSHU=</ds:DigestValue>
+            </ds:Reference>
+        </ds:SignedInfo>
+        <ds:SignatureValue>
+            G4fZCUS7Z+7PwDF7J+ZwXssM+iHBgxt34Uf4U3PWrbaYROrCZFD3hlVwCj35Z7RlQkDBi4q1m9RW6XGGVx2vpUDjT9dTkfbF7tB9PXa6l4mq3RyxuRELMwRpcbnamfe02qwtp0N7n9+gdjTVPb2xTMhp7FVG3OZ46OKwwJIm6jNLE+zVbKkNmxnv8XqGK+FgDS82CCG6Zi8nIZZkR80vHuRnSwrpStiInWSURoIYvG8nQfJ6u6IxbtMkDPtLrQHP6th9NMEyODe4RrjNwH8ERkbBl+rvtz406y3hngOW4uxNSTdQGOWj68t7LSn78S+Zc+5g/8up8gRIY6FWB5QxTl+GINIskcoWEfpyQcY932Jh9jGKFRBj2bcP0xALOeP+LTAz1O3hY0EZD0HpjILNhjp4/4Ki6SSeoVrp4UdEZGPpfFAMXdA9unjQGf5DqT3los5mH+KgkpAQoIU0725tIJuGojigXDIKgbNftB1oXjepcqcWvdnbRZlE9Kk4iU2YcVKGxHtEGi03+Qr2M37SqnooXw94Q0LxOQHU0jaOuw+nA8JbcvbpmHVbh7Qyg6OfrI/g+1pwhaQWrL6zEDDlgF3Fj6QxZGhMviCf43WJd8nPPwLIp0dFxXmbX5yBnpAPC4txJkf4idH8gze054O0Zf9G35vFH8oxELrA+d3qbPY=
+        </ds:SignatureValue>
+        <ds:KeyInfo>
+            <ds:X509Data>
+                <ds:X509Certificate>MIIFbzCCA1egAwIBAgIJAPdFXXarkBN2MA0GCSqGSIb3DQEBCwUAME4xCzAJBgNVBAYTAkRFMQ8w
+                    DQYDVQQIDAZCYXllcm4xETAPBgNVBAcMCE11ZW5jaGVuMQ0wCwYDVQQKDARBS0RCMQwwCgYDVQQL
+                    DANJRE0wHhcNMjAxMDI3MTMxODQxWhcNMjUxMDI2MTMxODQxWjBOMQswCQYDVQQGEwJERTEPMA0G
+                    A1UECAwGQmF5ZXJuMREwDwYDVQQHDAhNdWVuY2hlbjENMAsGA1UECgwEQUtEQjEMMAoGA1UECwwD
+                    SURNMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzDtWAEdC3J9FD+ti1exRhN1lzNgK
+                    WqO2gQNdJvlt7KGHA2VGGO7tqRogTuoqi/ydtiHJ8+lhp4kcWqyfv7i9HXOncvcsRRmRdZjUY2Iu
+                    i6ozJqD5LVm/vP5YfdP7vQPdbqyyfpoJhf3mbMEtdNDdGRnGIPUfDn+CFbo37f9tPwMgf3jgh4gx
+                    aujtLIhhr9gevVTEeZAFu9EvzLNd3kEtRb7MuXqIOdu1rW8HlGYFwwVLqEyBn8XG0QAIfhMmGjFM
+                    G7z+Kco2quwOmmZVzWQfeH/3AlN2KbcPt7j+pl+6Bew2AAivP7O+95YKORqQjTu3rPWMF4txPId3
+                    7MSjoytwBRyd5EACTvhQBOGrDFKQUOx6fTtRc8+7XGVz8MdQaZQWQXXh1ByU783twNdnRSrSVIyL
+                    djiy1uCbjvsSAtbzGBygPIvDo3skCNLNFXsChtHIfFFDK20KPGb0ghEDf2q3hDbFG3ZDGGynZmJc
+                    ZKuZhJqodJ/++sAXADyTJNAPVYDjKCF4ypELp2Eu/p1gaQPJEb74L/ZFZVOEJFyXIiaqB9J+fcn/
+                    biqHHOmcCi8n9aIiNt1fatr1Z4lQRWoGtKaGU0+bzUSH4Bgs2EG4u1CI2MKDWqK2aEsHrtu8tbS9
+                    LrUmDVKtaEUOeul8xWVa036vp/YUIdiJNZSxZG4iTmSOATECAwEAAaNQME4wHQYDVR0OBBYEFFYe
+                    ltslkaolOmcINXQeSe7nURwpMB8GA1UdIwQYMBaAFFYeltslkaolOmcINXQeSe7nURwpMAwGA1Ud
+                    EwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBAKqAlXoO41SAiycYUOrR90pfwTCysmbtHF5RWSCM
+                    jF2aCG8URJ7bXwC0lBH8E5zCetFZwdqZziQtxzRkIOfhS5uWbH0RDhwuxZG+5RTPyaHPAZI6e5xH
+                    Du8vHl/VbC3lnL/6K8l+Purr/yo8qkJqrPgThZRL9jBQyYRhDSsJUyIw5zcKKUQC/JWtMQAQcopb
+                    jekCs6xDT1HqIN90Sc/gOfYjNo0dGMNmro9mxcw82Iow18KNVdtEexfD+/6x4NPD61pzuQEe09TR
+                    +Cv3XyzBoGQ/2arijcPnGvth79ffVFtRSf3fSs7wEKV9g3mEWXFDtPBhDj6K0kKU/kJfEZixkXl9
+                    2MY+bmugrtTIrazjtfrgMglIAHu9XCYWd/gef0J+PNfHsxgbTEr3XSC+5/xoFKPQSw3PgV8lkUDq
+                    4mJUKy/q4YmA37XQxourFR5pWvF03YACdtq6zPjtVeI7Cvkte6k0YW5S3cx9RmPv6YZhlaZ5ERpW
+                    Niv6IjokLsvNeemf2PApjO7Q2EDBIoHBYH31wwJSsyRDrSVmbaqLFI15fLXeh2A4YbaBDZdGvDiL
+                    OAk+dG1wdZ2aGw/uNBzMtc8VeKqI1HPcqIluBA3uUPpyLLA+9hDPf6Pp4j0gkXxBikz+/h22bFxE
+                    1HmDiOSkEn+2NmOHuEFeA+D8jsCAL5VJ3emK
+                </ds:X509Certificate>
+            </ds:X509Data>
+        </ds:KeyInfo>
+    </ds:Signature>
+    <saml2p:Status xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol">
+        <saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
+    </saml2p:Status>
+    <saml2:EncryptedAssertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
+        <xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="_baed1174200b81b1bff3856cb4e6365c"
+                            Type="http://www.w3.org/2001/04/xmlenc#Element">
+            <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"
+                                   xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"/>
+            <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+                <xenc:EncryptedKey Id="_5a164760d15a61d269e1f7fdd9872a10" Recipient="https://antragsraum.ozgcloud.de/"
+                                   xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
+                    <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"
+                                           xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
+                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"
+                                         xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/>
+                    </xenc:EncryptionMethod>
+                    <ds:KeyInfo>
+                        <ds:X509Data>
+                            <ds:X509Certificate>
+                                MIIDsTCCApmgAwIBAgIUdw/27be5+2vj+MhGtoJjDsMsdDEwDQYJKoZIhvcNAQELBQAwaDELMAkG
+                                A1UEBhMCREUxDzANBgNVBAgMBkJheWVybjERMA8GA1UEBwwITXVlbmNoZW4xDzANBgNVBAoMBm1n
+                                bSB0cDEkMCIGCSqGSIb3DQEJARYVamVucy5yZWVzZUBtZ20tdHAuY29tMB4XDTI0MDExNjEyMjI0
+                                OVoXDTI1MDExNTEyMjI0OVowaDELMAkGA1UEBhMCREUxDzANBgNVBAgMBkJheWVybjERMA8GA1UE
+                                BwwITXVlbmNoZW4xDzANBgNVBAoMBm1nbSB0cDEkMCIGCSqGSIb3DQEJARYVamVucy5yZWVzZUBt
+                                Z20tdHAuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/HBBWBDSrEgdwXkSy15V
+                                00EaVTyLgc4vh/JcDiGIYZSqmcMwBd+B1u36xbdBf/duEtCUymMNP48OMjgFZtR6xn0meuR4NR6Y
+                                kn9mYGdU/GhldGuGv9XLAEAkVuTlo0H1QYyBS/6JwKQoSsHDkJ3YwDwKcyOt7QtpSadRZjQEN3gD
+                                vWoRYjgXTxj2I1ovllmi0zOHsFi5PBIuiPWUdJvBrHxpD/XVS9R/qzJpHPu3bjQ6UVRmhiZCUF7H
+                                5F/PQNwk+qXvjV0ooBeSWWO5hywhk4OP4QEgbYMOSo20YukYX8TJEsum1pwIcQrw7kW4GyKaAycy
+                                Rsa1fbM3tEkj+TiBKwIDAQABo1MwUTAdBgNVHQ4EFgQUfDL/6R33SJodsONCvxKy96AtU18wHwYD
+                                VR0jBBgwFoAUfDL/6R33SJodsONCvxKy96AtU18wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B
+                                AQsFAAOCAQEA+PCnvSwKU+bArTCIg5lfrwONbzKkjvPUymDNYX3oj1wVEN75hNf0RD7Rr0//ZYT3
+                                Rt0G193gjDcH1gbGIYhMLeGGkxEous2l3O+pRIQRR+hprjr6HzF8IphaJy1RbDwyGsXyLcyOylPL
+                                4cX9IjUdhklHiLZusBq95LSyw7hsCOAL2+vn816O7yv+28EWXXbnP2XEUjW36nxcZvR6oTJUplXy
+                                HRuuJJTsOxGRNuXA3UVgNbkdm1HnoSGpnsGdUKsUFoEmEJkcSdQRwxeH21WzYGOZmKMcvx2gObaS
+                                P8tafWh5z4Jx+Z7z5WP72Jt44/lnVjaV8aGo0KHXwgqQOtYftQ==
+                            </ds:X509Certificate>
+                        </ds:X509Data>
+                    </ds:KeyInfo>
+                    <xenc:CipherData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
+                        <xenc:CipherValue>
+                            ffr9pG/yL4QGQ4o1z/t6HH5XRG8pMHHjzlVTq6uC4eRpVvaNMz8XpUXqNAFGiB0Xbpkm++qOhGsOuz5Wffq5Qo78fMBfU95L1Lk9cVH1pUFfYyz5GV1LqlhStAZrCGHUdv5d0O7JLKgbi45JxxTc7ErAwPlOMqKLs95ZJuhl8Fp9XcYrdzW9IjuwmkB/HyPyjBWV066gaCMLImeBdCzBZc0pxuvH9jq8eX7h1B1eCd5F1LIoj35YDeU3PA/P/E6tLBxdGLFws+nYqNU3B5R2FPPoW+LP9zM7Q+SR20ti1Uh6TEMha05sJjWXFJU78PpJAtEl978ifqqO/23lYXYCrA==
+                        </xenc:CipherValue>
+                    </xenc:CipherData>
+                </xenc:EncryptedKey>
+            </ds:KeyInfo>
+            <xenc:CipherData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
+                <xenc:CipherValue>
+                    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
+                </xenc:CipherValue>
+            </xenc:CipherData>
+        </xenc:EncryptedData>
+    </saml2:EncryptedAssertion>
+</saml2p:Response>
diff --git a/nachrichten-manager/src/test/resources/application-bayern.yaml b/nachrichten-manager/src/test/resources/application-bayern.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..765940c40972f684097389caf6331114bfbdf1e0
--- /dev/null
+++ b/nachrichten-manager/src/test/resources/application-bayern.yaml
@@ -0,0 +1,15 @@
+ozgcloud:
+  antragraum:
+    url: https://dev.antragsraum.de/
+    entityId: https://antragsraum.ozgcloud.de/
+    metadataUri: "classpath:/bayernid/metadata/bayernid-idp-infra.xml"
+    decryptionPrivateKey: "classpath:/bayernid/bayernid-test-enc.key"
+    decryptionCertificate: "classpath:/bayernid/bayernid-test-enc.crt"
+  nachrichten-manager:
+    url: static://localhost:9091
+grpc:
+  client:
+    info-manager:
+      address: static://localhost:9091
+  server:
+    port: 9092
\ No newline at end of file
diff --git a/nachrichten-manager/src/test/resources/application.yaml b/nachrichten-manager/src/test/resources/application.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/nachrichten-manager/src/test/resources/bayernid-idp-infra.xml b/nachrichten-manager/src/test/resources/bayernid-idp-infra.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ec1ed7ca7099b8be7a8cff7448a740f0b9404c34
--- /dev/null
+++ b/nachrichten-manager/src/test/resources/bayernid-idp-infra.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?><md:EntitiesDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
+    <md:EntityDescriptor entityID="https://infra-pre-id.bayernportal.de/idp">
+        <md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
+            <md:KeyDescriptor use="signing">
+                <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+                    <ds:X509Data>
+                        <ds:X509Certificate>MIIFbzCCA1egAwIBAgIJAPdFXXarkBN2MA0GCSqGSIb3DQEBCwUAME4xCzAJBgNV
+                            BAYTAkRFMQ8wDQYDVQQIDAZCYXllcm4xETAPBgNVBAcMCE11ZW5jaGVuMQ0wCwYD
+                            VQQKDARBS0RCMQwwCgYDVQQLDANJRE0wHhcNMjAxMDI3MTMxODQxWhcNMjUxMDI2
+                            MTMxODQxWjBOMQswCQYDVQQGEwJERTEPMA0GA1UECAwGQmF5ZXJuMREwDwYDVQQH
+                            DAhNdWVuY2hlbjENMAsGA1UECgwEQUtEQjEMMAoGA1UECwwDSURNMIICIjANBgkq
+                            hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzDtWAEdC3J9FD+ti1exRhN1lzNgKWqO2
+                            gQNdJvlt7KGHA2VGGO7tqRogTuoqi/ydtiHJ8+lhp4kcWqyfv7i9HXOncvcsRRmR
+                            dZjUY2Iui6ozJqD5LVm/vP5YfdP7vQPdbqyyfpoJhf3mbMEtdNDdGRnGIPUfDn+C
+                            Fbo37f9tPwMgf3jgh4gxaujtLIhhr9gevVTEeZAFu9EvzLNd3kEtRb7MuXqIOdu1
+                            rW8HlGYFwwVLqEyBn8XG0QAIfhMmGjFMG7z+Kco2quwOmmZVzWQfeH/3AlN2KbcP
+                            t7j+pl+6Bew2AAivP7O+95YKORqQjTu3rPWMF4txPId37MSjoytwBRyd5EACTvhQ
+                            BOGrDFKQUOx6fTtRc8+7XGVz8MdQaZQWQXXh1ByU783twNdnRSrSVIyLdjiy1uCb
+                            jvsSAtbzGBygPIvDo3skCNLNFXsChtHIfFFDK20KPGb0ghEDf2q3hDbFG3ZDGGyn
+                            ZmJcZKuZhJqodJ/++sAXADyTJNAPVYDjKCF4ypELp2Eu/p1gaQPJEb74L/ZFZVOE
+                            JFyXIiaqB9J+fcn/biqHHOmcCi8n9aIiNt1fatr1Z4lQRWoGtKaGU0+bzUSH4Bgs
+                            2EG4u1CI2MKDWqK2aEsHrtu8tbS9LrUmDVKtaEUOeul8xWVa036vp/YUIdiJNZSx
+                            ZG4iTmSOATECAwEAAaNQME4wHQYDVR0OBBYEFFYeltslkaolOmcINXQeSe7nURwp
+                            MB8GA1UdIwQYMBaAFFYeltslkaolOmcINXQeSe7nURwpMAwGA1UdEwQFMAMBAf8w
+                            DQYJKoZIhvcNAQELBQADggIBAKqAlXoO41SAiycYUOrR90pfwTCysmbtHF5RWSCM
+                            jF2aCG8URJ7bXwC0lBH8E5zCetFZwdqZziQtxzRkIOfhS5uWbH0RDhwuxZG+5RTP
+                            yaHPAZI6e5xHDu8vHl/VbC3lnL/6K8l+Purr/yo8qkJqrPgThZRL9jBQyYRhDSsJ
+                            UyIw5zcKKUQC/JWtMQAQcopbjekCs6xDT1HqIN90Sc/gOfYjNo0dGMNmro9mxcw8
+                            2Iow18KNVdtEexfD+/6x4NPD61pzuQEe09TR+Cv3XyzBoGQ/2arijcPnGvth79ff
+                            VFtRSf3fSs7wEKV9g3mEWXFDtPBhDj6K0kKU/kJfEZixkXl92MY+bmugrtTIrazj
+                            tfrgMglIAHu9XCYWd/gef0J+PNfHsxgbTEr3XSC+5/xoFKPQSw3PgV8lkUDq4mJU
+                            Ky/q4YmA37XQxourFR5pWvF03YACdtq6zPjtVeI7Cvkte6k0YW5S3cx9RmPv6YZh
+                            laZ5ERpWNiv6IjokLsvNeemf2PApjO7Q2EDBIoHBYH31wwJSsyRDrSVmbaqLFI15
+                            fLXeh2A4YbaBDZdGvDiLOAk+dG1wdZ2aGw/uNBzMtc8VeKqI1HPcqIluBA3uUPpy
+                            LLA+9hDPf6Pp4j0gkXxBikz+/h22bFxE1HmDiOSkEn+2NmOHuEFeA+D8jsCAL5VJ
+                            3emK</ds:X509Certificate>
+                    </ds:X509Data>
+                </ds:KeyInfo>
+            </md:KeyDescriptor>
+            <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
+            <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://infra-pre-id.bayernportal.de/idp/profile/SAML2/POST/SSO"/>
+            <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://infra-pre-id.bayernportal.de/idp/profile/SAML2/Redirect/SSO"/>
+        </md:IDPSSODescriptor>
+    </md:EntityDescriptor>
+</md:EntitiesDescriptor>
\ No newline at end of file
diff --git a/src/main/helm/templates/deployment.yaml b/src/main/helm/templates/deployment.yaml
index c74ea4c6e5b148bbe74d2213fd90ee0c1b5942e9..7a17fea9c78bd89a2367bcc0dc002618d30ddc81 100644
--- a/src/main/helm/templates/deployment.yaml
+++ b/src/main/helm/templates/deployment.yaml
@@ -180,6 +180,19 @@ spec:
           - name: ozgcloud_bayernid_absender_gemeindeSchluessel
             value: {{ quote (required "ozgcloud.bayernid.absender.gemeindeSchluessel must be set if ozgcloud.bayernid is enabled" (((.Values.ozgcloud).bayernid).absender).gemeindeSchluessel) }}
           {{- end }}
+          
+          {{- if ((.Values.ozgcloud).antragraum).enabled }}
+          - name: ozgcloud_antragraum_enabled
+            value: {{ quote .Values.ozgcloud.antragraum.enabled }}
+          - name: ozgcloud_antragraum_url
+            value: {{ quote (required "ozgcloud.antragraum.url must be set if ozgcloud.antragraum is enabled" ((.Values.ozgcloud).antragraum).url) }}
+          - name: ozgcloud_antragraum_metadatauri
+            value: {{ quote (required "ozgcloud.antragraum.metadataUri must be set if ozgcloud.antragraum is enabled" ((.Values.ozgcloud).antragraum).metadataUri) }}
+          - name: ozgcloud_antragraum_decryptionprivatekey
+            value: {{ quote (required "ozgcloud.antragraum.decryptionPrivateKey must be set if ozgcloud.antragraum is enabled" ((.Values.ozgcloud).antragraum).decryptionPrivateKey) }}
+          - name: ozgcloud_antragraum_decryptioncertificate
+            value: {{ quote (required "ozgcloud.antragraum.decryptionCertificate must be set if ozgcloud.antragraum is enabled" ((.Values.ozgcloud).antragraum).decryptionCertificate) }}         
+          {{- end }}
 
 
           {{- if (.Values.ozgcloud).processors}}
diff --git a/src/test/helm/deployment_antragraum_test.yaml b/src/test/helm/deployment_antragraum_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..6805d4e9f60294a1155ca21158e8a04762096943
--- /dev/null
+++ b/src/test/helm/deployment_antragraum_test.yaml
@@ -0,0 +1,123 @@
+#
+# 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.
+#
+
+suite: deployment antragraum
+release:
+  name: vorgang-manager
+  namespace: sh-helm-test
+templates:
+  - templates/deployment.yaml
+set:
+  ozgcloud:
+    environment: dev
+    antragraum:
+      enabled: true
+      url: https://antragraum.address
+      metadataUri: "classpath:/bayernid/metadata/bayernid-idp-infra.xml"
+      decryptionPrivateKey: "decryptionPrivateKey_secret"
+      decryptionCertificate: "decryptionCertificate_secret"
+tests:
+  - it: should enable antragraum
+    templates:
+      - templates/deployment.yaml
+    asserts:
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: ozgcloud_antragraum_enabled
+            value: "true"
+  - it: should fail if antragraum url is not set
+    set:
+      ozgcloud:
+        environment: dev
+        antragraum:
+          enabled: true
+          url: 
+    asserts:
+      - failedTemplate:
+          errorMessage: "ozgcloud.antragraum.url must be set if ozgcloud.antragraum is enabled"
+
+  - it: should set metadataUri
+    asserts:
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: ozgcloud_antragraum_metadatauri
+            value: "classpath:/bayernid/metadata/bayernid-idp-infra.xml"
+  - it: should fail if metadataUri is not set
+    set:
+      ozgcloud:
+        antragraum:
+          metadataUri:
+    asserts:
+      - failedTemplate:
+          errorMessage: "ozgcloud.antragraum.metadataUri must be set if ozgcloud.antragraum is enabled"
+          
+  - it: should set metadataUri
+    asserts:
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: ozgcloud_antragraum_metadatauri
+            value: "classpath:/bayernid/metadata/bayernid-idp-infra.xml"
+  - it: should fail if metadataUri is not set
+    set:
+      ozgcloud:
+        antragraum:
+          metadataUri:
+    asserts:
+      - failedTemplate:
+          errorMessage: "ozgcloud.antragraum.metadataUri must be set if ozgcloud.antragraum is enabled"
+
+  - it: should set decryptionPrivateKey
+    asserts:
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: ozgcloud_antragraum_decryptionprivatekey
+            value: "decryptionPrivateKey_secret"
+  - it: should fail if decryptionPrivateKey is not set
+    set:
+      ozgcloud:
+        antragraum:
+          decryptionPrivateKey:
+    asserts:
+      - failedTemplate:
+          errorMessage: "ozgcloud.antragraum.decryptionPrivateKey must be set if ozgcloud.antragraum is enabled"
+
+  - it: should set decryptionPrivateKey
+    asserts:
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: ozgcloud_antragraum_decryptioncertificate
+            value: "decryptionCertificate_secret"
+  - it: should fail if decryptionCertificate is not set
+    set:
+      ozgcloud:
+        antragraum:
+          decryptionCertificate:
+    asserts:
+      - failedTemplate:
+          errorMessage: "ozgcloud.antragraum.decryptionCertificate must be set if ozgcloud.antragraum is enabled"
\ No newline at end of file
diff --git a/vorgang-manager-interface/src/main/protobuf/antragraum.model.proto b/vorgang-manager-interface/src/main/protobuf/antragraum.model.proto
index 16eb419ccb78e483b10cdf075337b069008fa1cc..062c92b7c6e0d9cdc7c2f40902737f61bed20094 100644
--- a/vorgang-manager-interface/src/main/protobuf/antragraum.model.proto
+++ b/vorgang-manager-interface/src/main/protobuf/antragraum.model.proto
@@ -32,42 +32,33 @@ option java_package = "de.ozgcloud.nachrichten.antragraum";
 option java_outer_classname = "AntragraumModelProto";
 
 message GrpcFindRueckfragenRequest {
-	string samlToken = 1;
-	string postfachId = 2;
+  string samlToken = 1;
+  string postfachId = 2;
 }
 
 message GrpcFindRueckfragenResponse {
-	repeated GrpcRueckfrage rueckfrage = 1;
-}
-
-message GrpcGetRueckfrageRequest {
-	string samlToken = 1;
-	string rueckfrageId = 2;
-}
-
-message GrpcGetRueckfrageResponse {
-	GrpcRueckfrage rueckfrage = 1;
+  repeated GrpcRueckfrage rueckfrage = 1;
 }
 
 message GrpcRueckfrage {
-	string id = 1;
-	string vorgangId = 2;
-	string vorgangName = 3;
-	string sendAt = 4;
-	string answeredAt = 5;
-	string status = 6;
-	string text = 7;
-	repeated string answerAttachmentFileId = 8;
-	repeated GrpcRueckfrageAnswer answers = 9;
+  string id = 1;
+  string vorgangId = 2;
+  string vorgangName = 3;
+  string sentAt = 4;
+  string answeredAt = 5;
+  string status = 6;
+  string text = 7;
+  repeated string attachmentFileId = 8;
+  repeated GrpcRueckfrageAnswer answers = 9;
 }
 
 message GrpcSendRueckfrageAnswerRequest {
-	string samlToken = 1;
-	GrpcRueckfrageAnswer answer = 2;
+  string samlToken = 1;
+  GrpcRueckfrageAnswer answer = 2;
 }
 
 message GrpcRueckfrageAnswer {
-	string rueckfrageId = 1;
-	string answerText = 2;
-	repeated string answerAttachmentFileId = 3;
+  string rueckfrageId = 1;
+  string answerText = 2;
+  repeated string attachmentFileId = 3;
 }
\ No newline at end of file
diff --git a/vorgang-manager-interface/src/main/protobuf/antragraum.proto b/vorgang-manager-interface/src/main/protobuf/antragraum.proto
index d5874e2a11806972c3ee66107ae2b616aefe878e..0fa6d67dffed44a28d58a531d8ff1ad03bf128ea 100644
--- a/vorgang-manager-interface/src/main/protobuf/antragraum.proto
+++ b/vorgang-manager-interface/src/main/protobuf/antragraum.proto
@@ -33,12 +33,9 @@ option java_package = "de.ozgcloud.nachrichten.antragraum";
 option java_outer_classname = "AntragraumProto";
 
 service AntragraumService {
-	rpc FindRueckfragen(GrpcFindRueckfragenRequest) returns (GrpcFindRueckfragenResponse) {
-	}
+  rpc FindRueckfragen(GrpcFindRueckfragenRequest) returns (GrpcFindRueckfragenResponse) {
+  }
 
-	rpc GetRueckfrage(GrpcGetRueckfrageRequest) returns (GrpcGetRueckfrageResponse) {
-	}
-
-	rpc SendRueckfrageAnswer(GrpcSendRueckfrageAnswerRequest) returns (de.ozgcloud.vorgang.grpc.command.GrpcCommand) {
-	}
+  rpc SendRueckfrageAnswer(GrpcSendRueckfrageAnswerRequest) returns (de.ozgcloud.vorgang.grpc.command.GrpcCommand) {
+  }
 }
\ No newline at end of file
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 2c981d73c499dcd683a2e456c538b4197650b9cf..e8c0ea9797d166866bec43f8a8091a0224ec1238 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
@@ -1,9 +1,5 @@
 /*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
+ * Copyright (c) 2024.
  * Lizenziert unter der EUPL, Version 1.2 oder - sobald
  * diese von der Europäischen Kommission genehmigt wurden -
  * Folgeversionen der EUPL ("Lizenz");
@@ -42,8 +38,6 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.stream.Stream;
 
-import jakarta.activation.MimetypesFileTypeMap;
-
 import org.apache.commons.lang3.StringUtils;
 import org.apache.http.entity.ContentType;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -65,6 +59,7 @@ import de.ozgcloud.vorgang.callcontext.User;
 import de.ozgcloud.vorgang.files.FileService;
 import de.ozgcloud.vorgang.files.OzgFile;
 import de.ozgcloud.vorgang.files.UploadedFilesReference;
+import jakarta.activation.MimetypesFileTypeMap;
 import lombok.extern.log4j.Log4j2;
 
 /**
@@ -256,7 +251,7 @@ class PersistPostfachNachrichtByCommandService implements PersistPostfachNachric
 
 	// uses map file: src/main/resources/mime.types
 	private String getByMimeTypes(String fileName) {
-		MimetypesFileTypeMap fileTypeMap = new MimetypesFileTypeMap();
+		var fileTypeMap = new MimetypesFileTypeMap();
 
 		return fileTypeMap.getContentType(fileName);
 	}
@@ -268,10 +263,13 @@ class PersistPostfachNachrichtByCommandService implements PersistPostfachNachric
 		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());
 	}