diff --git a/Jenkinsfile b/Jenkinsfile
index 2969809bb535dce42fe37865a81b4d29b55b60c7..1f909ef5a02c987fd514c45aa951701dc36094ca 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -155,64 +155,36 @@ pipeline {
             steps {
                 script {
                     FAILED_STAGE = env.STAGE_NAME
-                }
 
-                container("k8s"){
-                    script {
-                            sh """
-                                error=0
-                                for NAMESPACE in \$(kubectl get namespaces -l ozg-environment=dev -o custom-columns=NAME:.metadata.name --no-headers); \
-                                do \
-                                    if kubectl get deployment -n \$NAMESPACE | grep afm; then \
-                                        kubectl rollout restart deployment/afm -n \$NAMESPACE; \
-                                        if ! kubectl rollout status deployment/afm -n \$NAMESPACE; then \
-                                            error=1; \
-                                        fi; \
-                                    fi; \
-                                    if kubectl get deployment -n \$NAMESPACE | grep fs; then \
-                                        kubectl rollout restart deployment/fs -n \$NAMESPACE; \
-                                        if ! kubectl rollout status deployment/fs -n \$NAMESPACE; then \
-                                            error=1; \
-                                        fi; \
-                                    fi; \
-                                    if kubectl get deployment -n \$NAMESPACE | grep if; then \
-                                        kubectl rollout restart deployment/if -n \$NAMESPACE; \
-                                        if ! kubectl rollout status deployment/if -n \$NAMESPACE; then \
-                                            error=1; \
-                                        fi; \
-                                    fi; \
-                                done
-                                exit \$error
-                            """
-                    }
+                    rolloutDev()
                 }
             }
         }
-        stage('Trigger Test | Stage rollout') {	
+        stage('Trigger Test | Stage rollout') {
             when {
-                branch 'release'
-            }	
-            	
-            steps {	
-                script {	
-                    FAILED_STAGE = env.STAGE_NAME	
-                	
+                // todo rename to release
+                branch 'ozg-2502'
+            }
+
+            steps {
+                script {
+                    FAILED_STAGE = env.STAGE_NAME
+
                     def pom = readMavenPom file: 'pom.xml'
                     def version = pom.version
 
                     withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
-                        sh 'git clone https://${USER}:${TOKEN}@git.ozg-sh.de/mgm/rollout.git'
+                        sh 'git clone https://${USER}:${TOKEN}@git.ozg-sh.de/mgm/provisioning.git'
 
-                        dir('rollout') {   
-                            sh "sed -i 's/IF_ADAPTER_APP_VERSION\\=.*/IF_ADAPTER_APP_VERSION=${version}/' versions/test/versions.sh"
-                            sh "sed -i 's/IF_ADAPTER_APP_VERSION\\=.*/IF_ADAPTER_APP_VERSION=${version}/' versions/stage/versions.sh"
-
-                            sh 'git add versions/.'
-                            sh 'git config user.email "jenkins@ozg.de"'
-                            sh 'git config user.name "jenkins"'
-                            sh "git commit -m 'jenkins rollout if-adapter ${version}'"
-                            sh 'git push https://${USER}:${TOKEN}@git.ozg-sh.de/mgm/rollout.git'
+                        // todo remove
+                        dir('provisioning') {
+                            sh 'git checkout ozg-2502'
                         }
+
+                        setNewProvisioningVersion('test', version)
+                        setNewProvisioningVersion('stage', version)
+
+                        pushNewProvisioningVersion(USER, TOKEN, version)
                     }
                 }	
             }	
@@ -250,4 +222,56 @@ String getElementAccessToken() {
     withCredentials([string(credentialsId: 'element-login-json', variable: 'LOGIN_JSON')]) {
         return readJSON ( text: sh (script: '''curl -XPOST -d \"$LOGIN_JSON\" https://matrix.ozg-sh.de/_matrix/client/v3/login''', returnStdout: true)).access_token
     }
+}
+
+Void restartDeployment(namespace, deployment) {
+    sh "kubectl rollout restart deployment/${deployment} -n ${namespace}"
+    sh "kubectl rollout status deployment/${deployment} -n ${namespace}"
+}
+
+String getDeployments(namespace) {
+    return sh (script: "kubectl get deployment -n \$NAMESPACE", returnStdout: true)
+}
+
+Void rolloutDev() {
+    def namespaces = sh(script: '''kubectl get namespaces -l 'ozg-environment=dev,update-namespace notin (false)' -o custom-columns=NAME:.metadata.name --no-headers''', returnStdout: true)
+    printl "namespaces: ${namespaces}"
+
+    namespaces.each { namespace ->
+        deployments = getDeployments(namespace)
+        
+        if (deployments.contains("fs-adapter")) {
+            restartDeployment(namespace, "fs-adapter")
+        }
+
+        if (deployments.contains("afm-adapter")) {
+            restartDeployment(namespace, "afm-adapter")
+        }
+
+        if (deployments.contains("if-adapter")) {
+            restartDeployment(namespace, "if-adapter")
+        }
+    }
+}
+
+Void setNewProvisioningVersion(String environment, String version) {
+    dir("provisioning") {
+        def envFile = "playbook/inventory/versions/${environment}.yml"
+        def envVersions = readYaml file: envFile
+
+        envVersions.versions.afm_adapter.image.tag = version
+        envVersions.versions.fs_adapter.image.tag = version
+
+        writeYaml file: envFile, data: envVersions, overwrite: true
+    }
+}
+
+Void pushNewProvisioningVersion(String user, String token, String version) {
+    dir('provisioning') {
+        sh 'git add playbook/inventory/versions/.'
+        sh 'git config user.email "jenkins@ozg.de"'
+        sh 'git config user.name "jenkins"'
+        sh "git commit -m 'jenkins rollout afm-adapter fs-adapter test stage version ${version}'"
+        sh 'git push https://${USER}:${TOKEN}@git.ozg-sh.de/mgm/provisioning.git'
+    }
 }
\ No newline at end of file