diff --git a/build-debian-packages-jmx-exporter.groovy b/build-debian-packages-jmx-exporter.groovy
index 92bea47..d356f69 100644
--- a/build-debian-packages-jmx-exporter.groovy
+++ b/build-debian-packages-jmx-exporter.groovy
@@ -4,11 +4,16 @@
 def dockerLib = new com.mirantis.mk.Docker()
 
 def timestamp = common.getDatetime()
+def javaversion = "8"
 
 node('docker') {
     try {
         def img = dockerLib.getImage("tcpcloud/debian-build-ubuntu-${DIST}")
 
+        if ("${DIST}" == "trusty") {
+        	javaversion = "7"
+        }
+
         img.inside ("-u root:root") {
             sh("rm -rf * || true")
         }
@@ -27,8 +32,8 @@
 
         img.inside ("-u root:root") {
             stage("Build") {
-                sh("sed -i \"s/TIMESTAMP/${timestamp}/g\" \$(find -name pom.xml)")
-                sh("sudo apt-get update && sudo apt-get install -y openjdk-8-jdk maven")
+                sh("sed -i \"s/TIMESTAMP/${timestamp}/g\" \$(find ./ -name pom.xml)")
+                sh("sudo apt-get update && sudo apt-get install -y openjdk-${javaversion}-jdk maven")
                 sh("cd jmx-exporter-${timestamp} && mvn package")
             }
         }
@@ -36,7 +41,7 @@
         if (UPLOAD_APTLY.toBoolean()) {
             stage("upload package") {
                 def buildSteps = [:]
-                def debFiles = sh script: "find -name *.deb", returnStdout: true
+                def debFiles = sh script: "find ./ -name *.deb", returnStdout: true
                 def debFilesArray = debFiles.trim().tokenize()
                 def workspace = common.getWorkspace()
                 for (int i = 0; i < debFilesArray.size(); i++) {
diff --git a/cicd-lab-pipeline.groovy b/cicd-lab-pipeline.groovy
index 3ac17b5..a12e29a 100644
--- a/cicd-lab-pipeline.groovy
+++ b/cicd-lab-pipeline.groovy
@@ -218,17 +218,17 @@
                 // Postgres client - initialize OSS services databases
                 timeout(300){
                     println "Waiting for postgresql database to come up.."
-                    salt.cmdRun(saltMaster, 'I@docker:swarm:role:master', 'while true; do if docker service logs postgresql_db | grep "ready to accept"; then break; else sleep 5; fi; done')
+                    salt.cmdRun(saltMaster, 'I@postgresql:client', 'while true; do if docker service logs postgresql_db | grep "ready to accept"; then break; else sleep 5; fi; done')
                 }
-                salt.enforceState(saltMaster, 'I@docker:swarm:role:master', 'postgresql.client')
+                salt.enforceState(saltMaster, 'I@postgresql:client', 'postgresql.client', true, false)
 
                 // Setup postgres database with integration between
                 // Pushkin notification service and Security Monkey security audit service
                 timeout(10) {
                     println "Waiting for Pushkin to come up.."
-                    salt.cmdRun(saltMaster, 'I@docker:swarm:role:master', 'while true; do curl -sf 172.16.10.254:8887/apps >/dev/null && break; done')
+                    salt.cmdRun(saltMaster, 'I@postgresql:client', 'while true; do curl -sf 172.16.10.254:8887/apps >/dev/null && break; done')
                 }
-                salt.enforceState(saltMaster, 'I@docker:swarm:role:master', 'postgresql.client', true)
+                salt.enforceState(saltMaster, 'I@postgresql:client', 'postgresql.client', true)
 
                 // Rundeck
                 timeout(10) {
@@ -324,7 +324,10 @@
             // Cleanup
             if (HEAT_STACK_DELETE.toBoolean() == true) {
                 stage('Trigger cleanup job') {
-                    build job: 'deploy-stack-cleanup', parameters: [[$class: 'StringParameterValue', name: 'STACK_NAME', value: HEAT_STACK_NAME]]
+                    build(job: 'deploy-stack-cleanup', parameters: [
+                        [$class: 'StringParameterValue', name: 'STACK_NAME', value: HEAT_STACK_NAME],
+                        [$class: 'StringParameterValue', name: 'OPENSTACK_API_PROJECT', value: OPENSTACK_API_PROJECT],
+                    ])
                 }
             }
         }
