diff --git a/Jenkinsfile b/Jenkinsfile
index 1f909ef5a02c987fd514c45aa951701dc36094ca..4e78a4bfc6138433bd452183744d592a28c3f4b0 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -105,50 +105,27 @@ pipeline {
             }
         }
 
-        stage('Push Docker image') {
+        stage('Tag and Push Docker image') {
             steps {
                 script {
                     FAILED_STAGE=env.STAGE_NAME
-                    def pom = readMavenPom file: 'pom.xml'
-                    def version = pom.version
-
-                    container("docker") {
-                        withCredentials([usernamePassword(credentialsId: 'jenkins-docker-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
-                            sh 'docker login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}'
-
-							//intelliform adapter
-                            sh "docker tag docker.ozg-sh.de/intelliform-adapter:build-latest docker.ozg-sh.de/intelliform-adapter:${env.BRANCH_NAME}-${version}"
-                            sh "docker push docker.ozg-sh.de/intelliform-adapter:${env.BRANCH_NAME}-${version}"
-
-                            if (env.BRANCH_NAME == 'master') {
-                                sh 'docker tag docker.ozg-sh.de/intelliform-adapter:build-latest docker.ozg-sh.de/intelliform-adapter:snapshot-latest'
-                                sh 'docker push docker.ozg-sh.de/intelliform-adapter:snapshot-latest'
-                            }
-
-                            if (env.BRANCH_NAME == 'release') {
-                                sh 'docker tag docker.ozg-sh.de/intelliform-adapter:build-latest docker.ozg-sh.de/intelliform-adapter:latest'
-                                sh 'docker push docker.ozg-sh.de/intelliform-adapter:latest'
-                            }
-                            
-                            //formsolutions adapter
-                            sh "docker tag docker.ozg-sh.de/formsolutions-adapter:build-latest docker.ozg-sh.de/formsolutions-adapter:${env.BRANCH_NAME}-${version}"
-                            sh "docker push docker.ozg-sh.de/formsolutions-adapter:${env.BRANCH_NAME}-${version}"
-
-                            if (env.BRANCH_NAME == 'master') {
-                                sh 'docker tag docker.ozg-sh.de/formsolutions-adapter:build-latest docker.ozg-sh.de/formsolutions-adapter:snapshot-latest'
-                                sh 'docker push docker.ozg-sh.de/formsolutions-adapter:snapshot-latest'
-                            }
-
-                            if (env.BRANCH_NAME == 'release') {
-                                sh 'docker tag docker.ozg-sh.de/formsolutions-adapter:build-latest docker.ozg-sh.de/formsolutions-adapter:latest'
-                                sh 'docker push docker.ozg-sh.de/formsolutions-adapter:latest'
-                            }
-                        }
+                    IMAGE_TAG = generateImageTag()
+
+                    tagAndPushDockerImage('intelliform-adapter', IMAGE_TAG)
+                    tagAndPushDockerImage('formsolutions-adapter', IMAGE_TAG)
+
+                    if (env.BRANCH_NAME == 'master') {
+                        tagAndPushDockerImage('intelliform-adapter', 'snapshot-latest')
+                        tagAndPushDockerImage('formsolutions-adapter', 'snapshot-latest')
+                    }
+                    else if (env.BRANCH_NAME == 'release') {
+                        tagAndPushDockerImage('intelliform-adapter', 'latest')
+                        tagAndPushDockerImage('formsolutions-adapter', 'latest')
                     }
                 }
             }
         }
-        stage('Rollout Dev Intelliform-Adapter') {
+        stage('Trigger Dev rollout') {
             when {
                 branch 'master'
             }
@@ -156,38 +133,31 @@ pipeline {
                 script {
                     FAILED_STAGE = env.STAGE_NAME
 
-                    rolloutDev()
+                    checkoutProvisioningRepo()
+
+                    setNewProvisioningVersion('dev')
+
+                    pushNewProvisioningVersion('dev')
                 }
             }
         }
         stage('Trigger Test | Stage rollout') {
             when {
-                // todo rename to release
-                branch 'ozg-2502'
+                branch 'release'
             }
 
             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/provisioning.git'
-
-                        // todo remove
-                        dir('provisioning') {
-                            sh 'git checkout ozg-2502'
-                        }
+                    checkoutProvisioningRepo()
 
-                        setNewProvisioningVersion('test', version)
-                        setNewProvisioningVersion('stage', version)
+                    setNewProvisioningVersion('test')
+                    setNewProvisioningVersion('stage')
 
-                        pushNewProvisioningVersion(USER, TOKEN, version)
-                    }
-                }	
-            }	
+                    pushNewProvisioningVersion('test stage')
+                }
+            }
         }
     }
     post {
@@ -224,54 +194,64 @@ String getElementAccessToken() {
     }
 }
 
-Void restartDeployment(namespace, deployment) {
-    sh "kubectl rollout restart deployment/${deployment} -n ${namespace}"
-    sh "kubectl rollout status deployment/${deployment} -n ${namespace}"
+Void setNewProvisioningVersion(String environment) {
+    dir("provisioning") {
+        def envFile = "playbook/inventory/versions/${environment}.yml"
+        def envVersions = readYaml file: envFile
+
+        envVersions.versions.afm_adapter.image.tag = IMAGE_TAG
+        envVersions.versions.fs_adapter.image.tag = IMAGE_TAG
+
+        writeYaml file: envFile, data: envVersions, overwrite: true
+    }
 }
 
-String getDeployments(namespace) {
-    return sh (script: "kubectl get deployment -n \$NAMESPACE", returnStdout: true)
+Void pushNewProvisioningVersion(String environment) {
+    withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
+        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 ${environment} afm-adapter fs-adapter version ${IMAGE_TAG}'"
+            sh 'git push https://${USER}:${TOKEN}@git.ozg-sh.de/mgm/provisioning.git'
+        }
+    }
 }
 
-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}"
+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'
 
-    namespaces.each { namespace ->
-        deployments = getDeployments(namespace)
-        
-        if (deployments.contains("fs-adapter")) {
-            restartDeployment(namespace, "fs-adapter")
+        // todo remove git checkout
+        dir('provisioning') {
+            sh 'git checkout ozg-2502'
         }
+    }
+}
 
-        if (deployments.contains("afm-adapter")) {
-            restartDeployment(namespace, "afm-adapter")
-        }
+Void tagAndPushDockerImage(String imageName, 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}'
 
-        if (deployments.contains("if-adapter")) {
-            restartDeployment(namespace, "if-adapter")
+            sh "docker tag docker.ozg-sh.de/${imageName}:build-latest docker.ozg-sh.de/${imageName}:${newTag}"
+            sh "docker push docker.ozg-sh.de/${imageName}:${newTag}"
         }
     }
 }
 
-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
+String getPomVersion(String pomFile){
+    def pom = readMavenPom file: pomFile
 
-        writeYaml file: envFile, data: envVersions, overwrite: true
-    }
+    return pom.version
 }
 
-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'
+String generateImageTag() {
+    def imageTag = "${env.BRANCH_NAME}-${getPomVersion('pom.xml')}"
+
+    if (env.BRANCH_NAME == 'master') {
+        imageTag += "-${env.GIT_COMMIT.take(7)}"
     }
+
+    return imageTag
 }
\ No newline at end of file