diff --git a/common/pom.xml b/common/pom.xml
index 7bcf1e69a7d60e3ba3f330eb38d46ddb401ff291..e66f9de5e71c82b7f7770f279a6bb569aa4e180e 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -31,7 +31,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.13.0-SNAPSHOT</version>
+		<version>2.14.0-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 	<artifactId>common</artifactId>
diff --git a/enterprise-adapter/pom.xml b/enterprise-adapter/pom.xml
index 2b493a100ac22855b3428759f89b1748c29dadce..c6e1b63eed24a645cabca8e115117a9598796829 100644
--- a/enterprise-adapter/pom.xml
+++ b/enterprise-adapter/pom.xml
@@ -4,7 +4,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.13.0-SNAPSHOT</version>
+		<version>2.14.0-SNAPSHOT</version>
 	</parent>
 	<artifactId>enterprise-adapter</artifactId>
 	<name>EM - Enterprise Interface Adapter</name>
diff --git a/fim-adapter/pom.xml b/fim-adapter/pom.xml
index e7dde98a9f4d4cb33a1b755810a51be5287675d5..5d295c8efd9de8a365adc7f2c8f60398e80a3783 100644
--- a/fim-adapter/pom.xml
+++ b/fim-adapter/pom.xml
@@ -4,7 +4,7 @@
     <parent>
         <groupId>de.ozgcloud.eingang</groupId>
         <artifactId>eingang-manager</artifactId>
-        <version>2.13.0-SNAPSHOT</version>
+        <version>2.14.0-SNAPSHOT</version>
     </parent>
     <artifactId>fim-adapter</artifactId>
     <name>Eingangs Adapter - FIM</name>
diff --git a/formcycle-adapter/formcycle-adapter-impl/pom.xml b/formcycle-adapter/formcycle-adapter-impl/pom.xml
index 4f85d9512aabbbe2a758a5893be9762303ff656e..acaf6aa194af0cd2a4da1fa03b3613040b777d08 100644
--- a/formcycle-adapter/formcycle-adapter-impl/pom.xml
+++ b/formcycle-adapter/formcycle-adapter-impl/pom.xml
@@ -29,7 +29,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>formcycle-adapter</artifactId>
-		<version>2.13.0-SNAPSHOT</version>
+		<version>2.14.0-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapper.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapper.java
index 3aceb97490468096ade62e9803525e90f0cf8a03..5185c70c92b3dff61db99fa0458be3019195a840 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapper.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapper.java
@@ -12,11 +12,13 @@ import org.mapstruct.ReportingPolicy;
 import de.ozgcloud.eingang.common.formdata.ServiceKonto;
 import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress;
 import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier;
+import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory;
 
 @Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, unmappedTargetPolicy = ReportingPolicy.WARN)
 interface FormCycleServiceKontoMapper {
 
 	@Mapping(target = "postfachAddress", ignore = true)
+	@Mapping(target = "type", constant = ServiceKontoFactory.POSTFACH_TYPE_BAYERN_ID)
 	@Mapping(target = "postfachAddresses", expression = "java(fromGrpcPostfachAddresses(serviceKonto))")
 	ServiceKonto fromGrpc(FormCycleServiceKonto serviceKonto);
 
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapperTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapperTest.java
index b328284eb6b3ab4fdf010dd4240d4726ebd13209..562bd419be832ff41a59fd1eb2215ed32961d2bd 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapperTest.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoMapperTest.java
@@ -11,6 +11,7 @@ import org.mapstruct.factory.Mappers;
 import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress;
 import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory;
 import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier;
+import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory;
 
 class FormCycleServiceKontoMapperTest {
 
@@ -20,6 +21,13 @@ class FormCycleServiceKontoMapperTest {
 	@Nested
 	class TestFromGrpcServiceKonto {
 
+		@Test
+		void shouldMapType() {
+			var result = mapper.fromGrpc(FormCycleServiceKontoTestFactory.create());
+
+			assertThat(result.getType()).isEqualTo(ServiceKontoFactory.POSTFACH_TYPE_BAYERN_ID);
+		}
+
 		@DisplayName("trustLevel")
 		@Nested
 		class TestTrustLevel {
diff --git a/formcycle-adapter/formcycle-adapter-interface/pom.xml b/formcycle-adapter/formcycle-adapter-interface/pom.xml
index d396e859955e6fe0fc0bead6994fb69e852e668f..212ea6ce2080c3141db16dcce08e4ad9e165081a 100644
--- a/formcycle-adapter/formcycle-adapter-interface/pom.xml
+++ b/formcycle-adapter/formcycle-adapter-interface/pom.xml
@@ -36,7 +36,7 @@
 	<groupId>de.ozgcloud.eingang</groupId>
 	<artifactId>formcycle-adapter-interface</artifactId>
 	<name>EM - Formcycle Adapter - Interface</name>
-	<version>2.13.0-SNAPSHOT</version>
+	<version>2.14.0-SNAPSHOT</version>
 	
 	<properties>
 		<vorgang-manager.version>2.0.0</vorgang-manager.version>
diff --git a/formcycle-adapter/pom.xml b/formcycle-adapter/pom.xml
index 6c060d69a936ed7a12926cd27db9f4788e720fb4..805aff7e18bc5d23d3d8b6265b2bfabbb89d5a5e 100644
--- a/formcycle-adapter/pom.xml
+++ b/formcycle-adapter/pom.xml
@@ -29,7 +29,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.13.0-SNAPSHOT</version>
+		<version>2.14.0-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>formcycle-adapter</artifactId>
diff --git a/formsolutions-adapter/pom.xml b/formsolutions-adapter/pom.xml
index 325327a0b108097786653edf290990debcae1c97..7c4d05dfb88daea14a0591721c0c9c375b28c793 100644
--- a/formsolutions-adapter/pom.xml
+++ b/formsolutions-adapter/pom.xml
@@ -30,7 +30,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.13.0-SNAPSHOT</version>
+		<version>2.14.0-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 
diff --git a/forwarder/pom.xml b/forwarder/pom.xml
index 39605a3df67fbdb757c543b6b89f4484b043dbb7..b5b7c038720faba316e17f03a5087190ac4f8381 100644
--- a/forwarder/pom.xml
+++ b/forwarder/pom.xml
@@ -29,7 +29,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.13.0-SNAPSHOT</version>
+		<version>2.14.0-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 
diff --git a/intelliform-adapter/pom.xml b/intelliform-adapter/pom.xml
index a3dfe80bb8058225d880fe2b0fb834ad91f00ab9..204475fab82986bf4be8995be3ff2496db1eedcf 100644
--- a/intelliform-adapter/pom.xml
+++ b/intelliform-adapter/pom.xml
@@ -31,7 +31,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.13.0-SNAPSHOT</version>
+		<version>2.14.0-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 
diff --git a/pom.xml b/pom.xml
index e8c8ec64c40f1795975863be8bc7a4fe76ef4549..2bc36cf0eb9b5acdfff4f9a2b30d9e965a587f0a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,7 +37,7 @@
 
 	<groupId>de.ozgcloud.eingang</groupId>
 	<artifactId>eingang-manager</artifactId>
-	<version>2.13.0-SNAPSHOT</version>
+	<version>2.14.0-SNAPSHOT</version>
 	<packaging>pom</packaging>
 	<name>OZG-Cloud Eingang Manager</name>
 
diff --git a/router/pom.xml b/router/pom.xml
index 2ace78948a637913a36b0f781609cfaaca7843fb..1f6e490664ce095a41d7c6c28b4f5bf5d27dbf59 100644
--- a/router/pom.xml
+++ b/router/pom.xml
@@ -29,7 +29,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.13.0-SNAPSHOT</version>
+		<version>2.14.0-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 
diff --git a/semantik-adapter/pom.xml b/semantik-adapter/pom.xml
index 18c5fe1bb8ace2afd5e890daf9196ed782046a29..6f92d8bfcd6860171069b9c79339bb28e4095b8f 100644
--- a/semantik-adapter/pom.xml
+++ b/semantik-adapter/pom.xml
@@ -30,7 +30,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.13.0-SNAPSHOT</version>
+		<version>2.14.0-SNAPSHOT</version>
 	</parent>
 	
 	<artifactId>semantik-adapter</artifactId>
diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactory.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactory.java
index 0b7320fbe23a0a9820ccebfa9c82fd78347798f4..c8eeb923582f97ede8c3b9bee2726810a2ead349 100644
--- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactory.java
+++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactory.java
@@ -23,7 +23,7 @@ public class ServiceKontoFactory {
 
 	public static final int POSTFACH_ADDRESS_DEFAULT = 1;
 	public static final String POSTFACH_TYPE_OSI = "OSI";
-	public static final String POSTFACH_TYPE_BAYERN_ID = "BayernID";
+	public static final String POSTFACH_TYPE_BAYERN_ID = "BAYERN_ID";
 	public static final String POSTFACH_VERSION = "1.0";
 	public static final String KEY_BAYERN_ID_POSTFACH_ID = "u:saml_legacypostkorbhandle";
 	public static final String KEY_BAYERN_ID_TRUST_LEVEL = "u:saml_eid_citizen_qaa_level";
diff --git a/src/main/helm/templates/deployment.yaml b/src/main/helm/templates/deployment.yaml
index c68b9d69be88de512c6cca216e756aad79d6f46f..b59bb1cc41fbfbba0098590a4986042bd510300e 100644
--- a/src/main/helm/templates/deployment.yaml
+++ b/src/main/helm/templates/deployment.yaml
@@ -79,7 +79,7 @@ spec:
         - name: ozgcloud_adapter_targetVorgangManagerName
           value: {{ (.Values.routing).targetVorgangManagerName}}
         - name: grpc_client_vorgang-manager-{{ (.Values.routing).targetVorgangManagerName}}_address
-          value: 'vorgang-manager.{{ coalesce (.Values.routing).targetNamespace .Release.Namespace }}:9090'
+          value: 'dns:///vorgang-manager.{{ coalesce (.Values.routing).targetNamespace .Release.Namespace }}:9090'
         - name: grpc_client_vorgang-manager-{{ (.Values.routing).targetVorgangManagerName}}_negotiationType
           value: {{ (.Values.routing).negotiationType | default "TLS" }}
         {{- end }}
diff --git a/src/test/helm/deployment_routing_strategy_env_test.yaml b/src/test/helm/deployment_routing_strategy_env_test.yaml
index 8ae56386a24a3f0f74e3bdb3395b2aed9f4d2be4..e70cff6f10669ad7574fb80dcbf96f3c11aee715 100644
--- a/src/test/helm/deployment_routing_strategy_env_test.yaml
+++ b/src/test/helm/deployment_routing_strategy_env_test.yaml
@@ -50,6 +50,12 @@ tests:
           content:
             name: grpc_client_vorgang-manager-vorgang-manager_negotiationType
             value: TLS
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: grpc_client_vorgang-manager-vorgang-manager_address
+            value: dns:///vorgang-manager.sh-helm-test:9090
+
   - it: validate routing infos
     set:
       routing:
diff --git a/src/test/helm/ingress_create_or_not.yaml b/src/test/helm/ingress_create_or_not_test.yaml
similarity index 100%
rename from src/test/helm/ingress_create_or_not.yaml
rename to src/test/helm/ingress_create_or_not_test.yaml
diff --git a/src/test/helm/ingress_nginx_tests.yaml b/src/test/helm/ingress_nginx_test.yaml
similarity index 100%
rename from src/test/helm/ingress_nginx_tests.yaml
rename to src/test/helm/ingress_nginx_test.yaml
diff --git a/xta-adapter/pom.xml b/xta-adapter/pom.xml
index e96fb6c3dd46267839a27a0e6c9b19dea237b91d..85cfea860833d98a5430fcf0af9fb27166654202 100644
--- a/xta-adapter/pom.xml
+++ b/xta-adapter/pom.xml
@@ -4,7 +4,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.13.0-SNAPSHOT</version>
+		<version>2.14.0-SNAPSHOT</version>
 	</parent>
 	<artifactId>xta-adapter</artifactId>
 	<name>Eingangs Adapter - XTA</name>
diff --git a/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml b/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml
index 3835e3ec440eebbd71cdb1bb5c21bf366add83c6..761959137f507e67d20c246ec86bc7393c52a75d 100644
--- a/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml
+++ b/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml
@@ -81,7 +81,7 @@ spec:
                 - name: ozgcloud_adapter_targetVorgangManagerName
                   value: {{ (.Values.routing).targetVorgangManagerName}}
                 - name: grpc_client_vorgang-manager-{{ (.Values.routing).targetVorgangManagerName }}_address
-                  value: 'vorgang-manager.{{ coalesce (.Values.routing).targetNamespace .Release.Namespace }}:9090'
+                  value: 'dns:///vorgang-manager.{{ coalesce (.Values.routing).targetNamespace .Release.Namespace }}:9090'
                 - name: grpc_client_vorgang-manager-{{ (.Values.routing).targetVorgangManagerName }}_negotiationType
                   value: {{ (.Values.routing).negotiationType | default "PLAINTEXT" }}
                 {{- end }}
diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java
index 8041810ed8fbc3222fd10c06a4e64a6a760e9bf4..891512d2f4b878594ee813dbe3cdf5d9c4bfdb4c 100644
--- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapper.java
@@ -26,10 +26,8 @@ package de.ozgcloud.eingang.xta;
 import java.util.Collection;
 import java.util.List;
 import java.util.Objects;
-import java.util.function.Predicate;
 import java.util.stream.Stream;
 
-import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
 import org.springframework.stereotype.Component;
 
 import de.ozgcloud.eingang.common.formdata.IncomingFile;
@@ -44,14 +42,11 @@ class XtaIncomingFilesMapper {
 
 	private final ZipFileExtractor zipFileExtractor;
 
-	public static final String ZIP_CONTENT_TYPE = "application/zip";
-	static final Predicate<IncomingFile> IS_ZIP_FILE = contentType -> ZIP_CONTENT_TYPE.equals(contentType.getContentType());
-
 	public List<IncomingFile> toIncomingFiles(Collection<XtaFile> messageFiles) {
 		if (Objects.nonNull(messageFiles)) {
 			return messageFiles.stream()
 					.map(this::toIncomingFile)
-					.flatMap(this::extractZip)
+					.flatMap(this::tryToExtractZip)
 					.toList();
 		}
 		return List.of();
@@ -66,16 +61,11 @@ class XtaIncomingFilesMapper {
 				.build();
 	}
 
-	Stream<IncomingFile> extractZip(IncomingFile incomingFile) {
-		if (IS_ZIP_FILE.test(incomingFile)) {
-			try {
-				List<IncomingFile> extractedZips = zipFileExtractor.extractIncomingFilesSafely(incomingFile);
-				return extractedZips.stream();
-			} catch (RuntimeException e) {
-				LOG.error("Cannot read source ZIP. Not extracting file", e);
-				return Stream.of(incomingFile);
-			}
-		} else {
+	Stream<IncomingFile> tryToExtractZip(IncomingFile incomingFile) {
+		try {
+			List<IncomingFile> extractedZips = zipFileExtractor.extractIncomingFilesSafely(incomingFile);
+			return extractedZips.stream();
+		} catch (RuntimeException e) {
 			return Stream.of(incomingFile);
 		}
 	}
diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java
index d5a8d537c84074c7a8bd5849fd744b320eeb3820..f8643d2fb5221c5e3585e4436c757a015cb7d3ee 100644
--- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java
+++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java
@@ -4,6 +4,7 @@ import static java.util.Collections.*;
 
 import java.util.Collection;
 import java.util.List;
+import java.util.Optional;
 import java.util.Spliterators;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
@@ -44,7 +45,10 @@ class XtaService {
 	private XtaCurrentIdentifierService service;
 
 	public Stream<FormData> getMessages() {
-		return createXtaMessageStream().filter(this::isSupportedMessageType).map(this::getFormData);
+		return createXtaMessageStream()
+				.filter(this::isSupportedMessageType)
+				.map(this::getFormDataIfNoRuntimeException)
+				.flatMap(Optional::stream);
 	}
 
 	Stream<XtaMessageMetaData> createXtaMessageStream() {
@@ -66,7 +70,16 @@ class XtaService {
 		return false;
 	}
 
-	public FormData getFormData(@NonNull XtaMessageMetaData metaData) {
+	Optional<FormData> getFormDataIfNoRuntimeException(@NonNull XtaMessageMetaData metaData) {
+		try {
+			return Optional.of(getFormData(metaData));
+		} catch (RuntimeException exception) {
+			LOG.error("Failed to process xta message (id: %s)".formatted(metaData.getMessageId()), exception);
+			return Optional.empty();
+		}
+	}
+
+	FormData getFormData(@NonNull XtaMessageMetaData metaData) {
 		var msg = remoteService.getMessage(metaData.getMessageId());
 		var incomingFiles = xtaIncomingFilesMapper.toIncomingFiles(msg.getMessageFiles());
 		var representationsAttachmentsPair = getRepresentationsAttachmentsPair(metaData, incomingFiles);
diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml
index 77547800e84d3f8f60fe508c57df9e5f7d0a0de6..e247e20d6703fa518cf1eb74616e5447f4fd8a2e 100644
--- a/xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml
+++ b/xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml
@@ -107,7 +107,7 @@ tests:
           path: spec.jobTemplate.spec.template.spec.containers[0].env
           content:
             name: grpc_client_vorgang-manager-vorgang-manager_address
-            value: 'vorgang-manager.helm-test:9090'
+            value: 'dns:///vorgang-manager.helm-test:9090'
       - contains:
           path: spec.jobTemplate.spec.template.spec.containers[0].env
           content:
@@ -152,7 +152,7 @@ tests:
           path: spec.jobTemplate.spec.template.spec.containers[0].env
           content:
             name: grpc_client_vorgang-manager-vorgang-manager_address
-            value: 'vorgang-manager.helm-test:9090'
+            value: 'dns:///vorgang-manager.helm-test:9090'
       - contains:
           path: spec.jobTemplate.spec.template.spec.containers[0].env
           content:
diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapperTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapperTest.java
index 1ae7d692986e14c57e983b2af836c8b637c33c92..8adbed4598d7224e121e0d723c6c29baf0456361 100644
--- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapperTest.java
+++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaIncomingFilesMapperTest.java
@@ -27,10 +27,8 @@ import static org.assertj.core.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
 import java.util.List;
-import java.util.UUID;
 import java.util.stream.Stream;
 
-import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
@@ -49,8 +47,6 @@ class XtaIncomingFilesMapperTest {
 	@Mock
 	private ZipFileExtractor extractor;
 
-	private static final String ZIP_CONTENT_TYPE = "application/zip";
-
 	@Nested
 	class TestToIncomingFiles {
 
@@ -59,12 +55,12 @@ class XtaIncomingFilesMapperTest {
 			var xtaFile = XtaFileTestFactory.create();
 			var incomingFile = IncomingFileTestFactory.create();
 			when(mapper.toIncomingFile(xtaFile)).thenReturn(incomingFile);
-			when(mapper.extractZip(incomingFile)).thenAnswer(x -> Stream.of(incomingFile));
+			when(mapper.tryToExtractZip(incomingFile)).thenAnswer(x -> Stream.of(incomingFile));
 
 			mapper.toIncomingFiles(List.of(xtaFile, xtaFile));
 
 			inOrder(mapper).verify(mapper, calls(2)).toIncomingFile(xtaFile);
-			inOrder(mapper).verify(mapper, calls(2)).extractZip(incomingFile);
+			inOrder(mapper).verify(mapper, calls(2)).tryToExtractZip(incomingFile);
 		}
 
 		@Test
@@ -107,7 +103,7 @@ class XtaIncomingFilesMapperTest {
 	}
 
 	@Nested
-	class TestExtractZip {
+	class TestTryToExtractZip {
 
 		@Mock
 		IncomingFile outFile1;
@@ -115,40 +111,29 @@ class XtaIncomingFilesMapperTest {
 		@Mock
 		IncomingFile outFile2;
 
+		private final IncomingFile zipFile = IncomingFileTestFactory.createBuilder()
+				.name("attachments.zip")
+				.build();
 
 		@Test
 		void shouldExtractZipFiles() {
 			var expectedExtractedFiles = List.of(outFile1, outFile2);
-			var zipFile = createTestIncomingFile();
 			when(extractor.extractIncomingFilesSafely(zipFile)).thenReturn(expectedExtractedFiles);
 
-			var extractedFiles = mapper.extractZip(zipFile).toList();
+			var extractedFiles = mapper.tryToExtractZip(zipFile).toList();
 
 			assertThat(extractedFiles).isEqualTo(expectedExtractedFiles);
 		}
 
-		IncomingFile createTestIncomingFile() {
-			return IncomingFileTestFactory.createBuilder()
-					.name("attachments.zip")
-					.contentType(ZIP_CONTENT_TYPE)
-					.build();
-		}
-
 		@Test
 		void shouldIgnoreNonZipFiles() {
+			when(extractor.extractIncomingFilesSafely(zipFile)).thenThrow(new RuntimeException());
 			var incomingFile = IncomingFileTestFactory.create();
 
-			var extractedFiles = mapper.extractZip(incomingFile).toList();
+			var extractedFiles = mapper.tryToExtractZip(incomingFile).toList();
 
 			assertThat(extractedFiles).containsExactly(incomingFile);
 		}
 	}
 
-	@Test
-	void testIsZipFilePredicate() {
-		assertThat(XtaIncomingFilesMapper.IS_ZIP_FILE.test(IncomingFileTestFactory.create())).isFalse();
-		assertThat(XtaIncomingFilesMapper.IS_ZIP_FILE.test(IncomingFileTestFactory.createBuilder().contentType(ZIP_CONTENT_TYPE).build()))
-				.isTrue();
-	}
-
 }
diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java
index 374d71632023fb10b42f1698b4b7c44d1e462445..2d73c58212d230db5235b25e502bbb7f5ab08949 100644
--- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java
+++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java
@@ -6,6 +6,7 @@ import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Stream;
 
 import org.junit.jupiter.api.BeforeEach;
@@ -49,52 +50,93 @@ class XtaServiceTest {
 	@Mock
 	private XtaCurrentIdentifierService currentIdentifierService;
 
+	@Mock
+	private FormData formData;
+
+	@Mock
+	private FormData formData2;
+
 	@Nested
 	class TestGetMessagesAsFormData {
 
 		private final XtaMessageMetaData messageMetaData = XtaMessageMetaDataTestFactory.create();
 		private final XtaMessage message = XtaMessageTestFactory.create();
 
-		@BeforeEach
-		void setup() {
-			doReturn(Stream.of(messageMetaData)).when(service).createXtaMessageStream();
-		}
+		@DisplayName("with one message")
+		@Nested
+		class TestWithOneMessage {
+			@BeforeEach
+			void setup() {
+				doReturn(Stream.of(messageMetaData)).when(service).createXtaMessageStream();
+			}
 
-		@Test
-		void shouldCallCreateStream() {
-			service.getMessages();
+			@Test
+			void shouldCallCreateStream() {
+				service.getMessages();
 
-			verify(service).createXtaMessageStream();
-		}
+				verify(service).createXtaMessageStream();
+			}
 
-		@Test
-		void shouldCallFilterByMessageType() {
-			setupMocks();
+			@Test
+			void shouldCallFilterByMessageType() {
+				setupMocks();
 
-			service.getMessages().toList();
+				service.getMessages().toList();
 
-			verify(service).isSupportedMessageType(messageMetaData);
-		}
+				verify(service).isSupportedMessageType(messageMetaData);
+			}
 
-		@Test
-		void shouldCallGetFormData() {
-			setupMocks();
-			doReturn(true).when(service).isSupportedMessageType(messageMetaData);
+			@Test
+			void shouldCallGetFormDataIfNoRuntimeException() {
+				setupMocks();
+				doReturn(true).when(service).isSupportedMessageType(messageMetaData);
 
-			service.getMessages().toList();
+				service.getMessages().toList();
 
-			verify(service).getFormData(messageMetaData);
+				verify(service).getFormData(messageMetaData);
+			}
+
+			@Test
+			void shouldNotCallGetFormDataIfNoRuntimeException() {
+				doReturn(false).when(service).isSupportedMessageType(messageMetaData);
+
+				service.getMessages().toList();
+
+				verify(service, never()).getFormDataIfNoRuntimeException(any());
+			}
 		}
 
-		@Test
-		void shouldNotCallGetFormData() {
-			doReturn(false).when(service).isSupportedMessageType(messageMetaData);
+		@DisplayName("with multiple messages")
+		@Nested
+		class TestWithMultipleMessages {
+			private final XtaMessageMetaData messageMetaData2 = XtaMessageMetaDataTestFactory.createBuilder()
+					.messageId(XtaMessageId.from("messageId2"))
+					.build();
+			private final XtaMessageMetaData messageMetaData3 = XtaMessageMetaDataTestFactory.createBuilder()
+					.messageId(XtaMessageId.from("messageId3"))
+					.build();
+
+			@BeforeEach
+			void setup() {
+				doReturn(Stream.of(messageMetaData, messageMetaData2, messageMetaData3)).when(service).createXtaMessageStream();
+			}
 
-			service.getMessages().toList();
+			@DisplayName("should return stream of messages")
+			@Test
+			void shouldReturnStreamOfMessages() {
+				doReturn(true).when(service).isSupportedMessageType(messageMetaData);
+				doReturn(false).when(service).isSupportedMessageType(messageMetaData3);
+				doReturn(true).when(service).isSupportedMessageType(messageMetaData2);
+				doReturn(Optional.of(formData)).when(service).getFormDataIfNoRuntimeException(messageMetaData);
+				doReturn(Optional.of(formData2)).when(service).getFormDataIfNoRuntimeException(messageMetaData2);
 
-			verify(service, never()).getFormData(any());
+				var result = service.getMessages().toList();
+
+				assertThat(result).containsExactly(formData, formData2);
+			}
 		}
 
+
 		private void setupMocks() {
 			var testFormData = FormDataTestFactory.create();
 			when(mapper.toFormData(any(), any(), eq(vorgangNummerSupplier))).thenReturn(testFormData);
@@ -129,6 +171,53 @@ class XtaServiceTest {
 		}
 	}
 
+	@DisplayName("get form data if no runtime exception")
+	@Nested
+	class TestGetFormDataIfNoRuntimeException {
+
+		@Mock
+		XtaMessageMetaData messageMetaData;
+
+		@Mock
+		FormData formData;
+
+		@DisplayName("should call get formdata")
+		@Test
+		void shouldCallGetFormdata() {
+			service.getFormDataIfNoRuntimeException(messageMetaData);
+
+			verify(service).getFormData(messageMetaData);
+		}
+
+		@DisplayName("with exception")
+		@Nested
+		class TestWithException {
+			@DisplayName("should return empty")
+			@Test
+			void shouldReturnEmpty() {
+				doThrow(new RuntimeException("test-error")).when(service).getFormData(any());
+
+				var result = service.getFormDataIfNoRuntimeException(messageMetaData);
+
+				assertThat(result).isEmpty();
+			}
+		}
+
+		@DisplayName("without exception")
+		@Nested
+		class TestWithoutException {
+			@DisplayName("should return")
+			@Test
+			void shouldReturn() {
+				doReturn(formData).when(service).getFormData(any());
+
+				var result = service.getFormDataIfNoRuntimeException(messageMetaData);
+
+				assertThat(result).contains(formData);
+			}
+		}
+	}
+
 	@Nested
 	class TestGetFormData {