diff --git a/jenkins/ci-pipelines/ci_stage_1.groovy b/jenkins/ci-pipelines/ci_stage_1.groovy
index 0f530c5..261e12f 100644
--- a/jenkins/ci-pipelines/ci_stage_1.groovy
+++ b/jenkins/ci-pipelines/ci_stage_1.groovy
@@ -59,12 +59,6 @@
             println("No gerrit event found")
         }
 
-        do_stage_4 = false
-        if (params.DO_STAGE_4)
-        {
-            do_stage_4 = params.DO_STAGE_4
-        }
-
         // pipeline running from gerrit trigger.
         // kickoff the downstream multibranch pipeline
         def downstream_params = [
@@ -75,10 +69,16 @@
             string(name: 'PROJECT_URL_PREFIX', value: params.PROJECT_URL_PREFIX),
             string(name: 'DOCKER_TAG', value: params.DOCKER_TAG),
             booleanParam(name: 'TEST_INSTALL', value: params.TEST_INSTALL),
-            booleanParam(name: 'DO_ROBOT', value: params.DO_ROBOT),
-            booleanParam(name: 'DO_STAGE_4', value: do_stage_4),
         ]
-     
+        if ( params.DO_ROBOT )
+        {
+            downstream_params.add(booleanParam(name: 'DO_ROBOT', value: params.DO_ROBOT))
+        }
+        if ( params.ROBOT_TAG )
+        {
+            downstream_params.add(booleanParam(name: 'ROBOT_TAG', value: params.ROBOT_TAG))
+        }
+
         if ( params.STAGE )
         {
             // go directly to stage 3 (osm system)
@@ -101,8 +101,8 @@
                 project = stage_3_merge_result.getProjectName()
                 build = stage_3_merge_result.getNumber()
                 // Jayant if the build fails the below error will cause the pipeline to terminate. 
-			    // error("${project} build ${build} failed")
-				currentBuild.result = stage_3_merge_result.getResult()
+                // error("${project} build ${build} failed")
+                currentBuild.result = stage_3_merge_result.getResult()
             }
 	}
         catch(caughtError) {
@@ -111,7 +111,7 @@
         }
         finally {
             try {
-                if((currentBuild.result != 'SUCCESS') && (env.JOB_NAME == 'daily-stage_4')){
+                if ((currentBuild.result != 'SUCCESS') && (env.JOB_NAME.startsWith('daily-stage_4'))){
                     emailext (
                         subject: "[OSM-Jenkins] Job: ${env.JOB_NAME} Build: ${env.BUILD_NUMBER} Result: ${currentBuild.result}",
                         body: """ Check console output at "${env.BUILD_URL}"  """,
diff --git a/jenkins/ci-pipelines/ci_stage_3.groovy b/jenkins/ci-pipelines/ci_stage_3.groovy
index f5fa75d..d42c6dd 100644
--- a/jenkins/ci-pipelines/ci_stage_3.groovy
+++ b/jenkins/ci-pipelines/ci_stage_3.groovy
@@ -35,15 +35,13 @@
         booleanParam(defaultValue: false, description: '', name: 'SAVE_CONTAINER_ON_FAIL'),
         booleanParam(defaultValue: false, description: '', name: 'SAVE_CONTAINER_ON_PASS'),
         booleanParam(defaultValue: true, description: '', name: 'SAVE_ARTIFACTS_ON_SMOKE_SUCCESS'),
-        booleanParam(defaultValue: true, description: '', name: 'DO_STAGE_4'),
         booleanParam(defaultValue: true, description: '',  name: 'DO_BUILD'),
         booleanParam(defaultValue: true, description: '', name: 'DO_INSTALL'),
-        booleanParam(defaultValue: true, description: '', name: 'DO_SMOKE'),
         booleanParam(defaultValue: true, description: '', name: 'DO_DOCKERPUSH'),
         booleanParam(defaultValue: false, description: '', name: 'SAVE_ARTIFACTS_OVERRIDE'),
         string(defaultValue: '/home/jenkins/hive/openstack-etsi.rc', description: '', name: 'HIVE_VIM_1'),
-        booleanParam(defaultValue: false, description: '', name: 'DO_ROBOT'),
-        string(defaultValue: 'daily', description: 'sanity/regression/daily are the common options', name: 'TEST_NAME'),
+        booleanParam(defaultValue: true, description: '', name: 'DO_ROBOT'),
+        string(defaultValue: 'sanity', description: 'sanity/regression/daily are the common options', name: 'ROBOT_TAG'),
         string(defaultValue: '/home/jenkins/hive/robot-systest.cfg', description: '', name: 'ROBOT_VIM'),
         string(defaultValue: '/home/jenkins/hive/kubeconfig.yaml', description: '', name: 'KUBECONFIG'),
         string(defaultValue: '/home/jenkins/hive/clouds.yaml', description: '', name: 'CLOUDS'),
@@ -475,56 +473,53 @@
                         osmHostname = IP_ADDRESS
                     }
                 } // stage("Install")
-            } // if ( params.DO_INSTALL )
-
 ///////////////////////////////////////////////////////////////////////////////////////
 // Health check of installed OSM in remote vm
 ///////////////////////////////////////////////////////////////////////////////////////
-            if ( params.DO_SMOKE ) {
                 stage("OSM Health") {
                     stackName = "osm"
                     sshCommand remote: remote, command: """
                         /usr/share/osm-devops/installers/osm_health.sh -k -s ${stackName}
                     """
-                }
+                } // stage("OSM Health")
             }
+            } // if ( params.DO_INSTALL )
+
 
 ///////////////////////////////////////////////////////////////////////////////////////
 // Execute Robot tests
 ///////////////////////////////////////////////////////////////////////////////////////
             stage_archive = false
-            if ( params.DO_STAGE_4 ) {
+            if ( params.DO_ROBOT ) {
                 try {
                     stage("System Integration Test") {
-                        if ( params.DO_ROBOT ) {
-                            if( useCharmedInstaller ) {
-                                tempdir = sh(returnStdout: true, script: "mktemp -d").trim()
-                                sh(script: "touch ${tempdir}/hosts")
-                                hostfile="${tempdir}/hosts"
-                                sh """cat << EOF > ${hostfile}
+                        if ( useCharmedInstaller ) {
+                            tempdir = sh(returnStdout: true, script: "mktemp -d").trim()
+                            sh(script: "touch ${tempdir}/hosts")
+                            hostfile="${tempdir}/hosts"
+                            sh """cat << EOF > ${hostfile}
 127.0.0.1           localhost
 ${remote.host}      prometheus.${remote.host}.xip.io nbi.${remote.host}.xip.io
 EOF"""
-                            } else {
-                                hostfile=null
-                            }
-
-                            jujuPassword=sshCommand remote: remote, command: """
-                                echo `juju gui 2>&1 | grep password | cut -d: -f2`
-                            """
-
-                            run_robot_systest(
-                                container_name,
-                                params.TEST_NAME,
-                                osmHostname,
-                                prometheusHostname,
-                                prometheusPort,
-                                params.ROBOT_VIM,
-                                params.KUBECONFIG,
-                                params.CLOUDS,
-                                hostfile,
-                                jujuPassword)
+                        } else {
+                            hostfile=null
                         }
+
+                        jujuPassword=sshCommand remote: remote, command: """
+                            echo `juju gui 2>&1 | grep password | cut -d: -f2`
+                        """
+
+                        run_robot_systest(
+                            container_name,
+                            params.ROBOT_TAG,
+                            osmHostname,
+                            prometheusHostname,
+                            prometheusPort,
+                            params.ROBOT_VIM,
+                            params.KUBECONFIG,
+                            params.CLOUDS,
+                            hostfile,
+                            jujuPassword)
                     } // stage("System Integration Test")
                 } finally {
                     stage("Archive Container Logs") {
@@ -540,7 +535,7 @@
                         }
                     }
                 }
-            } // if ( params.DO_STAGE_4 )
+            } // if ( params.DO_ROBOT )
 
             if ( params.SAVE_ARTIFACTS_OVERRIDE || stage_archive ) {
                 stage("Archive") {
