diff --git a/pom.xml b/pom.xml
index ab0c61bc2235c34a98e99f0d29eb3183d4774fee..aeaac44692b56cda777a843885651a86dddccb0c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,7 +49,6 @@
         <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>
-        <opensaml.version>4.3.0</opensaml.version>
     </properties>
 
     <repositories>
@@ -159,28 +158,12 @@
             <artifactId>mapstruct</artifactId>
         </dependency>
 
-        <!-- open saml2 -->
-        <dependency>
-            <groupId>org.opensaml</groupId>
-            <artifactId>opensaml-core</artifactId>
-            <version>${opensaml.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.opensaml</groupId>
-            <artifactId>opensaml-saml-api</artifactId>
-            <version>${opensaml.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.opensaml</groupId>
-            <artifactId>opensaml-saml-impl</artifactId>
-            <version>${opensaml.version}</version>
-        </dependency>
         <dependency>
             <groupId>org.springframework.security</groupId>
             <artifactId>spring-security-saml2-service-provider</artifactId>
         </dependency>
 
-        <!-- grpc -->
+ 
         <dependency>
             <groupId>net.devh</groupId>
             <artifactId>grpc-server-spring-boot-starter</artifactId>
diff --git a/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java b/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java
index d067974d56c50c393d29312363b7db36e882d164..6977a57499fc8ab21257ee7ffa79ab19f62daf38 100644
--- a/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java
+++ b/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java
@@ -35,7 +35,7 @@ import net.devh.boot.grpc.server.service.GrpcService;
 @GrpcService
 @RequiredArgsConstructor
 @ConditionalOnProperty(AntragraumProperties.PROPERTY_ANTRAGSRAUM_URL)
-public class AntragraumGrpcService extends AntragraumServiceGrpc.AntragraumServiceImplBase {
+class AntragraumGrpcService extends AntragraumServiceGrpc.AntragraumServiceImplBase {
 	private final AntragraumService antragraumService;
 	private final AntragraumNachrichtMapper mapper;
 
diff --git a/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java b/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java
index 81b3d5489edb78f083c3ca7a77c3eb151fff0a17..136b02ff864ec238cd4db5068f2ec40b4ccecc6f 100644
--- a/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java
+++ b/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java
@@ -24,39 +24,21 @@
 
 package de.ozgcloud.nachrichten.antragraum;
 
-import java.time.format.DateTimeFormatter;
-import java.util.Collections;
-import java.util.Map;
-
-import org.apache.commons.collections.MapUtils;
+import org.mapstruct.CollectionMappingStrategy;
 import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.NullValueCheckStrategy;
 
 import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
 
-@Mapper
+@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
 interface AntragraumNachrichtMapper {
 	String DEFAULT_STATUS = "NEU";
 
-	default GrpcRueckfrage toGrpc(PostfachNachricht postfachNachricht) {
-		return GrpcRueckfrage.newBuilder()
-				.setId(postfachNachricht.getId())
-				.setText(postfachNachricht.getMailBody())
-				.setSendAt(postfachNachricht.getSentAt().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME))
-				.setVorgangName(postfachNachricht.getSubject())
-				.setVorgangId(postfachNachricht.getVorgangId())
-				.setStatus(DEFAULT_STATUS)
-				.addAllAttachmentFileId(postfachNachricht.getAttachments())
-				.build();
-	}
-
-	@SuppressWarnings("unchecked")
-	default GrpcRueckfrage toGrpc(Map<String, Object> itemMap) {
-		var rueckfrageBuilder = GrpcRueckfrage.newBuilder()
-				.setId(MapUtils.getString(itemMap, PostfachNachricht.FIELD_ID))
-				.setVorgangId(MapUtils.getString(itemMap, PostfachNachricht.FIELD_VORGANG_ID))
-				.setVorgangName(MapUtils.getString(itemMap, PostfachNachricht.FIELD_SUBJECT))
-				.addAllAttachmentFileId((Iterable<String>) itemMap.getOrDefault(PostfachNachricht.FIELD_ATTACHMENTS, Collections.emptyList()));
-
-		return rueckfrageBuilder.build();
-	}
+	@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/src/main/java/de/ozgcloud/nachrichten/antragraum/BayernIdSamlConfiguration.java b/src/main/java/de/ozgcloud/nachrichten/antragraum/BayernIdSamlConfiguration.java
index e258ddacb673c91f9724d73d8b7fd9ae9089ce46..0961155476fed54722e9572435b34c5225e67e80 100644
--- a/src/main/java/de/ozgcloud/nachrichten/antragraum/BayernIdSamlConfiguration.java
+++ b/src/main/java/de/ozgcloud/nachrichten/antragraum/BayernIdSamlConfiguration.java
@@ -81,7 +81,7 @@ import net.shibboleth.utilities.java.support.xml.XMLParserException;
 
 @Configuration
 @ConditionalOnProperty(AntragraumProperties.PROPERTY_ANTRAGSRAUM_URL)
-public class BayernIdSamlConfiguration {
+class BayernIdSamlConfiguration {
 	private XMLObjectProviderRegistry registry;
 	@Getter
 	private ParserPool parserPool;
@@ -104,13 +104,6 @@ public class BayernIdSamlConfiguration {
 
 	private ParserPool initParserPool() throws ComponentInitializationException {
 		var localParserPool = new BasicParserPool();
-		localParserPool.setMaxPoolSize(100);
-		localParserPool.setCoalescing(true);
-		localParserPool.setIgnoreComments(true);
-		localParserPool.setIgnoreElementContentWhitespace(true);
-		localParserPool.setNamespaceAware(true);
-		localParserPool.setExpandEntityReferences(false);
-		localParserPool.setXincludeAware(false);
 
 		final var features = createFeatureMap();
 
diff --git a/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java b/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java
index 662034f677347ff99db12406bd7e9500d201c456..d07db58ecf7c183b3afef36cdcf27d8d7e7cbded 100644
--- a/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java
+++ b/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java
@@ -63,10 +63,10 @@ class AntragraumNachrichtMapperTest {
 	}
 
 	@Test
-	void shouldMapSendAt() {
+	void shouldMapSentAt() {
 		var result = map();
 
-		assertThat(result.getSendAt()).isEqualTo(PostfachNachrichtTestFactory.SENT_AT.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
+		assertThat(result.getSentAt()).isEqualTo(PostfachNachrichtTestFactory.SENT_AT.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
 	}
 
 	@Test
diff --git a/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2DecrypterTest.java b/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2DecrypterTest.java
index 6e688c6f8976b620e481a14df8ec0ce210e06681..1dd94cea3e8ef54e5b7d62ac936921ed583d748b 100644
--- a/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2DecrypterTest.java
+++ b/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2DecrypterTest.java
@@ -24,6 +24,7 @@ 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;
@@ -34,6 +35,7 @@ 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;
 
diff --git a/src/test/resources/bayernid-test-enc.crt b/src/test/resources/bayernid-test-enc.crt
deleted file mode 100644
index fe04bc8d5ad148f0e84ca1c98160c111f3aeba5d..0000000000000000000000000000000000000000
--- a/src/test/resources/bayernid-test-enc.crt
+++ /dev/null
@@ -1,22 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDsTCCApmgAwIBAgIUdw/27be5+2vj+MhGtoJjDsMsdDEwDQYJKoZIhvcNAQEL
-BQAwaDELMAkGA1UEBhMCREUxDzANBgNVBAgMBkJheWVybjERMA8GA1UEBwwITXVl
-bmNoZW4xDzANBgNVBAoMBm1nbSB0cDEkMCIGCSqGSIb3DQEJARYVamVucy5yZWVz
-ZUBtZ20tdHAuY29tMB4XDTI0MDExNjEyMjI0OVoXDTI1MDExNTEyMjI0OVowaDEL
-MAkGA1UEBhMCREUxDzANBgNVBAgMBkJheWVybjERMA8GA1UEBwwITXVlbmNoZW4x
-DzANBgNVBAoMBm1nbSB0cDEkMCIGCSqGSIb3DQEJARYVamVucy5yZWVzZUBtZ20t
-dHAuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/HBBWBDSrEgd
-wXkSy15V00EaVTyLgc4vh/JcDiGIYZSqmcMwBd+B1u36xbdBf/duEtCUymMNP48O
-MjgFZtR6xn0meuR4NR6Ykn9mYGdU/GhldGuGv9XLAEAkVuTlo0H1QYyBS/6JwKQo
-SsHDkJ3YwDwKcyOt7QtpSadRZjQEN3gDvWoRYjgXTxj2I1ovllmi0zOHsFi5PBIu
-iPWUdJvBrHxpD/XVS9R/qzJpHPu3bjQ6UVRmhiZCUF7H5F/PQNwk+qXvjV0ooBeS
-WWO5hywhk4OP4QEgbYMOSo20YukYX8TJEsum1pwIcQrw7kW4GyKaAycyRsa1fbM3
-tEkj+TiBKwIDAQABo1MwUTAdBgNVHQ4EFgQUfDL/6R33SJodsONCvxKy96AtU18w
-HwYDVR0jBBgwFoAUfDL/6R33SJodsONCvxKy96AtU18wDwYDVR0TAQH/BAUwAwEB
-/zANBgkqhkiG9w0BAQsFAAOCAQEA+PCnvSwKU+bArTCIg5lfrwONbzKkjvPUymDN
-YX3oj1wVEN75hNf0RD7Rr0//ZYT3Rt0G193gjDcH1gbGIYhMLeGGkxEous2l3O+p
-RIQRR+hprjr6HzF8IphaJy1RbDwyGsXyLcyOylPL4cX9IjUdhklHiLZusBq95LSy
-w7hsCOAL2+vn816O7yv+28EWXXbnP2XEUjW36nxcZvR6oTJUplXyHRuuJJTsOxGR
-NuXA3UVgNbkdm1HnoSGpnsGdUKsUFoEmEJkcSdQRwxeH21WzYGOZmKMcvx2gObaS
-P8tafWh5z4Jx+Z7z5WP72Jt44/lnVjaV8aGo0KHXwgqQOtYftQ==
------END CERTIFICATE-----
diff --git a/src/test/resources/bayernid-test-enc.key b/src/test/resources/bayernid-test-enc.key
deleted file mode 100644
index 8d1c8b69c3fce7bea45c73efd06983e3c419a92f..0000000000000000000000000000000000000000
--- a/src/test/resources/bayernid-test-enc.key
+++ /dev/null
@@ -1 +0,0 @@
-