diff --git a/Jenkinsfile b/Jenkinsfile
index 442a4c55f2685e198b3faed405f0fef49c8529f7..255c2298b48fb9187ee82f3cb2036b5b4775f5ee 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -303,14 +303,91 @@ pipeline {
 Void startEnvironment(String namespace, String goofyValues, String plutoValues, String imageTag, String bezeichner){
     checkIfNamespaceExists(namespace)
 
-    parallel(
-        startGoofy: {
-		    startGoofy(namespace, goofyValues, imageTag, bezeichner)
-        },
-        startPluto: {
-		    startPluto(namespace, plutoValues, bezeichner)
+    setupAnsible(imageTag)
+
+    rolloutKopStack(bezeichner)
+    addKeycloakGroups(bezeichner)
+    addKeycloakUser(bezeichner)
+}
+
+Void setupAnsible(String goofyImageTag) {
+    checkoutProvisioningRepo()
+
+    setGoofyImageVersion(goofyImageTag)
+}
+
+Void checkoutProvisioningRepo() {
+    withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
+        sh 'git clone https://${USER}:${TOKEN}@git.ozg-sh.de/mgm/provisioning.git'
+        sh 'git checkout ozg-2552'
+    }
+}
+
+Void setGoofyImageVersion(String goofyImageTag) {
+    dir('provisioning') {
+        def devVersions = readYaml file: "playbook/versions/dev.yaml"
+
+        devVersions.versions.goofy.image.tag = goofyImageTag
+
+        writeYaml file: "playbook/versions/dev.yaml", data: devVersions
+
+        sh "cat playbook/versions/dev.yaml"
+    }
+}
+
+Void rolloutKopStack(String bezeichner) {
+    container("ansible") {
+        dir('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
+                }"""
+
+            sh "ansible-playbook playbook/rollout.yml --extra-vars ${ansibleVars}"
         }
-    )
+    }
+}
+
+Void addKeycloakGroups(bezeichner) {
+    container("ansible") {
+        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)
+
+            def ansibleVars = """{
+                "k8s_context": "ozg-dev",
+                "kop_env": "dev",
+                "keycloak_realm": "sh-${bezeichner}-dev",
+                "group": ${groupJson}    
+            }"""
+
+            sh "ansible-playbook playbook/rollout.yml --extra-vars ${ansibleVars}"
+    	}
+    }
+}
+
+Void addKeycloakUser(String bezeichner) {
+    def userFiles = sh (script: 'ls goofy-client/apps/goofy-e2e/src/fixtures/user', returnStdout: true)
+
+    userFiles.split("\\n").each { user ->
+   		def userJson = readJSON file: 'goofy-client/apps/goofy-e2e/src/fixtures/user/'+user
+
+        def ansibleVars = """{
+            "k8s_context": "ozg-dev",
+            "kop_env": "dev",
+            "keycloak_realm": "sh-${bezeichner}-dev",
+            "user": ${userJson}    
+        }"""
+
+        sh "ansible-playbook playbook/rollout.yml --extra-vars ${ansibleVars}"
+    }
 }
 
 Void publishE2ETestResult(String reportFolder, String reportName) {