From f9d6f023342dbef8ecd8aeb96977b303236457f0 Mon Sep 17 00:00:00 2001
From: latlon team <info@lat-lon.de>
Date: Mon, 22 Jul 2024 12:49:45 +0000
Subject: [PATCH] Code drop

- XPLANBOX-2986 - use nvdApiKeyEnvironmentVariable instead of nvdApiKey (742f57b05)
- XPLANBOX-3020 - moved deprecation notice (b9fd039ca)
- XPLANBOX-3020 - set XPlanValidatorWMS to deprecated (code and configuration) (17e4eb11c)
- XPLANBOX-3128 - Set XPlanValidatorWMS to deprecated in xplan-betriebshandbuch (ddf34affc)
- XPLANBOX-2986 use environment variable NVD_API_KEY (2f2d062b8)
- XPLANBOX-3125 - Remove obsolete constant and sed command in setupVolumes.sh (91ee59bed)
- XPLANBOX-2958 - upgrade docker-maven-plugin to 0.44.0 (7f2f602f9)
- XPLANBOX-3084 - removed rasterConfigurationType from managerConfiguration.properties (3f38efc8b)
- XPLANBOX-3084 - replaced use of property in managerConfiguration.properties with spring profile mapserver (560436fd8)
- XPLANBOX-3084 - skip inititalisation of deegree-workspace-wms if mapserver is used (79c7efe28)

Co-authored-by: Dirk Stenger <stenger@lat-lon.de>
Co-authored-by: Lyn Elisa Goltz <goltz@lat-lon.de>
Co-authored-by: Marc Guillemot <guillemot@lat-lon.de>

Dropped from commit: 827d45485aca59b03819a10b737896b5a76edf0e
---
 .gitlab-ci.yml                                |  4 +-
 README.md                                     |  7 +-
 gitlab/mvn-build-image.Dockerfile             |  4 +-
 jenkinsfiles/owasp-check.Jenkinsfile          |  2 +-
 pom.xml                                       |  4 +-
 .../admin/config/SortdateUpdateContext.java   | 23 +++--
 .../cli/manage/config/ManageContext.java      | 62 ++++++------
 .../resources/managerConfiguration.properties |  2 -
 .../api/commons/ValidationReportBuilder.java  |  4 +
 .../commons/v1/model/ValidationReport.java    | 15 ++-
 .../job/validator/config/JobContext.java      |  2 +
 .../validator/config/MemoryJobContext.java    | 12 ++-
 .../job/validator/config/SqlJobContext.java   |  2 +
 .../config/MemoryJobContextTest.java          |  2 +
 .../validator/config/SqlJobContextTest.java   |  2 +
 .../de/latlon/xplan/manager/XPlanManager.java | 66 +++++--------
 .../configuration/ManagerConfiguration.java   | 49 +++-------
 .../ManagerConfigurationAnalyser.java         | 69 --------------
 .../storage/config/StorageCleanUpContext.java | 45 ---------
 .../wmsconfig/WmsWorkspaceWrapper.java        | 40 +++++---
 ....java => GeotiffRasterStorageContext.java} | 42 ++++-----
 .../config/MapserverRasterStorageContext.java | 94 +++++++++++++++++++
 .../raster/RasterConfigurationSource.java     | 30 ------
 .../config/DeegreeRasterConfigManager.java    | 18 ++--
 .../config/WorkspaceRasterLayerManager.java   | 45 +++------
 .../raster/storage/FileSystemStorage.java     | 11 ++-
 .../config/AmazonS3RasterStorageContext.java  |  3 +-
 .../managerConfiguration.properties           |  2 -
 .../xplan/manager/XPlanManagerTest.java       | 75 ++++++++-------
 .../xplan/manager/config/CoreTestContext.java | 23 +++--
 ...WorkspaceRasterLayerManagerTestManual.java | 31 +++---
 .../configuration/ValidatorConfiguration.java |  2 +
 .../ValidatorConfigurationParser.java         |  6 +-
 .../wms/MapPreviewCreationException.java      |  2 +
 .../validator/wms/MapPreviewManager.java      |  2 +
 .../wms/MasterportalConfigWriter.java         |  2 +
 .../validator/wms/ValidatorWmsManager.java    |  2 +
 .../wms/config/ValidatorWmsContext.java       |  2 +
 .../wms/config/ValidatorWmsSqlContext.java    |  2 +
 .../config/ValidatorWmsWorkspaceContext.java  |  2 +
 .../validator/wms/storage/PlanStorage.java    |  2 +
 .../validator/wms/storage/SqlPlanStorage.java |  2 +
 .../wms/storage/WorkspacePlanStorage.java     |  2 +
 .../validatorConfiguration.properties         |  7 +-
 .../validatorConfiguration.properties         |  7 +-
 .../xplan-docker-volume-init/setupVolumes.sh  |  9 +-
 .../src/main/asciidoc/architektur.adoc        |  4 +-
 .../konfiguration/manager/geotiff.adoc        | 10 +-
 .../konfiguration/manager/mapserver.adoc      | 11 +--
 .../validator/kartenvorschau.adoc             |  2 +
 .../manager/config/ApplicationContext.java    | 52 +++++-----
 .../api/manager/handler/ConfigHandler.java    | 26 +++--
 .../api/manager/config/TestContext.java       | 78 ++++++++-------
 .../src/main/filter/filter-default.properties |  2 -
 .../resources/managerConfiguration.properties |  2 -
 .../web/spring/config/BasicSpringConfig.java  | 47 +++++-----
 .../spring/config/ManagerWebSpringConfig.java | 12 +--
 ...agerWebSpringConfigWithSimpleSecurity.java | 12 +--
 .../xplan-webservices-validator-wms/pom.xml   |  1 +
 ...ervices-validator-wms-memory-workspace.xml |  1 +
 ...ebservices-validator-wms-sql-workspace.xml |  1 +
 .../feature/validator-wms/memory/xplansyn.xml |  1 +
 .../workspace/services/validator-wms/wms.xml  |  2 +-
 .../services/validator-wms/wms_metadata.xml   |  1 +
 64 files changed, 532 insertions(+), 574 deletions(-)
 delete mode 100644 xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/configuration/ManagerConfigurationAnalyser.java
 delete mode 100644 xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/storage/config/StorageCleanUpContext.java
 rename xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/config/{RasterStorageContext.java => GeotiffRasterStorageContext.java} (69%)
 create mode 100644 xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/config/MapserverRasterStorageContext.java
 delete mode 100644 xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/RasterConfigurationSource.java

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9333d4401..6e31291a0 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -151,7 +151,7 @@ create-maven-build-image:
     entrypoint: [""]
   script:
 # see https://stackoverflow.com/questions/75442435/how-to-use-docker-build-secrets-with-kaniko
-  - mkdir -p /kaniko/run/secrets && cp $NVD_API_KEY_FILE /kaniko/run/secrets/nvdApiKey
+  - mkdir -p /kaniko/run/secrets && echo $NVD_API_KEY > /kaniko/run/secrets/NVD_API_KEY
   - /kaniko/executor
     --context "${CI_PROJECT_DIR}"
     --dockerfile "${CI_PROJECT_DIR}/gitlab/mvn-build-image.Dockerfile"
@@ -167,7 +167,7 @@ dependency-check:
   stage: build
   image: registry.opencode.de/diplanung/ozgxplanung/mvn-build-image:latest
   script:
-  - export nvdApiKeyEnvironmentVariable=$(cat $NVD_API_KEY_FILE); mvn org.owasp:dependency-check-maven:aggregate -Ddependency-check.skip=false
+  - mvn org.owasp:dependency-check-maven:aggregate -Ddependency-check.skip=false
   artifacts:
     when: always
     paths:
diff --git a/README.md b/README.md
index 777affe1e..e4db9bbc8 100644
--- a/README.md
+++ b/README.md
@@ -78,8 +78,9 @@ mvn clean install
 Bei der Verwendung vom OWASP-Dependency-Check Maven Plugin kann die Issue Datenbank deutlich schneller heruntergeladen werden, wenn einen [NVD API Key](https://nvd.nist.gov/developers/request-an-api-key) verwendet wird. Dieser kann über eine Umgebungsvariable gesetzt werden:
 
 ```
-export nvdApiKeyEnvironmentVariable=....
+export NVD_API_KEY=....
 ```
+
 #### Container Images erstellen
 
 Um Container Images aus dem Source Code auf Open CoDE zu bauen, sind folgende Anpassungen erforderlich. Die gebauten Container Images sind in der Container Registry verfügbar: https://gitlab.opencode.de/diplanung/ozgxplanung/container_registry/.
@@ -142,8 +143,8 @@ Das Image kann auch manuell gebaut und gepusht werden. Dafür ist ein [NVD API K
 ###### Docker Image lokal bauen
 
 ```
-export nvdApiKeyEnvironmentVariable=....
-docker build -t registry.opencode.de/diplanung/ozgxplanung/mvn-build-image:latest -f gitlab/mvn-build-image.Dockerfile --secret id=nvdApiKey,env=nvdApiKeyEnvironmentVariable .
+export NVD_API_KEY=....
+docker build -t registry.opencode.de/diplanung/ozgxplanung/mvn-build-image:latest -f gitlab/mvn-build-image.Dockerfile --secret id=NVD_API_KEY .
 ```
 
 ###### GitLab personal access token erstellen
diff --git a/gitlab/mvn-build-image.Dockerfile b/gitlab/mvn-build-image.Dockerfile
index de6633350..329281c20 100644
--- a/gitlab/mvn-build-image.Dockerfile
+++ b/gitlab/mvn-build-image.Dockerfile
@@ -21,8 +21,8 @@ LABEL "org.opencontainers.image.created"="$BUILD_DATE" \
 
 RUN mkdir /tmp/ozgxplanung
 ADD . /tmp/ozgxplanung
-RUN --mount=type=secret,id=nvdApiKey cd /tmp/ozgxplanung \
+RUN --mount=type=secret,id=NVD_API_KEY cd /tmp/ozgxplanung \
 	&& mvn test -Pdocker --fail-never -Dtest=notExisting  -Ddependency-check.skip=true \
-	&& export nvdApiKeyEnvironmentVariable=$(cat $SECRETS_DIR/nvdApiKey); mvn org.owasp:dependency-check-maven:aggregate -Ddependency-check.skip=false -Dformats=JUNIT \
+	&& export NVD_API_KEY=$(cat $SECRETS_DIR/NVD_API_KEY); mvn org.owasp:dependency-check-maven:aggregate -Ddependency-check.skip=false -Dformats=JUNIT \
 	&& find $MAVEN_CONFIG/repository -name '*-SNAPSHOT' | xargs rm -rf \
 	&& rm -rf /tmp/ozgxplanung
\ No newline at end of file
diff --git a/jenkinsfiles/owasp-check.Jenkinsfile b/jenkinsfiles/owasp-check.Jenkinsfile
index 51f7aca53..9d5b95f58 100644
--- a/jenkinsfiles/owasp-check.Jenkinsfile
+++ b/jenkinsfiles/owasp-check.Jenkinsfile
@@ -11,7 +11,7 @@ pipeline {
     stage('Build with owasp check') {
       steps{
         withMaven(mavenLocalRepo: '.repository', mavenSettingsConfig: 'mvn-empty-settings', options: [junitPublisher(healthScaleFactor: 1.0)], publisherStrategy: 'EXPLICIT') {
-		  withCredentials([string(credentialsId: 'nvdApiKey', variable: 'nvdApiKeyEnvironmentVariable')]) {
+		  withCredentials([string(credentialsId: 'nvdApiKey', variable: 'NVD_API_KEY')]) {
             sh 'mvn -B -C clean install -Ddependency-check.skip=false'
           }
         }
diff --git a/pom.xml b/pom.xml
index f66af63b6..66a8e8d62 100644
--- a/pom.xml
+++ b/pom.xml
@@ -528,7 +528,7 @@
           <failBuildOnCVSS>10</failBuildOnCVSS>
           <knownExploitedEnabled>false</knownExploitedEnabled>
           <nvdValidForHours>24</nvdValidForHours>
-          <nvdApiKey>${env.nvdApiKeyEnvironmentVariable}</nvdApiKey>
+          <nvdApiKeyEnvironmentVariable>NVD_API_KEY</nvdApiKeyEnvironmentVariable>
         </configuration>
         <executions>
           <execution>
@@ -760,7 +760,7 @@
         <plugin>
           <groupId>io.fabric8</groupId>
           <artifactId>docker-maven-plugin</artifactId>
-          <version>0.43.4</version>
+          <version>0.44.0</version>
         </plugin>
         <plugin>
           <groupId>org.codehaus.mojo</groupId>
diff --git a/xplan-cli/src/main/java/de/latlon/xplanbox/cli/admin/config/SortdateUpdateContext.java b/xplan-cli/src/main/java/de/latlon/xplanbox/cli/admin/config/SortdateUpdateContext.java
index 286971ab3..9b4f6e227 100644
--- a/xplan-cli/src/main/java/de/latlon/xplanbox/cli/admin/config/SortdateUpdateContext.java
+++ b/xplan-cli/src/main/java/de/latlon/xplanbox/cli/admin/config/SortdateUpdateContext.java
@@ -20,13 +20,19 @@
  */
 package de.latlon.xplanbox.cli.admin.config;
 
+import static de.latlon.xplan.manager.workspace.WorkspaceUtils.DEFAULT_XPLANSYN_WMS_WORKSPACE;
+
+import java.io.File;
+
 import de.latlon.xplan.commons.feature.SortPropertyReader;
+import de.latlon.xplan.manager.configuration.ConfigurationException;
 import de.latlon.xplan.manager.configuration.ManagerConfiguration;
 import de.latlon.xplan.manager.database.ManagerWorkspaceWrapper;
 import de.latlon.xplan.manager.database.XPlanDao;
 import de.latlon.xplan.manager.database.XPlanDbAdapter;
 import de.latlon.xplan.manager.wmsconfig.WmsWorkspaceWrapper;
-import de.latlon.xplan.manager.wmsconfig.config.RasterStorageContext;
+import de.latlon.xplan.manager.wmsconfig.config.GeotiffRasterStorageContext;
+import de.latlon.xplan.manager.wmsconfig.config.MapserverRasterStorageContext;
 import de.latlon.xplan.manager.wmsconfig.raster.XPlanRasterManager;
 import de.latlon.xplan.manager.wmsconfig.raster.config.RasterConfigManager;
 import de.latlon.xplan.manager.wmsconfig.raster.storage.RasterStorage;
@@ -40,10 +46,7 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
-
-import java.io.File;
-
-import static de.latlon.xplan.manager.workspace.WorkspaceUtils.DEFAULT_XPLANSYN_WMS_WORKSPACE;
+import org.springframework.context.annotation.Profile;
 
 /**
  * Spring Application Context for initialising xplan-update-data-cli components.
@@ -52,7 +55,8 @@ import static de.latlon.xplan.manager.workspace.WorkspaceUtils.DEFAULT_XPLANSYN_
  */
 @Configuration
 @ComponentScan({ "de.latlon.xplanbox.cli.admin.db", "de.latlon.xplanbox.cli.admin.sortdate" })
-@Import({ CommonContext.class, RasterStorageContext.class, AmazonS3RasterStorageContext.class, })
+@Import({ CommonContext.class, GeotiffRasterStorageContext.class, MapserverRasterStorageContext.class,
+		AmazonS3RasterStorageContext.class, })
 public class SortdateUpdateContext {
 
 	@Autowired
@@ -70,12 +74,13 @@ public class SortdateUpdateContext {
 	}
 
 	@Bean
+	@Profile("!mapserver")
 	public WmsWorkspaceWrapper wmsWorkspaceWrapper(
-			@Value("${xplanbox.workspace:#{environment.DEEGREE_WORKSPACE_ROOT}}") File workspaceRoot)
-			throws WorkspaceException {
+			@Value("${xplanbox.workspace:#{environment.DEEGREE_WORKSPACE_ROOT}}") File workspaceRoot,
+			ManagerConfiguration managerConfiguration) throws WorkspaceException, ConfigurationException {
 		DeegreeWorkspaceWrapper wmsWorkspace = new DeegreeWorkspaceWrapper(DEFAULT_XPLANSYN_WMS_WORKSPACE,
 				workspaceRoot);
-		return new WmsWorkspaceWrapper(wmsWorkspace.getWorkspaceInstance());
+		return new WmsWorkspaceWrapper(managerConfiguration, wmsWorkspace.getWorkspaceInstance());
 	}
 
 	@Bean
diff --git a/xplan-cli/src/main/java/de/latlon/xplanbox/cli/manage/config/ManageContext.java b/xplan-cli/src/main/java/de/latlon/xplanbox/cli/manage/config/ManageContext.java
index 523ce95ed..ecab0630b 100644
--- a/xplan-cli/src/main/java/de/latlon/xplanbox/cli/manage/config/ManageContext.java
+++ b/xplan-cli/src/main/java/de/latlon/xplanbox/cli/manage/config/ManageContext.java
@@ -8,18 +8,32 @@
  * 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%
  */
 package de.latlon.xplanbox.cli.manage.config;
 
+import static de.latlon.xplan.manager.workspace.WorkspaceUtils.DEFAULT_XPLANSYN_WMS_WORKSPACE;
+import static de.latlon.xplan.manager.workspace.WorkspaceUtils.DEFAULT_XPLAN_MANAGER_WORKSPACE;
+import static de.latlon.xplan.manager.workspace.WorkspaceUtils.instantiateWorkspace;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
 import de.latlon.xplan.commons.archive.XPlanArchiveCreator;
 import de.latlon.xplan.commons.configuration.ConfigurationDirectoryPropertiesLoader;
 import de.latlon.xplan.commons.configuration.PropertiesLoader;
@@ -41,7 +55,6 @@ import de.latlon.xplan.manager.export.XPlanExporter;
 import de.latlon.xplan.manager.metadata.DataServiceCouplingException;
 import de.latlon.xplan.manager.metadata.MetadataCouplingHandler;
 import de.latlon.xplan.manager.storage.StorageCleanUpManager;
-import de.latlon.xplan.manager.storage.config.StorageCleanUpContext;
 import de.latlon.xplan.manager.storage.filesystem.DeegreeRasterCacheCleaner;
 import de.latlon.xplan.manager.synthesizer.XPlanSynthesizer;
 import de.latlon.xplan.manager.synthesizer.rules.SynRulesAccessor;
@@ -54,7 +67,8 @@ import de.latlon.xplan.manager.transaction.service.XPlanEditService;
 import de.latlon.xplan.manager.transaction.service.XPlanInsertService;
 import de.latlon.xplan.manager.web.shared.ConfigurationException;
 import de.latlon.xplan.manager.wmsconfig.WmsWorkspaceWrapper;
-import de.latlon.xplan.manager.wmsconfig.config.RasterStorageContext;
+import de.latlon.xplan.manager.wmsconfig.config.GeotiffRasterStorageContext;
+import de.latlon.xplan.manager.wmsconfig.config.MapserverRasterStorageContext;
 import de.latlon.xplan.manager.wmsconfig.raster.XPlanRasterManager;
 import de.latlon.xplan.manager.wmsconfig.raster.config.RasterConfigManager;
 import de.latlon.xplan.manager.wmsconfig.raster.evaluation.RasterEvaluation;
@@ -93,22 +107,9 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.context.annotation.Profile;
 import org.springframework.core.io.ResourceLoader;
 
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
-import static de.latlon.xplan.manager.workspace.WorkspaceUtils.DEFAULT_XPLANSYN_WMS_WORKSPACE;
-import static de.latlon.xplan.manager.workspace.WorkspaceUtils.DEFAULT_XPLAN_MANAGER_WORKSPACE;
-import static de.latlon.xplan.manager.workspace.WorkspaceUtils.instantiateWorkspace;
-
 /**
  * Spring Application Context for initialising XPlanManagerAPI components.
  *
@@ -116,8 +117,8 @@ import static de.latlon.xplan.manager.workspace.WorkspaceUtils.instantiateWorksp
  * @author <a href="mailto:friebe@lat-lon.de">Torsten Friebe</a>
  */
 @Configuration
-@Import({ JpaContext.class, RasterStorageContext.class, AmazonS3RasterStorageContext.class,
-		DocumentStorageContext.class, StorageCleanUpContext.class })
+@Import({ JpaContext.class, GeotiffRasterStorageContext.class, MapserverRasterStorageContext.class,
+		AmazonS3RasterStorageContext.class, DocumentStorageContext.class })
 public class ManageContext {
 
 	private static final Logger LOG = LoggerFactory.getLogger(ManageContext.class);
@@ -205,12 +206,14 @@ public class ManageContext {
 	}
 
 	@Bean
+	@Profile("!mapserver")
 	public WmsWorkspaceWrapper wmsWorkspaceWrapper(
-			@Value("${xplanbox.workspace:#{environment.DEEGREE_WORKSPACE_ROOT}}") File workspaceRoot)
-			throws WorkspaceException {
+			@Value("${xplanbox.workspace:#{environment.DEEGREE_WORKSPACE_ROOT}}") File workspaceRoot,
+			ManagerConfiguration managerConfiguration)
+			throws WorkspaceException, de.latlon.xplan.manager.configuration.ConfigurationException {
 		DeegreeWorkspaceWrapper wmsWorkspace = new DeegreeWorkspaceWrapper(DEFAULT_XPLANSYN_WMS_WORKSPACE,
 				workspaceRoot);
-		return new WmsWorkspaceWrapper(wmsWorkspace.getWorkspaceInstance());
+		return new WmsWorkspaceWrapper(managerConfiguration, wmsWorkspace.getWorkspaceInstance());
 	}
 
 	@Bean
@@ -226,13 +229,12 @@ public class ManageContext {
 
 	@Bean
 	public XPlanManager xPlanManager(XPlanManagerDao xPlanManagerDao, XPlanArchiveCreator archiveCreator,
-			ManagerConfiguration managerConfiguration, WmsWorkspaceWrapper wmsWorkspaceWrapper,
-			XPlanExporter xPlanExporter, XPlanRasterEvaluator xPlanRasterEvaluator,
-			XPlanRasterManager xPlanRasterManager, SortPropertyReader sortPropertyReader,
-			XPlanInsertManager xPlanInsertManager, XPlanEditManager xPlanEditManager,
-			XPlanDeleteManager xPlanDeleteManager) throws Exception {
-		return new XPlanManager(xPlanManagerDao, archiveCreator, managerConfiguration, wmsWorkspaceWrapper,
-				xPlanExporter, xPlanRasterEvaluator, xPlanRasterManager, sortPropertyReader, null, xPlanInsertManager,
+			ManagerConfiguration managerConfiguration, XPlanExporter xPlanExporter,
+			XPlanRasterEvaluator xPlanRasterEvaluator, XPlanRasterManager xPlanRasterManager,
+			SortPropertyReader sortPropertyReader, XPlanInsertManager xPlanInsertManager,
+			XPlanEditManager xPlanEditManager, XPlanDeleteManager xPlanDeleteManager) throws Exception {
+		return new XPlanManager(xPlanManagerDao, archiveCreator, managerConfiguration, xPlanExporter,
+				xPlanRasterEvaluator, xPlanRasterManager, sortPropertyReader, null, xPlanInsertManager,
 				xPlanEditManager, xPlanDeleteManager);
 	}
 
diff --git a/xplan-cli/src/main/resources/managerConfiguration.properties b/xplan-cli/src/main/resources/managerConfiguration.properties
index c703f89d6..1f3b8240c 100644
--- a/xplan-cli/src/main/resources/managerConfiguration.properties
+++ b/xplan-cli/src/main/resources/managerConfiguration.properties
@@ -22,8 +22,6 @@
 rasterConfigurationCrs=EPSG:25832
 rasterLayerMinScaleDenominator=0
 rasterLayerMaxScaleDenominator=50000
-# must be geotiff or mapserver, default is geotiff
-rasterConfigurationType=geotiff
 
 # workspace reloader configuration, workspaceReloadAction must be one of ALL (default), RELOAD, PLANWERKWMS
 # workspaceReloadUser and workspaceReloadPassword are deprecated! Use workspaceReloadApiKey instead.
diff --git a/xplan-core/xplan-core-api/src/main/java/de/latlon/xplanbox/api/commons/ValidationReportBuilder.java b/xplan-core/xplan-core-api/src/main/java/de/latlon/xplanbox/api/commons/ValidationReportBuilder.java
index 26ffe5f08..a6eed0967 100644
--- a/xplan-core/xplan-core-api/src/main/java/de/latlon/xplanbox/api/commons/ValidationReportBuilder.java
+++ b/xplan-core/xplan-core-api/src/main/java/de/latlon/xplanbox/api/commons/ValidationReportBuilder.java
@@ -71,6 +71,10 @@ public class ValidationReportBuilder {
 		return this;
 	}
 
+	/**
+	 * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
+	 */
+	@Deprecated
 	public ValidationReportBuilder wmsUrl(URI wmsUrl) {
 		this.wmsUrl = wmsUrl;
 		return this;
diff --git a/xplan-core/xplan-core-api/src/main/java/de/latlon/xplanbox/api/commons/v1/model/ValidationReport.java b/xplan-core/xplan-core-api/src/main/java/de/latlon/xplanbox/api/commons/v1/model/ValidationReport.java
index e7577ba9d..c866e368e 100644
--- a/xplan-core/xplan-core-api/src/main/java/de/latlon/xplanbox/api/commons/v1/model/ValidationReport.java
+++ b/xplan-core/xplan-core-api/src/main/java/de/latlon/xplanbox/api/commons/v1/model/ValidationReport.java
@@ -237,18 +237,29 @@ public class ValidationReport {
 	}
 
 	/**
-	**/
+	 * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
+	 */
+	@Deprecated
 	public ValidationReport wmsUrl(URI wmsUrl) {
 		this.wmsUrl = wmsUrl;
 		return this;
 	}
 
-	@Schema(example = "https://xplanbox.lat-lon.de/xplan-validator-wms/services/wms?PLANWERK_MANAGERID=13")
+	/**
+	 * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
+	 */
+	@Deprecated
+	@Schema(example = "https://xplanbox.lat-lon.de/xplan-validator-wms/services/wms?PLANWERK_MANAGERID=13",
+			description = "deprecated: XPlanValidatorWMS will be removed in a future version", deprecated = true)
 	@JsonProperty("wmsUrl")
 	public URI getWmsUrl() {
 		return wmsUrl;
 	}
 
+	/**
+	 * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
+	 */
+	@Deprecated
 	public void setWmsUrl(URI wmsUrl) {
 		this.wmsUrl = wmsUrl;
 	}
diff --git a/xplan-core/xplan-core-job/src/main/java/de/latlon/xplan/job/validator/config/JobContext.java b/xplan-core/xplan-core-job/src/main/java/de/latlon/xplan/job/validator/config/JobContext.java
index 51b785a8a..6f0dfddd9 100644
--- a/xplan-core/xplan-core-job/src/main/java/de/latlon/xplan/job/validator/config/JobContext.java
+++ b/xplan-core/xplan-core-job/src/main/java/de/latlon/xplan/job/validator/config/JobContext.java
@@ -32,9 +32,11 @@ import org.springframework.scheduling.quartz.SchedulerFactoryBean;
  * Spring configuration for Quartz scheduler and jobs.
  *
  * @author <a href="mailto:friebe@lat-lon.de">Torsten Friebe</a>
+ * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
  */
 @Configuration
 @Profile("validatorwmssql | validatorwmsmemory")
+@Deprecated
 public class JobContext {
 
 	public static final String DELETE_AFTER_KEY = "DELETE_AFTER_MINUTES";
diff --git a/xplan-core/xplan-core-job/src/main/java/de/latlon/xplan/job/validator/config/MemoryJobContext.java b/xplan-core/xplan-core-job/src/main/java/de/latlon/xplan/job/validator/config/MemoryJobContext.java
index 5da76aa26..0e058ef0f 100644
--- a/xplan-core/xplan-core-job/src/main/java/de/latlon/xplan/job/validator/config/MemoryJobContext.java
+++ b/xplan-core/xplan-core-job/src/main/java/de/latlon/xplan/job/validator/config/MemoryJobContext.java
@@ -20,6 +20,11 @@
  */
 package de.latlon.xplan.job.validator.config;
 
+import static de.latlon.xplan.job.validator.config.JobContext.DELETE_AFTER_KEY;
+import static de.latlon.xplan.job.validator.config.JobContext.DELETE_INTERVAL_IN_SECONDS;
+import static de.latlon.xplan.job.validator.config.JobContext.IMPORT_INTERVAL_IN_SECONDS;
+import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
+
 import de.latlon.xplan.job.validator.memory.GmlDeleteJob;
 import de.latlon.xplan.job.validator.memory.GmlImportJob;
 import org.quartz.JobBuilder;
@@ -34,18 +39,15 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Profile;
 import org.springframework.scheduling.quartz.SchedulerFactoryBean;
 
-import static de.latlon.xplan.job.validator.config.JobContext.DELETE_AFTER_KEY;
-import static de.latlon.xplan.job.validator.config.JobContext.DELETE_INTERVAL_IN_SECONDS;
-import static de.latlon.xplan.job.validator.config.JobContext.IMPORT_INTERVAL_IN_SECONDS;
-import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
-
 /**
  * Spring configuration for Quartz scheduler and jobs.
  *
  * @author <a href="mailto:friebe@lat-lon.de">Torsten Friebe</a>
+ * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
  */
 @Configuration
 @Profile("validatorwmsmemory")
+@Deprecated
 public class MemoryJobContext {
 
 	@Bean
diff --git a/xplan-core/xplan-core-job/src/main/java/de/latlon/xplan/job/validator/config/SqlJobContext.java b/xplan-core/xplan-core-job/src/main/java/de/latlon/xplan/job/validator/config/SqlJobContext.java
index 0c36a907e..b7eeec90f 100644
--- a/xplan-core/xplan-core-job/src/main/java/de/latlon/xplan/job/validator/config/SqlJobContext.java
+++ b/xplan-core/xplan-core-job/src/main/java/de/latlon/xplan/job/validator/config/SqlJobContext.java
@@ -44,9 +44,11 @@ import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
  * SQLFeatureStoreConfig.
  *
  * @author <a href="mailto:friebe@lat-lon.de">Torsten Friebe</a>
+ * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
  */
 @Configuration
 @Profile("validatorwmssql")
+@Deprecated
 public class SqlJobContext {
 
 	private static final Logger LOG = LoggerFactory.getLogger(SqlJobContext.class);
diff --git a/xplan-core/xplan-core-job/src/test/java/de/latlon/xplan/job/validator/config/MemoryJobContextTest.java b/xplan-core/xplan-core-job/src/test/java/de/latlon/xplan/job/validator/config/MemoryJobContextTest.java
index 7a2afafe1..45a7a39c1 100644
--- a/xplan-core/xplan-core-job/src/test/java/de/latlon/xplan/job/validator/config/MemoryJobContextTest.java
+++ b/xplan-core/xplan-core-job/src/test/java/de/latlon/xplan/job/validator/config/MemoryJobContextTest.java
@@ -35,10 +35,12 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 /**
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
+ * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
  */
 @ExtendWith(SpringExtension.class)
 @ContextConfiguration(classes = { JobContext.class, SqlJobContext.class, MemoryJobContext.class })
 @ActiveProfiles("validatorwmsmemory")
+@Deprecated
 class MemoryJobContextTest {
 
 	@Autowired
diff --git a/xplan-core/xplan-core-job/src/test/java/de/latlon/xplan/job/validator/config/SqlJobContextTest.java b/xplan-core/xplan-core-job/src/test/java/de/latlon/xplan/job/validator/config/SqlJobContextTest.java
index 8d8918977..509ca449d 100644
--- a/xplan-core/xplan-core-job/src/test/java/de/latlon/xplan/job/validator/config/SqlJobContextTest.java
+++ b/xplan-core/xplan-core-job/src/test/java/de/latlon/xplan/job/validator/config/SqlJobContextTest.java
@@ -35,10 +35,12 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 /**
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
+ * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
  */
 @ExtendWith(SpringExtension.class)
 @ContextConfiguration(classes = { JobContext.class, SqlJobContext.class, MemoryJobContext.class })
 @ActiveProfiles("validatorwmssql")
+@Deprecated
 public class SqlJobContextTest {
 
 	@Autowired
diff --git a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/XPlanManager.java b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/XPlanManager.java
index 5e7e2a0bb..8b65e1d50 100644
--- a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/XPlanManager.java
+++ b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/XPlanManager.java
@@ -20,21 +20,33 @@
  */
 package de.latlon.xplan.manager;
 
+import static de.latlon.xplan.commons.util.FeatureCollectionUtils.retrieveRechtsstand;
+import static de.latlon.xplan.manager.edit.ExternalReferenceUtils.createExternalRefAddedOrUpdated;
+import static de.latlon.xplan.manager.web.shared.PlanStatus.findByLegislationStatusCode;
+import static de.latlon.xplan.manager.web.shared.PlanStatus.valueOf;
+import static de.latlon.xplan.manager.web.shared.Rechtsstand.UNKNOWN_RECHTSSTAND;
+import static java.lang.Integer.parseInt;
+import static org.apache.commons.io.IOUtils.closeQuietly;
+
+import javax.xml.stream.XMLStreamException;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.EmptyStackException;
+import java.util.List;
+import java.util.stream.Collectors;
+
 import de.latlon.xplan.commons.XPlanType;
 import de.latlon.xplan.commons.XPlanVersion;
 import de.latlon.xplan.commons.archive.XPlanArchive;
 import de.latlon.xplan.commons.archive.XPlanArchiveContentAccess;
 import de.latlon.xplan.commons.archive.XPlanArchiveCreator;
 import de.latlon.xplan.commons.archive.XPlanPartArchive;
-import de.latlon.xplan.commons.feature.FeatureCollectionParseException;
-import de.latlon.xplan.commons.feature.SortPropertyReader;
-import de.latlon.xplan.commons.feature.XPlanFeatureCollection;
-import de.latlon.xplan.commons.feature.XPlanFeatureCollections;
-import de.latlon.xplan.commons.feature.XPlanGmlParserBuilder;
+import de.latlon.xplan.commons.feature.*;
 import de.latlon.xplan.commons.reference.ExternalReferenceInfo;
 import de.latlon.xplan.core.manager.db.model.Artefact;
 import de.latlon.xplan.manager.configuration.ManagerConfiguration;
-import de.latlon.xplan.manager.configuration.ManagerConfigurationAnalyser;
 import de.latlon.xplan.manager.database.XPlanDao;
 import de.latlon.xplan.manager.dictionary.XPlanDictionaries;
 import de.latlon.xplan.manager.dictionary.XPlanEnumerationFactory;
@@ -45,14 +57,8 @@ import de.latlon.xplan.manager.transaction.UnsupportPlanException;
 import de.latlon.xplan.manager.transaction.XPlanDeleteManager;
 import de.latlon.xplan.manager.transaction.XPlanEditManager;
 import de.latlon.xplan.manager.transaction.XPlanInsertManager;
-import de.latlon.xplan.manager.web.shared.Bereich;
-import de.latlon.xplan.manager.web.shared.PlanNameWithStatusResult;
-import de.latlon.xplan.manager.web.shared.PlanStatus;
-import de.latlon.xplan.manager.web.shared.RasterEvaluationResult;
-import de.latlon.xplan.manager.web.shared.Rechtsstand;
-import de.latlon.xplan.manager.web.shared.XPlan;
+import de.latlon.xplan.manager.web.shared.*;
 import de.latlon.xplan.manager.web.shared.edit.XPlanToEdit;
-import de.latlon.xplan.manager.wmsconfig.WmsWorkspaceWrapper;
 import de.latlon.xplan.manager.wmsconfig.raster.XPlanRasterManager;
 import de.latlon.xplan.manager.wmsconfig.raster.evaluation.XPlanRasterEvaluator;
 import de.latlon.xplan.manager.workspace.WorkspaceException;
@@ -65,23 +71,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.security.access.prepost.PreAuthorize;
 
-import javax.xml.stream.XMLStreamException;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.EmptyStackException;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import static de.latlon.xplan.commons.util.FeatureCollectionUtils.retrieveRechtsstand;
-import static de.latlon.xplan.manager.edit.ExternalReferenceUtils.createExternalRefAddedOrUpdated;
-import static de.latlon.xplan.manager.web.shared.PlanStatus.findByLegislationStatusCode;
-import static de.latlon.xplan.manager.web.shared.PlanStatus.valueOf;
-import static de.latlon.xplan.manager.web.shared.Rechtsstand.UNKNOWN_RECHTSSTAND;
-import static java.lang.Integer.parseInt;
-import static org.apache.commons.io.IOUtils.closeQuietly;
-
 /**
  * An instance of XPlanManager provides the service methods to manage instances of XPlan.
  * Supports XPlan version 4.x, 5.x. and 6.x.
@@ -119,7 +108,6 @@ public class XPlanManager {
 	 * @param xPlanDao mandatory XPlan data access object
 	 * @param archiveCreator mandatory archive creator
 	 * @param managerConfiguration mandatory manager configuration
-	 * @param wmsWorkspaceWrapper mandatory WMS workspace configuration
 	 * @param xPlanExporter
 	 * @param sortPropertyReader
 	 * @param inspirePluPublisher
@@ -129,12 +117,12 @@ public class XPlanManager {
 	 * @throws Exception if mandatory arguments are missing or something went wrong
 	 */
 	public XPlanManager(XPlanDao xPlanDao, XPlanArchiveCreator archiveCreator,
-			ManagerConfiguration managerConfiguration, WmsWorkspaceWrapper wmsWorkspaceWrapper,
-			XPlanExporter xPlanExporter, XPlanRasterEvaluator xPlanRasterEvaluator,
-			XPlanRasterManager xPlanRasterManager, SortPropertyReader sortPropertyReader,
-			InspirePluPublisher inspirePluPublisher, XPlanInsertManager xPlanInsertManager,
-			XPlanEditManager xPlanEditManager, XPlanDeleteManager xPlanDeleteManager) throws Exception {
-		if (xPlanDao == null || archiveCreator == null || managerConfiguration == null || wmsWorkspaceWrapper == null) {
+			ManagerConfiguration managerConfiguration, XPlanExporter xPlanExporter,
+			XPlanRasterEvaluator xPlanRasterEvaluator, XPlanRasterManager xPlanRasterManager,
+			SortPropertyReader sortPropertyReader, InspirePluPublisher inspirePluPublisher,
+			XPlanInsertManager xPlanInsertManager, XPlanEditManager xPlanEditManager,
+			XPlanDeleteManager xPlanDeleteManager) throws Exception {
+		if (xPlanDao == null || archiveCreator == null || managerConfiguration == null) {
 			throw new IllegalArgumentException("Mandatory argument must not be null");
 		}
 		this.xPlanExporter = xPlanExporter;
@@ -147,10 +135,6 @@ public class XPlanManager {
 		this.archiveCreator = archiveCreator;
 		this.xPlanRasterEvaluator = xPlanRasterEvaluator;
 		this.xPlanRasterManager = xPlanRasterManager;
-
-		ManagerConfigurationAnalyser managerConfigurationAnalyser = new ManagerConfigurationAnalyser(
-				managerConfiguration, wmsWorkspaceWrapper);
-		managerConfigurationAnalyser.checkConfiguration();
 	}
 
 	@SuppressFBWarnings(value = "PATH_TRAVERSAL_IN")
diff --git a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/configuration/ManagerConfiguration.java b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/configuration/ManagerConfiguration.java
index 2ae41d635..ea0b2b37a 100644
--- a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/configuration/ManagerConfiguration.java
+++ b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/configuration/ManagerConfiguration.java
@@ -20,29 +20,27 @@
  */
 package de.latlon.xplan.manager.configuration;
 
+import static de.latlon.xplan.manager.workspace.WorkspaceReloadAction.ALL;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
 import de.latlon.xplan.commons.XPlanType;
 import de.latlon.xplan.commons.XPlanVersion;
 import de.latlon.xplan.commons.configuration.PropertiesLoader;
 import de.latlon.xplan.commons.configuration.SemanticConformityLinkConfiguration;
 import de.latlon.xplan.commons.configuration.SortConfiguration;
 import de.latlon.xplan.manager.web.shared.ConfigurationException;
-import de.latlon.xplan.manager.wmsconfig.raster.RasterConfigurationSource;
 import de.latlon.xplan.manager.workspace.WorkspaceReloadAction;
 import de.latlon.xplan.manager.workspace.WorkspaceReloaderConfiguration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import static de.latlon.xplan.manager.wmsconfig.raster.RasterConfigurationSource.geotiff;
-import static de.latlon.xplan.manager.workspace.WorkspaceReloadAction.ALL;
-
 /**
  * Provides access to the manager configuration.
  *
@@ -57,8 +55,6 @@ public class ManagerConfiguration {
 
 	static final String RASTER_LAYER_SCALE_DENOMINATOR_MAX = "rasterLayerMaxScaleDenominator";
 
-	static final String RASTER_CONFIG_TYPE = "rasterConfigurationType";
-
 	static final String WORKSPACE_RELOAD_URLS = "workspaceReloadUrls";
 
 	static final String WORKSPACE_RELOAD_API_KEY = "workspaceReloadApiKey";
@@ -81,8 +77,6 @@ public class ManagerConfiguration {
 
 	private String rasterConfigurationCrs;
 
-	private RasterConfigurationSource rasterConfigurationType = geotiff;
-
 	private double rasterLayerMinScaleDenominator = Double.NaN;
 
 	private double rasterLayerMaxScaleDenominator = Double.NaN;
@@ -118,14 +112,6 @@ public class ManagerConfiguration {
 		return rasterConfigurationCrs;
 	}
 
-	/**
-	 * @return the type to use in the raster configuration (geotiff or mapserver), never
-	 * <code>null</code>
-	 */
-	public RasterConfigurationSource getRasterConfigurationType() {
-		return rasterConfigurationType;
-	}
-
 	/**
 	 * @return the max scale denominator the raster layer is visible (a value less than 0
 	 * means the visibility is not limited)
@@ -208,7 +194,6 @@ public class ManagerConfiguration {
 			Properties loadProperties = propertiesLoader.loadProperties(MANAGER_CONFIGURATION);
 			if (loadProperties != null) {
 				rasterConfigurationCrs = parseRasterConfigurationCrs(loadProperties, RASTER_CONFIG_CRS);
-				rasterConfigurationType = parseRasterConfigurationType(loadProperties);
 				rasterLayerMinScaleDenominator = parseScaleDenominator(loadProperties,
 						RASTER_LAYER_SCALE_DENOMINATOR_MIN);
 				rasterLayerMaxScaleDenominator = parseScaleDenominator(loadProperties,
@@ -247,7 +232,7 @@ public class ManagerConfiguration {
 		LOG.info("-------------------------------------------");
 		LOG.info("  raster configuration");
 		LOG.info("   - crs: {}", rasterConfigurationCrs);
-		LOG.info("   - type: {}", rasterConfigurationType);
+		LOG.info("   - type: spring profile is used since v8.0");
 		LOG.info("   - min scale denominator: {}", rasterLayerMinScaleDenominator);
 		LOG.info("   - max scale denominator: {}", rasterLayerMaxScaleDenominator);
 		LOG.info("-------------------------------------------");
@@ -288,18 +273,6 @@ public class ManagerConfiguration {
 		return null;
 	}
 
-	private RasterConfigurationSource parseRasterConfigurationType(Properties loadProperties) {
-		String rasterConfigTypePropertyValue = loadProperties.getProperty(RASTER_CONFIG_TYPE);
-		if (rasterConfigTypePropertyValue != null) {
-			try {
-				return RasterConfigurationSource.valueOf(rasterConfigTypePropertyValue);
-			}
-			catch (IllegalArgumentException e) {
-			}
-		}
-		return geotiff;
-	}
-
 	private WorkspaceReloaderConfiguration parseWorkspaceReloaderConfiguration(Properties loadProperties) {
 		String urls = loadProperties.getProperty(WORKSPACE_RELOAD_URLS);
 		String apiKey = loadProperties.getProperty(WORKSPACE_RELOAD_API_KEY);
diff --git a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/configuration/ManagerConfigurationAnalyser.java b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/configuration/ManagerConfigurationAnalyser.java
deleted file mode 100644
index 84435b93b..000000000
--- a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/configuration/ManagerConfigurationAnalyser.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*-
- * #%L
- * xplan-core-manager - XPlan Manager Core Komponente
- * %%
- * Copyright (C) 2008 - 2024 Freie und Hansestadt Hamburg, developed by lat/lon gesellschaft für raumbezogene Informationssysteme mbH
- * %%
- * This program is free software: you can redistribute it and/or modify
- * 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%
- */
-package de.latlon.xplan.manager.configuration;
-
-import java.io.IOException;
-
-import jakarta.xml.bind.JAXBException;
-
-import de.latlon.xplan.manager.wmsconfig.WmsWorkspaceWrapper;
-
-/**
- * Checks the configuration of XPlanManager.
- *
- * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz</a>
- * @version $Revision: $, $Date: $
- */
-public class ManagerConfigurationAnalyser {
-
-	private final ManagerConfiguration managerConfiguration;
-
-	private final WmsWorkspaceWrapper wmsWorkspace;
-
-	/**
-	 * @param managerConfiguration configuration of the manager, never <code>null</code>
-	 * @param wmsWorkspace wms workspace never <code>null</code>
-	 */
-	public ManagerConfigurationAnalyser(ManagerConfiguration managerConfiguration, WmsWorkspaceWrapper wmsWorkspace) {
-		this.managerConfiguration = managerConfiguration;
-		this.wmsWorkspace = wmsWorkspace;
-	}
-
-	/**
-	 * Checks the configuration, throws an {@link ConfigurationException} if the
-	 * configuration is broken
-	 * @throws ConfigurationException if the configuration is broken
-	 */
-	public void checkConfiguration() throws ConfigurationException {
-		String rasterConfigurationCrsFromManagerConfig = getRasterConfigurationCrsFromManagerConfig();
-		try {
-			wmsWorkspace.checkThemes(rasterConfigurationCrsFromManagerConfig);
-		}
-		catch (JAXBException | IOException e) {
-			throw new ConfigurationException(e);
-		}
-	}
-
-	private String getRasterConfigurationCrsFromManagerConfig() {
-		return managerConfiguration != null ? managerConfiguration.getRasterConfigurationCrs() : null;
-	}
-
-}
diff --git a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/storage/config/StorageCleanUpContext.java b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/storage/config/StorageCleanUpContext.java
deleted file mode 100644
index ceb33c221..000000000
--- a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/storage/config/StorageCleanUpContext.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*-
- * #%L
- * xplan-core-manager - XPlan Manager Core Komponente
- * %%
- * Copyright (C) 2008 - 2024 Freie und Hansestadt Hamburg, developed by lat/lon gesellschaft für raumbezogene Informationssysteme mbH
- * %%
- * This program is free software: you can redistribute it and/or modify
- * 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%
- */
-package de.latlon.xplan.manager.storage.config;
-
-import de.latlon.xplan.manager.storage.StorageCleanUpManager;
-import de.latlon.xplan.manager.storage.filesystem.DeegreeRasterCacheCleaner;
-import de.latlon.xplan.manager.storage.filesystem.FilesystemStorageCleanUpManager;
-import de.latlon.xplan.manager.wmsconfig.WmsWorkspaceWrapper;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Profile;
-
-/**
- * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
- * @since 7.0
- */
-@Configuration
-@Profile("!s3 & !s3doc")
-public class StorageCleanUpContext {
-
-	@Bean
-	public StorageCleanUpManager storageCleanUpManager(WmsWorkspaceWrapper wmsWorkspaceWrapper,
-			DeegreeRasterCacheCleaner deegreeRasterCacheCleaner) {
-		return new FilesystemStorageCleanUpManager(wmsWorkspaceWrapper.getDataDirectory(), deegreeRasterCacheCleaner);
-	}
-
-}
diff --git a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/WmsWorkspaceWrapper.java b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/WmsWorkspaceWrapper.java
index a686d40a5..27c133770 100644
--- a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/WmsWorkspaceWrapper.java
+++ b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/WmsWorkspaceWrapper.java
@@ -20,16 +20,9 @@
  */
 package de.latlon.xplan.manager.wmsconfig;
 
-import de.latlon.xplan.manager.configuration.ConfigurationException;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-import org.apache.commons.io.FilenameUtils;
-import org.deegree.commons.config.DeegreeWorkspace;
-import org.deegree.commons.xml.jaxb.JAXBUtils;
-import org.deegree.theme.persistence.standard.StandardThemeProvider;
-import org.deegree.theme.persistence.standard.jaxb.ThemeType;
-import org.deegree.theme.persistence.standard.jaxb.Themes;
+import static java.lang.String.format;
+import static java.util.Arrays.asList;
 
-import jakarta.xml.bind.JAXBException;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -38,8 +31,16 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.List;
 
-import static java.lang.String.format;
-import static java.util.Arrays.asList;
+import de.latlon.xplan.manager.configuration.ConfigurationException;
+import de.latlon.xplan.manager.configuration.ManagerConfiguration;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import jakarta.xml.bind.JAXBException;
+import org.apache.commons.io.FilenameUtils;
+import org.deegree.commons.config.DeegreeWorkspace;
+import org.deegree.commons.xml.jaxb.JAXBUtils;
+import org.deegree.theme.persistence.standard.StandardThemeProvider;
+import org.deegree.theme.persistence.standard.jaxb.ThemeType;
+import org.deegree.theme.persistence.standard.jaxb.Themes;
 
 /**
  * Wraps a wms workspace and provides some useful methods.
@@ -60,8 +61,15 @@ public class WmsWorkspaceWrapper {
 	/**
 	 * @param wmsWorkspace never <code>null</code>
 	 */
-	public WmsWorkspaceWrapper(DeegreeWorkspace wmsWorkspace) {
+	public WmsWorkspaceWrapper(ManagerConfiguration managerConfiguration, DeegreeWorkspace wmsWorkspace)
+			throws ConfigurationException {
 		this.workspace = wmsWorkspace;
+		try {
+			checkThemes(managerConfiguration);
+		}
+		catch (JAXBException | IOException e) {
+			throw new ConfigurationException(e);
+		}
 	}
 
 	/**
@@ -81,13 +89,15 @@ public class WmsWorkspaceWrapper {
 
 	/**
 	 * Checks if all themes are configured as expected.
-	 * @param configuredCrs the configured crs of the themes configuration, may be
-	 * <code>null</code> (check of the themes crs is skipped)
+	 * @param managerConfiguration the @{link ManagerConfiguration}, never
+	 * <code>null</code>
 	 * @throws JAXBException
 	 * @throws IOException
 	 * @throws ConfigurationException
 	 */
-	public void checkThemes(String configuredCrs) throws JAXBException, IOException, ConfigurationException {
+	public void checkThemes(ManagerConfiguration managerConfiguration)
+			throws JAXBException, IOException, ConfigurationException {
+		String configuredCrs = managerConfiguration != null ? managerConfiguration.getRasterConfigurationCrs() : null;
 		for (String supportedType : supportedTypes) {
 			retrieveThemesForType(supportedType, configuredCrs);
 		}
diff --git a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/config/RasterStorageContext.java b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/config/GeotiffRasterStorageContext.java
similarity index 69%
rename from xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/config/RasterStorageContext.java
rename to xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/config/GeotiffRasterStorageContext.java
index 6b8ad8c88..307192caf 100644
--- a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/config/RasterStorageContext.java
+++ b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/config/GeotiffRasterStorageContext.java
@@ -20,39 +20,36 @@
  */
 package de.latlon.xplan.manager.wmsconfig.config;
 
+import java.nio.file.Path;
+
 import de.latlon.xplan.manager.configuration.ManagerConfiguration;
+import de.latlon.xplan.manager.storage.StorageCleanUpManager;
 import de.latlon.xplan.manager.storage.filesystem.DeegreeRasterCacheCleaner;
+import de.latlon.xplan.manager.storage.filesystem.FilesystemStorageCleanUpManager;
 import de.latlon.xplan.manager.wmsconfig.WmsWorkspaceWrapper;
 import de.latlon.xplan.manager.wmsconfig.raster.config.DeegreeRasterConfigManager;
-import de.latlon.xplan.manager.wmsconfig.raster.config.NoConfigRasterConfigManager;
 import de.latlon.xplan.manager.wmsconfig.raster.config.RasterConfigManager;
 import de.latlon.xplan.manager.wmsconfig.raster.evaluation.GeotiffRasterEvaluation;
-import de.latlon.xplan.manager.wmsconfig.raster.evaluation.MapserverRasterEvaluation;
 import de.latlon.xplan.manager.wmsconfig.raster.evaluation.RasterEvaluation;
 import de.latlon.xplan.manager.wmsconfig.raster.storage.FileSystemStorage;
 import de.latlon.xplan.manager.wmsconfig.raster.storage.RasterStorage;
-import de.latlon.xplan.manager.wmsconfig.raster.storage.s3.config.AmazonS3RasterStorageContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
-
-import java.nio.file.Path;
+import org.springframework.context.annotation.Profile;
 
 /**
- * Spring configuration for the storage type to be used for raster data. The storage type
- * is selected by evaluating the ManagerConfiguration property rasterConfigurationType.
- * Supported are geotiff and mapserver using a local file system. To use an AWS S3 bucket
- * as a storage backend with MapServer use the <code>AmazonS3Context</code> for
- * configuration.
+ * Spring configuration for the storage type to be used for raster data. The
+ * GeotiffRasterStorage is selected when the profile 'mapserver' is absent.
  *
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
  * @author <a href="mailto:friebe@lat-lon.de">Torsten Friebe</a>
  * @since 7.0
- * @see AmazonS3RasterStorageContext
  */
 @Configuration
 @ComponentScan("de.latlon.xplan.manager.storage.filesystem.listener")
-public class RasterStorageContext {
+@Profile("!mapserver")
+public class GeotiffRasterStorageContext {
 
 	@Bean
 	public RasterStorage rasterStorage(WmsWorkspaceWrapper wmsWorkspaceWrapper, RasterEvaluation rasterEvaluation,
@@ -63,24 +60,19 @@ public class RasterStorageContext {
 
 	@Bean
 	public RasterEvaluation rasterEvaluation(ManagerConfiguration managerConfiguration) {
-		switch (managerConfiguration.getRasterConfigurationType()) {
-			case mapserver:
-				return new MapserverRasterEvaluation(managerConfiguration.getRasterConfigurationCrs());
-			default:
-				return new GeotiffRasterEvaluation(managerConfiguration.getRasterConfigurationCrs());
-		}
+		return new GeotiffRasterEvaluation(managerConfiguration.getRasterConfigurationCrs());
 	}
 
 	@Bean
 	public RasterConfigManager rasterConfigManager(WmsWorkspaceWrapper wmsWorkspaceWrapper,
 			ManagerConfiguration managerConfiguration) {
-		switch (managerConfiguration.getRasterConfigurationType()) {
-			case mapserver:
-				return new NoConfigRasterConfigManager();
-			case geotiff:
-			default:
-				return new DeegreeRasterConfigManager(wmsWorkspaceWrapper, managerConfiguration);
-		}
+		return new DeegreeRasterConfigManager(wmsWorkspaceWrapper, managerConfiguration);
+	}
+
+	@Bean
+	public StorageCleanUpManager storageCleanUpManager(WmsWorkspaceWrapper wmsWorkspaceWrapper,
+			DeegreeRasterCacheCleaner deegreeRasterCacheCleaner) {
+		return new FilesystemStorageCleanUpManager(wmsWorkspaceWrapper.getDataDirectory(), deegreeRasterCacheCleaner);
 	}
 
 }
diff --git a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/config/MapserverRasterStorageContext.java b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/config/MapserverRasterStorageContext.java
new file mode 100644
index 000000000..7ed939d7c
--- /dev/null
+++ b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/config/MapserverRasterStorageContext.java
@@ -0,0 +1,94 @@
+/*-
+ * #%L
+ * xplan-core-manager - XPlan Manager Core Komponente
+ * %%
+ * Copyright (C) 2008 - 2024 Freie und Hansestadt Hamburg, developed by lat/lon gesellschaft für raumbezogene Informationssysteme mbH
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * 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%
+ */
+package de.latlon.xplan.manager.wmsconfig.config;
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import de.latlon.xplan.manager.configuration.ConfigurationException;
+import de.latlon.xplan.manager.configuration.ManagerConfiguration;
+import de.latlon.xplan.manager.storage.StorageCleanUpManager;
+import de.latlon.xplan.manager.storage.filesystem.DeegreeRasterCacheCleaner;
+import de.latlon.xplan.manager.storage.filesystem.FilesystemStorageCleanUpManager;
+import de.latlon.xplan.manager.wmsconfig.raster.config.NoConfigRasterConfigManager;
+import de.latlon.xplan.manager.wmsconfig.raster.config.RasterConfigManager;
+import de.latlon.xplan.manager.wmsconfig.raster.evaluation.MapserverRasterEvaluation;
+import de.latlon.xplan.manager.wmsconfig.raster.evaluation.RasterEvaluation;
+import de.latlon.xplan.manager.wmsconfig.raster.storage.FileSystemStorage;
+import de.latlon.xplan.manager.wmsconfig.raster.storage.RasterStorage;
+import de.latlon.xplan.manager.wmsconfig.raster.storage.s3.config.AmazonS3RasterStorageContext;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
+
+/**
+ * Spring configuration for the storage type to be used for raster data. The
+ * MapserverRasterStorage is selected with the profile 'mapserver'. To use an AWS S3
+ * bucket as a storage backend with MapServer use the <code>AmazonS3Context</code> for
+ * configuration.
+ *
+ * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
+ * @since 8.0
+ * @see AmazonS3RasterStorageContext
+ */
+@Configuration
+@ComponentScan("de.latlon.xplan.manager.storage.filesystem.listener")
+@Profile("mapserver")
+public class MapserverRasterStorageContext {
+
+	@Bean
+	@Profile("!s3img")
+	public RasterStorage rasterStorage(Path dataDirectory, RasterEvaluation rasterEvaluation)
+			throws ConfigurationException {
+		return new FileSystemStorage(dataDirectory, rasterEvaluation, null);
+	}
+
+	@Bean
+	@Profile("!s3img")
+	public StorageCleanUpManager storageCleanUpManager(Path dataDirectory,
+			DeegreeRasterCacheCleaner deegreeRasterCacheCleaner) {
+		return new FilesystemStorageCleanUpManager(dataDirectory, deegreeRasterCacheCleaner);
+	}
+
+	@Bean
+	@Profile("!s3img")
+	public static Path dataPath(@Value("#{environment.XPLAN_MAPSERVER_DATA_DIR}") String dataDir)
+			throws ConfigurationException {
+		if (dataDir == null || dataDir.isEmpty())
+			throw new ConfigurationException(
+					"Profile mapserver is enabled, but not s3img. Environment variable XPLAN_MAPSERVER_DATA_DIR is required to store the raster images in filesystem.");
+		final Path dataDirectory = Paths.get(dataDir);
+		return dataDirectory;
+	}
+
+	@Bean
+	public RasterEvaluation rasterEvaluation(ManagerConfiguration managerConfiguration) {
+		return new MapserverRasterEvaluation(managerConfiguration.getRasterConfigurationCrs());
+	}
+
+	@Bean
+	public RasterConfigManager rasterConfigManager() {
+		return new NoConfigRasterConfigManager();
+	}
+
+}
diff --git a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/RasterConfigurationSource.java b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/RasterConfigurationSource.java
deleted file mode 100644
index a916ee78f..000000000
--- a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/RasterConfigurationSource.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*-
- * #%L
- * xplan-core-manager - XPlan Manager Core Komponente
- * %%
- * Copyright (C) 2008 - 2024 Freie und Hansestadt Hamburg, developed by lat/lon gesellschaft für raumbezogene Informationssysteme mbH
- * %%
- * This program is free software: you can redistribute it and/or modify
- * 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%
- */
-package de.latlon.xplan.manager.wmsconfig.raster;
-
-/**
- * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
- */
-public enum RasterConfigurationSource {
-
-	geotiff, mapserver
-
-}
diff --git a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/config/DeegreeRasterConfigManager.java b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/config/DeegreeRasterConfigManager.java
index eb77780a1..61e9d0f9e 100644
--- a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/config/DeegreeRasterConfigManager.java
+++ b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/config/DeegreeRasterConfigManager.java
@@ -20,22 +20,22 @@
  */
 package de.latlon.xplan.manager.wmsconfig.raster.config;
 
+import static de.latlon.xplan.manager.wmsconfig.raster.config.ConfigWriterUtils.detectType;
+
+import java.io.IOException;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
 import de.latlon.xplan.commons.XPlanType;
 import de.latlon.xplan.manager.configuration.ConfigurationException;
 import de.latlon.xplan.manager.configuration.ManagerConfiguration;
 import de.latlon.xplan.manager.web.shared.PlanStatus;
 import de.latlon.xplan.manager.wmsconfig.WmsWorkspaceWrapper;
+import jakarta.xml.bind.JAXBException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import jakarta.xml.bind.JAXBException;
-import java.io.IOException;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import static de.latlon.xplan.manager.wmsconfig.raster.config.ConfigWriterUtils.detectType;
-
 /**
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
  */
@@ -54,7 +54,7 @@ public class DeegreeRasterConfigManager implements RasterConfigManager {
 		this.rasterThemeManager = new WorkspaceRasterThemeManager(wmsWorkspaceWrapper);
 		this.managerConfiguration = managerConfiguration;
 		this.rasterLayerManager = new WorkspaceRasterLayerManager(wmsWorkspaceWrapper.getLocation(),
-				managerConfiguration.getRasterConfigurationType(), managerConfiguration.getRasterConfigurationCrs());
+				managerConfiguration.getRasterConfigurationCrs());
 	}
 
 	@Override
diff --git a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/config/WorkspaceRasterLayerManager.java b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/config/WorkspaceRasterLayerManager.java
index fc9a97bc7..afe10b920 100644
--- a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/config/WorkspaceRasterLayerManager.java
+++ b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/config/WorkspaceRasterLayerManager.java
@@ -20,7 +20,17 @@
  */
 package de.latlon.xplan.manager.wmsconfig.raster.config;
 
-import de.latlon.xplan.manager.wmsconfig.raster.RasterConfigurationSource;
+import static jakarta.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT;
+import static java.lang.Boolean.TRUE;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.function.BiPredicate;
+import java.util.stream.Stream;
+
 import jakarta.xml.bind.JAXBContext;
 import jakarta.xml.bind.JAXBException;
 import jakarta.xml.bind.Marshaller;
@@ -33,17 +43,6 @@ import org.deegree.tile.tilematrixset.geotiff.jaxb.GeoTIFFTileMatrixSetConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.attribute.BasicFileAttributes;
-import java.util.function.BiPredicate;
-import java.util.stream.Stream;
-
-import static jakarta.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT;
-import static java.lang.Boolean.TRUE;
-
 /**
  * Creates/deletes configuration and data files for raster layers in the WMS workspace.
  *
@@ -56,30 +55,23 @@ public class WorkspaceRasterLayerManager {
 
 	private final Path wmsWorkspace;
 
-	private final RasterConfigurationSource tileStoreType;
-
 	private final String rasterConfigurationCrs;
 
 	/**
 	 * @param wmsWorkspace the location of the workspace the configuration should be
 	 * stored, never <code>null</code>
-	 * @param tileStoreType the type of the tile store to create, never <code>null</code>
 	 * @param rasterConfigurationCrs the crs of the configuration, never <code>null</code>
 	 */
-	public WorkspaceRasterLayerManager(File wmsWorkspace, RasterConfigurationSource tileStoreType,
-			String rasterConfigurationCrs) {
+	public WorkspaceRasterLayerManager(File wmsWorkspace, String rasterConfigurationCrs) {
 		this.wmsWorkspace = wmsWorkspace.toPath();
-		this.tileStoreType = tileStoreType;
 		this.rasterConfigurationCrs = rasterConfigurationCrs;
 	}
 
 	public void createRasterConfigurations(String rasterId, String rasterFileName, double minScaleDenominator,
 			double maxScaleDenominator) throws JAXBException, IOException {
-		switch (tileStoreType) {
-			case geotiff:
-				createGeotiffConfiguration(rasterId, rasterFileName, minScaleDenominator, maxScaleDenominator);
-				break;
-		}
+		createGeotiffTileMatrixSetConfig(rasterId, rasterFileName);
+		createGeotiffTileStoreConfig(rasterId, rasterFileName);
+		createTileLayerConfig(rasterId, minScaleDenominator, maxScaleDenominator);
 	}
 
 	/**
@@ -141,13 +133,6 @@ public class WorkspaceRasterLayerManager {
 		});
 	}
 
-	private void createGeotiffConfiguration(String rasterId, String rasterFileName, double minScaleDenominator,
-			double maxScaleDenominator) throws JAXBException, IOException {
-		createGeotiffTileMatrixSetConfig(rasterId, rasterFileName);
-		createGeotiffTileStoreConfig(rasterId, rasterFileName);
-		createTileLayerConfig(rasterId, minScaleDenominator, maxScaleDenominator);
-	}
-
 	private void createTileLayerConfig(String rasterId, double minScaleDenominator, double maxScaleDenominator)
 			throws JAXBException, IOException {
 		TileLayers cfg = new TileLayers();
diff --git a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/storage/FileSystemStorage.java b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/storage/FileSystemStorage.java
index dbf6aa278..9f10a66b0 100644
--- a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/storage/FileSystemStorage.java
+++ b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/storage/FileSystemStorage.java
@@ -20,6 +20,10 @@
  */
 package de.latlon.xplan.manager.wmsconfig.raster.storage;
 
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
 import de.latlon.xplan.commons.archive.XPlanArchiveContentAccess;
 import de.latlon.xplan.manager.storage.StorageEvent;
 import de.latlon.xplan.manager.storage.filesystem.DeegreeRasterCacheCleaner;
@@ -27,10 +31,6 @@ import de.latlon.xplan.manager.wmsconfig.raster.evaluation.RasterEvaluation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-
 /**
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
  */
@@ -66,7 +66,8 @@ public class FileSystemStorage implements RasterStorage {
 	@Override
 	public void deleteRasterFile(int planId, String fileName, StorageEvent storageEvent) {
 		final String rasterLayerFileName = planId + "_" + fileName;
-		deegreeRasterCacheCleaner.clearCache(rasterLayerFileName);
+		if (deegreeRasterCacheCleaner != null)
+			deegreeRasterCacheCleaner.clearCache(rasterLayerFileName);
 		Path file = dataDirectory.resolve(rasterLayerFileName);
 		LOG.info("- Entferne Raster-Datei '" + file + "'...");
 		try {
diff --git a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/storage/s3/config/AmazonS3RasterStorageContext.java b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/storage/s3/config/AmazonS3RasterStorageContext.java
index 03fdeff4a..a10f3c740 100644
--- a/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/storage/s3/config/AmazonS3RasterStorageContext.java
+++ b/xplan-core/xplan-core-manager/src/main/java/de/latlon/xplan/manager/wmsconfig/raster/storage/s3/config/AmazonS3RasterStorageContext.java
@@ -22,6 +22,7 @@ package de.latlon.xplan.manager.wmsconfig.raster.storage.s3.config;
 
 import com.amazonaws.services.s3.AmazonS3;
 import de.latlon.xplan.manager.storage.s3.config.AmazonS3Context;
+import de.latlon.xplan.manager.wmsconfig.config.MapserverRasterStorageContext;
 import de.latlon.xplan.manager.wmsconfig.raster.storage.s3.S3RasterStorage;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
@@ -37,7 +38,7 @@ import org.springframework.context.annotation.Profile;
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
  * @author <a href="mailto:friebe@lat-lon.de">Torsten Friebe</a>
  * @since 7.0
- * @see de.latlon.xplan.manager.wmsconfig.config.RasterStorageContext
+ * @see MapserverRasterStorageContext
  */
 @Configuration
 @Profile("s3img")
diff --git a/xplan-core/xplan-core-manager/src/main/resources/de/latlon/xplan/manager/configuration/managerConfiguration.properties b/xplan-core/xplan-core-manager/src/main/resources/de/latlon/xplan/manager/configuration/managerConfiguration.properties
index 7db389932..afa5c3dc1 100644
--- a/xplan-core/xplan-core-manager/src/main/resources/de/latlon/xplan/manager/configuration/managerConfiguration.properties
+++ b/xplan-core/xplan-core-manager/src/main/resources/de/latlon/xplan/manager/configuration/managerConfiguration.properties
@@ -22,8 +22,6 @@
 rasterConfigurationCrs=EPSG:25832
 rasterLayerMinScaleDenominator=0
 rasterLayerMaxScaleDenominator=50000
-# must be geotiff or mapserver, default is geotiff
-rasterConfigurationType=geotiff
 
 # workspace reloader configuration, workspaceReloadAction must be one of ALL (default), RELOAD, PLANWERKWMS
 # workspaceReloadUser and workspaceReloadPassword are deprecated! Use workspaceReloadApiKey instead.
diff --git a/xplan-core/xplan-core-manager/src/test/java/de/latlon/xplan/manager/XPlanManagerTest.java b/xplan-core/xplan-core-manager/src/test/java/de/latlon/xplan/manager/XPlanManagerTest.java
index fb5305929..c76242f26 100644
--- a/xplan-core/xplan-core-manager/src/test/java/de/latlon/xplan/manager/XPlanManagerTest.java
+++ b/xplan-core/xplan-core-manager/src/test/java/de/latlon/xplan/manager/XPlanManagerTest.java
@@ -20,16 +20,30 @@
  */
 package de.latlon.xplan.manager;
 
+import static org.apache.commons.io.IOUtils.close;
+import static org.apache.commons.io.IOUtils.copy;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.List;
+
 import de.latlon.xplan.commons.archive.XPlanArchiveCreator;
 import de.latlon.xplan.commons.configuration.SortConfiguration;
+import de.latlon.xplan.manager.configuration.ConfigurationException;
 import de.latlon.xplan.manager.configuration.ManagerConfiguration;
 import de.latlon.xplan.manager.database.XPlanDao;
-import de.latlon.xplan.manager.storage.filesystem.DeegreeRasterCacheCleaner;
 import de.latlon.xplan.manager.web.shared.PlanStatus;
 import de.latlon.xplan.manager.web.shared.RasterEvaluationResult;
 import de.latlon.xplan.manager.web.shared.Rechtsstand;
-import de.latlon.xplan.manager.wmsconfig.WmsWorkspaceWrapper;
-import de.latlon.xplan.manager.wmsconfig.config.RasterStorageContext;
+import de.latlon.xplan.manager.wmsconfig.config.MapserverRasterStorageContext;
 import de.latlon.xplan.manager.wmsconfig.raster.XPlanRasterManager;
 import de.latlon.xplan.manager.wmsconfig.raster.config.RasterConfigManager;
 import de.latlon.xplan.manager.wmsconfig.raster.evaluation.RasterEvaluation;
@@ -38,24 +52,11 @@ import de.latlon.xplan.manager.wmsconfig.raster.storage.RasterStorage;
 import org.deegree.commons.utils.Pair;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
 import org.springframework.context.ApplicationEventPublisher;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Files;
-import java.util.List;
-
-import static de.latlon.xplan.manager.wmsconfig.raster.RasterConfigurationSource.mapserver;
-import static org.apache.commons.io.IOUtils.close;
-import static org.apache.commons.io.IOUtils.copy;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
 /**
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz</a>
  * @version 1.0
@@ -68,14 +69,20 @@ public class XPlanManagerTest {
 
 	private static final String CONFIGURED_CRS = "epsg:4326";
 
+	@Rule
+	public TemporaryFolder tempFolder = new TemporaryFolder();
+
 	private File managerWorkspaceDirectory;
 
 	private File wmsWorkspaceDirectory;
 
+	private File dataDirectory;
+
 	@Before
 	public void createWorkspaceFiles() throws IOException {
-		managerWorkspaceDirectory = Files.createTempDirectory("manager").toFile();
-		wmsWorkspaceDirectory = Files.createTempDirectory("wms").toFile();
+		managerWorkspaceDirectory = tempFolder.newFolder("manager");
+		wmsWorkspaceDirectory = tempFolder.newFolder("wms");
+		dataDirectory = tempFolder.newFolder("data");
 		File themesDir = new File(managerWorkspaceDirectory, "themes");
 		Files.createDirectory(themesDir.toPath());
 		File file = new File(themesDir, "bplanraster.xml");
@@ -117,47 +124,39 @@ public class XPlanManagerTest {
 		XPlanDao xPlanDao = mock(XPlanDao.class);
 		XPlanArchiveCreator archiveCreator = new XPlanArchiveCreator();
 		ManagerConfiguration managerConfiguration = mockManagerConfig();
-		WmsWorkspaceWrapper wmsWorkspaceWrapper = mock(WmsWorkspaceWrapper.class);
-		when(wmsWorkspaceWrapper.getLocation()).thenReturn(wmsWorkspaceDirectory.getAbsoluteFile());
 		RasterEvaluation rasterEvaluation = createRasterEvaluation(managerConfiguration);
 		XPlanRasterEvaluator xPlanRasterEvaluator = new XPlanRasterEvaluator(rasterEvaluation);
-		DeegreeRasterCacheCleaner deegreeRasterCacheCleaner = new DeegreeRasterCacheCleaner(
-				managerConfiguration.getWorkspaceReloaderConfiguration());
-		RasterStorage rasterStorage = createRasterStorage(wmsWorkspaceWrapper, rasterEvaluation,
-				deegreeRasterCacheCleaner);
-		RasterConfigManager rasterConfigManager = createRasterConfigManager(wmsWorkspaceWrapper, managerConfiguration);
+		RasterStorage rasterStorage = createRasterStorage(dataDirectory.toPath(), rasterEvaluation);
+		RasterConfigManager rasterConfigManager = createRasterConfigManager();
 		ApplicationEventPublisher applicationEventPublisher = createApplicationEventPublisher();
 		XPlanRasterManager xPlanRasterManager = new XPlanRasterManager(rasterStorage, rasterConfigManager,
 				applicationEventPublisher);
-		return new XPlanManager(xPlanDao, archiveCreator, managerConfiguration, wmsWorkspaceWrapper, null,
-				xPlanRasterEvaluator, xPlanRasterManager, null, null, null, null, null);
+		return new XPlanManager(xPlanDao, archiveCreator, managerConfiguration, null, xPlanRasterEvaluator,
+				xPlanRasterManager, null, null, null, null, null);
 	}
 
 	private ApplicationEventPublisher createApplicationEventPublisher() {
 		return mock(ApplicationEventPublisher.class);
 	}
 
-	private RasterConfigManager createRasterConfigManager(WmsWorkspaceWrapper wmsWorkspaceWrapper,
-			ManagerConfiguration managerConfiguration) {
+	private RasterConfigManager createRasterConfigManager() {
 		// TODO turn into autowired field
-		return new RasterStorageContext().rasterConfigManager(wmsWorkspaceWrapper, managerConfiguration);
+		return new MapserverRasterStorageContext().rasterConfigManager();
 	}
 
-	private RasterStorage createRasterStorage(WmsWorkspaceWrapper wmsWorkspaceWrapper,
-			RasterEvaluation rasterEvaluation, DeegreeRasterCacheCleaner deegreeRasterCacheCleaner) {
+	private RasterStorage createRasterStorage(Path dataDir, RasterEvaluation rasterEvaluation)
+			throws ConfigurationException {
 		// TODO turn into autowired field
-		return new RasterStorageContext().rasterStorage(wmsWorkspaceWrapper, rasterEvaluation,
-				deegreeRasterCacheCleaner);
+		return new MapserverRasterStorageContext().rasterStorage(dataDir, rasterEvaluation);
 	}
 
 	private RasterEvaluation createRasterEvaluation(ManagerConfiguration managerConfiguration) {
 		// TODO turn into autowired field
-		return new RasterStorageContext().rasterEvaluation(managerConfiguration);
+		return new MapserverRasterStorageContext().rasterEvaluation(managerConfiguration);
 	}
 
 	private ManagerConfiguration mockManagerConfig() {
 		ManagerConfiguration mockedConfiguration = mock(ManagerConfiguration.class);
-		when(mockedConfiguration.getRasterConfigurationType()).thenReturn(mapserver);
 		when(mockedConfiguration.getRasterConfigurationCrs()).thenReturn(CONFIGURED_CRS);
 		when(mockedConfiguration.getSortConfiguration()).thenReturn(new SortConfiguration());
 		return mockedConfiguration;
diff --git a/xplan-core/xplan-core-manager/src/test/java/de/latlon/xplan/manager/config/CoreTestContext.java b/xplan-core/xplan-core-manager/src/test/java/de/latlon/xplan/manager/config/CoreTestContext.java
index 6306281c4..4b4f0b9a5 100644
--- a/xplan-core/xplan-core-manager/src/test/java/de/latlon/xplan/manager/config/CoreTestContext.java
+++ b/xplan-core/xplan-core-manager/src/test/java/de/latlon/xplan/manager/config/CoreTestContext.java
@@ -20,7 +20,15 @@
  */
 package de.latlon.xplan.manager.config;
 
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
 import de.latlon.xplan.commons.configuration.SortConfiguration;
+import de.latlon.xplan.manager.configuration.ConfigurationException;
 import de.latlon.xplan.manager.configuration.ManagerConfiguration;
 import de.latlon.xplan.manager.wmsconfig.WmsWorkspaceWrapper;
 import de.latlon.xplan.manager.workspace.DeegreeWorkspaceWrapper;
@@ -30,15 +38,6 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-
-import static de.latlon.xplan.manager.wmsconfig.raster.RasterConfigurationSource.geotiff;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
 @Configuration
 public class CoreTestContext {
 
@@ -46,7 +45,6 @@ public class CoreTestContext {
 	@Primary
 	public ManagerConfiguration managerConfiguration() {
 		ManagerConfiguration mockedConfiguration = mock(ManagerConfiguration.class);
-		when(mockedConfiguration.getRasterConfigurationType()).thenReturn(geotiff);
 		when(mockedConfiguration.getRasterConfigurationCrs()).thenReturn("EPSG:25832");
 		when(mockedConfiguration.getSortConfiguration()).thenReturn(new SortConfiguration());
 		return mockedConfiguration;
@@ -54,13 +52,14 @@ public class CoreTestContext {
 
 	@Bean
 	@Primary
-	public WmsWorkspaceWrapper wmsWorkspaceWrapper() throws WorkspaceException, IOException, URISyntaxException {
+	public WmsWorkspaceWrapper wmsWorkspaceWrapper(ManagerConfiguration managerConfiguration)
+			throws WorkspaceException, IOException, ConfigurationException {
 		DeegreeWorkspace deegreeWorkspace = mock(DeegreeWorkspace.class);
 		DeegreeWorkspaceWrapper wmsWorkspace = mock(DeegreeWorkspaceWrapper.class);
 		when(wmsWorkspace.getWorkspaceInstance()).thenReturn(deegreeWorkspace);
 		Path tempWorkspaceDir = Files.createTempDirectory("xplan-manager-core");
 		when(deegreeWorkspace.getLocation()).thenReturn(tempWorkspaceDir.toFile());
-		return new WmsWorkspaceWrapper(wmsWorkspace.getWorkspaceInstance());
+		return new WmsWorkspaceWrapper(managerConfiguration, wmsWorkspace.getWorkspaceInstance());
 	}
 
 }
diff --git a/xplan-core/xplan-core-manager/src/test/java/de/latlon/xplan/manager/wmsconfig/raster/config/WorkspaceRasterLayerManagerTestManual.java b/xplan-core/xplan-core-manager/src/test/java/de/latlon/xplan/manager/wmsconfig/raster/config/WorkspaceRasterLayerManagerTestManual.java
index b6cffaef1..7234eecb8 100644
--- a/xplan-core/xplan-core-manager/src/test/java/de/latlon/xplan/manager/wmsconfig/raster/config/WorkspaceRasterLayerManagerTestManual.java
+++ b/xplan-core/xplan-core-manager/src/test/java/de/latlon/xplan/manager/wmsconfig/raster/config/WorkspaceRasterLayerManagerTestManual.java
@@ -20,7 +20,19 @@
  */
 package de.latlon.xplan.manager.wmsconfig.raster.config;
 
-import de.latlon.xplan.manager.wmsconfig.raster.RasterConfigurationSource;
+import static de.latlon.xplan.manager.workspace.WorkspaceUtils.instantiateWorkspace;
+import static java.nio.file.Files.copy;
+import static java.nio.file.Files.createDirectory;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
 import org.deegree.commons.config.DeegreeWorkspace;
 import org.deegree.commons.utils.DoublePair;
 import org.deegree.layer.persistence.LayerStore;
@@ -32,19 +44,6 @@ import org.junit.ClassRule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-
-import static de.latlon.xplan.manager.workspace.WorkspaceUtils.instantiateWorkspace;
-import static java.nio.file.Files.copy;
-import static java.nio.file.Files.createDirectory;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
 /**
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz</a>
  * @version $Revision: $, $Date: $
@@ -77,7 +76,7 @@ public class WorkspaceRasterLayerManagerTestManual {
 	@Test
 	public void testCreateRasterConfigurationsWithGeotiffTilestore() throws Exception {
 		WorkspaceRasterLayerManager workspaceRasterLayerManager = new WorkspaceRasterLayerManager(workspaceDirectory,
-				RasterConfigurationSource.geotiff, "EPSG:4326");
+				"EPSG:4326");
 		double minScaleDenominator = 10;
 		double maxScaleDenominator = 1500;
 		workspaceRasterLayerManager.createRasterConfigurations(RASTER_ID, TIFF_FILE, minScaleDenominator,
@@ -98,7 +97,7 @@ public class WorkspaceRasterLayerManagerTestManual {
 	@Test
 	public void testCreateRasterConfigurations_LayerWithDefaultScaleDenominators() throws Exception {
 		WorkspaceRasterLayerManager workspaceRasterLayerManager = new WorkspaceRasterLayerManager(workspaceDirectory,
-				RasterConfigurationSource.geotiff, "EPSG:4326");
+				"EPSG:4326");
 		workspaceRasterLayerManager.createRasterConfigurations(RASTER_ID, TIFF_FILE, Double.NaN, Double.NaN);
 
 		DeegreeWorkspace workspace = instantiateWorkspace(workspaceDirectory.getName());
diff --git a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/configuration/ValidatorConfiguration.java b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/configuration/ValidatorConfiguration.java
index 3d42ef0d8..11aa66ca3 100644
--- a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/configuration/ValidatorConfiguration.java
+++ b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/configuration/ValidatorConfiguration.java
@@ -77,7 +77,9 @@ public class ValidatorConfiguration {
 	/**
 	 * Returns the configured XPlanValidatorWMS endpoint.
 	 * @return XPlanValidatorWMS endpoint, may be <code>null</code>
+	 * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
 	 */
+	@Deprecated
 	public String getValidatorWmsEndpoint() {
 		return validatorWmsEndpoint;
 	}
diff --git a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/configuration/ValidatorConfigurationParser.java b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/configuration/ValidatorConfigurationParser.java
index 5e7e5a780..a9b9c5b7a 100644
--- a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/configuration/ValidatorConfigurationParser.java
+++ b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/configuration/ValidatorConfigurationParser.java
@@ -98,7 +98,7 @@ public class ValidatorConfigurationParser {
 		LOG.info("   - {}", configuration.getValidationRulesDirectory() != null
 				? configuration.getValidationRulesDirectory() : "internal rules are used");
 		LOG.info("  XPlanValidatorWMS Endpoint");
-		LOG.info("   - {}", configuration.getValidatorWmsEndpoint());
+		LOG.info("   - {} (deprecated)", configuration.getValidatorWmsEndpoint());
 		LOG.info("-------------------------------------------");
 		if (!configuration.getValidatorProfiles().isEmpty()) {
 			LOG.info("  validation profiles");
@@ -126,6 +126,10 @@ public class ValidatorConfigurationParser {
 		return null;
 	}
 
+	/**
+	 * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
+	 */
+	@Deprecated
 	private String parseValidatorWmsEndpoint(Properties properties) {
 		String validatorWmsEndpoint = properties.getProperty(VALIDATOR_WMS_ENDPOINT);
 		return validatorWmsEndpoint == null || validatorWmsEndpoint.trim().isEmpty() ? null : validatorWmsEndpoint;
diff --git a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/MapPreviewCreationException.java b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/MapPreviewCreationException.java
index 6ea26abef..8c2a9089f 100644
--- a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/MapPreviewCreationException.java
+++ b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/MapPreviewCreationException.java
@@ -22,7 +22,9 @@ package de.latlon.xplan.validator.wms;
 
 /**
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
+ * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
  */
+@Deprecated
 public class MapPreviewCreationException extends Exception {
 
 	public MapPreviewCreationException(String msg) {
diff --git a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/MapPreviewManager.java b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/MapPreviewManager.java
index 5842c16c3..55a7ba1d9 100644
--- a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/MapPreviewManager.java
+++ b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/MapPreviewManager.java
@@ -42,7 +42,9 @@ import org.slf4j.LoggerFactory;
 
 /**
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
+ * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
  */
+@Deprecated
 public class MapPreviewManager {
 
 	private static final Logger LOG = LoggerFactory.getLogger(MapPreviewManager.class);
diff --git a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/MasterportalConfigWriter.java b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/MasterportalConfigWriter.java
index cb072ffe6..2035be18f 100644
--- a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/MasterportalConfigWriter.java
+++ b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/MasterportalConfigWriter.java
@@ -40,7 +40,9 @@ import org.slf4j.LoggerFactory;
 
 /**
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
+ * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
  */
+@Deprecated
 public class MasterportalConfigWriter {
 
 	private static final Logger LOG = LoggerFactory.getLogger(MasterportalConfigWriter.class);
diff --git a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/ValidatorWmsManager.java b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/ValidatorWmsManager.java
index 6afb2d690..47b8bd51b 100644
--- a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/ValidatorWmsManager.java
+++ b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/ValidatorWmsManager.java
@@ -34,7 +34,9 @@ import static de.latlon.xplan.commons.XPlanVersion.XPLAN_SYN;
 
 /**
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
+ * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
  */
+@Deprecated
 public class ValidatorWmsManager {
 
 	private static final Logger LOG = LoggerFactory.getLogger(ValidatorWmsManager.class);
diff --git a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/config/ValidatorWmsContext.java b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/config/ValidatorWmsContext.java
index 9be7fb4fa..f82978dab 100644
--- a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/config/ValidatorWmsContext.java
+++ b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/config/ValidatorWmsContext.java
@@ -34,9 +34,11 @@ import org.springframework.context.annotation.Import;
 
 /**
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
+ * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
  */
 @Configuration
 @Import({ ValidatorWmsWorkspaceContext.class, ValidatorWmsSqlContext.class })
+@Deprecated
 public class ValidatorWmsContext {
 
 	private static final Logger LOG = LoggerFactory.getLogger(ValidatorWmsContext.class);
diff --git a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/config/ValidatorWmsSqlContext.java b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/config/ValidatorWmsSqlContext.java
index 430705ad9..521b4f897 100644
--- a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/config/ValidatorWmsSqlContext.java
+++ b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/config/ValidatorWmsSqlContext.java
@@ -35,10 +35,12 @@ import org.springframework.context.annotation.Profile;
 
 /**
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
+ * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
  */
 @Configuration
 @Profile("validatorwmssql")
 @Import({ JobContext.class, SqlJobContext.class })
+@Deprecated
 public class ValidatorWmsSqlContext {
 
 	private static final Logger LOG = LoggerFactory.getLogger(ValidatorWmsSqlContext.class);
diff --git a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/config/ValidatorWmsWorkspaceContext.java b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/config/ValidatorWmsWorkspaceContext.java
index 9289293dd..25660c646 100644
--- a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/config/ValidatorWmsWorkspaceContext.java
+++ b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/config/ValidatorWmsWorkspaceContext.java
@@ -35,9 +35,11 @@ import java.nio.file.Paths;
 
 /**
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
+ * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
  */
 @Configuration
 @Profile("validatorwmsmemory")
+@Deprecated
 public class ValidatorWmsWorkspaceContext {
 
 	private static final Logger LOG = LoggerFactory.getLogger(ValidatorWmsWorkspaceContext.class);
diff --git a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/storage/PlanStorage.java b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/storage/PlanStorage.java
index 8e6fccaf1..2ade4c679 100644
--- a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/storage/PlanStorage.java
+++ b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/storage/PlanStorage.java
@@ -25,7 +25,9 @@ import org.deegree.feature.FeatureCollection;
 
 /**
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
+ * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
  */
+@Deprecated
 public interface PlanStorage {
 
 	/**
diff --git a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/storage/SqlPlanStorage.java b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/storage/SqlPlanStorage.java
index 0d487e8f2..2a0b1af41 100644
--- a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/storage/SqlPlanStorage.java
+++ b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/storage/SqlPlanStorage.java
@@ -44,7 +44,9 @@ import java.util.List;
  * using the deegree SQLFeatureStore in xplan-valdiator-workspace.
  *
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
+ * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
  */
+@Deprecated
 public class SqlPlanStorage implements PlanStorage {
 
 	private static final Logger LOG = LoggerFactory.getLogger(SqlPlanStorage.class);
diff --git a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/storage/WorkspacePlanStorage.java b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/storage/WorkspacePlanStorage.java
index a5d7c6c9f..d2576fc18 100644
--- a/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/storage/WorkspacePlanStorage.java
+++ b/xplan-core/xplan-core-validator/src/main/java/de/latlon/xplan/validator/wms/storage/WorkspacePlanStorage.java
@@ -51,7 +51,9 @@ import static org.deegree.gml.GMLVersion.GML_32;
  * directory in the workspace directory.
  *
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
+ * @deprecated XPlanValidatorWMS is deprecated and will be removed in a future version
  */
+@Deprecated
 public class WorkspacePlanStorage implements PlanStorage {
 
 	private static final Logger LOG = LoggerFactory.getLogger(WorkspacePlanStorage.class);
diff --git a/xplan-core/xplan-core-validator/src/main/resources/de/latlon/xplan/validator/configuration/validatorConfiguration.properties b/xplan-core/xplan-core-validator/src/main/resources/de/latlon/xplan/validator/configuration/validatorConfiguration.properties
index 66295be14..44f45d8eb 100644
--- a/xplan-core/xplan-core-validator/src/main/resources/de/latlon/xplan/validator/configuration/validatorConfiguration.properties
+++ b/xplan-core/xplan-core-validator/src/main/resources/de/latlon/xplan/validator/configuration/validatorConfiguration.properties
@@ -22,10 +22,11 @@
 # Default: tmp-Verzeichnis
 validationReportDirectory=
 
-# Verzeichnis in dem die semantischen Validierungsregel liegen, die für die Validierung verwendet werden sollen.
+# Verzeichnis in dem die semantischen Validierungsregel liegen, die für die Validierung verwendet werden sollen.
 # Default: Der interne Regelsatz wird verwendet
 validationRulesDirectory=
 
-# URL des XPlanValidatorWMS Endpunkts für die Anzeige der Kartenvorschau
-# Default: keine URL, die Kartenvorschau ist nicht verfügbar
+# URL des XPlanValidatorWMS Endpunkts für die Anzeige der Kartenvorschau
+# Default: keine URL, die Kartenvorschau ist nicht verfügbar
+# XPlanValidatorWMS is deprecated and will be removed in a future version
 validatorWmsEndpoint=
diff --git a/xplan-core/xplan-core-validator/src/test/resources/de/latlon/xplan/validator/configuration/validatorConfiguration.properties b/xplan-core/xplan-core-validator/src/test/resources/de/latlon/xplan/validator/configuration/validatorConfiguration.properties
index a0ffd719e..339fd3c50 100644
--- a/xplan-core/xplan-core-validator/src/test/resources/de/latlon/xplan/validator/configuration/validatorConfiguration.properties
+++ b/xplan-core/xplan-core-validator/src/test/resources/de/latlon/xplan/validator/configuration/validatorConfiguration.properties
@@ -22,10 +22,11 @@
 # Default: tmp-Verzeichnis
 validationReportDirectory=/home/xplanbox/file/configuration/report/
 
-# Verzeichnis in dem die semantischen Validierungsregel liegen, die für die Validierung verwendet werden sollen.
+# Verzeichnis in dem die semantischen Validierungsregel liegen, die für die Validierung verwendet werden sollen.
 # Default: Der interne Regelsatz wird verwendet
 validationRulesDirectory=
 
-# URL des XPlanValidatorWMS Endpunkts für die Anzeige der Kartenvorschau
-# Default: keine URL, die Kartenvorschau ist nicht verfügbar
+# URL des XPlanValidatorWMS Endpunkts für die Anzeige der Kartenvorschau
+# Default: keine URL, die Kartenvorschau ist nicht verfügbar
+# XPlanValidatorWMS is deprecated and will be removed in a future version
 validatorWmsEndpoint=
diff --git a/xplan-docker/xplan-docker-volume-init/setupVolumes.sh b/xplan-docker/xplan-docker-volume-init/setupVolumes.sh
index 990f128fa..8951de68c 100755
--- a/xplan-docker/xplan-docker-volume-init/setupVolumes.sh
+++ b/xplan-docker/xplan-docker-volume-init/setupVolumes.sh
@@ -88,7 +88,6 @@ XPLAN_SERVICES_WMS_MAXWIDTH="${XPLAN_SERVICES_WMS_MAXWIDTH:-3840}"
 XPLAN_SERVICES_WMS_MAXHEIGHT="${XPLAN_SERVICES_WMS_MAXHEIGHT:-2160}"
 XPLAN_SERVICES_METADATA_URL="${XPLAN_SERVICES_METADATA_URL}"
 
-XPLAN_INIT_RASTERTYPE="${XPLAN_INIT_RASTERTYPE:-mapserver}"
 XPLAN_INIT_INSPIREPLU="${XPLAN_INIT_INSPIREPLU:-disabled}"
 
 XPLAN_S3_PUBLIC_URL="${XPLAN_S3_PUBLIC_URL}"
@@ -193,13 +192,9 @@ find xplan-workspaces/xplan-services-wfs-syn-workspace/services -iname xplansynw
 echo $XPLAN_SERVICES_API_KEY >> xplan-workspaces/config.apikey
 
 # Rastertype
-echo "[$(date -Iseconds)] Configured rastertype: $XPLAN_INIT_RASTERTYPE"
-if [ $XPLAN_INIT_RASTERTYPE = "geotiff" ]
+if [[ -z "${spring_profiles_active##*mapserver*}" ]]
 then
-  echo "[$(date -Iseconds)] Configure rastertype geotiff"
-else
   echo "[$(date -Iseconds)] Configure rastertype mapserver"
-  sed -i 's/rasterConfigurationType=geotiff/rasterConfigurationType=mapserver/g' xplan-manager-config/managerConfiguration.properties
   mv xplan-workspaces/xplan-services-wms-workspace/layers/mapserver.ignore xplan-workspaces/xplan-services-wms-workspace/layers/mapserver.xml
   mv xplan-workspaces/xplan-services-wms-workspace/datasources/remoteows/mapserver.ignore xplan-workspaces/xplan-services-wms-workspace/datasources/remoteows/mapserver.xml
   find xplan-workspaces/xplan-services-wms-workspace/themes -iname *raster.xml -exec sed -i 's/<!--<LayerStoreId>mapserver/<LayerStoreId>mapserver/g' {} \;
@@ -209,6 +204,8 @@ else
   find xplan-workspaces/xplan-services-wms-workspace/themes -iname *raster.xml -exec sed -i 's/_rasterpre<\/Layer>-->/_rasterpre<\/Layer>/g' {} \;
   find xplan-workspaces/xplan-services-wms-workspace/themes -iname *raster.xml -exec sed -i 's/_raster<\/Layer>-->/_raster<\/Layer>/g' {} \;
   sed -i 's|http://localhost:8080/mapserver|'$XPLAN_MAPSERVER_URL_INTERNAL'/mapserver|g' xplan-workspaces/xplan-services-wms-workspace/datasources/remoteows/mapserver.xml
+else
+  echo "[$(date -Iseconds)] Configure rastertype geotiff"
 fi
 
 sed -i 's|validatorWmsEndpoint=|validatorWmsEndpoint='$XPLAN_VALIDATORWMS_URL_PUBLIC'\/xplan-validator-wms\/services\/wms|g' xplan-validator-config/validatorConfiguration.properties
diff --git a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/architektur.adoc b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/architektur.adoc
index 9d902e7d4..44577735c 100644
--- a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/architektur.adoc
+++ b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/architektur.adoc
@@ -10,7 +10,7 @@ Das Gesamtsystem setzt sich aus folgenden Komponenten zusammen:
 
 * <<xplanmanager-web, XPlanManagerWeb>>
 * <<xplanmanager-api, XPlanManagerAPI>>
-* <<xplanvalidator-web, XPlanValidatorWeb>> inkl. <<xplanvalidator-wms, XPlanValidatorWMS>>
+* <<xplanvalidator-web, XPlanValidatorWeb>> inkl. <<xplanvalidator-wms, XPlanValidatorWMS>> (veraltet)
 * <<xplanvalidator-api, XPlanValidatorAPI>>
 * <<xplandokumente-api, XPlanDokumenteAPI>>
 * <<xplanwms, XPlanWMS, XPlanArtWMS und XPlanWerkWMS>>
@@ -53,6 +53,8 @@ XPlanGML-Dokumente über den Browser zu validieren.
 Bei der Komponente XPlanValidatorWMS handelt es sich um eine Subkomponente
 des XPlanValidatorWeb. Validierte Plänen können über den XPlanValidatorWMS in der Kartenvorschau angezeigt werden, ohne das ein Plan in die Datenhaltung importiert wird. Dieser Dienst kann ohne persistente Datenhaltung betrieben werden.
 
+IMPORTANT: Der XPlanValidatorWMS ist veraltet und wird in zukünftigen Versionen der xPlanBox entfernt!
+
 [[xplanvalidator-api]]
 === XPlanValidatorAPI
 
diff --git a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/manager/geotiff.adoc b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/manager/geotiff.adoc
index 782c4123a..746ee05d3 100644
--- a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/manager/geotiff.adoc
+++ b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/manager/geotiff.adoc
@@ -1,13 +1,7 @@
 [[konfiguration-manager-geotiff]]
 === GeoTIFF
 
-Damit beim Import von Rasterdaten eine Konfiguration für den XPlanWMS erzeugt wird,
-muss in der Datei _<XPLANBOX_CONFIG>/managerConfiguration.properties_ die folgende Option aktiviert sein:
-
-[source,properties]
-----
-# must be geotiff or mapserver, default is geotiff
-rasterConfigurationType=geotiff
-----
+Standardmäßig wird beim Import von Rasterdaten eine Konfiguration für den XPlanWMS erzeugt (Konfigurationstyp _geotiff_).
 
 Die Konfiguration des XPlanWMS ist im Abschnitt <<konfiguration-xplanwms-geotiff>> beschrieben. Wird der Konfigurationstyp _geotiff_ verwendet, dann wird zusätzlich noch die Konfiguration des <<automatischer-workspace-reload,automatischen Workspace-Reload>> empfohlen.
+Alternativ kann der MapServer für die Bereitstellung von Rasterdaten konfiguriert werden, dies ist im Abschnitt <<konfiguration-xplanwms-mapserver>> beschrieben.
diff --git a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/manager/mapserver.adoc b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/manager/mapserver.adoc
index 74205e7c8..2329dbbbd 100644
--- a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/manager/mapserver.adoc
+++ b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/manager/mapserver.adoc
@@ -1,13 +1,10 @@
 [[konfiguration-manager-mapserver]]
 === MapServer
 
-Damit beim Import von Rasterdaten eine Konfiguration für den MapServer erzeugt wird,
-muss in der Datei _<XPLANBOX_CONFIG>/managerConfiguration.properties_ die folgende Option aktiviert sein:
+Damit beim Import von Rasterdaten eine Konfiguration für den MapServer erzeugt wird, muss das Spring-Profil `mapserver` für die Komponenten aktiviert werden.
+
+Die Konfiguration des XPlanWMS mit MapServer ist im Abschnitt <<konfiguration-xplanwms-mapserver>> beschrieben. Wenn der MapServer zusammen mit einem S3-Objektspeicher verwendet werden soll, dann ist zusätzlich noch die Konfiguration aus Abschnitt <<s3-storage>> erforderlich. Andernfalls ist die Konfiguration eines Verzeichnis im Dateisystem erforderlich, in dem die Rasterdaten abgelegt werden. Dazu muss folgende Umgebungsvariable gesetzt sein:
 
-[source,properties]
 ----
-# must be geotiff or mapserver, default is geotiff
-rasterConfigurationType=mapserver
+XPLAN_MAPSERVER_DATA_DIR=/pfad/zu/verzeichnis
 ----
-
-Die Konfiguration des XPlanWMS mit MapServer ist im Abschnitt <<konfiguration-xplanwms-mapserver>> beschrieben. Wenn der MapServer zusammen mit einem S3-Objektspeicher verwendet werden soll, dann ist zusätzlich noch die Konfiguration aus Abschnitt <<s3-storage>> erforderlich.
diff --git a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/validator/kartenvorschau.adoc b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/validator/kartenvorschau.adoc
index 288bbd856..ed5ca2317 100644
--- a/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/validator/kartenvorschau.adoc
+++ b/xplan-documentation/xplan-betriebshandbuch/src/main/asciidoc/konfiguration/validator/kartenvorschau.adoc
@@ -29,6 +29,8 @@ jar uf xplan-validator-web.war masterportal/template/services-internet.template.
 
 NOTE: Die Zeilen mit den Angaben für `${SERVICESCONFIG}`, `id` und `name` dürfen nicht angepasst werden!
 
+IMPORTANT: Der XPlanValidatorWMS ist veraltet und wird in zukünftigen Versionen der xPlanBox entfernt!
+
 [[konfiguration-xplanvalidatorwms]]
 ==== Konfiguration des XPlanValidatorWMS
 
diff --git a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/config/ApplicationContext.java b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/config/ApplicationContext.java
index eb9f3a7d0..377acfc35 100644
--- a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/config/ApplicationContext.java
+++ b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/config/ApplicationContext.java
@@ -8,18 +8,28 @@
  * 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%
  */
 package de.latlon.xplanbox.api.manager.config;
 
+import static de.latlon.xplan.manager.workspace.WorkspaceUtils.DEFAULT_XPLANSYN_WMS_WORKSPACE;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
 import de.latlon.xplan.commons.archive.XPlanArchiveCreator;
 import de.latlon.xplan.commons.configuration.PropertiesLoader;
 import de.latlon.xplan.commons.configuration.SortConfiguration;
@@ -40,7 +50,6 @@ import de.latlon.xplan.manager.export.XPlanExporter;
 import de.latlon.xplan.manager.metadata.DataServiceCouplingException;
 import de.latlon.xplan.manager.metadata.MetadataCouplingHandler;
 import de.latlon.xplan.manager.storage.StorageCleanUpManager;
-import de.latlon.xplan.manager.storage.config.StorageCleanUpContext;
 import de.latlon.xplan.manager.storage.filesystem.DeegreeRasterCacheCleaner;
 import de.latlon.xplan.manager.synthesizer.XPlanSynthesizer;
 import de.latlon.xplan.manager.synthesizer.rules.SynRulesAccessor;
@@ -53,7 +62,8 @@ import de.latlon.xplan.manager.transaction.service.XPlanEditService;
 import de.latlon.xplan.manager.transaction.service.XPlanInsertService;
 import de.latlon.xplan.manager.web.shared.ConfigurationException;
 import de.latlon.xplan.manager.wmsconfig.WmsWorkspaceWrapper;
-import de.latlon.xplan.manager.wmsconfig.config.RasterStorageContext;
+import de.latlon.xplan.manager.wmsconfig.config.GeotiffRasterStorageContext;
+import de.latlon.xplan.manager.wmsconfig.config.MapserverRasterStorageContext;
 import de.latlon.xplan.manager.wmsconfig.raster.XPlanRasterManager;
 import de.latlon.xplan.manager.wmsconfig.raster.config.RasterConfigManager;
 import de.latlon.xplan.manager.wmsconfig.raster.evaluation.RasterEvaluation;
@@ -88,18 +98,9 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
+import org.springframework.context.annotation.Profile;
 import org.springframework.core.io.ResourceLoader;
 
-import java.io.IOException;
-import java.nio.file.Path;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
-import static de.latlon.xplan.manager.workspace.WorkspaceUtils.DEFAULT_XPLANSYN_WMS_WORKSPACE;
-
 /**
  * Spring Application Context for initialising XPlanManagerAPI components.
  *
@@ -108,8 +109,8 @@ import static de.latlon.xplan.manager.workspace.WorkspaceUtils.DEFAULT_XPLANSYN_
  */
 @Configuration
 @ComponentScan(basePackages = { "de.latlon.xplanbox.api.manager.handler" })
-@Import({ SecurityContext.class, JpaContext.class, RasterStorageContext.class, AmazonS3RasterStorageContext.class,
-		DocumentStorageContext.class, StorageCleanUpContext.class })
+@Import({ SecurityContext.class, JpaContext.class, GeotiffRasterStorageContext.class,
+		MapserverRasterStorageContext.class, AmazonS3RasterStorageContext.class, DocumentStorageContext.class })
 public class ApplicationContext {
 
 	@Autowired
@@ -188,9 +189,11 @@ public class ApplicationContext {
 	}
 
 	@Bean
-	public WmsWorkspaceWrapper wmsWorkspaceWrapper() throws WorkspaceException {
+	@Profile("!mapserver")
+	public WmsWorkspaceWrapper wmsWorkspaceWrapper(ManagerConfiguration managerConfiguration)
+			throws WorkspaceException, de.latlon.xplan.manager.configuration.ConfigurationException {
 		DeegreeWorkspaceWrapper wmsWorkspace = new DeegreeWorkspaceWrapper(DEFAULT_XPLANSYN_WMS_WORKSPACE);
-		return new WmsWorkspaceWrapper(wmsWorkspace.getWorkspaceInstance());
+		return new WmsWorkspaceWrapper(managerConfiguration, wmsWorkspace.getWorkspaceInstance());
 	}
 
 	@Bean
@@ -206,13 +209,12 @@ public class ApplicationContext {
 
 	@Bean
 	public XPlanManager xPlanManager(XPlanManagerDao xPlanManagerDao, XPlanArchiveCreator archiveCreator,
-			ManagerConfiguration managerConfiguration, WmsWorkspaceWrapper wmsWorkspaceWrapper,
-			XPlanExporter xPlanExporter, XPlanRasterEvaluator xPlanRasterEvaluator,
-			XPlanRasterManager xPlanRasterManager, SortPropertyReader sortPropertyReader,
-			XPlanInsertManager xPlanInsertManager, XPlanEditManager xPlanEditManager,
-			XPlanDeleteManager xPlanDeleteManager) throws Exception {
-		return new XPlanManager(xPlanManagerDao, archiveCreator, managerConfiguration, wmsWorkspaceWrapper,
-				xPlanExporter, xPlanRasterEvaluator, xPlanRasterManager, sortPropertyReader, null, xPlanInsertManager,
+			ManagerConfiguration managerConfiguration, XPlanExporter xPlanExporter,
+			XPlanRasterEvaluator xPlanRasterEvaluator, XPlanRasterManager xPlanRasterManager,
+			SortPropertyReader sortPropertyReader, XPlanInsertManager xPlanInsertManager,
+			XPlanEditManager xPlanEditManager, XPlanDeleteManager xPlanDeleteManager) throws Exception {
+		return new XPlanManager(xPlanManagerDao, archiveCreator, managerConfiguration, xPlanExporter,
+				xPlanRasterEvaluator, xPlanRasterManager, sortPropertyReader, null, xPlanInsertManager,
 				xPlanEditManager, xPlanDeleteManager);
 	}
 
diff --git a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/handler/ConfigHandler.java b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/handler/ConfigHandler.java
index 2b43476d8..75ad85a65 100644
--- a/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/handler/ConfigHandler.java
+++ b/xplan-manager/xplan-manager-api/src/main/java/de/latlon/xplanbox/api/manager/handler/ConfigHandler.java
@@ -20,21 +20,22 @@
  */
 package de.latlon.xplanbox.api.manager.handler;
 
+import static org.slf4j.LoggerFactory.getLogger;
+
+import java.io.IOException;
+import java.util.Arrays;
+
 import de.latlon.xplan.manager.configuration.ManagerConfiguration;
-import de.latlon.xplan.manager.wmsconfig.raster.RasterConfigurationSource;
 import de.latlon.xplanbox.api.commons.handler.SystemConfigHandler;
 import de.latlon.xplanbox.api.manager.config.DefaultValidationConfiguration;
 import de.latlon.xplanbox.api.manager.config.ManagerApiConfiguration;
 import de.latlon.xplanbox.api.manager.v1.model.ManagerSystemConfig;
+import jakarta.inject.Singleton;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
 
-import jakarta.inject.Singleton;
-import java.io.IOException;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
 /**
  * @author <a href="mailto:goltz@lat-lon.de">Lyn Goltz </a>
  */
@@ -53,10 +54,21 @@ public class ConfigHandler {
 	@Autowired
 	private ManagerApiConfiguration managerApiConfiguration;
 
+	@Autowired
+	private Environment env;
+
+	private enum RasterConfigurationSource {
+
+		geotiff, mapserver
+
+	}
+
 	public ManagerSystemConfig describeManagerSystem() throws IOException {
 		LOG.debug("Generating manager config information");
 		String rasterCrs = managerConfiguration.getRasterConfigurationCrs();
-		RasterConfigurationSource rasterType = managerConfiguration.getRasterConfigurationType();
+		RasterConfigurationSource rasterType = Arrays.stream(env.getActiveProfiles())
+			.anyMatch(p -> RasterConfigurationSource.mapserver.name().equals(p)) ? RasterConfigurationSource.mapserver
+					: RasterConfigurationSource.geotiff;
 		DefaultValidationConfiguration defaultValidationConfiguration = managerApiConfiguration
 			.getDefaultValidationConfiguration();
 
diff --git a/xplan-manager/xplan-manager-api/src/test/java/de/latlon/xplanbox/api/manager/config/TestContext.java b/xplan-manager/xplan-manager-api/src/test/java/de/latlon/xplanbox/api/manager/config/TestContext.java
index 3efc856ec..3f01e7196 100644
--- a/xplan-manager/xplan-manager-api/src/test/java/de/latlon/xplanbox/api/manager/config/TestContext.java
+++ b/xplan-manager/xplan-manager-api/src/test/java/de/latlon/xplanbox/api/manager/config/TestContext.java
@@ -20,11 +20,39 @@
  */
 package de.latlon.xplanbox.api.manager.config;
 
+import static de.latlon.xplan.commons.XPlanVersion.XPLAN_41;
+import static de.latlon.xplan.commons.XPlanVersion.XPLAN_51;
+import static de.latlon.xplan.manager.web.shared.PlanStatus.FESTGESTELLT;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static org.slf4j.LoggerFactory.getLogger;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 import de.latlon.xplan.commons.XPlanSchemas;
 import de.latlon.xplan.commons.archive.XPlanArchiveCreator;
 import de.latlon.xplan.commons.configuration.SortConfiguration;
 import de.latlon.xplan.commons.feature.SortPropertyReader;
 import de.latlon.xplan.manager.XPlanManager;
+import de.latlon.xplan.manager.configuration.ConfigurationException;
 import de.latlon.xplan.manager.configuration.ManagerConfiguration;
 import de.latlon.xplan.manager.database.ManagerWorkspaceWrapper;
 import de.latlon.xplan.manager.database.PlanNotFoundException;
@@ -55,6 +83,7 @@ import de.latlon.xplanbox.api.manager.v1.DefaultApi;
 import de.latlon.xplanbox.api.manager.v1.InfoApi;
 import de.latlon.xplanbox.api.manager.v1.PlanApi;
 import de.latlon.xplanbox.api.manager.v1.PlansApi;
+import jakarta.annotation.PostConstruct;
 import org.deegree.commons.config.DeegreeWorkspace;
 import org.deegree.feature.persistence.FeatureStore;
 import org.glassfish.jersey.server.ResourceConfig;
@@ -70,35 +99,6 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
 import org.springframework.context.annotation.Profile;
 
-import jakarta.annotation.PostConstruct;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import static de.latlon.xplan.commons.XPlanVersion.XPLAN_41;
-import static de.latlon.xplan.commons.XPlanVersion.XPLAN_51;
-import static de.latlon.xplan.manager.web.shared.PlanStatus.FESTGESTELLT;
-import static de.latlon.xplan.manager.wmsconfig.raster.RasterConfigurationSource.geotiff;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyBoolean;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.nullable;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-import static org.slf4j.LoggerFactory.getLogger;
-
 /**
  * Creates mock objects for XPlanManager and underlying objects for in-memory unit tests.
  * Indented to register the JAX-RS resources within Spring Application Context. Resources
@@ -129,14 +129,12 @@ public class TestContext {
 
 	@Bean
 	public XPlanManager xPlanManager(XPlanDao xPlanDao, XPlanArchiveCreator archiveCreator,
-			ManagerConfiguration managerConfiguration, WmsWorkspaceWrapper wmsWorkspaceWrapper,
-			XPlanExporter xPlanExporter, XPlanRasterEvaluator xPlanRasterEvaluator,
-			XPlanRasterManager xPlanRasterManager, SortPropertyReader sortPropertyReader,
-			XPlanInsertManager xPlanInsertManager, XPlanEditManager xPlanEditManager,
-			XPlanDeleteManager xPlanDeleteManager) throws Exception {
-		return new XPlanManager(xPlanDao, archiveCreator, managerConfiguration, wmsWorkspaceWrapper, xPlanExporter,
-				xPlanRasterEvaluator, xPlanRasterManager, sortPropertyReader, null, xPlanInsertManager,
-				xPlanEditManager, xPlanDeleteManager);
+			ManagerConfiguration managerConfiguration, XPlanExporter xPlanExporter,
+			XPlanRasterEvaluator xPlanRasterEvaluator, XPlanRasterManager xPlanRasterManager,
+			SortPropertyReader sortPropertyReader, XPlanInsertManager xPlanInsertManager,
+			XPlanEditManager xPlanEditManager, XPlanDeleteManager xPlanDeleteManager) throws Exception {
+		return new XPlanManager(xPlanDao, archiveCreator, managerConfiguration, xPlanExporter, xPlanRasterEvaluator,
+				xPlanRasterManager, sortPropertyReader, null, xPlanInsertManager, xPlanEditManager, xPlanDeleteManager);
 	}
 
 	@Bean
@@ -248,14 +246,15 @@ public class TestContext {
 
 	@Bean
 	@Primary
-	public WmsWorkspaceWrapper wmsWorkspaceWrapper() throws WorkspaceException, IOException, URISyntaxException {
+	public WmsWorkspaceWrapper wmsWorkspaceWrapper(ManagerConfiguration managerConfiguration)
+			throws WorkspaceException, IOException, URISyntaxException, ConfigurationException {
 		DeegreeWorkspace deegreeWorkspace = mock(DeegreeWorkspace.class);
 		DeegreeWorkspaceWrapper wmsWorkspace = mock(DeegreeWorkspaceWrapper.class);
 		when(wmsWorkspace.getWorkspaceInstance()).thenReturn(deegreeWorkspace);
 		Path tempWorkspaceDir = Files.createTempDirectory("xplan-api-manager");
 		initWorkspace(tempWorkspaceDir);
 		when(deegreeWorkspace.getLocation()).thenReturn(tempWorkspaceDir.toFile());
-		return new WmsWorkspaceWrapper(wmsWorkspace.getWorkspaceInstance());
+		return new WmsWorkspaceWrapper(managerConfiguration, wmsWorkspace.getWorkspaceInstance());
 	}
 
 	private void initWorkspace(Path dir) throws IOException, URISyntaxException {
@@ -338,7 +337,6 @@ public class TestContext {
 	@Primary
 	public ManagerConfiguration managerConfiguration() {
 		ManagerConfiguration mockedConfiguration = mock(ManagerConfiguration.class);
-		when(mockedConfiguration.getRasterConfigurationType()).thenReturn(geotiff);
 		when(mockedConfiguration.getRasterConfigurationCrs()).thenReturn("EPSG:25832");
 		when(mockedConfiguration.getSortConfiguration()).thenReturn(new SortConfiguration());
 		return mockedConfiguration;
diff --git a/xplan-manager/xplan-manager-config/src/main/filter/filter-default.properties b/xplan-manager/xplan-manager-config/src/main/filter/filter-default.properties
index 8345d237f..27df37fe7 100644
--- a/xplan-manager/xplan-manager-config/src/main/filter/filter-default.properties
+++ b/xplan-manager/xplan-manager-config/src/main/filter/filter-default.properties
@@ -23,8 +23,6 @@
 rasterConfigurationCrs=EPSG:25832
 rasterLayerVisisbilityMinScaleDenominator=
 rasterLayerVisisbilityMaxScaleDenominator=
-# must be geotiff or mapserver, default is geotiff
-rasterConfigurationType=geotiff
 
 #workspace reloader configuration
 workspaceReloadUrls=
diff --git a/xplan-manager/xplan-manager-config/src/main/resources/managerConfiguration.properties b/xplan-manager/xplan-manager-config/src/main/resources/managerConfiguration.properties
index 4d79fcae6..d82213c4c 100644
--- a/xplan-manager/xplan-manager-config/src/main/resources/managerConfiguration.properties
+++ b/xplan-manager/xplan-manager-config/src/main/resources/managerConfiguration.properties
@@ -23,8 +23,6 @@
 rasterConfigurationCrs=${rasterConfigurationCrs}
 rasterLayerMinScaleDenominator=${rasterLayerVisisbilityMinScaleDenominator}
 rasterLayerMaxScaleDenominator=${rasterLayerVisisbilityMaxScaleDenominator}
-# must be geotiff or mapserver, default is geotiff
-rasterConfigurationType=${rasterConfigurationType}
 
 # workspace reloader configuration, workspaceReloadAction must be one of ALL (default), RELOAD, PLANWERKWMS
 # workspaceReloadUser and workspaceReloadPassword are deprecated! Use workspaceReloadApiKey instead.
diff --git a/xplan-manager/xplan-manager-web/src/main/java/de/latlon/xplan/manager/web/spring/config/BasicSpringConfig.java b/xplan-manager/xplan-manager-web/src/main/java/de/latlon/xplan/manager/web/spring/config/BasicSpringConfig.java
index 955adbbcd..cac7f2fb2 100644
--- a/xplan-manager/xplan-manager-web/src/main/java/de/latlon/xplan/manager/web/spring/config/BasicSpringConfig.java
+++ b/xplan-manager/xplan-manager-web/src/main/java/de/latlon/xplan/manager/web/spring/config/BasicSpringConfig.java
@@ -20,6 +20,18 @@
  */
 package de.latlon.xplan.manager.web.spring.config;
 
+import static de.latlon.xplan.manager.workspace.WorkspaceUtils.DEFAULT_XPLANSYN_WMS_WORKSPACE;
+import static de.latlon.xplan.manager.workspace.WorkspaceUtils.DEFAULT_XPLAN_MANAGER_WORKSPACE;
+import static de.latlon.xplan.manager.workspace.WorkspaceUtils.instantiateWorkspace;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
 import de.latlon.xplan.commons.archive.XPlanArchiveCreator;
 import de.latlon.xplan.commons.configuration.PropertiesLoader;
 import de.latlon.xplan.commons.configuration.SortConfiguration;
@@ -85,20 +97,9 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
 import org.springframework.core.io.ResourceLoader;
 
-import java.io.IOException;
-import java.nio.file.Path;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
-import static de.latlon.xplan.manager.workspace.WorkspaceUtils.DEFAULT_XPLANSYN_WMS_WORKSPACE;
-import static de.latlon.xplan.manager.workspace.WorkspaceUtils.DEFAULT_XPLAN_MANAGER_WORKSPACE;
-import static de.latlon.xplan.manager.workspace.WorkspaceUtils.instantiateWorkspace;
-
 /**
  * Spring Application Context for initialising XPlanManagerWeb components.
  *
@@ -186,9 +187,11 @@ public class BasicSpringConfig {
 	}
 
 	@Bean
-	public WmsWorkspaceWrapper wmsWorkspaceWrapper() throws WorkspaceException {
+	@Profile("!mapserver")
+	public WmsWorkspaceWrapper wmsWorkspaceWrapper(ManagerConfiguration managerConfiguration)
+			throws WorkspaceException, de.latlon.xplan.manager.configuration.ConfigurationException {
 		DeegreeWorkspaceWrapper wmsWorkspace = new DeegreeWorkspaceWrapper(DEFAULT_XPLANSYN_WMS_WORKSPACE);
-		return new WmsWorkspaceWrapper(wmsWorkspace.getWorkspaceInstance());
+		return new WmsWorkspaceWrapper(managerConfiguration, wmsWorkspace.getWorkspaceInstance());
 	}
 
 	@Bean
@@ -204,14 +207,14 @@ public class BasicSpringConfig {
 
 	@Bean
 	public XPlanManager xPlanManager(XPlanManagerDao xPlanManagerDao, XPlanArchiveCreator archiveCreator,
-			ManagerConfiguration managerConfiguration, WmsWorkspaceWrapper wmsWorkspaceWrapper,
-			XPlanExporter xPlanExporter, XPlanRasterEvaluator xPlanRasterEvaluator,
-			XPlanRasterManager xPlanRasterManager, SortPropertyReader sortPropertyReader,
-			Optional<InspirePluPublisher> inspirePluPublisher, XPlanInsertManager xPlanInsertManager,
-			XPlanEditManager xPlanEditManager, XPlanDeleteManager xPlanDeleteManager) throws Exception {
-		return new XPlanManager(xPlanManagerDao, archiveCreator, managerConfiguration, wmsWorkspaceWrapper,
-				xPlanExporter, xPlanRasterEvaluator, xPlanRasterManager, sortPropertyReader,
-				inspirePluPublisher.orElse(null), xPlanInsertManager, xPlanEditManager, xPlanDeleteManager);
+			ManagerConfiguration managerConfiguration, XPlanExporter xPlanExporter,
+			XPlanRasterEvaluator xPlanRasterEvaluator, XPlanRasterManager xPlanRasterManager,
+			SortPropertyReader sortPropertyReader, Optional<InspirePluPublisher> inspirePluPublisher,
+			XPlanInsertManager xPlanInsertManager, XPlanEditManager xPlanEditManager,
+			XPlanDeleteManager xPlanDeleteManager) throws Exception {
+		return new XPlanManager(xPlanManagerDao, archiveCreator, managerConfiguration, xPlanExporter,
+				xPlanRasterEvaluator, xPlanRasterManager, sortPropertyReader, inspirePluPublisher.orElse(null),
+				xPlanInsertManager, xPlanEditManager, xPlanDeleteManager);
 	}
 
 	@Bean
diff --git a/xplan-manager/xplan-manager-web/src/main/java/de/latlon/xplan/manager/web/spring/config/ManagerWebSpringConfig.java b/xplan-manager/xplan-manager-web/src/main/java/de/latlon/xplan/manager/web/spring/config/ManagerWebSpringConfig.java
index 1f1c4fb83..806743369 100644
--- a/xplan-manager/xplan-manager-web/src/main/java/de/latlon/xplan/manager/web/spring/config/ManagerWebSpringConfig.java
+++ b/xplan-manager/xplan-manager-web/src/main/java/de/latlon/xplan/manager/web/spring/config/ManagerWebSpringConfig.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%
@@ -22,9 +22,9 @@ package de.latlon.xplan.manager.web.spring.config;
 
 import de.latlon.xplan.core.manager.db.config.JpaContext;
 import de.latlon.xplan.manager.document.config.DocumentStorageContext;
-import de.latlon.xplan.manager.storage.config.StorageCleanUpContext;
 import de.latlon.xplan.manager.web.server.service.security.AuthorizationManager;
-import de.latlon.xplan.manager.wmsconfig.config.RasterStorageContext;
+import de.latlon.xplan.manager.wmsconfig.config.GeotiffRasterStorageContext;
+import de.latlon.xplan.manager.wmsconfig.config.MapserverRasterStorageContext;
 import de.latlon.xplan.manager.wmsconfig.raster.storage.s3.config.AmazonS3RasterStorageContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -37,8 +37,8 @@ import org.springframework.context.annotation.Import;
  * @version $Revision: $, $Date: $
  */
 @Configuration
-@Import({ BasicSpringConfig.class, JpaContext.class, RasterStorageContext.class, AmazonS3RasterStorageContext.class,
-		DocumentStorageContext.class, StorageCleanUpContext.class })
+@Import({ BasicSpringConfig.class, JpaContext.class, GeotiffRasterStorageContext.class,
+		MapserverRasterStorageContext.class, AmazonS3RasterStorageContext.class, DocumentStorageContext.class })
 public class ManagerWebSpringConfig {
 
 	@Bean
diff --git a/xplan-manager/xplan-manager-web/src/main/java/de/latlon/xplan/manager/web/spring/config/ManagerWebSpringConfigWithSimpleSecurity.java b/xplan-manager/xplan-manager-web/src/main/java/de/latlon/xplan/manager/web/spring/config/ManagerWebSpringConfigWithSimpleSecurity.java
index bcfc02d77..37fd35341 100644
--- a/xplan-manager/xplan-manager-web/src/main/java/de/latlon/xplan/manager/web/spring/config/ManagerWebSpringConfigWithSimpleSecurity.java
+++ b/xplan-manager/xplan-manager-web/src/main/java/de/latlon/xplan/manager/web/spring/config/ManagerWebSpringConfigWithSimpleSecurity.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%
@@ -22,8 +22,8 @@ package de.latlon.xplan.manager.web.spring.config;
 
 import de.latlon.xplan.core.manager.db.config.JpaContext;
 import de.latlon.xplan.manager.document.config.DocumentStorageContext;
-import de.latlon.xplan.manager.storage.config.StorageCleanUpContext;
-import de.latlon.xplan.manager.wmsconfig.config.RasterStorageContext;
+import de.latlon.xplan.manager.wmsconfig.config.GeotiffRasterStorageContext;
+import de.latlon.xplan.manager.wmsconfig.config.MapserverRasterStorageContext;
 import de.latlon.xplan.manager.wmsconfig.raster.storage.s3.config.AmazonS3RasterStorageContext;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
@@ -37,8 +37,8 @@ import org.springframework.context.annotation.ImportResource;
  * @version $Revision: $, $Date: $
  */
 @Configuration
-@Import({ BasicSpringConfig.class, JpaContext.class, RasterStorageContext.class, AmazonS3RasterStorageContext.class,
-		DocumentStorageContext.class, StorageCleanUpContext.class })
+@Import({ BasicSpringConfig.class, JpaContext.class, GeotiffRasterStorageContext.class,
+		MapserverRasterStorageContext.class, AmazonS3RasterStorageContext.class, DocumentStorageContext.class })
 @ImportResource("classpath:/de/latlon/xplan/manager/web/spring/security-simple.xml")
 public class ManagerWebSpringConfigWithSimpleSecurity {
 
diff --git a/xplan-webservices/xplan-webservices-validator-wms/pom.xml b/xplan-webservices/xplan-webservices-validator-wms/pom.xml
index 9fce6e12e..be04daa1e 100644
--- a/xplan-webservices/xplan-webservices-validator-wms/pom.xml
+++ b/xplan-webservices/xplan-webservices-validator-wms/pom.xml
@@ -4,6 +4,7 @@
   <artifactId>xplan-webservices-validator-wms</artifactId>
   <packaging>war</packaging>
   <description>XPlanValidatorWMS</description>
+  <!-- XPlanValidatorWMS is deprecated and will be removed in a future version. -->
 
   <parent>
     <groupId>de.latlon.product.xplanbox</groupId>
diff --git a/xplan-webservices/xplan-webservices-workspaces/src/main/assembly/xplan-webservices-validator-wms-memory-workspace.xml b/xplan-webservices/xplan-webservices-workspaces/src/main/assembly/xplan-webservices-validator-wms-memory-workspace.xml
index 88ded7289..3d4d3f936 100644
--- a/xplan-webservices/xplan-webservices-workspaces/src/main/assembly/xplan-webservices-validator-wms-memory-workspace.xml
+++ b/xplan-webservices/xplan-webservices-workspaces/src/main/assembly/xplan-webservices-validator-wms-memory-workspace.xml
@@ -20,6 +20,7 @@
   -->
 <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
+  <!-- XPlanValidatorWMS is deprecated and will be removed in a future version. -->
   <id>xplan-webservices-validator-wms-memory-workspace</id>
   <formats>
     <format>zip</format>
diff --git a/xplan-webservices/xplan-webservices-workspaces/src/main/assembly/xplan-webservices-validator-wms-sql-workspace.xml b/xplan-webservices/xplan-webservices-workspaces/src/main/assembly/xplan-webservices-validator-wms-sql-workspace.xml
index e983364c9..61fa692f6 100644
--- a/xplan-webservices/xplan-webservices-workspaces/src/main/assembly/xplan-webservices-validator-wms-sql-workspace.xml
+++ b/xplan-webservices/xplan-webservices-workspaces/src/main/assembly/xplan-webservices-validator-wms-sql-workspace.xml
@@ -20,6 +20,7 @@
   -->
 <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
+  <!-- XPlanValidatorWMS is deprecated and will be removed in a future version. -->
   <id>xplan-webservices-validator-wms-sql-workspace</id>
   <formats>
     <format>zip</format>
diff --git a/xplan-webservices/xplan-webservices-workspaces/src/main/workspace/datasources/feature/validator-wms/memory/xplansyn.xml b/xplan-webservices/xplan-webservices-workspaces/src/main/workspace/datasources/feature/validator-wms/memory/xplansyn.xml
index 6fdeae9e5..ae394c455 100644
--- a/xplan-webservices/xplan-webservices-workspaces/src/main/workspace/datasources/feature/validator-wms/memory/xplansyn.xml
+++ b/xplan-webservices/xplan-webservices-workspaces/src/main/workspace/datasources/feature/validator-wms/memory/xplansyn.xml
@@ -22,6 +22,7 @@
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                     xsi:schemaLocation="http://www.deegree.org/datasource/feature/memory
   https://schemas.deegree.org/core/3.5/datasource/feature/memory/memory.xsd">
+  <!-- XPlanValidatorWMS is deprecated and will be removed in a future version. -->
   <StorageCRS>EPSG:25832</StorageCRS>
   <GMLSchema version="GML_32">../../appschemas/XPlanGML_Syn/XPlanSyn.xsd</GMLSchema>
 
diff --git a/xplan-webservices/xplan-webservices-workspaces/src/main/workspace/services/validator-wms/wms.xml b/xplan-webservices/xplan-webservices-workspaces/src/main/workspace/services/validator-wms/wms.xml
index aabe06283..a49964236 100644
--- a/xplan-webservices/xplan-webservices-workspaces/src/main/workspace/services/validator-wms/wms.xml
+++ b/xplan-webservices/xplan-webservices-workspaces/src/main/workspace/services/validator-wms/wms.xml
@@ -21,7 +21,7 @@
 <wms:deegreeWMS xmlns:wms="http://www.deegree.org/services/wms"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://www.deegree.org/services/wms https://schemas.deegree.org/core/3.5/services/wms/wms_configuration.xsd">
-
+  <!-- XPlanValidatorWMS is deprecated and will be removed in a future version. -->
   <wms:ServiceConfiguration>
     <wms:DefaultLayerOptions>
       <wms:FeatureInfoRadius>10</wms:FeatureInfoRadius>
diff --git a/xplan-webservices/xplan-webservices-workspaces/src/main/workspace/services/validator-wms/wms_metadata.xml b/xplan-webservices/xplan-webservices-workspaces/src/main/workspace/services/validator-wms/wms_metadata.xml
index b07bbf338..00230f183 100644
--- a/xplan-webservices/xplan-webservices-workspaces/src/main/workspace/services/validator-wms/wms_metadata.xml
+++ b/xplan-webservices/xplan-webservices-workspaces/src/main/workspace/services/validator-wms/wms_metadata.xml
@@ -23,6 +23,7 @@
 <deegreeServicesMetadata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                          xmlns:inspire_vs="http://inspire.europa.eu/networkservice/view/1.0"
                          xsi:schemaLocation="http://www.deegree.org/services/metadata https://schemas.deegree.org/core/3.5/services/metadata/metadata.xsd">
+  <!-- XPlanValidatorWMS is deprecated and will be removed in a future version. -->
   <ServiceIdentification>
     <Title>XPlanWMS</Title>
     <Abstract>Dieser WMS Dienst stellt auf dem Standard XPlanung basierende WMS Ebenen bereit. Die umfangreiche Attributierung kann mittels GetFeatureInfo abgefragt werden. Objekte mit Referenzen auf weitere Dateien können über GetFeatureInfo abgefragt werden.</Abstract>
-- 
GitLab