diff --git a/tag-git-repos.groovy b/tag-git-repos.groovy
index bb3f7a5..68229a6 100644
--- a/tag-git-repos.groovy
+++ b/tag-git-repos.groovy
@@ -29,6 +29,9 @@
             def repos = GIT_REPO_LIST.tokenize('\n')
             def repoUrl, repoName, repoCommit, repoArray
             for (repo in repos){
+                if(repo.startsWith('#'))
+                  common.warningMsg("Skipping:" + repo.toString())
+                  continue
                 if(repo.trim().indexOf(' ') == -1){
                     throw new IllegalArgumentException("Wrong format of repository and commit input")
                 }
@@ -49,4 +52,4 @@
             throw e
         }
     }
-}
\ No newline at end of file
+}
diff --git a/test-drivetrain.groovy b/test-drivetrain.groovy
index 21d1a8a..594e171 100644
--- a/test-drivetrain.groovy
+++ b/test-drivetrain.groovy
@@ -8,6 +8,7 @@
  *   TARGET_MCP_VERSION                            MCP version to upgrade to
  *   FUNC_TEST_SETTINGS                            Settings for functional tests
  *   ENVIRONMENT_IP                                IP of already deployed environment
+ *   DELETE_STACK                                  Option to delete Heat Stack
  */
 
 
@@ -34,10 +35,21 @@
 }
 
 def runJobOnJenkins(jenkinsUrl, userName, password, jobName, parameters){
+    def status = "null"
     def jenkinsDownCmd = "curl -OL ${jenkinsUrl}/jnlpJars/jenkins-cli.jar --output ./jenkins-cli.jar"
-    def runJobFromSaltMasterCmd = "java -jar jenkins-cli.jar -s ${jenkinsUrl} -noKeyAuth -auth admin:${password} build ${jobName} ${parameters} -s | grep -E 'SUCCESS|UNSTABLE'"
+    def runJobFromSaltMasterCmd = "java -jar jenkins-cli.jar -s ${jenkinsUrl} -noKeyAuth -auth ${userName}:${password} build ${jobName} ${parameters} -w"
+    def waitJobFromSaltMasterCmd = "curl -s -X GET '${jenkinsUrl}/job/${jobName}/lastBuild/api/json?tree=result' --user ${userName}:${password} | jq -r '.result'"
     salt.cmdRun(pepperEnv, "I@salt:master", jenkinsDownCmd)
     salt.cmdRun(pepperEnv, "I@salt:master", runJobFromSaltMasterCmd)
+    while (status == "null" || status.contains("parse error")){
+        status = salt.cmdRun(pepperEnv, "I@salt:master", waitJobFromSaltMasterCmd, false)
+        status = status.get("return")[0].values()[0].trim()
+        println("The job ${jobName} result is $status")
+        if(status == "FAILURE"){
+            throw new Exception("The job ${jobName} result is FAILURE.")
+        }
+        sleep(10)
+    }
 }
 
 timeout(time: 12, unit: 'HOURS') {
@@ -48,8 +60,8 @@
             def saltCreds = [:]
             def mcpEnvJobIP
 
-            if(ENVIRONMENT_IP == ""){
-                stage('Trigger deploy job') {
+            stage('Trigger deploy job') {
+                if(ENVIRONMENT_IP == ""){
                     mcpEnvJob = build(job: "create-mcp-env", parameters: [
                         [$class: 'StringParameterValue', name: 'OS_AZ', value: 'mcp-mk'],
                         [$class: 'StringParameterValue', name: 'OS_PROJECT_NAME', value: 'mcp-mk'],
@@ -59,12 +71,11 @@
                         [$class: 'BooleanParameterValue', name: 'RUN_TESTS', value: false],
                         [$class: 'TextParameterValue', name: 'COOKIECUTTER_TEMPLATE_CONTEXT', value: COOKIECUTTER_TEMPLATE_CONTEXT]
                     ])
+                    def mcpEnvJobDesc = mcpEnvJob.getDescription().tokenize(" ")
+                    mcpEnvJobIP = mcpEnvJobDesc[2]
+                }else{
+                    mcpEnvJobIP = ENVIRONMENT_IP
                 }
-
-                def mcpEnvJobDesc = mcpEnvJob.getDescription().tokenize(" ")
-                mcpEnvJobIP = mcpEnvJobDesc[2]
-            }else{
-                mcpEnvJobIP = ENVIRONMENT_IP
             }
 
             def saltMasterUrl = "http://${mcpEnvJobIP}:6969"
@@ -94,6 +105,15 @@
                 //runJobOnJenkins(jenkinsUrl, "admin", stackCicdPassword, "cvp-dt-func", "-p SETTINGS=${FUNC_TEST_SETTINGS}")
             }
 
+            stage('Delete Heat Stack') {
+                if(DELETE_STACK.toBoolean()){
+                    mcpEnvJob = build(job: "delete-heat-stack-for-mcp-env", parameters: [
+                        [$class: 'StringParameterValue', name: 'OS_PROJECT_NAME', value: 'mcp-mk'],
+                        [$class: 'StringParameterValue', name: 'STACK_NAME', value: 'jenkins-drivetrain-test-' + currentBuild.number],
+                    ])
+                }
+            }
+
         } catch (Throwable e) {
             currentBuild.result = 'FAILURE'
             throw e
