diff --git a/Jenkinsfile b/Jenkinsfile
index ab5e5c0dbc7945dc809eb9a28d18977fc9ff0d0b..119b4bddc298561d808dbe55876e80a08ca064fb 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,12 +1,12 @@
 pipeline {
     agent {
         node {
-            label 'jenkins-worker'
+            label 'jenkins-build-agent'
         }
     }
 
     environment {
-        BLUE_OCEAN_URL = "https://jenkins.ozg-sh.de/blue/organizations/jenkins/goofy/detail/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/pipeline"
+        BLUE_OCEAN_URL = "https://jenkins.ozg-sh.de/job/goofy/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/"
         RELEASE_REGEX = /\d+.\d+.\d+/
         SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/
         FAILED_STAGE = ""
@@ -54,36 +54,34 @@ pipeline {
         }
         stage('Client') {
             steps {
-                container("nodejs"){
-                    script {
-                        FAILED_STAGE=env.STAGE_NAME
+                script {
+                    FAILED_STAGE=env.STAGE_NAME
 
-                        sh 'npm --version'
-                        dir('goofy-client') {
-                            sh 'echo "registry=https://nexus.ozg-sh.de/repository/npm-proxy" >> ~/.npmrc'
-                            sh 'echo "_auth=amVua2luczpQaihzX0ZNNFU5ZC8=" >> ~/.npmrc'
+                    sh 'npm --version'
+                    dir('goofy-client') {
+                        sh 'echo "registry=https://nexus.ozg-sh.de/repository/npm-proxy" >> ~/.npmrc'
+                        sh 'echo "_auth=amVua2luczpQaihzX0ZNNFU5ZC8=" >> ~/.npmrc'
 
-							sh 'npm cache verify'
-                            sh 'npm install --no-optional --legacy-peer-deps'
+						sh 'npm cache verify'
+                        sh 'npm install --legacy-peer-deps'
 
-                            if (env.BRANCH_NAME == 'release') {
-                                sh 'npm run ci-prodBuild'
-                            }
-                            else {
-                                sh 'npm run ci-build'
-                            }
+                        if (env.BRANCH_NAME == 'release') {
+                            sh 'npm run ci-prodBuild'
+                        }
+                        else {
+                            sh 'npm run ci-build'
+                        }
 
-                            sh 'npm run ci-test'
+                        sh 'npm run ci-test'
 
-							try {
-	                            if (env.BRANCH_NAME == 'master') {
-	                                withSonarQubeEnv('sonarqube-ozg-sh'){
-	                                    sh 'npm run ci-sonar'
-	                                }
+    					try {
+	                        if (env.BRANCH_NAME == 'master') {
+	                            withSonarQubeEnv('sonarqube-ozg-sh'){
+	                                sh 'npm run ci-sonar'
 	                            }
-                            } catch (Exception e) {
-                               unstable("SonarQube failed")
-                            }
+	                        }
+                        } catch (Exception e) {
+                            unstable("SonarQube failed")
                         }
                     }
                 }
@@ -100,22 +98,20 @@ pipeline {
                     FAILED_STAGE=env.STAGE_NAME
                     IMAGE_TAG = generateImageTag()
 
-                    container("maven-17"){
-                        configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
-                            sh 'mvn --version'
-                            sh "mvn -s $MAVEN_SETTINGS -pl -goofy-client clean install spring-boot:build-image -Dspring-boot.build-image.imageName=docker.ozg-sh.de/goofy:${IMAGE_TAG} -Dspring-boot.build-image.publish -Dmaven.wagon.http.retryHandler.count=3"
-
-                           	try {
-                                if (env.BRANCH_NAME == 'master') {
-        	                        dir('goofy-server'){
-                                        withSonarQubeEnv('sonarqube-ozg-sh'){
-                                            sh 'mvn -s $MAVEN_SETTINGS sonar:sonar'
-                                        }
+                    configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
+                        sh 'mvn --version'
+                        sh "mvn -s $MAVEN_SETTINGS -pl -goofy-client clean install spring-boot:build-image -Dspring-boot.build-image.imageName=docker.ozg-sh.de/goofy:${IMAGE_TAG} -Dspring-boot.build-image.publish -Dmaven.wagon.http.retryHandler.count=3"
+
+                       	try {
+                            if (env.BRANCH_NAME == 'master') {
+        	                    dir('goofy-server'){
+                                    withSonarQubeEnv('sonarqube-ozg-sh'){
+                                        sh 'mvn -s $MAVEN_SETTINGS sonar:sonar'
                                     }
-	                            }
-                            } catch (Exception e) {
-                                unstable("SonarQube failed")
-                            }
+                                }
+	                        }
+                        } catch (Exception e) {
+                            unstable("SonarQube failed")
                         }
                     }
                 }
@@ -131,9 +127,8 @@ pipeline {
                 script {
                     FAILED_STAGE = env.STAGE_NAME
                     E2E_FAILED = ""
-                }
-                container("k8s") {
-                    configFileProvider([configFile(fileId: 'jenkins-kuby-kubeconfig', variable: 'KUBE_CONFIG')]) {
+                
+                    configFileProvider([configFile(fileId: 'kubeconfig-old-dev-cluster', variable: 'KUBE_CONFIG')]) {
                         sh 'mkdir ~/.kube'
                         sh 'cp ${KUBE_CONFIG} ~/.kube/config'
                     }
@@ -142,7 +137,6 @@ pipeline {
 
                     sh 'helm version'
                 }
-                setAnsibleKubeConfig()
             }
         }
         stage('Deploy Maven Artifacts to Nexus') {
@@ -156,10 +150,9 @@ pipeline {
                 script {
                     FAILED_STAGE = env.STAGE_NAME
                 }
-                container('maven-17') {
-                    configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
-                        sh 'mvn -s $MAVEN_SETTINGS -pl -goofy-client -DskipTests deploy'
-                    }
+
+                configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
+                    sh 'mvn -s $MAVEN_SETTINGS -pl -goofy-client -DskipTests deploy'
                 }
             }
         }
@@ -187,20 +180,18 @@ pipeline {
         
         stage('Test, build and deploy Helm Chart') {
             steps {
-                container('k8s') {
-                    script {
-                        FAILED_GOOFY_STAGE=env.STAGE_NAME
-                        HELM_CHART_VERSION = generateHelmChartVersion()
+                script {
+                    FAILED_GOOFY_STAGE=env.STAGE_NAME
+                    HELM_CHART_VERSION = generateHelmChartVersion()
 
-                        dir('src/main/helm') {
-                            sh "helm lint -f test-values.yaml"
+                    dir('src/main/helm') {
+                        sh "helm lint -f test-values.yaml"
 
-                            sh "helm unittest -f '../../test/helm/*.yaml' -v '../../test/unit-values.yaml' ."
+                        sh "helm unittest -f '../../test/helm/*.yaml' -v '../../test/unit-values.yaml' ."
 
-                            sh "helm package --version=${HELM_CHART_VERSION} ."
+                        sh "helm package --version=${HELM_CHART_VERSION} ."
 
-                            deployHelmChart(HELM_CHART_VERSION)
-                        }
+                        deployHelmChart(HELM_CHART_VERSION)
                     }
                 }
             }
@@ -228,61 +219,78 @@ pipeline {
             }
         }
         stage('E2E') {
-            failFast false
+            stages {
 
-            parallel {
-                stage('E2E-EA') {
+                stage('Install cypress') {
                     steps {
                         script {
-                            def stageName = env.STAGE_NAME
-                            def bezeichner = generateBezeichner(stageName)
+                            FAILED_STAGE = env.STAGE_NAME
+                            dir('goofy-client') {
+                                sh "npm run cypress:install"
+                            }
+                        }
+                    }
+                }
+                stage('Run E2E-Tests') {
+                    failFast false
 
-                            startEnvironment(bezeichner, stageName, IMAGE_TAG, true, HELM_CHART_VERSION)
+                    parallel {
+                        stage('E2E-EA') {
+                            steps {
+                                script {
+                                    def stageName = env.STAGE_NAME
+                                    def bezeichner = generateBezeichner(stageName)
+                                    def dbPort = 27018
 
-                            def testResult = runTests(stageName, bezeichner, 'einheitlicher-ansprechpartner')
+                                    startEnvironment(bezeichner, stageName, IMAGE_TAG, true, HELM_CHART_VERSION, 'sh', dbPort)
 
-							if (env.BRANCH_NAME != 'master') {
-                            	deleteKopStack(bezeichner, stageName)
-                            }
+                                    def testResult = runTests(stageName, bezeichner, 'einheitlicher-ansprechpartner', 'sh', dbPort)
 
-                            if(!testResult) {
-                                E2E_FAILED += "${stageName}, "
-                                error("Fehler in Stage ${stageName}")
+        							if (env.BRANCH_NAME != 'master') {
+                                    	deleteKopStack(bezeichner, stageName)
+                                    }
+
+                                    if(!testResult) {
+                                        E2E_FAILED += "${stageName}, "
+                                        error("Fehler in Stage ${stageName}")
+                                    }
+                                }
                             }
-                        }
-                    }
-                    post {
-                        always {
-                            script {
-                                publishE2ETestResult("einheitlicher-ansprechpartner", "Goofy E2E-Tests EA")
+                            post {
+                                always {
+                                    script {
+                                        publishE2ETestResult("einheitlicher-ansprechpartner", "Goofy E2E-Tests EA")
+                                    }
+                                }
                             }
                         }
-                    }
-                }
-                stage('E2E-main') {
-                    steps {
-                        script {
-                            def stageName = env.STAGE_NAME
-                            def bezeichner = generateBezeichner(stageName)
+                        stage('E2E-main') {
+                            steps {
+                                script {
+                                    def stageName = env.STAGE_NAME
+                                    def bezeichner = generateBezeichner(stageName)
+                                    def dbPort = 27019
 
-                            startEnvironment(bezeichner, stageName, IMAGE_TAG, false, HELM_CHART_VERSION)
+                                    startEnvironment(bezeichner, stageName, IMAGE_TAG, false, HELM_CHART_VERSION, 'sh', dbPort)
 
-                            def testResult = runTests(stageName, bezeichner, 'main-tests')
+                                    def testResult = runTests(stageName, bezeichner, 'main-tests', 'sh', dbPort)
 
-                            if (env.BRANCH_NAME != 'master') {
-                            	deleteKopStack(bezeichner, stageName)
-                            }
+                                    if (env.BRANCH_NAME != 'master') {
+                                    	deleteKopStack(bezeichner, stageName)
+                                    }
 
-                            if(!testResult) {
-                                E2E_FAILED += "${stageName}, "
-                                error("Fehler in Stage ${stageName}")
+                                    if(!testResult) {
+                                        E2E_FAILED += "${stageName}, "
+                                        error("Fehler in Stage ${stageName}")
+                                    }
+                                }
                             }
-                        }
-                    }
-                    post {
-                        always {
-                            script {
-                                publishE2ETestResult("main-tests", "Goofy E2E-Tests main")
+                            post {
+                                always {
+                                    script {
+                                        publishE2ETestResult("main-tests", "Goofy E2E-Tests main")
+                                    }
+                                }
                             }
                         }
                     }
@@ -332,10 +340,10 @@ pipeline {
 Void deployHelmChart(String helmChartVersion) {       
     withCredentials([usernamePassword(credentialsId: 'jenkins-nexus-login', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]){
         if (env.BRANCH_NAME == 'release') {
-            result = sh script: '''curl -u $USERNAME:$PASSWORD http://nexus.dev-tools:8081/service/rest/v1/components?repository=ozg-base-apps -F file=@goofy-'''+helmChartVersion+'''.tgz''', returnStdout: true
+            result = sh script: '''curl -u $USERNAME:$PASSWORD https://nexus.ozg-sh.de/service/rest/v1/components?repository=ozg-base-apps -F file=@goofy-'''+helmChartVersion+'''.tgz''', returnStdout: true
         }
         else {
-            result = sh script: '''curl -u $USERNAME:$PASSWORD http://nexus.dev-tools:8081/service/rest/v1/components?repository=ozg-base-apps-snapshot -F file=@goofy-'''+helmChartVersion+'''.tgz''', returnStdout: true
+            result = sh script: '''curl -u $USERNAME:$PASSWORD https://nexus.ozg-sh.de/service/rest/v1/components?repository=ozg-base-apps-snapshot -F file=@goofy-'''+helmChartVersion+'''.tgz''', returnStdout: true
         }
 
         if (result != '') {
@@ -358,13 +366,11 @@ String generateHelmChartVersion() {
 }
 
 Void tagAndPushDockerImage(String newTag){
-    container("docker") {
-        withCredentials([usernamePassword(credentialsId: 'jenkins-docker-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
-            sh 'docker login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}'
+    withCredentials([usernamePassword(credentialsId: 'jenkins-nexus-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
+        sh 'docker login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}'
 
-            sh "docker tag docker.ozg-sh.de/goofy:${IMAGE_TAG} docker.ozg-sh.de/goofy:${newTag}"
-            sh "docker push docker.ozg-sh.de/goofy:${newTag}"
-        }
+        sh "docker tag docker.ozg-sh.de/goofy:${IMAGE_TAG} docker.ozg-sh.de/goofy:${newTag}"
+        sh "docker push docker.ozg-sh.de/goofy:${newTag}"
     }
 }
 
@@ -378,7 +384,7 @@ String generateImageTag() {
     return imageTag
 }
 
-Void startEnvironment(String bezeichner, String stage, String imageTag, Boolean isEa, String chartVersion) {
+Void startEnvironment(String bezeichner, String stage, String imageTag, Boolean isEa, String chartVersion, String bundesland, dbPort) {
     setupAnsible(imageTag, stage, isEa, chartVersion)
 
     try {
@@ -388,8 +394,10 @@ Void startEnvironment(String bezeichner, String stage, String imageTag, Boolean
     }
 
     rolloutKopStack(bezeichner, stage)
-    addKeycloakGroups(bezeichner, stage)
-    addKeycloakUser(bezeichner, stage)
+    addKeycloakGroups(bezeichner, stage, bundesland)
+    addKeycloakUser(bezeichner, stage, bundesland)
+    exposeDatenbank("${bundesland}-${bezeichner}-dev", dbPort)
+    exposeElasticSearch()
 }
 
 Void setupAnsible(String imageTag, String stage, Boolean isEa, String chartVersion) {
@@ -409,11 +417,9 @@ Void setupAnsible(String imageTag, String stage, Boolean isEa, String chartVersi
 }
 
 Void setAnsibleKubeConfig() {
-    container("ansible") {
-        configFileProvider([configFile(fileId: 'jenkins-kuby-kubeconfig', variable: 'KUBE_CONFIG')]) {
-            sh 'mkdir ~/.kube'
-            sh 'cp ${KUBE_CONFIG} ~/.kube/config'
-        }
+    configFileProvider([configFile(fileId: 'kubeconfig-old-dev-cluster', variable: 'KUBE_CONFIG')]) {
+        sh 'mkdir ~/.kube'
+        sh 'cp ${KUBE_CONFIG} ~/.kube/config'
     }
 }
 
@@ -514,91 +520,83 @@ Void setPlutoDatabasePassword(String stage) {
 }
 
 Void rolloutKopStack(String bezeichner, String stage) {
-    container("ansible") {
-        dir("${stage}/provisioning") {
-            def ansibleVars = """{"k8s_context":"ozg-dev", \
-                    "kop_env":"dev", \
-                    "kop_bezeichner":${bezeichner}, \
-                    "kop_displayname":${bezeichner}, \
-                    "kop_postfach_api_key":"", \
-                    "install_afm_adapter":false, \
-                    "install_fs_adapter":false, \
-                    "external_db_enabled":false, \
-                    "disable_update":true}"""
+    dir("${stage}/provisioning") {
+        def ansibleVars = """{"k8s_context":"ozg-dev", \
+            "kop_env":"dev", \
+            "kop_bezeichner":${bezeichner}, \
+            "kop_displayname":${bezeichner}, \
+            "kop_postfach_api_key":"", \
+            "install_afm_adapter":false, \
+            "install_fs_adapter":false, \
+            "external_db_enabled":false, \
+            "disable_update":true}"""
 
-            if (env.BRANCH_NAME == 'release') {
-                sh "ansible-playbook playbook/rollout.yml --extra-vars '${ansibleVars}'"
-            }
-            else {
-                sh "ansible-playbook playbooks/rollout.yml --extra-vars '${ansibleVars}'"
-            }
+        if (env.BRANCH_NAME == 'release') {
+            sh "ansible-playbook playbook/rollout.yml --extra-vars '${ansibleVars}'"
+        }
+        else {
+            sh "ansible-playbook playbooks/rollout.yml --extra-vars '${ansibleVars}'"
         }
     }
 }
 
-Void addKeycloakGroups(String bezeichner, String stage) {
-    container("ansible") {
-        def groupFiles = sh (script: 'ls goofy-client/apps/goofy-e2e/src/fixtures/group', returnStdout: true)
+Void addKeycloakGroups(String bezeichner, String stage, String bundesland) {
+    def groupFiles = sh (script: 'ls goofy-client/apps/goofy-e2e/src/fixtures/group', returnStdout: true)
 
-        groupFiles.split("\\n").each { group ->
-            def groupJson = sh (script: "cat goofy-client/apps/goofy-e2e/src/fixtures/group/${group}", returnStdout: true)
+    groupFiles.split("\\n").each { group ->
+        def groupJson = sh (script: "cat goofy-client/apps/goofy-e2e/src/fixtures/group/${group}", returnStdout: true)
 
-            def ansibleVars = """{"k8s_context":"ozg-dev", \
-                "kop_env":"dev", \
-                "keycloak_realm":"sh-${bezeichner}-dev", \
-                "group":${groupJson}
+        def ansibleVars = """{"k8s_context":"ozg-dev", \
+            "kop_env":"dev", \
+            "keycloak_realm":"${bundesland}-${bezeichner}-dev", \
+            "group":${groupJson}
             }"""
 
-            dir("${stage}/provisioning") {
-                if (env.BRANCH_NAME == 'release') {
-                    sh "ansible-playbook playbook/add-keycloak-group.yml --extra-vars '${ansibleVars}'"
-                }
-                else {
-                    sh "ansible-playbook playbooks/add-keycloak-group.yml --extra-vars '${ansibleVars}'"
-                }
+        dir("${stage}/provisioning") {
+            if (env.BRANCH_NAME == 'release') {
+                sh "ansible-playbook playbook/add-keycloak-group.yml --extra-vars '${ansibleVars}'"
             }
-    	}
-    }
+            else {
+                sh "ansible-playbook playbooks/add-keycloak-group.yml --extra-vars '${ansibleVars}'"
+            }
+        }
+	}
 }
 
-Void addKeycloakUser(String bezeichner, String stage) {
-    container("ansible") {
-        def userFiles = sh (script: 'ls goofy-client/apps/goofy-e2e/src/fixtures/user', returnStdout: true)
+Void addKeycloakUser(String bezeichner, String stage, String bundesland) {
+    def userFiles = sh (script: 'ls goofy-client/apps/goofy-e2e/src/fixtures/user', returnStdout: true)
 
-        userFiles.split("\\n").each { user ->
-            def userJson = sh (script: "cat goofy-client/apps/goofy-e2e/src/fixtures/user/${user}", returnStdout: true)
+    userFiles.split("\\n").each { user ->
+        def userJson = sh (script: "cat goofy-client/apps/goofy-e2e/src/fixtures/user/${user}", returnStdout: true)
 
-            def ansibleVars = """{"k8s_context":"ozg-dev", \
-                "kop_env":"dev", \
-                "keycloak_realm":"sh-${bezeichner}-dev", \
-                "user":${userJson}
-            }"""
+        def ansibleVars = """{"k8s_context":"ozg-dev", \
+            "kop_env":"dev", \
+            "keycloak_realm":"${bundesland}-${bezeichner}-dev", \
+            "user":${userJson}
+        }"""
 
-            dir("${stage}/provisioning") {
-                if (env.BRANCH_NAME == 'release') {
-                    sh "ansible-playbook playbook/add-keycloak-user.yml --extra-vars '${ansibleVars}'"
-                }
-                else {
-                    sh "ansible-playbook playbooks/add-keycloak-user.yml --extra-vars '${ansibleVars}'"
-                }
+        dir("${stage}/provisioning") {
+            if (env.BRANCH_NAME == 'release') {
+                sh "ansible-playbook playbook/add-keycloak-user.yml --extra-vars '${ansibleVars}'"
+            }
+            else {
+                sh "ansible-playbook playbooks/add-keycloak-user.yml --extra-vars '${ansibleVars}'"
             }
         }
     }
 }
 
 Void deleteKopStack(String bezeichner, String stage) {
-    container("ansible") {
-        dir("${stage}/provisioning") {
-            def ansibleVars = """{"k8s_context":"ozg-dev", \
-                    "kop_env":"dev", \
-                    "kop_bezeichner":${bezeichner}}"""
+    dir("${stage}/provisioning") {
+        def ansibleVars = """{"k8s_context":"ozg-dev", \
+            "kop_env":"dev", \
+            "kop_bezeichner":${bezeichner}}"""
 
-            if (env.BRANCH_NAME == 'release') {
-                sh "ansible-playbook playbook/delete-commune.yml --extra-vars '${ansibleVars}'"
-            }
-            else {
-                sh "ansible-playbook playbooks/delete-commune.yml --extra-vars '${ansibleVars}'"
-            }
+        if (env.BRANCH_NAME == 'release') {
+            sh "ansible-playbook playbook/delete-commune.yml --extra-vars '${ansibleVars}'"
+        }
+        else {
+            sh "ansible-playbook playbooks/delete-commune.yml --extra-vars '${ansibleVars}'"
         }
     }
 }
@@ -616,22 +614,20 @@ Void publishE2ETestResult(String reportFolder, String reportName) {
     )
 }
 
-String runTests(String stageName, String bezeichner, String reportFolder) {
-    def configFile = generateCypressConfig(stageName, bezeichner, reportFolder)
+String runTests(String stageName, String bezeichner, String reportFolder, String bundesland, dbPort) {
+    def configFile = generateCypressConfig(stageName, bezeichner, reportFolder, bundesland, dbPort)
 
-	container("cypress") {
-        try {
-            dir("goofy-client") {
-        	    sh "npm run cypress:version"
-                sh "npm run cypress:ci-run --CONFIG_FILE=${configFile} --REPORT_FOLDER=${reportFolder}"
+    try {
+        dir("goofy-client") {
+      	    sh "npm run cypress:version"
+            sh "npm run cypress:ci-run --CONFIG_FILE=${configFile} --REPORT_FOLDER=${reportFolder}"
 
-                return true
-            }
-        } catch (Exception e) {
-            sh "ls -l /root/.npm/_logs/*-debug.log"
-            sh "cat /root/.npm/_logs/*-debug.log"
-            return false
+            return true
         }
+    } catch (Exception e) {
+        sh "ls -l /root/.npm/_logs/*-debug.log"
+        sh "cat /root/.npm/_logs/*-debug.log"
+        return false
     }
 }
 
@@ -658,16 +654,18 @@ String cutBranchNameForKeycloakRealm(String branchName, String stageName) {
     return branchName
 }
 
-String generateCypressConfig(String stage, String bezeichner, String testFolder) {
-    def namespace = "sh-${bezeichner}-dev"
+String generateCypressConfig(String stage, String bezeichner, String testFolder, String bundesland, dbPort) {
+    def namespace = "${bundesland}-${bezeichner}-dev"
     def configName = "cypress-ci-"+testFolder+".json"
+    
+    def url = "dev.ozg-sh.de"
 
     dir('goofy-client/apps/goofy-e2e/'){
         def config = readJSON file: 'cypress-ci.json'
         def elasticsearchEnv = getElasticsearchEnv(namespace)
 
-        config.baseUrl = "https://${bezeichner}.dev.ozg-sh.de" as String
-        config.env.dbUrl = "mongodb+srv://pluto-database-user:XnHhfznNWg65NNd@pluto-database-svc.${namespace}.svc.cluster.local/admin?ssl=false" as String
+        config.baseUrl = "https://${bezeichner}.${url}" as String
+        config.env.dbUrl = "mongodb://pluto-database-user:XnHhfznNWg65NNd@localhost:${dbPort}/admin?ssl=false&directConnection=true" as String
         config.env.keycloakRealm = namespace as String
         config.env.keycloakClient = namespace + "-goofy" as String
 		config.env.sabineUuid = getKeycloakUuid(namespace, "sabine") as String
@@ -679,7 +677,7 @@ String generateCypressConfig(String stage, String bezeichner, String testFolder)
         environment = config.env
         environment.put("search", elasticsearchEnv)
         
-        environment.put("userManager", getUserManagerEnv(namespace));
+        environment.put("userManager", getUserManagerEnv(namespace, dbPort));
 
         writeJSON file: configName, json: config
 
@@ -689,19 +687,17 @@ String generateCypressConfig(String stage, String bezeichner, String testFolder)
     return configName
 }
 
-String getUserManagerEnv(namespace){
+String getUserManagerEnv(namespace, dbPort){
 	def secret = getSecrect(namespace, 'pluto-database-admin-user-manager-database-user');
 	def secretPassword = decodeString(secret.password);
 	return readJSON(text: """{
-        "dbUrl":"mongodb+srv://user-manager-database-user:${secretPassword}@pluto-database-svc.${namespace}.svc.cluster.local/admin?ssl=false", \
+        "dbUrl":"mongodb://user-manager-database-user:${secretPassword}@localhost:${dbPort}/admin?ssl=false&directConnection=true", \
         "database":"user-manager-database"}""");
 }
 
 def getSecrect(namespace, secretName){
-    container("k8s"){
-        script {
-            return readJSON ( text: sh (script: "kubectl get secret ${secretName} -n ${namespace} -o jsonpath={.data}", returnStdout: true))
-        }
+    script {
+        return readJSON ( text: sh (script: "kubectl get secret ${secretName} -n ${namespace} -o jsonpath={.data}", returnStdout: true))
     }
 }
 
@@ -722,7 +718,7 @@ String getKeycloakUuid(realm, userName) {
 }
 
 String getKeycloakAccessToken() {
-	withCredentials([usernamePassword(credentialsId: 'keycloak-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
+	withCredentials([usernamePassword(credentialsId: 'keycloak-old-dev-cluster', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
 		def token = readJSON text: sh (script: 'curl -d "client_id=admin-cli" -d "username=$USER" -d "password=$PASSWORD" -d "grant_type=password" "https://sso.dev.ozg-sh.de/realms/master/protocol/openid-connect/token"', returnStdout: true)
 
 		return token.access_token
@@ -760,12 +756,10 @@ Void initHelmRepo() {
 }
 
 def getElasticsearchSecret(namespace) {
-    container("k8s"){
-        script {
-            def elasticsearch = readJSON ( text: sh (script: "kubectl get secret elasticsearch-credentials -n ${namespace} -o jsonpath={.data}", returnStdout: true))
+    script {
+        def elasticsearch = readJSON ( text: sh (script: "kubectl get secret elasticsearch-credentials -n ${namespace} -o jsonpath={.data}", returnStdout: true))
 
-            return elasticsearch
-        }
+        return elasticsearch
     }
 }
 
@@ -776,7 +770,7 @@ String getElasticsearchEnv(namespace) {
         "user":"${decodeString(elasticsearchSecret.username)}", \
         "password":"${decodeString(elasticsearchSecret.password)}", \
         "index":"${decodeString(elasticsearchSecret.index)}", \
-        "url":"${decodeString(elasticsearchSecret.uris)}"}"""
+        "url":"https://localhost:9200"}"""
 
     return readJSON ( text: env)
 }
@@ -817,3 +811,14 @@ Void pushNewProvisioningVersion(String environment) {
         }
     }
 }
+
+Void exposeElasticSearch() {
+    portStatus = sh (script: "lsof -i -P -n | grep LISTEN | grep :9200", returnStatus: true) as Integer
+    if(portStatus == 1) {
+        sh "kubectl port-forward ozg-search-cluster-es-ozg-search-0 9200:9200 -n elastic-system &"
+    }
+}
+
+Void exposeDatenbank(String namespace, port) {
+    sh "kubectl port-forward pluto-database-0 ${port}:27017 -n ${namespace} &"
+}
\ No newline at end of file
diff --git a/goofy-client/package.json b/goofy-client/package.json
index db5b0249431c351f84ba9523cea408f219883d17..84b7b253795023b04dc412aade3710f56577d1d6 100644
--- a/goofy-client/package.json
+++ b/goofy-client/package.json
@@ -35,6 +35,7 @@
 		"favicon": "real-favicon generate favicon/faviconDescription.json favicon/faviconData.json src/favicon",
 		"cypress:run": "npx cypress run --project apps/goofy-e2e",
 		"cypress:version": "npx cypress version",
+		"cypress:install": "npx cypress install",
 		"cypress:open": "npx cypress open --project apps/goofy-e2e",
 		"cypress:ci-run": "npm run cypress:delete-old-reports --REPORT_FOLDER=$npm_config_REPORT_FOLDER ; npm run cypress:run -- --config-file ./$npm_config_CONFIG_FILE ; test=$(echo \"$?\") ; npm run cypress:pre-merge --REPORT_FOLDER=$npm_config_REPORT_FOLDER ; npm run cypress:generate-report --REPORT_FOLDER=$npm_config_REPORT_FOLDER ; exit $test",
 		"cypress:delete-old-reports": "REPORT_FOLDER=$npm_config_REPORT_FOLDER node apps/goofy-e2e/src/support/delete-old-reports.ts",