diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5caba09f81d15b3620d3daa5f41994761c271a61..978c18303f0415282dae2bc661eca825316db286 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -69,7 +69,7 @@ maven-prepare-docker-contexts-apis-and-inspire-plu:
   variables:
     mvnProjects: ':xplan-validator-api,:xplan-manager-api,:xplan-dokumente-api,:xplan-webservices-inspireplu'
   artifacts:
-    paths:
+    paths: # 2024.02.02: ~387M
     - './xplan-validator/xplan-validator-api/target/docker/**/tmp/docker-build.tar.gz'
     - './xplan-manager/xplan-manager-api/target/docker/**/tmp/docker-build.tar.gz'
     - './xplan-dokumente/xplan-dokumente-api/target/docker/**/tmp/docker-build.tar.gz'
@@ -78,17 +78,19 @@ maven-prepare-docker-contexts-apis-and-inspire-plu:
 maven-prepare-docker-contexts-cli:
   extends: .maven-prepare-docker-contexts
   variables:
-    mvnProjects: ':xplan-cli-docker'
+    mvnProjects: ':xplan-benutzerhandbuch,:xplan-betriebshandbuch,:xplan-cli-docker,:xplan-database-docker,:xplan-webpages'
   artifacts:
-    paths:
-    - './xplan-cli/**/target/docker/**/tmp/docker-build.tar.gz'
+    paths: # 2024.02.02: ~371M
+    - './xplan-cli/xplan-cli-docker/target/docker/**/docker-build.tar.gz'
+    - './xplan-documentation/**/target/docker/**/docker-build.tar.gz'
+    - './xplan-database/xplan-database-docker/target/docker/**/docker-build.tar.gz'
 
 maven-prepare-docker-contexts-web-apps:
   extends: .maven-prepare-docker-contexts
   variables:
     mvnProjects: ':xplan-manager-web,:xplan-validator-web,:xplan-webpages'
   artifacts:
-    paths:
+    paths: # 2024.02.02: ~481M
     - './xplan-manager/xplan-manager-web/target/docker/**/tmp/docker-build.tar.gz'
     - './xplan-validator/xplan-validator-web/target/docker/**/tmp/docker-build.tar.gz'
     - './xplan-documentation/xplan-webpages/target/docker/**/tmp/docker-build.tar.gz'
@@ -98,7 +100,7 @@ maven-prepare-docker-contexts-others:
   variables:
     mvnProjects: ':xplan-docker-tomcat,:xplan-docker-tomcat-gdal,:xplan-database-scripts,:xplan-mapproxy-docker,:xplan-mapserver-docker,:xplan-webservices-validator-wms,:xplan-services-docker,:xplan-tests-soapui'
   artifacts:
-    paths:
+    paths: # 2024.02.02: ~432M
     - './xplan-docker/**/target/docker/**/tmp/docker-build.tar.gz'
     - './xplan-database/xplan-database-scripts/target/docker/**/tmp/docker-build.tar.gz'
     - './xplan-tests/xplan-tests-soapui/target/docker/**/tmp/docker-build.tar.gz'
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 77e3d3869edd62608be5ad2a4f7519670fdac4e9..cf5d9a1d391f3595f50b95a5d34f4aae9f56d0cf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,13 @@
 
 Alle nennenswerten Änderungen an diesem Projekt werden in dieser Datei dokumentiert.
 
+## Version 7.1.1 (2024-02-09)
+
+### Fehlerbehebungen
+- Fehler bei der Installation der XPlanManagerAPI, XPlanValidatorAPI und XPlanDokumenteAPI im Tomcat behoben
+- Fehler beim Editieren eines Plans, bei dem sonstPlanArt gesetzt ist und keine Ganzzahl beinhaltet behoben
+- Fehler bei der Flächenschlussprüfung, wenn der Geltungsbereich von Bereich und PlanFeature nicht übereinstimmen behoben
+
 ## Version 7.1 (2023-12-13)
 
 ### Erweiterungen
diff --git a/ci/all-kaniko-builds.gitlab-ci.yml b/ci/all-kaniko-builds.gitlab-ci.yml
index 7655554e0be2c992d2c58d10d37cc171eb6a56ab..8038a7f1cdeb6251fb28106baa74842cf50433ee 100644
--- a/ci/all-kaniko-builds.gitlab-ci.yml
+++ b/ci/all-kaniko-builds.gitlab-ci.yml
@@ -25,6 +25,22 @@
 
 ## job per image to produce
 
+kaniko:xplan-benutzerhandbuch:
+  extends: .kaniko:build
+  variables:
+    dockerImageName: xplan-benutzerhandbuch
+    tarGzFile: xplan-documentation/xplan-benutzerhandbuch/target/docker/xplanbox/xplan-benutzerhandbuch/tmp/docker-build.tar.gz
+  needs:
+    - maven-prepare-docker-contexts-cli
+
+kaniko:xplan-betriebshandbuch:
+  extends: .kaniko:build
+  variables:
+    dockerImageName: xplan-betriebshandbuch
+    tarGzFile: xplan-documentation/xplan-betriebshandbuch/target/docker/xplanbox/xplan-betriebshandbuch/tmp/docker-build.tar.gz
+  needs:
+    - maven-prepare-docker-contexts-cli
+
 kaniko:xplan-cli-docker:
   extends: .kaniko:build
   variables:
@@ -34,6 +50,14 @@ kaniko:xplan-cli-docker:
     - maven-prepare-docker-contexts-cli
     - kaniko:xplan-docker-volume-init
 
+kaniko:xplan-database-docker:
+  extends: .kaniko:build
+  variables:
+    dockerImageName: xplan-db
+    tarGzFile: xplan-database/xplan-database-docker/target/docker/xplanbox/xplan-db/tmp/docker-build.tar.gz
+  needs:
+    - maven-prepare-docker-contexts-cli
+
 kaniko:xplan-db-updater:
   extends: .kaniko:build
   variables:
@@ -170,3 +194,11 @@ kaniko:xplan-validator-wms:
   needs:
     - maven-prepare-docker-contexts-others
     - kaniko:xplan-docker-tomcat
+
+kaniko:xplan-webpages:
+  extends: .kaniko:build
+  variables:
+    dockerImageName: xplan-webpages
+    tarGzFile: xplan-documentation/xplan-webpages/target/docker/xplanbox/xplan-webpages/tmp/docker-build.tar.gz
+  needs:
+    - maven-prepare-docker-contexts-cli
diff --git a/pom.xml b/pom.xml
index 4590a4ea252878fb7d9beb8ee6757dd37bb21134..e5af6c7414e8e1aaf0e730b4d370fbb6cce1df01 100644
--- a/pom.xml
+++ b/pom.xml
@@ -250,6 +250,7 @@
         <docker-image.namePrefix>xplanbox</docker-image.namePrefix>
         <docker-image.name>${project.artifactId}</docker-image.name>
         <trivy.severity>CRITICAL</trivy.severity>
+        <docker-contextTarFile.expectedSizeInMbAt10pct></docker-contextTarFile.expectedSizeInMbAt10pct>
       </properties>
       <modules>
         <module>xplan-docker</module>
@@ -334,6 +335,54 @@
               </execution>
             </executions>
           </plugin>
+          <plugin>
+            <groupId>org.codehaus.gmavenplus</groupId>
+            <artifactId>gmavenplus-plugin</artifactId>
+            <version>3.0.2</version>
+            <executions>
+              <execution>
+                <id>verifyDockerContextSize</id>
+                <goals>
+                  <goal>execute</goal>
+                </goals>
+                <phase>verify</phase>
+              </execution>
+            </executions>
+            <configuration>
+              <scripts>
+                <script><![CDATA[
+  def tarFileName = '${project.build.directory}/docker/${docker-image.namePrefix}/${docker-image.name}/tmp/docker-build.tar'
+  def tarFile = new File(tarFileName)
+  assert tarFile.exists()
+  def sizeInMb = (int) (tarFile.length() / (1024 * 1024))
+  def configuredExpectedSize = '${docker-contextTarFile.expectedSizeInMbAt10pct}'
+  int expectedSize = configuredExpectedSize ? configuredExpectedSize as int : 1
+  def pct = ((int) (1000 * sizeInMb / expectedSize)) / 10
+  if ((pct >= 90 && pct <= 110) || (sizeInMb + expectedSize) < 2) {
+      log.info("Context tar file ok (" + pct + "% from configured expectation)")
+  }
+  else {
+      throw new RuntimeException("Docker tar file outside expectations: " + sizeInMb + "Mb (" + pct + "%): " + tarFile.absolutePath)
+  }
+             ]]></script>
+              </scripts>
+              <skipScriptExecution>${docker-image.skip}</skipScriptExecution>
+            </configuration>
+            <dependencies>
+              <dependency>
+                <groupId>org.apache.groovy</groupId>
+                <artifactId>groovy</artifactId>
+                <version>4.0.18</version>
+                <scope>runtime</scope>
+              </dependency>
+              <dependency> <!-- just to avoid a stupid warning -->
+                <groupId>org.apache.groovy</groupId>
+                <artifactId>groovy-ant</artifactId>
+                <version>4.0.18</version>
+                <scope>runtime</scope>
+              </dependency>
+            </dependencies>
+          </plugin>
         </plugins>
       </build>
     </profile>
diff --git a/xplan-cli/xplan-cli-tools/pom.xml b/xplan-cli/xplan-cli-tools/pom.xml
index b8b48e5d1286523992c266ea18f2e0150a8650e8..3a7690fb9ce5ba474aea09746c0e69e24ffdfd51 100644
--- a/xplan-cli/xplan-cli-tools/pom.xml
+++ b/xplan-cli/xplan-cli-tools/pom.xml
@@ -13,6 +13,10 @@
     <version>7.2-SNAPSHOT</version>
   </parent>
 
+  <properties>
+    <docker-contextTarFile.expectedSizeInMbAt10pct>697</docker-contextTarFile.expectedSizeInMbAt10pct>
+  </properties>
+
   <dependencyManagement>
     <dependencies>
       <dependency>
diff --git a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/edit/XPlanToEditFactory.java b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/edit/XPlanToEditFactory.java
index 195097d43aa7a4a38350b386d2f6d7b951afc6b0..115af2072f3c2aa6039289992407b9a3f27898a9 100644
--- a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/edit/XPlanToEditFactory.java
+++ b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/edit/XPlanToEditFactory.java
@@ -157,7 +157,14 @@ public class XPlanToEditFactory {
 				baseData.setPlanTypeCode(asInteger(propertyValue));
 			}
 			else if ("sonstPlanArt".equals(propertyName)) {
-				baseData.setOtherPlanTypeCode(asInteger(propertyValue));
+				try {
+					int sonstPlanArtValue = Integer.parseInt(propertyValue.toString());
+					baseData.setOtherPlanTypeCode(sonstPlanArtValue);
+				}
+				catch (NumberFormatException e) {
+					LOG.warn("sonstPlanArt is not an integer value. Currently only integer values are supported.");
+					baseData.setOtherPlanTypeCode(-1);
+				}
 			}
 			else if ("verfahren".equals(propertyName)) {
 				baseData.setMethodCode(asInteger(propertyValue));
diff --git a/xplan-core/xplan-core-manager/src/test/resources/de/latlon/xplan/manager/edit/xplan54/BPlan002_5-4.gml b/xplan-core/xplan-core-manager/src/test/resources/de/latlon/xplan/manager/edit/xplan54/BPlan002_5-4.gml
index c117b9821579fcf16595e9d8c3cb93e5b2d9fb51..fa8a450ae921d03ad56b0049e981ba7626e78eba 100644
--- a/xplan-core/xplan-core-manager/src/test/resources/de/latlon/xplan/manager/edit/xplan54/BPlan002_5-4.gml
+++ b/xplan-core/xplan-core-manager/src/test/resources/de/latlon/xplan/manager/edit/xplan54/BPlan002_5-4.gml
@@ -59,6 +59,7 @@
         </xplan:XP_Gemeinde>
       </xplan:gemeinde>
       <xplan:planArt>1000</xplan:planArt>
+      <xplan:sonstPlanArt codeSpace="https://registry.gdi-de.org/codelist/de.xleitstelle.xplanung/BP_SonstPlanArt" >9999_4</xplan:sonstPlanArt>
       <xplan:verfahren>1000</xplan:verfahren>
       <xplan:rechtsstand>3000</xplan:rechtsstand>
       <xplan:veraenderungssperre>false</xplan:veraenderungssperre>
diff --git a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/geometric/inspector/flaechenschluss/OptimisedFlaechenschlussInspector.java b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/geometric/inspector/flaechenschluss/OptimisedFlaechenschlussInspector.java
index f96d475055905d20a9b3b556e8edf35210b91be4..85263ee811699f7b99a729079e211007cb2bb26d 100644
--- a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/geometric/inspector/flaechenschluss/OptimisedFlaechenschlussInspector.java
+++ b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/geometric/inspector/flaechenschluss/OptimisedFlaechenschlussInspector.java
@@ -76,7 +76,6 @@ import org.slf4j.LoggerFactory;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -554,8 +553,11 @@ public class OptimisedFlaechenschlussInspector implements GeometricFeatureInspec
 		}
 		else if (geltungsbereichFeature instanceof PlanFeature) {
 			FeaturesUnderTest planFeaturesUnderTest = new FeaturesUnderTest(flaechenschlussUnion, featuresUnderTest);
-			planFeaturesWithFeaturesUnderTest.put((PlanFeature) geltungsbereichFeature,
-					Collections.singletonList(planFeaturesUnderTest));
+			PlanFeature planFeature = (PlanFeature) geltungsbereichFeature;
+			if (!planFeaturesWithFeaturesUnderTest.containsKey(planFeature)) {
+				planFeaturesWithFeaturesUnderTest.put(planFeature, new ArrayList<>());
+			}
+			planFeaturesWithFeaturesUnderTest.get(planFeature).add(planFeaturesUnderTest);
 		}
 	}
 
diff --git a/xplan-database/xplan-database-docker/pom.xml b/xplan-database/xplan-database-docker/pom.xml
index 067f71373a3c1a06cc7cf2fe671a2b4fed53e1a7..64227abe96ad93c2750652776df351f51fe98a8c 100644
--- a/xplan-database/xplan-database-docker/pom.xml
+++ b/xplan-database/xplan-database-docker/pom.xml
@@ -41,6 +41,7 @@
       <properties>
         <docker-image.skip>false</docker-image.skip>
         <docker-image.name>xplan-db</docker-image.name>
+        <docker-contextTarFile.expectedSizeInMbAt10pct>19</docker-contextTarFile.expectedSizeInMbAt10pct>
       </properties>
     </profile>
   </profiles>
diff --git a/xplan-database/xplan-database-scripts/pom.xml b/xplan-database/xplan-database-scripts/pom.xml
index 5d7df815811293962f6876eab18ae83dd0cb4c30..4a388119611e16489ad6a308917f9bc25786e32e 100644
--- a/xplan-database/xplan-database-scripts/pom.xml
+++ b/xplan-database/xplan-database-scripts/pom.xml
@@ -897,6 +897,7 @@
 			<properties>
 				<docker-image.skip>false</docker-image.skip>
 				<docker-image.name>xplan-db-updater</docker-image.name>
+				<docker-contextTarFile.expectedSizeInMbAt10pct>16</docker-contextTarFile.expectedSizeInMbAt10pct>
 			</properties>
 		</profile>
     </profiles>
diff --git a/xplan-docker/xplan-docker-volume-init/pom.xml b/xplan-docker/xplan-docker-volume-init/pom.xml
index 8337e34cb53ab5bc4c7108ca68582446eced090e..4c0d7d9d7f31352175f984749d1c60c419e17d52 100644
--- a/xplan-docker/xplan-docker-volume-init/pom.xml
+++ b/xplan-docker/xplan-docker-volume-init/pom.xml
@@ -13,6 +13,7 @@
 
   <properties>
     <docker-image.skip>false</docker-image.skip>
+    <docker-contextTarFile.expectedSizeInMbAt10pct>37</docker-contextTarFile.expectedSizeInMbAt10pct>
   </properties>
 
   <build>
diff --git a/xplan-documentation/xplan-benutzerhandbuch/pom.xml b/xplan-documentation/xplan-benutzerhandbuch/pom.xml
index 116da1cec79dd98b6ba733f9be42d22c753b63f1..f3f49ef51c7eadc449e94d4419d9c38bf43c10a1 100644
--- a/xplan-documentation/xplan-benutzerhandbuch/pom.xml
+++ b/xplan-documentation/xplan-benutzerhandbuch/pom.xml
@@ -88,6 +88,7 @@
       <id>docker</id>
       <properties>
         <docker-image.skip>false</docker-image.skip>
+        <docker-contextTarFile.expectedSizeInMbAt10pct>19</docker-contextTarFile.expectedSizeInMbAt10pct>
       </properties>
     </profile>
   </profiles>
diff --git a/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/aenderungsHistorie.adoc b/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/aenderungsHistorie.adoc
index 96dd70ce9c9aefafe6ae0a0bd0d4fde9f02a7228..1ecb68e617ae866ac560a89e523c132277de4232 100644
--- a/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/aenderungsHistorie.adoc
+++ b/xplan-documentation/xplan-benutzerhandbuch/src/main/asciidoc/aenderungsHistorie.adoc
@@ -2,6 +2,14 @@
 [[Aenderungshistorie]]
 == Änderungshistorie der xPlanBox
 
+[[Aenderungshistorie-7.1.1]]
+=== Version 7.1.1
+
+==== Fehlerbehebungen
+- Fehler bei der Installation der XPlanManagerAPI, XPlanValidatorAPI und XPlanDokumenteAPI im Tomcat behoben
+- Fehler beim Editieren eines Plans, bei dem sonstPlanArt gesetzt ist und keine Ganzzahl beinhaltet behoben
+- Fehler bei der Flächenschlussprüfung, wenn der Geltungsbereich von Bereich und PlanFeature nicht übereinstimmen behoben
+
 [[Aenderungshistorie-7.1]]
 === Version 7.1
 
diff --git a/xplan-documentation/xplan-betriebshandbuch/pom.xml b/xplan-documentation/xplan-betriebshandbuch/pom.xml
index db9658ff6e6576708f0de5cacad400239e5fe450..90a36f5a1cfb5225267d7605440145c7b458cfe8 100644
--- a/xplan-documentation/xplan-betriebshandbuch/pom.xml
+++ b/xplan-documentation/xplan-betriebshandbuch/pom.xml
@@ -46,6 +46,7 @@
       <id>docker</id>
       <properties>
         <docker-image.skip>false</docker-image.skip>
+        <docker-contextTarFile.expectedSizeInMbAt10pct>29</docker-contextTarFile.expectedSizeInMbAt10pct>
       </properties>
     </profile>
     <profile>
diff --git a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/aktualisierung.adoc b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/aktualisierung.adoc
index b88450be3b8a7845456789d220799122d5f95341..b93523ebe707ff53c2c6b605f4ca9ec49f204dda 100644
--- a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/aktualisierung.adoc
+++ b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/aktualisierung.adoc
@@ -77,6 +77,7 @@ Die Aktualisierungswerkzeuge und -skripte werden nur für die genannten Versione
 | 7.0.1             | ja (<<aktualisierung-version-7.0.1, Details>>)  | nein
 | 7.0.2             | ja (<<aktualisierung-version-7.0.2, Details>>)  | nein
 | 7.1             | ja (<<aktualisierung-version-7.1, Details>>)  | ja (<<aktualisierung-version-7.1, Details>>)
+| 7.1.1             | nein | nein
 |Durchzuführende Aktualisierungen | <<aktualisierung-der-betroffenen-konfigurationsdateien-in-den-workspaces>> | <<aktualisierung-der-schemas>> und <<aktualisierung-der-daten>>
 |===
 
@@ -287,3 +288,17 @@ Bei unerwartetem Verhalten der xPlanBox nach einer Aktualisierung können folgen
 * Löschen des Verzeichnisses _<CATALINA_HOME>/work/_ des Tomcat-Servers. Der Tomcat-Server muss zuvor gestoppt und anschließend neu gestartet werden.
 * Reload der Workspaces der XPlanDienste.
 * Löschen des Browser-Caches.
+
+[[aktualisierung-version-7.1.1]]
+=== Aktualisierung auf die Version 7.1.1
+
+Für eine Installation der Bugfix-Version müssen folgende Schritte ausgeführt werden:
+
+* Austausch der Webapps:
+** _xplan-api-validator.war_
+** _xplan-api-manager.war_
+** _xplan-validator-web.war_
+** _xplan-manager-web.war_
+** _xplan-api-dokumente.war_
+
+TIP: Alle anderen Komponenten sind unverändert und müssen nicht aktualisiert werden.
\ No newline at end of file
diff --git a/xplan-documentation/xplan-webpages/pom.xml b/xplan-documentation/xplan-webpages/pom.xml
index 0693549f6e378156c45f093c1e286c6cb0d73525..a26c137d165e5ee6a0abe96c4524ff276eb54922 100644
--- a/xplan-documentation/xplan-webpages/pom.xml
+++ b/xplan-documentation/xplan-webpages/pom.xml
@@ -54,6 +54,7 @@
       <id>docker</id>
       <properties>
         <docker-image.skip>false</docker-image.skip>
+        <docker-contextTarFile.expectedSizeInMbAt10pct>11</docker-contextTarFile.expectedSizeInMbAt10pct>
       </properties>
     </profile>
   </profiles>
diff --git a/xplan-dokumente/xplan-dokumente-api/pom.xml b/xplan-dokumente/xplan-dokumente-api/pom.xml
index c2590b30daa6de04e2bc3ab82bcf368351c91f3e..ee8468812162b7fd60572dc6336b61ab0b68d22e 100755
--- a/xplan-dokumente/xplan-dokumente-api/pom.xml
+++ b/xplan-dokumente/xplan-dokumente-api/pom.xml
@@ -252,6 +252,7 @@
       <id>docker</id>
       <properties>
         <docker-image.skip>false</docker-image.skip>
+        <docker-contextTarFile.expectedSizeInMbAt10pct>125</docker-contextTarFile.expectedSizeInMbAt10pct>
       </properties>
       <dependencies>
         <dependency> <!-- faked maven dependency to be after base docker image in the reactor build  -->
diff --git a/xplan-dokumente/xplan-dokumente-api/src/main/java/de/latlon/xplanbox/api/dokumente/SpringBootApp.java b/xplan-dokumente/xplan-dokumente-api/src/main/java/de/latlon/xplanbox/api/dokumente/SpringBootApp.java
index 6321535e0316cddcd1d0c146a928cf5c1c1c0a4a..58956b22a6b63ebe2fcda0330f62c5529e74b91c 100644
--- a/xplan-dokumente/xplan-dokumente-api/src/main/java/de/latlon/xplanbox/api/dokumente/SpringBootApp.java
+++ b/xplan-dokumente/xplan-dokumente-api/src/main/java/de/latlon/xplanbox/api/dokumente/SpringBootApp.java
@@ -22,14 +22,26 @@ package de.latlon.xplanbox.api.dokumente;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 import org.springframework.context.annotation.ComponentScan;
 
 @SpringBootApplication
 @ComponentScan(basePackages = { "de.latlon.xplanbox.api.dokumente.config" })
-public class SpringBootApp {
+public class SpringBootApp extends SpringBootServletInitializer {
 
 	public static void main(String[] args) {
 		SpringApplication.run(SpringBootApp.class, args);
 	}
 
+	/**
+	 * Runs the application as deployable WAR.
+	 * @param application Spring application builder
+	 * @return Spring application builder with this application configured
+	 */
+	@Override
+	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+		return application.sources(SpringBootApp.class);
+	}
+
 }
diff --git a/xplan-manager/xplan-manager-api/pom.xml b/xplan-manager/xplan-manager-api/pom.xml
index fb3b90f2a8c689e1604a544146711236363d4cd1..ffb59560c0ff6b66305daca485ad0931df70a3f6 100644
--- a/xplan-manager/xplan-manager-api/pom.xml
+++ b/xplan-manager/xplan-manager-api/pom.xml
@@ -308,6 +308,7 @@
       <id>docker</id>
       <properties>
         <docker-image.skip>false</docker-image.skip>
+        <docker-contextTarFile.expectedSizeInMbAt10pct>132</docker-contextTarFile.expectedSizeInMbAt10pct>
       </properties>
       <dependencies>
         <dependency> <!-- faked maven dependency to be after base docker image in the reactor build  -->
diff --git a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/SpringBootApp.java b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/SpringBootApp.java
index d817847a574bb83d0418b1ce681abc6495837720..7fd9ee65cabc49a0a013987d511601397ec99f66 100644
--- a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/SpringBootApp.java
+++ b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/SpringBootApp.java
@@ -26,16 +26,28 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration;
 import org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration;
 import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 import org.springframework.context.annotation.ComponentScan;
 
 @SpringBootApplication
 @ComponentScan(basePackages = { "de.latlon.xplanbox.api.manager.config" })
 @EnableAutoConfiguration(
 		exclude = { QuartzAutoConfiguration.class, LiquibaseAutoConfiguration.class, SecurityAutoConfiguration.class })
-public class SpringBootApp {
+public class SpringBootApp extends SpringBootServletInitializer {
 
 	public static void main(String[] args) {
 		SpringApplication.run(SpringBootApp.class, args);
 	}
 
+	/**
+	 * Runs the application as deployable WAR.
+	 * @param application Spring application builder
+	 * @return Spring application builder with this application configured
+	 */
+	@Override
+	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+		return application.sources(SpringBootApp.class);
+	}
+
 }
diff --git a/xplan-manager/xplan-manager-web/Dockerfile b/xplan-manager/xplan-manager-web/Dockerfile
index a9c544002b39f5b23b408edf4990682210e74b15..cd8faeacd9acde9c1ed14e3298a258b4ca06f87e 100644
--- a/xplan-manager/xplan-manager-web/Dockerfile
+++ b/xplan-manager/xplan-manager-web/Dockerfile
@@ -5,7 +5,7 @@ FROM ${XPLANBOX_IMAGE_NAME_PREFIX}/xplan-docker-tomcat-gdal:$XPLANBOX_VERSION
 ARG BUILD_DATE=?
 ARG DOCKER_IMAGE_NAME=?
 ARG GIT_REVISION=?
-ARG WEB_CONTEXT=ROOT
+ARG WEB_CONTEXT=xplan-manager-web
 ARG XPLANBOX_VERSION=latest
 
 # see https://github.com/opencontainers/image-spec/blob/main/annotations.md#pre-defined-annotation-keys
@@ -22,10 +22,12 @@ LABEL "org.opencontainers.image.created"="$BUILD_DATE" \
 # set environment variables
 ENV TOMCAT_ADDITIONAL_ARG_APP="-DXPLANBOX_CONFIG=/xplanbox/xplan-manager-config/ -Djavax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl -Djts.overlay=ng -Duser.timezone=Europe/Berlin"
 
-# add xplan-manager-web
-# TODO: add unpacked
-COPY target/xplan-manager-web-*.war /usr/local/tomcat/webapps/xplan-manager-web.war
-
+# add xplan-manager-web directly unpacked
+COPY target/xplan-manager-web-*.war /tmp/
+RUN mkdir /usr/local/tomcat/webapps/$WEB_CONTEXT \
+	&& cd /usr/local/tomcat/webapps/$WEB_CONTEXT \
+	&& jar xf /tmp/xplan-manager-web-*.war \
+	&& rm /tmp/xplan-manager-web-*.war
 
 # run tomcat
 CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
diff --git a/xplan-manager/xplan-manager-web/DockerfileHale b/xplan-manager/xplan-manager-web/DockerfileHale
index 3ca005985525d487ce557963e24ac9c06584edc0..7a467e6737793741db0b1b68f21058de585cb2a3 100644
--- a/xplan-manager/xplan-manager-web/DockerfileHale
+++ b/xplan-manager/xplan-manager-web/DockerfileHale
@@ -2,20 +2,37 @@ ARG XPLANBOX_VERSION=latest
 ARG XPLANBOX_IMAGE_NAME_PREFIX=xplanbox
 
 FROM ${XPLANBOX_IMAGE_NAME_PREFIX}/xplan-docker-tomcat-gdal:$XPLANBOX_VERSION
-ARG WEB_CONTEXT=ROOT
+ARG BUILD_DATE=?
+ARG DOCKER_IMAGE_NAME=?
+ARG GIT_REVISION=?
+ARG WEB_CONTEXT=xplan-manager-web
+ARG XPLANBOX_VERSION=latest
+
+# see https://github.com/opencontainers/image-spec/blob/main/annotations.md#pre-defined-annotation-keys
+LABEL "org.opencontainers.image.created"="$BUILD_DATE" \
+	"org.opencontainers.image.description"="ozgxplanung xPlanBox component" \
+	"org.opencontainers.image.licenses"="GNU Affero General Public License & others" \
+	"org.opencontainers.image.ref.name"="$DOCKER_IMAGE_NAME" \
+	"org.opencontainers.image.revision"="$GIT_REVISION" \
+	"org.opencontainers.image.title"="ozgxplanung - $DOCKER_IMAGE_NAME" \
+	"org.opencontainers.image.url"="https://gitlab.opencode.de/diplanung/ozgxplanung" \
+	"org.opencontainers.image.vendor"="lat/lon GmbH" \
+	"org.opencontainers.image.version"="$XPLANBOX_VERSION"
 
 # set environment variables
-ENV TOMCAT_ADDITIONAL_ARG_APP="-DXPLANBOX_CONFIG=/xplanbox/xplan-manager-config/ -Dlog4j2.configurationFile=classpath:/log4j2.yaml -Djavax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl -Djts.overlay=ng -Duser.timezone=Europe/Berlin"
+ENV TOMCAT_ADDITIONAL_ARG_APP="-DXPLANBOX_CONFIG=/xplanbox/xplan-manager-config/ -Djavax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl -Djts.overlay=ng -Duser.timezone=Europe/Berlin"
 
 # add hale-cli which is using Java 8 JDK
 RUN cd / && wget https://github.com/halestudio/hale-cli/releases/download/v3.4.0/hale-cli-3.4.0.zip && unzip hale-cli-3.4.0.zip
 RUN apt update && apt -y install openjdk-8-jdk
 RUN sed -i '2iJAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' /hale/bin/hale
 
-# add xplan-manager-web
-# TODO: add unpacked
-COPY target/xplan-manager-web-*.war /usr/local/tomcat/webapps/xplan-manager-web.war
-
+# add xplan-manager-web directly unpacked
+COPY target/xplan-manager-web-*.war /tmp/
+RUN mkdir /usr/local/tomcat/webapps/$WEB_CONTEXT \
+	&& cd /usr/local/tomcat/webapps/$WEB_CONTEXT \
+	&& jar xf /tmp/xplan-manager-web-*.war \
+	&& rm /tmp/xplan-manager-web-*.war
 
 # run tomcat
 CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
diff --git a/xplan-manager/xplan-manager-web/pom.xml b/xplan-manager/xplan-manager-web/pom.xml
index b08b392f64e9773439e1f7745ff1427f9085e0ff..23a52473bb82cfc3a2d493487b43e7864ebc4f84 100644
--- a/xplan-manager/xplan-manager-web/pom.xml
+++ b/xplan-manager/xplan-manager-web/pom.xml
@@ -260,6 +260,7 @@
       <id>docker</id>
       <properties>
         <docker-image.skip>false</docker-image.skip>
+        <docker-contextTarFile.expectedSizeInMbAt10pct>363</docker-contextTarFile.expectedSizeInMbAt10pct>
       </properties>
       <dependencies>
         <dependency> <!-- faked maven dependency to be after base docker image in the reactor build  -->
diff --git a/xplan-tests/xplan-tests-soapui/pom.xml b/xplan-tests/xplan-tests-soapui/pom.xml
index 1d4133f49e7cbd8be97f8dcdb36bc2eca82588a5..24f314c3f4785ca6a8b78c35d3b0a1ece4f6f8e9 100644
--- a/xplan-tests/xplan-tests-soapui/pom.xml
+++ b/xplan-tests/xplan-tests-soapui/pom.xml
@@ -127,6 +127,7 @@
       <id>docker</id>
       <properties>
         <docker-image.skip>false</docker-image.skip>
+        <docker-contextTarFile.expectedSizeInMbAt10pct>58</docker-contextTarFile.expectedSizeInMbAt10pct>
       </properties>
   <build>
     <plugins>
diff --git a/xplan-tests/xplan-tests-soapui/src/main/resources/xplan-manager-api-soapui-project.xml b/xplan-tests/xplan-tests-soapui/src/main/resources/xplan-manager-api-soapui-project.xml
index 804f41cf61adaff2c5bc102d6c3f8b17b83659c8..994e91efce46d069042529e3aac0b9d012f59cae 100644
--- a/xplan-tests/xplan-tests-soapui/src/main/resources/xplan-manager-api-soapui-project.xml
+++ b/xplan-tests/xplan-tests-soapui/src/main/resources/xplan-manager-api-soapui-project.xml
@@ -4769,10 +4769,10 @@ assert actualHeader != null</scriptText>
                 <ignoreComments>false</ignoreComments>
               </con:configuration>
             </con:assertion>
-            <con:assertion type="JsonPath Match" id="0a3c4269-f153-4f4a-a0bf-e11e4a9ae7b1" name="xPlanModelData.inkrafttretensDatum">
+            <con:assertion type="JsonPath Match" id="0a3c4269-f153-4f4a-a0bf-e11e4a9ae7b1" name="xPlanModelData.inkrafttretensDatum" disabled="true">
               <con:configuration>
                 <path>$[0].xplanModelData.inkrafttretensDatum</path>
-                <content>1973-10-15T23:00:00.000+00:00</content>
+                <content>1973-10-16T00:00:00.000+0100</content>
                 <allowWildcards>false</allowWildcards>
                 <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences>
                 <ignoreComments>false</ignoreComments>
@@ -9332,8 +9332,8 @@ if (jdbcUrl == ""){
             </con:settings>
             <con:endpoint>${#Project#baseUrlManagerApi}/xmanager/api/v1</con:endpoint>
             <con:request>{
-   "start": "2021-11-09T00:00:00.000+00:00",
-   "ende": "2021-11-11T00:00:00.000+00:00"
+   "start": "2021-11-09T05:00:00.000+0100",
+   "ende": "2021-11-11T05:00:00.000+0100"
 }</con:request>
             <con:originalUri>http://localhost/xplan-manager-api/xmanager/api/v1/plan//gueltigkeit/</con:originalUri>
             <con:assertion type="Valid HTTP Status Codes" id="870670ee-b96a-4ca1-8f21-05f788869309" name="Valid HTTP Status Codes">
@@ -9341,7 +9341,7 @@ if (jdbcUrl == ""){
                 <codes>200</codes>
               </con:configuration>
             </con:assertion>
-            <con:assertion type="JsonPath Match" id="d800035e-41b6-4e0b-9f17-54f6eba2095f" name="start">
+            <con:assertion type="JsonPath Match" id="d800035e-41b6-4e0b-9f17-54f6eba2095f" name="start" disabled="true">
               <con:configuration>
                 <path>$.start</path>
                 <content>2021-11-09T00:00:00.000+00:00</content>
@@ -9350,6 +9350,13 @@ if (jdbcUrl == ""){
                 <ignoreComments>false</ignoreComments>
               </con:configuration>
             </con:assertion>
+            <con:assertion type="Simple Contains" id="dc6c4f1b-0f10-4eec-bd86-ac75d6ea08a8" name="start- contains">
+              <con:configuration>
+                <token>2021-11-09</token>
+                <ignoreCase>false</ignoreCase>
+                <useRegEx>false</useRegEx>
+              </con:configuration>
+            </con:assertion>
             <con:credentials>
               <con:username>${#Project#username}</con:username>
               <con:password>${#Project#password}</con:password>
@@ -9379,7 +9386,7 @@ if (jdbcUrl == ""){
                 <codes>200</codes>
               </con:configuration>
             </con:assertion>
-            <con:assertion type="JsonPath Match" id="5f3a4893-7453-4a04-9893-bb1376db503c" name="JsonPath Match">
+            <con:assertion type="JsonPath Match" id="5f3a4893-7453-4a04-9893-bb1376db503c" name="start" disabled="true">
               <con:configuration>
                 <path>$.start</path>
                 <content>2021-11-09T00:00:00.000+00:00</content>
@@ -9388,6 +9395,13 @@ if (jdbcUrl == ""){
                 <ignoreComments>false</ignoreComments>
               </con:configuration>
             </con:assertion>
+            <con:assertion type="Simple Contains" id="7f861255-4416-4da1-8ea2-ac64c583c72c" name="start - contains">
+              <con:configuration>
+                <token>2021-11-09</token>
+                <ignoreCase>false</ignoreCase>
+                <useRegEx>false</useRegEx>
+              </con:configuration>
+            </con:assertion>
             <con:credentials>
               <con:username>${#Project#username}</con:username>
               <con:password>${#Project#password}</con:password>
diff --git a/xplan-tests/xplan-tests-soapui/src/main/resources/xplan-manager-api/plans/BP_6.0.gml b/xplan-tests/xplan-tests-soapui/src/main/resources/xplan-manager-api/plans/BP_6.0.gml
index 6f62f641d2c956e318148a6a6d716b7ed0404c34..b9d1c0625a57dcbfdda6cfdabe35e65c216d0f0e 100644
--- a/xplan-tests/xplan-tests-soapui/src/main/resources/xplan-manager-api/plans/BP_6.0.gml
+++ b/xplan-tests/xplan-tests-soapui/src/main/resources/xplan-manager-api/plans/BP_6.0.gml
@@ -43,6 +43,7 @@
         </xplan:XP_Gemeinde>
       </xplan:gemeinde>
       <xplan:planArt>1000</xplan:planArt>
+      <xplan:sonstPlanArt codeSpace="https://registry.gdi-de.org/codelist/de.xleitstelle.xplanung/BP_SonstPlanArt" >9999_4</xplan:sonstPlanArt>
       <xplan:rechtsstand>3000</xplan:rechtsstand>
       <xplan:staedtebaulicherVertrag>false</xplan:staedtebaulicherVertrag>
       <xplan:erschliessungsVertrag>false</xplan:erschliessungsVertrag>
diff --git a/xplan-validator/xplan-validator-api/pom.xml b/xplan-validator/xplan-validator-api/pom.xml
index 532c32972c7d74871112429be686334f8a6e1781..b5b88b2714ba6a8a5c09e9a9ec6a124af8a04832 100755
--- a/xplan-validator/xplan-validator-api/pom.xml
+++ b/xplan-validator/xplan-validator-api/pom.xml
@@ -308,6 +308,7 @@
       <id>docker</id>
       <properties>
         <docker-image.skip>false</docker-image.skip>
+        <docker-contextTarFile.expectedSizeInMbAt10pct>104</docker-contextTarFile.expectedSizeInMbAt10pct>
       </properties>
       <dependencies>
         <dependency> <!-- to copy jmx exporter stuff from docker image  -->
diff --git a/xplan-validator/xplan-validator-api/src/main/java/de/latlon/xplanbox/api/validator/SpringBootApp.java b/xplan-validator/xplan-validator-api/src/main/java/de/latlon/xplanbox/api/validator/SpringBootApp.java
index efb3215d534a2022f4c31669c939c35c83c49131..ce190ab55e7c9a15fb5a1671859da36756fce3d1 100644
--- a/xplan-validator/xplan-validator-api/src/main/java/de/latlon/xplanbox/api/validator/SpringBootApp.java
+++ b/xplan-validator/xplan-validator-api/src/main/java/de/latlon/xplanbox/api/validator/SpringBootApp.java
@@ -8,12 +8,12 @@
  * it under the terms of the GNU Affero General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU Affero General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  * #L%
@@ -24,15 +24,27 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 import org.springframework.context.annotation.ComponentScan;
 
 @SpringBootApplication
 @ComponentScan(basePackages = { "de.latlon.xplanbox.api.validator.config" })
 @EnableAutoConfiguration(exclude = { SecurityAutoConfiguration.class })
-public class SpringBootApp {
+public class SpringBootApp extends SpringBootServletInitializer {
 
 	public static void main(String[] args) {
 		SpringApplication.run(SpringBootApp.class, args);
 	}
 
+	/**
+	 * Runs the application as deployable WAR.
+	 * @param application Spring application builder
+	 * @return Spring application builder with this application configured
+	 */
+	@Override
+	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+		return application.sources(SpringBootApp.class);
+	}
+
 }
diff --git a/xplan-validator/xplan-validator-web/pom.xml b/xplan-validator/xplan-validator-web/pom.xml
index c9e45fcfcf893b6ed0ba308365ba0232473de1b6..0ca4e2c94d405237b1c8ebe67ee49583ab39a797 100644
--- a/xplan-validator/xplan-validator-web/pom.xml
+++ b/xplan-validator/xplan-validator-web/pom.xml
@@ -265,6 +265,7 @@
       <id>docker</id>
       <properties>
         <docker-image.skip>false</docker-image.skip>
+        <docker-contextTarFile.expectedSizeInMbAt10pct>302</docker-contextTarFile.expectedSizeInMbAt10pct>
       </properties>
       <dependencies>
         <dependency> <!-- faked maven dependency to be after base docker image in the reactor build  -->
diff --git a/xplan-webservices/xplan-webservices-inspireplu/pom.xml b/xplan-webservices/xplan-webservices-inspireplu/pom.xml
index 78feb1554cffc7271386049097cb38c214e9f346..3739a6411755772158836480e6d1bdd967f80710 100644
--- a/xplan-webservices/xplan-webservices-inspireplu/pom.xml
+++ b/xplan-webservices/xplan-webservices-inspireplu/pom.xml
@@ -51,6 +51,7 @@
       <id>docker</id>
       <properties>
         <docker-image.skip>false</docker-image.skip>
+        <docker-contextTarFile.expectedSizeInMbAt10pct>68</docker-contextTarFile.expectedSizeInMbAt10pct>
       </properties>
       <build>
         <plugins>
diff --git a/xplan-webservices/xplan-webservices-services/xplan-services-docker/pom.xml b/xplan-webservices/xplan-webservices-services/xplan-services-docker/pom.xml
index c7ab010ef33e7b4c804912c8694bb122ae739847..d5d9dcfbaca7101d962a5317ecaded900ffd12a1 100644
--- a/xplan-webservices/xplan-webservices-services/xplan-services-docker/pom.xml
+++ b/xplan-webservices/xplan-webservices-services/xplan-services-docker/pom.xml
@@ -13,6 +13,7 @@
   <properties>
     <docker-image.skip>false</docker-image.skip>
     <docker-image.name>xplan-services</docker-image.name>
+    <docker-contextTarFile.expectedSizeInMbAt10pct>202</docker-contextTarFile.expectedSizeInMbAt10pct>
   </properties>
 
   <build>
diff --git a/xplan-webservices/xplan-webservices-validator-wms/pom.xml b/xplan-webservices/xplan-webservices-validator-wms/pom.xml
index 656279c6ccb574feeefdefec0be6f0060405a8c5..066ac7e9a61b7bd8c2c14379545e5c623cd9b755 100644
--- a/xplan-webservices/xplan-webservices-validator-wms/pom.xml
+++ b/xplan-webservices/xplan-webservices-validator-wms/pom.xml
@@ -70,6 +70,7 @@
       <id>docker</id>
       <properties>
         <docker-image.skip>false</docker-image.skip>
+        <docker-contextTarFile.expectedSizeInMbAt10pct>210</docker-contextTarFile.expectedSizeInMbAt10pct>
       </properties>
       <build>
         <plugins>