diff --git a/jenkins/ci-pipelines/ci_stage_1.groovy b/jenkins/ci-pipelines/ci_stage_1.groovy
index 51a619f..d3c4fa1 100644
--- a/jenkins/ci-pipelines/ci_stage_1.groovy
+++ b/jenkins/ci-pipelines/ci_stage_1.groovy
@@ -14,11 +14,7 @@
  *   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.
@@ -92,31 +88,23 @@
         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 c8cecf8..1a4c009 100644
--- a/jenkins/ci-pipelines/ci_stage_3.groovy
+++ b/jenkins/ci-pipelines/ci_stage_3.groovy
@@ -14,13 +14,7 @@
  *   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'),
@@ -236,7 +230,7 @@
                         repo_base_url = "-u ${params.REPOSITORY_BASE}"
                     }
 					if ( params.DO_STAGE_4 ) {
-                        sh "docker stack list |grep "${container_name_prefix}"|  awk '{ print \$1 }'| xargs docker stack rm"
+                        sh "docker stack list |  awk '{ print \$1 }'| xargs docker stack rm"
 					}
                     sh """
                         export PATH=$PATH:/snap/bin
@@ -264,10 +258,7 @@
 
                     if ( ! currentBuild.result.equals('UNSTABLE') ) {
                         stage_archive = keep_artifacts
-                    } else {
-					   error = new Exception("Smoke test failed")
-					   currentBuild.result = 'FAILURE'
-					}
+                    }
                 }
             }
 
@@ -279,10 +270,7 @@
 
                     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 b9f926a..f7a4ab7 100755
--- a/tools/license_scan.sh
+++ b/tools/license_scan.sh
@@ -17,8 +17,7 @@
 
 # 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. 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. 
+# 2.
  
 echo GERRIT BRANCH is $GERRIT_BRANCH
 dpkg -l wget &>/dev/null ||sudo apt-get install -y wget
@@ -75,8 +74,7 @@
 fi
 
 if [ $nolicense -gt 0 ]; then
-    echo "FATAL: Unlicensed files found"
-	exit 2
+    echo "WARNING: Unlicensed files found"
 fi
 
 exit 0
