diff --git a/ci-scripts/Jenkinsfile-gitlab b/ci-scripts/Jenkinsfile-gitlab
index 994e6bedfdd93af8362ba3572f0e0eca86cfb102..2d89e00174b8ebfc65d7c39a6c6503563d31b177 100644
--- a/ci-scripts/Jenkinsfile-gitlab
+++ b/ci-scripts/Jenkinsfile-gitlab
@@ -416,6 +416,11 @@ pipeline {
                                 }
                             }
                         }
+                        stage ("Destroy all Virtual Machines") {
+                            steps {
+                                sh "./ci-scripts/oai-ci-vm-tool destroy --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
+                            }
+                        }
                     }
                 }
                 stage ("Test MONOLITHIC - FDD - Band 7 - B210") {
@@ -576,17 +581,10 @@ pipeline {
                 }
             }
         }
-        stage ("Destroy all Virtual Machines") {
-            steps {
-                sh "./ci-scripts/oai-ci-vm-tool destroy --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
-            }
-        }
     }
     post {
         always {
             script {
-                // Stage destroy may not be run if error in previous stage
-                sh "./ci-scripts/oai-ci-vm-tool destroy --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
                 emailext attachmentsPattern: '*results*.html',
                      body: '''Hi,
 
diff --git a/ci-scripts/Jenkinsfile-tmp-full-ran b/ci-scripts/Jenkinsfile-tmp-full-ran
index 4ade6086e8fb36d6961e31835ee41d6816b2e76d..500e4ba67418ee7764469ab211e6df2f2a8382ba 100644
--- a/ci-scripts/Jenkinsfile-tmp-full-ran
+++ b/ci-scripts/Jenkinsfile-tmp-full-ran
@@ -75,21 +75,6 @@ pipeline {
                     if (params.pythonExecutor != null) {
                         echo "eNB CI executor node  :   ${pythonExecutor}"
                     }
-                    // If not present picking a default XML file
-                    if (params.pythonTestXmlFile == null) {
-                        // picking default
-                        testXMLFile = 'xml_files/enb_usrpB210_band7_50PRB.xml'
-                        echo "Test XML file(default):   ${testXMLFile}"
-                        mainPythonAllXmlFiles += "--XMLTestFile=" + testXMLFile + " "
-                    } else {
-                        String[] myXmlTestSuite = testXMLFile.split("\\r?\\n")
-                        for (xmlFile in myXmlTestSuite) {
-                            if (fileExists("ci-scripts/" + xmlFile)) {
-                                mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
-                                echo "Test XML file         :   ${xmlFile}"
-                            }
-                        }
-                    }
                     // If not present picking a default Stage Name
                     if (params.pipelineTestStageName == null) {
                         // picking default
@@ -193,6 +178,21 @@ pipeline {
                 script {
                     dir ('ci-scripts') {
                         echo "\u2705 \u001B[32m${testStageName}\u001B[0m"
+                        // If not present picking a default XML file
+                        if (params.pythonTestXmlFile == null) {
+                            // picking default
+                            testXMLFile = 'xml_files/enb_usrpB210_band7_50PRB.xml'
+                            echo "Test XML file(default):   ${testXMLFile}"
+                            mainPythonAllXmlFiles += "--XMLTestFile=" + testXMLFile + " "
+                        } else {
+                            String[] myXmlTestSuite = testXMLFile.split("\\r?\\n")
+                            for (xmlFile in myXmlTestSuite) {
+                                if (fileExists("ci-scripts/" + xmlFile)) {
+                                    mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
+                                    echo "Test XML file         :   ${xmlFile}"
+                                }
+                            }
+                        }
                         withCredentials([
                             [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.eNB_Credentials}", usernameVariable: 'eNB_Username', passwordVariable: 'eNB_Password'],
                             [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.UE_Credentials}", usernameVariable: 'UE_Username', passwordVariable: 'UE_Password'],
diff --git a/ci-scripts/Jenkinsfile-tmp-ran b/ci-scripts/Jenkinsfile-tmp-ran
index 525ceec52502b1e74adc682d81a022d51d2d1f8b..c0a967c6276374948a5eeb1978e8af27652af4c1 100644
--- a/ci-scripts/Jenkinsfile-tmp-ran
+++ b/ci-scripts/Jenkinsfile-tmp-ran
@@ -106,21 +106,6 @@ pipeline {
                     if (params.pythonExecutor != null) {
                         echo "eNB CI executor node  :   ${pythonExecutor}"
                     }
-                    // If not present picking a default XML file
-                    if (params.pythonTestXmlFile == null) {
-                        // picking default
-                        testXMLFile = 'xml_files/enb_usrpB210_band7_50PRB.xml'
-                        echo "Test XML file(default):   ${testXMLFile}"
-                        mainPythonAllXmlFiles += "--XMLTestFile=" + testXMLFile + " "
-                    } else {
-                        String[] myXmlTestSuite = testXMLFile.split("\\r?\\n")
-                        for (xmlFile in myXmlTestSuite) {
-                            if (fileExists("ci-scripts/" + xmlFile)) {
-                                mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
-                                echo "Test XML file         :   ${xmlFile}"
-                            }
-                        }
-                    }
                     // If not present picking a default Stage Name
                     if (params.pipelineTestStageName == null) {
                         // picking default
@@ -212,6 +197,21 @@ pipeline {
                 script {
                     dir ('ci-scripts') {
                         echo "\u2705 \u001B[32m${testStageName}\u001B[0m"
+                        // If not present picking a default XML file
+                        if (params.pythonTestXmlFile == null) {
+                            // picking default
+                            testXMLFile = 'xml_files/enb_usrpB210_band7_50PRB.xml'
+                            echo "Test XML file(default):   ${testXMLFile}"
+                            mainPythonAllXmlFiles += "--XMLTestFile=" + testXMLFile + " "
+                        } else {
+                            String[] myXmlTestSuite = testXMLFile.split("\\r?\\n")
+                            for (xmlFile in myXmlTestSuite) {
+                                if (fileExists("ci-scripts/" + xmlFile)) {
+                                    mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
+                                    echo "Test XML file         :   ${xmlFile}"
+                                }
+                            }
+                        }
                         withCredentials([
                             [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.eNB_Credentials}", usernameVariable: 'eNB_Username', passwordVariable: 'eNB_Password'],
                             [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.EPC_Credentials}", usernameVariable: 'EPC_Username', passwordVariable: 'EPC_Password'],
diff --git a/ci-scripts/Jenkinsfile-tmp-ue b/ci-scripts/Jenkinsfile-tmp-ue
index 70fe29879fa3e23c4ff5c75ac62da76341e5b8a0..0464c0374f0b71030e5815188adae83b6414a81f 100644
--- a/ci-scripts/Jenkinsfile-tmp-ue
+++ b/ci-scripts/Jenkinsfile-tmp-ue
@@ -66,35 +66,6 @@ pipeline {
         ansiColor('xterm')
         lock (ciSmartPhoneResource)
     }
-    // the following parameter options are commented out so it shows the ones
-    // that you SHALL have to run the job.
-    // You can use them as template
-    /*
-    parameters {
-        //node-test parameters
-        string(name: 'pythonExecutor', defaultValue: 'nodea', description: 'Node where the pipeline - python scripts will be executed')
-        string(name: 'pythonTestXmlFile', defaultValue: 'enb_usrpB210_band7_50PRB.xml', description: 'Location of the Test XML to be run')
-        string(name: 'pipelineTestStageName', defaultValue: 'Test COTS-UE - OAI eNB - LTEBOX EPC', description: 'Naming of the Test Stage')
-        booleanParam(name: 'pipelineZipsConsoleLog', defaultValue: 'True', description: 'If true, the pipeline script retrieves the job console log, zips it and archives it as artifact')
-        string(name: 'smartphonesResource', defaultValue: 'CI-Bench-1-Phones', description: 'Lockeable Resource to prevent multiple jobs to run simultaneously with the same resource')
-
-        //eNB parameters
-        string(name: 'eNB_IPAddress', defaultValue: '192.168.XX.XX', description: 'IP Address of eNB')
-        credentials(name: 'eNB_Credentials', defaultValue: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX', credentialType: "Username with password", required: true, description: 'Credentials for eNB')
-        string(name: 'eNB_SourceCodePath', defaultValue: '/tmp/CI-enb', description: 'Full path of eNB source code')
-
-        //EPC parameters
-        string(name: 'EPC_IPAddress', defaultValue: '192.168.XX.XX', description: 'IP Address of EPC')
-        string(name: 'EPC_Type', defaultValue: 'ltebox', description: 'EPC type: OAI or ltebox')
-        credentials(name: 'EPC_Credentials', defaultValue: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX', credentialType: "Username with password", required: true, description: 'Credentials for EPC')
-        string(name: 'EPC_SourceCodePath', defaultValue: '/tmp/CI-enb', description: 'Full path of EPC source code')
-
-        //ADB server parameters
-        string(name: 'ADB_IPAddress', defaultValue: '192.168.XX.XX', description: 'IP Address of ADB server')
-        credentials(name: 'ADB_Credentials', defaultValue: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX', credentialType: "Username with password", required: true, description: 'Credentials for ADB')
-    }
-    */
-
     stages {
         stage ("Verify Parameters") {
             steps {
@@ -106,21 +77,6 @@ pipeline {
                     if (params.pythonExecutor != null) {
                         echo "eNB CI executor node  :   ${pythonExecutor}"
                     }
-                    // If not present picking a default XML file
-                    if (params.pythonTestXmlFile == null) {
-                        // picking default
-                        testXMLFile = 'xml_files/enb_usrpB210_band7_50PRB.xml'
-                        echo "Test XML file(default):   ${testXMLFile}"
-                        mainPythonAllXmlFiles += "--XMLTestFile=" + testXMLFile + " "
-                    } else {
-                        String[] myXmlTestSuite = testXMLFile.split("\\r?\\n")
-                        for (xmlFile in myXmlTestSuite) {
-                            if (fileExists("ci-scripts/" + xmlFile)) {
-                                mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
-                                echo "Test XML file         :   ${xmlFile}"
-                            }
-                        }
-                    }
                     // If not present picking a default Stage Name
                     if (params.pipelineTestStageName == null) {
                         // picking default
@@ -212,6 +168,21 @@ pipeline {
                 script {
                     dir ('ci-scripts') {
                         echo "\u2705 \u001B[32m${testStageName}\u001B[0m"
+                        // If not present picking a default XML file
+                        if (params.pythonTestXmlFile == null) {
+                            // picking default
+                            testXMLFile = 'xml_files/ue_band20_build.xml'
+                            echo "Test XML file(default):   ${testXMLFile}"
+                            mainPythonAllXmlFiles += "--XMLTestFile=" + testXMLFile + " "
+                        } else {
+                            String[] myXmlTestSuite = testXMLFile.split("\\r?\\n")
+                            for (xmlFile in myXmlTestSuite) {
+                                if (fileExists("ci-scripts/" + xmlFile)) {
+                                    mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
+                                    echo "Test XML file         :   ${xmlFile}"
+                                }
+                            }
+                        }
                         withCredentials([
                             [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.UE_Credentials}", usernameVariable: 'UE_Username', passwordVariable: 'UE_Password'],
                             [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.ADB_Credentials}", usernameVariable: 'ADB_Username', passwordVariable: 'ADB_Password']
diff --git a/ci-scripts/main.py b/ci-scripts/main.py
index 3732655898ec4acfeb66ff70d31798f83a9b6fcf..9fb546f3703550f2326ee5d68e630a922e23b330 100644
--- a/ci-scripts/main.py
+++ b/ci-scripts/main.py
@@ -335,12 +335,24 @@ class SSHConnection():
 		self.command('mkdir -p log', '\$', 5)
 		self.command('chmod 777 log', '\$', 5)
 		# no need to remove in log (git clean did the trick)
-		self.command('stdbuf -o0 ./build_oai ' + self.Build_eNB_args + ' 2>&1 | stdbuf -o0 tee compile_oai_enb.log', 'Bypassing the Tests', 600)
+		self.command('stdbuf -o0 ./build_oai ' + self.Build_eNB_args + ' 2>&1 | stdbuf -o0 tee compile_oai_enb.log', 'Bypassing the Tests|build have failed', 600)
+		self.command('ls lte_build_oai/build', '\$', 3)
+		self.command('ls lte_build_oai/build', '\$', 3)
+		buildStatus = True
+		result = re.search('lte-softmodem', str(self.ssh.before))
+		if result is None:
+			buildStatus = False
 		self.command('mkdir -p build_log_' + self.testCase_id, '\$', 5)
 		self.command('mv log/* ' + 'build_log_' + self.testCase_id, '\$', 5)
 		self.command('mv compile_oai_enb.log ' + 'build_log_' + self.testCase_id, '\$', 5)
 		self.close()
-		self.CreateHtmlTestRow(self.Build_eNB_args, 'OK', ALL_PROCESSES_OK)
+		if buildStatus:
+			self.CreateHtmlTestRow(self.Build_eNB_args, 'OK', ALL_PROCESSES_OK)
+		else:
+			logging.error('\u001B[1m Building OAI eNB Failed\u001B[0m')
+			self.CreateHtmlTestRow(self.Build_eNB_args, 'KO', ALL_PROCESSES_OK)
+			self.CreateHtmlTabFooter(False)
+			sys.exit(1)
 
 	def BuildOAIUE(self):
 		if self.UEIPAddress == '' or self.eNBRepository == '' or self.eNBBranch == '' or self.UEUserName == '' or self.UEPassword == '' or self.UESourceCodePath == '':
@@ -371,13 +383,24 @@ class SSHConnection():
 		self.command('mkdir -p log', '\$', 5)
 		self.command('chmod 777 log', '\$', 5)
 		# no need to remove in log (git clean did the trick)
-		self.command('stdbuf -o0 ./build_oai ' + self.Build_OAI_UE_args + ' 2>&1 | stdbuf -o0 tee compile_oai_ue.log', 'Bypassing the Tests', 600)
+		self.command('stdbuf -o0 ./build_oai ' + self.Build_OAI_UE_args + ' 2>&1 | stdbuf -o0 tee compile_oai_ue.log', 'Bypassing the Tests|build have failed', 600)
+		self.command('ls lte_build_oai/build', '\$', 3)
+		self.command('ls lte_build_oai/build', '\$', 3)
+		buildStatus = True
+		result = re.search('lte-uesoftmodem', str(self.ssh.before))
+		if result is None:
+			buildStatus = False
 		self.command('mkdir -p build_log_' + self.testCase_id, '\$', 5)
 		self.command('mv log/* ' + 'build_log_' + self.testCase_id, '\$', 5)
 		self.command('mv compile_oai_ue.log ' + 'build_log_' + self.testCase_id, '\$', 5)
 		self.close()
-		self.CreateHtmlTestRow(self.Build_OAI_UE_args, 'OK', ALL_PROCESSES_OK, 'OAI UE')
-
+		if buildStatus:
+			self.CreateHtmlTestRow(self.Build_OAI_UE_args, 'OK', ALL_PROCESSES_OK, 'OAI UE')
+		else:
+			logging.error('\u001B[1m Building OAI UE Failed\u001B[0m')
+			self.CreateHtmlTestRow(self.Build_OAI_UE_args, 'KO', ALL_PROCESSES_OK, 'OAI UE')
+			self.CreateHtmlTabFooter(False)
+			sys.exit(1)
 
 	def InitializeHSS(self):
 		if self.EPCIPAddress == '' or self.EPCUserName == '' or self.EPCPassword == '' or self.EPCSourceCodePath == '' or self.EPCType == '':
@@ -2660,7 +2683,6 @@ class SSHConnection():
 		else:
 			self.command('cd ' + self.EPCSourceCodePath, '\$', 5)
 			self.command('cd scripts', '\$', 5)
-			self.command('rm -f ./kill_hss.sh', '\$', 5)
 			self.command('echo ' + self.EPCPassword + ' | sudo -S daemon --name=simulated_hss --stop', '\$', 5)
 			time.sleep(1)
 			self.command('echo ' + self.EPCPassword + ' | sudo -S killall --signal SIGKILL hss_sim', '\$', 5)
diff --git a/ci-scripts/runTestOnVM.sh b/ci-scripts/runTestOnVM.sh
index 95e712c2c44e6c134c81baa24a0c7fba6dae5b71..9433167e5445d96e6300a34f4b9bd613ea206ec5 100755
--- a/ci-scripts/runTestOnVM.sh
+++ b/ci-scripts/runTestOnVM.sh
@@ -837,9 +837,9 @@ function start_l2_sim_ue {
     echo "cd /home/ubuntu/tmp/cmake_targets/lte_build_oai/build/" >> $1
     if [ $LOC_S1_CONFIGURATION -eq 0 ]
     then
-        echo "echo \"ulimit -c unlimited && ./lte-uesoftmodem -O /home/ubuntu/tmp/ci-scripts/conf_files/ci-$LOC_CONF_FILE --L2-emul 3 --num-ues $LOC_NB_UES --nokrnmod 1 --noS1\" > ./my-lte-softmodem-run.sh " >> $1
+        echo "echo \"ulimit -c unlimited && ./lte-uesoftmodem -O /home/ubuntu/tmp/ci-scripts/conf_files/ci-$LOC_CONF_FILE --L2-emul 3 --num-ues $LOC_NB_UES --nums_ue_thread $LOC_NB_UES --nokrnmod 1 --noS1\" > ./my-lte-softmodem-run.sh " >> $1
     else
-        echo "echo \"ulimit -c unlimited && ./lte-uesoftmodem -O /home/ubuntu/tmp/ci-scripts/conf_files/ci-$LOC_CONF_FILE --L2-emul 3 --num-ues $LOC_NB_UES --nokrnmod 1\" > ./my-lte-softmodem-run.sh " >> $1
+        echo "echo \"ulimit -c unlimited && ./lte-uesoftmodem -O /home/ubuntu/tmp/ci-scripts/conf_files/ci-$LOC_CONF_FILE --L2-emul 3 --num-ues $LOC_NB_UES --nums_ue_thread $LOC_NB_UES --nokrnmod 1\" > ./my-lte-softmodem-run.sh " >> $1
     fi
     echo "chmod 775 ./my-lte-softmodem-run.sh" >> $1
     echo "cat ./my-lte-softmodem-run.sh" >> $1