diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index edbc9719340957a185bba1acb4476ee79860d612..ad6c9052374e4c653552efdcf216bd73d11e0aa3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -12,6 +12,29 @@ variables:
 services:
   - docker:dind
 
+before_script:
+  - mkdir -p $HOME/.docker
+  - |
+    cat << EOF > $HOME/.docker/config.json
+    {
+      "auths": {
+        "docker.ozg-sh.de": {
+          "username": "$NEXUS_USER",
+          "password": "$NEXUS_PASSWORD"
+        }
+      },
+      "proxies": {
+        "default": {
+          "httpProxy": "$HTTP_PROXY",
+          "httpsProxy": "$HTTPS_PROXY",
+          "noProxy": "$NO_PROXY"
+        }
+      }
+    }
+    EOF
+  - cat ~/.docker/config.json
+
+
 cache:
   paths:
     - .m2/repository/
diff --git a/pom.xml b/pom.xml
index f6c7cd198e6536ac85c8b5a4ba59908de6b17d12..a2bd7bb906b2a7569b8cac431354aaa708472f57 100644
--- a/pom.xml
+++ b/pom.xml
@@ -174,12 +174,6 @@
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-failsafe-plugin</artifactId>
-				<configuration>
-					<excludes>
-						<!--docker environment in der pipeline laeuft noch nicht-->
-						<exclude>**/XtaClientITCase.java</exclude>
-					</excludes>
-				</configuration>
 				<executions>
 					<execution>
 						<goals>
diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java b/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java
index 0a244ea890e783196ba7be4f7c85ccbd06d93689..9f535b87aeb16b0d664b3f089c6d944f1c06d7c2 100644
--- a/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java
+++ b/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java
@@ -44,10 +44,10 @@ class XtaClientITCase {
 	@BeforeEach
 	@SneakyThrows
 	void setup() {
-		processMessageDummy = (message) -> {
+		processMessageDummy = message -> {
 		};
 		supportCheckedMetadataItems = new ArrayList<>();
-		isSupportedDummy = (metaData) -> true;
+		isSupportedDummy = metaData -> true;
 		processedMessages = new ArrayList<>();
 		silentTestClient = XTA_TEST_SERVER_SETUP_EXTENSION.getSilentTestClient();
 
@@ -99,7 +99,7 @@ class XtaClientITCase {
 		void shouldThrowExceptionOnConnectionFailure() {
 			setupClientWithoutTrustStore();
 
-			assertThatThrownBy(() -> testClient.fetchMessages((message) -> fail("Should not process any message!")))
+			assertThatThrownBy(() -> testClient.fetchMessages(message -> fail("Should not process any message!")))
 					.isInstanceOf(XtaClientException.class);
 		}
 
@@ -303,7 +303,7 @@ class XtaClientITCase {
 
 		@SneakyThrows
 		private List<XtaTransportReport> fetchMessages() {
-			return testClient.fetchMessages((message) -> {
+			return testClient.fetchMessages(message -> {
 				processedMessages.add(message);
 				processMessageDummy.accept(message);
 			});
diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientRemoteITCase.java b/src/test/java/de/ozgcloud/xta/client/XtaClientRemoteITCase.java
index 8878a3f753dda96d394db1fc801f0462e33c3dad..319613bb2128ee6247b0ea3427b3a48f15aa9ed8 100644
--- a/src/test/java/de/ozgcloud/xta/client/XtaClientRemoteITCase.java
+++ b/src/test/java/de/ozgcloud/xta/client/XtaClientRemoteITCase.java
@@ -7,6 +7,7 @@ import static org.assertj.core.api.Assertions.*;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 import java.util.function.Consumer;
 import java.util.function.Predicate;
 import java.util.stream.Stream;
@@ -65,10 +66,10 @@ class XtaClientRemoteITCase {
 	@BeforeEach
 	@SneakyThrows
 	void setup() {
-		processMessageDummy = (message) -> {
+		processMessageDummy = message -> {
 		};
 		supportCheckedMetadataItems = new ArrayList<>();
-		isSupportedDummy = (metaData) -> true;
+		isSupportedDummy = metaData -> true;
 		processedMessages = new ArrayList<>();
 
 		testClient = XTA_REMOTE_SERVER_SETUP_EXTENSION.getTestClient();
@@ -76,6 +77,11 @@ class XtaClientRemoteITCase {
 		devClient = XTA_REMOTE_SERVER_SETUP_EXTENSION.getDevClient();
 		silentDevClient = XTA_REMOTE_SERVER_SETUP_EXTENSION.getSilentDevClient();
 
+		if (Optional.ofNullable(System.getenv("CLEAR_ALL_MESSAGES")).map(d -> d.equals("yes")).orElse(false)) {
+			closeAllMessages(XTA_REMOTE_SERVER_SETUP_EXTENSION.getSilentDevClientConfig(), DEV_READER_CLIENT_IDENTIFIER);
+			closeAllMessages(XTA_REMOTE_SERVER_SETUP_EXTENSION.getSilentTestClientConfig(), TEST_READER_CLIENT_IDENTIFIER);
+		}
+
 		failIfAnyMessagePending(XTA_REMOTE_SERVER_SETUP_EXTENSION.getSilentDevClientConfig(), DEV_READER_CLIENT_IDENTIFIER);
 		failIfAnyMessagePending(XTA_REMOTE_SERVER_SETUP_EXTENSION.getSilentTestClientConfig(), TEST_READER_CLIENT_IDENTIFIER);
 
diff --git a/src/test/java/de/ozgcloud/xta/client/extension/XtaServerSetupExtensionTestUtil.java b/src/test/java/de/ozgcloud/xta/client/extension/XtaServerSetupExtensionTestUtil.java
index 6d2731a7186d3a3bf6f5fa75dfabeff5ebdee36b..4af13131f1b7ff95280a40c6163f9f11e8087523 100644
--- a/src/test/java/de/ozgcloud/xta/client/extension/XtaServerSetupExtensionTestUtil.java
+++ b/src/test/java/de/ozgcloud/xta/client/extension/XtaServerSetupExtensionTestUtil.java
@@ -16,6 +16,7 @@ import de.ozgcloud.xta.client.core.WrappedXtaService;
 import de.ozgcloud.xta.client.core.WrappedXtaServiceFactory;
 import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
 import de.ozgcloud.xta.client.gen.v3.de.xoev.transport.xta.x211.CodeFehlernummer;
+import de.ozgcloud.xta.client.gen.v3.de.xoev.transport.xta.x211.InvalidMessageIDException;
 import de.ozgcloud.xta.client.gen.v3.de.xoev.transport.xta.x211.MessageSchemaViolationException;
 import de.ozgcloud.xta.client.gen.v3.de.xoev.transport.xta.x211.ParameterIsNotValidException;
 import de.ozgcloud.xta.client.gen.v3.de.xoev.transport.xta.x211.PermissionDeniedException;
@@ -122,11 +123,19 @@ public class XtaServerSetupExtensionTestUtil {
 		closeMessagesById(config, clientId, messageIds);
 	}
 
-	@SneakyThrows
 	public static void closeMessagesById(XtaClientConfig config, XtaIdentifier clientId, List<String> messageIds) {
 		var wrappedService = createWrappedService(config);
 		for (var messageId : messageIds) {
+			closeMessageById(wrappedService, messageId, clientId);
+		}
+	}
+
+	@SneakyThrows
+	private static void closeMessageById(WrappedXtaService wrappedService, String messageId, XtaIdentifier clientId) {
+		try {
 			wrappedService.close(messageId, clientId);
+		} catch (InvalidMessageIDException e) {
+			log.warn("Failed closing message, possibly it has already been closed! '{}' (reader: {})", messageId, clientId);
 		}
 	}
 
@@ -135,16 +144,20 @@ public class XtaServerSetupExtensionTestUtil {
 		return WrappedXtaServiceFactory.from(config).create();
 	}
 
-	public static XtaMessageMetaData withoutMessageIdAndSize(XtaMessageMetaData metaData) {
+	public static XtaMessageMetaData withoutMessageIdAndSizeAndDelivery(XtaMessageMetaData metaData) {
 		return metaData.toBuilder()
 				.messageId(null)
 				.messageSize(null)
+				.deliveryAttributesDelivery(null)
+				.deliveryAttributesOrigin(null)
 				.build();
 	}
 
-	public static XtaMessageMetaData withoutMessageSize(XtaMessageMetaData metaData) {
+	public static XtaMessageMetaData withoutMessageSizeAndDelivery(XtaMessageMetaData metaData) {
 		return metaData.toBuilder()
 				.messageSize(null)
+				.deliveryAttributesDelivery(null)
+				.deliveryAttributesOrigin(null)
 				.build();
 	}
 
@@ -268,9 +281,9 @@ public class XtaServerSetupExtensionTestUtil {
 				// Assert equal metadata (ignoring message id and size since they should be null before sending)
 				assertThat(processedMessages)
 						.extracting(XtaMessage::metaData)
-						.extracting(XtaServerSetupExtensionTestUtil::withoutMessageIdAndSize)
+						.extracting(XtaServerSetupExtensionTestUtil::withoutMessageIdAndSizeAndDelivery)
 						.containsExactlyInAnyOrderElementsOf(Arrays.stream(messageMetaDataItems)
-								.map(XtaServerSetupExtensionTestUtil::withoutMessageIdAndSize)
+								.map(XtaServerSetupExtensionTestUtil::withoutMessageIdAndSizeAndDelivery)
 								.toList());
 			} catch (AssertionError | RuntimeException e) {
 				log.error("Messages do not exactly contain excepted metadata!");
@@ -314,10 +327,10 @@ public class XtaServerSetupExtensionTestUtil {
 			// ignoring size since it may be null for transport report (due to message closed?)
 			assertThat(transportReports)
 					.extracting(XtaTransportReport::metaData)
-					.extracting(XtaServerSetupExtensionTestUtil::withoutMessageSize)
+					.extracting(XtaServerSetupExtensionTestUtil::withoutMessageSizeAndDelivery)
 					.containsExactlyElementsOf(processedMessages.stream()
 							.map(XtaMessage::metaData)
-							.map(XtaServerSetupExtensionTestUtil::withoutMessageSize)
+							.map(XtaServerSetupExtensionTestUtil::withoutMessageSizeAndDelivery)
 							.toList());
 		}