diff --git a/jenkins/ci-pipelines/ci_stage_1.groovy b/jenkins/ci-pipelines/ci_stage_1.groovy
index d3c4fa1..51a619f 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 : 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((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()]
+                )
+            }
 
-        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..c8cecf8 100644
--- a/jenkins/ci-pipelines/ci_stage_3.groovy
+++ b/jenkins/ci-pipelines/ci_stage_3.groovy
@@ -14,7 +14,13 @@
  *   License for the specific language governing permissions and limitations
  *   under the License.
  */
-
+ 
+/* Change log:
+ * 1. Bug 745 : Jayant Madavi : 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 +236,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 +264,10 @@
 
                     if ( ! currentBuild.result.equals('UNSTABLE') ) {
                         stage_archive = keep_artifacts
-                    }
+                    } else {
+					   error = new Exception("Smoke test failed")
+					   currentBuild.result = 'FAILURE'
+					}
                 }
             }
 
@@ -270,7 +279,10 @@
 
                     if ( ! currentBuild.result.equals('UNSTABLE') ) {
                         stage_archive = keep_artifacts
-                    }
+                    } else {
+					   error = new Exception("Systest test failed")
+					   currentBuild.result = 'FAILURE'
+					}
                 }
             }
 
diff --git a/tools/license_scan.sh b/tools/license_scan.sh
index f7a4ab7..b9f926a 100755
--- a/tools/license_scan.sh
+++ b/tools/license_scan.sh
@@ -17,7 +17,8 @@
 
 # Change log:
 # 1. Bug 722 : Jayant Madavi : JM00553988@techmahindra.com : Enhancement to use new fossology server. Had to change the variable name at #    couple of places, while scanning the variable name was adding curl as a license.
-# 2.
+# 2. Bug 542 : Jayant Madavi : JM00553988@techmahindra.com : 24-jul-2019 : Enhancement to raise exit in case files modified or added does #    not contain license.
+# 3. 
  
 echo GERRIT BRANCH is $GERRIT_BRANCH
 dpkg -l wget &>/dev/null ||sudo apt-get install -y wget
@@ -74,7 +75,8 @@
 fi
 
 if [ $nolicense -gt 0 ]; then
-    echo "WARNING: Unlicensed files found"
+    echo "FATAL: Unlicensed files found"
+	exit 2
 fi
 
 exit 0
