diff --git a/jenkins/ci-pipelines/ci_stage_1.groovy b/jenkins/ci-pipelines/ci_stage_1.groovy
index 07d4dfd..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.
@@ -100,27 +96,15 @@
             // Jayant if the build fails the below error will cause the pipeline to terminate. 
 			// error("${project} build ${build} failed")
         }
-    } 
-	post {
-         always {
-	        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()]
-                )
-            }
-		}
-	     success {
-		    echo 'Post For success'
-                 }
-		 failure {
-		    echo 'Post For failure'
-			}
-		 unstable {
-		    echo 'Post for unstable' 
-		 }
-  }
-	
+    }
+	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'
-					}
+                    }
                 }
             }
 
