diff --git a/jenkins/ci-pipelines/ci_stage_1.groovy b/jenkins/ci-pipelines/ci_stage_1.groovy
index d3c4fa1..722f9c9 100644
--- a/jenkins/ci-pipelines/ci_stage_1.groovy
+++ b/jenkins/ci-pipelines/ci_stage_1.groovy
@@ -14,7 +14,11 @@
  *   License for the specific language governing permissions and limitations
  *   under the License.
  */
-
+/* Change log:
+ * 1. Bug 699 : Jayant Madavi, Mrityunjay Yadav : JM00553988@techmahindra.com : 23-july-2019 : Improvement to the code, now using post syntax
+ * 2.
+ */
+ 
 stage_3_merge_result = ''
 def Get_MDG(project) {
     // split the project.
@@ -88,23 +92,31 @@
         downstream_job_name = "${mdg}-${stage_name}/${GERRIT_BRANCH}"
 
         println("TEST_INSTALL = ${params.TEST_INSTALL}, downstream job: ${downstream_job_name}")
+        try {
+           stage_3_merge_result = build job: "${downstream_job_name}", parameters: downstream_params, propagate: true
+            if (stage_3_merge_result.getResult() != 'SUCCESS') {
+                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")
+            }
+		} 
+		catch (caughtError) {
+		 echo 'Exception in stage_1'
+		 currentBuild.result = 'FAILURE'
+		}
+		finally {
+			 if((${currentBuild.result} != 'SUCCESS') && (${env.JOB_NAME} == '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}"  """,
+                   to: 'OSM_MDL@list.etsi.org',
+                   recipientProviders: [culprits()]
+                )
+            }
 
-        stage_3_merge_result = build job: "${downstream_job_name}", parameters: downstream_params, propagate: true
-        if (stage_3_merge_result.getResult() != 'SUCCESS') {
-            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")
-        }
-    }
-	stage('Send Email') {
-        if((stage_3_merge_result.getResult() != 'SUCCESS') && (${env.JOB_NAME} == 'daily-stage_4')){
-            emailext (
-                subject: "[OSM-Jenkins] Job: ${env.JOB_NAME} Build: ${env.BUILD_NUMBER} Result: ${stage_3_merge_result.getResult()}",
-                body: """ Check console output at "${env.BUILD_URL}"  """,
-                to: 'OSM_MDL@list.etsi.org',
-                recipientProviders: [culprits()]
-            )
-        }
-    }
-}
+		}
+    } 
+
+	
+ }
diff --git a/jenkins/ci-pipelines/ci_stage_3.groovy b/jenkins/ci-pipelines/ci_stage_3.groovy
index 1a4c009..1809d02 100644
--- a/jenkins/ci-pipelines/ci_stage_3.groovy
+++ b/jenkins/ci-pipelines/ci_stage_3.groovy
@@ -14,7 +14,12 @@
  *   License for the specific language governing permissions and limitations
  *   under the License.
  */
-
+ 
+/* Change log:
+ * 1. Bug 745 : Jayant Madavi, Mrityunjay Yadav : JM00553988@techmahindra.com : 23-july-2019 : Improvement to the code, typically we have 2 *    or more branches whose build gets triggered, ex master & release branch, the previous code was removing any/all docker. 
+ *	  Now removing previous docker of the same branch, so that the other branch failed docker should not be removed. It also 
+ *    acts as clean-up for previous docker remove failure.
+ */
 properties([
     parameters([
         string(defaultValue: env.GERRIT_BRANCH, description: '', name: 'GERRIT_BRANCH'),
@@ -230,7 +235,7 @@
                         repo_base_url = "-u ${params.REPOSITORY_BASE}"
                     }
 					if ( params.DO_STAGE_4 ) {
-                        sh "docker stack list |  awk '{ print \$1 }'| xargs docker stack rm"
+                        sh "docker stack list |grep \"${container_name_prefix}\"|  awk '{ print \$1 }'| xargs docker stack rm"
 					}
                     sh """
                         export PATH=$PATH:/snap/bin
@@ -258,7 +263,10 @@
 
                     if ( ! currentBuild.result.equals('UNSTABLE') ) {
                         stage_archive = keep_artifacts
-                    }
+                    } else {
+					   error = new Exception("Smoke test failed")
+					   currentBuild.result = 'FAILURE'
+					}
                 }
             }
 
@@ -270,7 +278,10 @@
 
                     if ( ! currentBuild.result.equals('UNSTABLE') ) {
                         stage_archive = keep_artifacts
-                    }
+                    } else {
+					   error = new Exception("Systest test failed")
+					   currentBuild.result = 'FAILURE'
+					}
                 }
             }
 
