diff --git a/build-debian-packages-pipeline.groovy b/build-debian-packages-pipeline.groovy
index 83a23fe..8536b5e 100644
--- a/build-debian-packages-pipeline.groovy
+++ b/build-debian-packages-pipeline.groovy
@@ -23,14 +23,14 @@
 
 def uploadPpa
 try {
-  uploadPpa = UPLOAD_PPA
+  uploadPpa = UPLOAD_PPA.toBoolean()
 } catch (MissingPropertyException e) {
   uploadPpa = null
 }
 
 def uploadAptly
 try {
-  uploadAptly = UPLOAD_APTLY
+  uploadAptly = UPLOAD_APTLY.toBoolean()
 } catch (MissingPropertyException e) {
   uploadAptly = true
 }
diff --git a/build-extra-dpdk-pipeline.groovy b/build-extra-dpdk-pipeline.groovy
index fab87f7..39928dc 100644
--- a/build-extra-dpdk-pipeline.groovy
+++ b/build-extra-dpdk-pipeline.groovy
@@ -1,24 +1,46 @@
 def common = new com.mirantis.mk.Common()
 def aptly = new com.mirantis.mk.Aptly()
+def git = new com.mirantis.mk.Git()
 def timestamp = common.getDatetime()
 
+def binaryPackages
+try {
+  binaryPackages = BINARY_PACKAGES
+} catch (MissingPropertyException e) {
+  binaryPackages = ""
+}
+
 node("docker") {
   try {
+    def workspace = common.getWorkspace()
     stage("checkout") {
       sh("test -d debs && rm -rf debs || true")
       sh("test -d build && rm -rf build || true")
-      git poll: false, url: SOURCE_URL, branch: SOURCE_BRANCH, credentialsId: SOURCE_CREDENTIALS
+      git.checkoutGitRepository(
+                            ".",
+                            SOURCE_URL,
+                            SOURCE_BRANCH,
+                            SOURCE_CREDENTIALS,
+                            false,
+                            30,
+                            1
+                        )
     }
     stage("build") {
-      sh("docker run -v "+common.getWorkspace()+":"+common.getWorkspace()+" -w "+common.getWorkspace()+" --rm=true --privileged "+OS+":"+DIST+" /bin/bash -c 'apt-get update && apt-get install -y packaging-dev && ./build-debs.sh "+DIST+"'")
-      archiveArtifacts artifacts: "debs/"+DIST+"-"+ARCH+"/*.deb"
+      if (binaryPackages == "all" || binaryPackages == "") {
+        sh("docker run -v " + workspace + ":" + workspace + " -w " + workspace + " --rm=true --privileged "+OS+":" + DIST +
+            " /bin/bash -c 'apt-get update && apt-get install -y packaging-dev && ./build-debs.sh " + DIST + "'")
+      } else {
+        sh("docker run -v " + workspace + ":" + workspace + " -w " + workspace + " --rm=true --privileged "+OS+":" + DIST +
+            " /bin/bash -c 'apt-get update && apt-get install -y packaging-dev && ./build-debs.sh " + DIST + " " + binaryPackages + "'")
+      }
+      archiveArtifacts artifacts: "debs/${DIST}-${ARCH}/*.deb"
     }
     lock("aptly-api") {
       stage("upload") {
         buildSteps = [:]
         debFiles = sh script: "ls debs/"+DIST+"-"+ARCH+"/*.deb", returnStdout: true
         for (file in debFiles.tokenize()) {
-            workspace = common.getWorkspace()
             def fh = new File((workspace+"/"+file).trim())
             buildSteps[fh.name.split('_')[0]] = aptly.uploadPackageStep(
                 "debs/"+DIST+"-"+ARCH+"/"+fh.name,
diff --git a/generate-cookiecutter-products.groovy b/generate-cookiecutter-products.groovy
index d836afb..0986c4e 100644
--- a/generate-cookiecutter-products.groovy
+++ b/generate-cookiecutter-products.groovy
@@ -43,7 +43,9 @@
             }
 
             stage ('Download full Reclass model') {
-                git.checkoutGitRepository(modelEnv, RECLASS_MODEL_URL, RECLASS_MODEL_BRANCH, RECLASS_MODEL_CREDENTIALS)
+                if (RECLASS_MODEL_URL != '') {
+                    git.checkoutGitRepository(modelEnv, RECLASS_MODEL_URL, RECLASS_MODEL_BRANCH, RECLASS_MODEL_CREDENTIALS)
+                }
             }
 
             stage('Generate base infrastructure') {
@@ -124,17 +126,19 @@
             name: cfg01
             domain: ${clusterDomain}
 """
+                sh "mkdir -p ${modelEnv}/nodes/"
                 writeFile(file: nodeFile, text: nodeString)
             }
 
             stage('Inject changes to Reclass model') {
-                git.changeGitBranch(modelEnv, targetBranch)
                 def outputSource = "${env.WORKSPACE}/template/output/"
+                sh "mkdir -p ${outputDestination}"
                 sh(returnStdout: true, script: "cp -vr ${outputSource} ${outputDestination}")
             }
 
             stage ('Save changes to Reclass model') {
                 if (COMMIT_CHANGES.toBoolean()) {
+                    git.changeGitBranch(modelEnv, targetBranch)
                     git.commitGitChanges(modelEnv, "Added new cluster ${clusterName}")
                     git.pushGitChanges(modelEnv, targetBranch, 'origin', RECLASS_MODEL_CREDENTIALS)
                 }
diff --git a/update-package.groovy b/update-package.groovy
index 9441751..1dd6e02 100644
--- a/update-package.groovy
+++ b/update-package.groovy
@@ -35,13 +35,18 @@
 
         stage('List target servers') {
             minions = salt.getMinions(saltMaster, targetAll)
+
+            if (minions.isEmpty()) {
+                throw new Exception("No minion was targeted")
+            }
+
             if (TARGET_SUBSET_TEST != "") {
                 targetTestSubset = minions.subList(0, Integer.valueOf(TARGET_SUBSET_TEST)).join(' or ')
-            }
-            else {
+            } else {
                 targetTestSubset = minions.join(' or ')
             }
             targetLiveSubset = minions.subList(0, Integer.valueOf(TARGET_SUBSET_LIVE)).join(' or ')
+
             targetLiveAll = minions.join(' or ')
             common.infoMsg("Found nodes: ${targetLiveAll}")
             common.infoMsg("Selected test nodes: ${targetTestSubset}")
