diff --git a/ci-scripts/Jenkinsfile-tmp-ran b/ci-scripts/Jenkinsfile-tmp-ran
index 78f62cd8ebde1472cf747098e05ec1e19d3e3ad4..4db4ec0b2de51b0bb294f99e9b93589b34fc26c0 100644
--- a/ci-scripts/Jenkinsfile-tmp-ran
+++ b/ci-scripts/Jenkinsfile-tmp-ran
@@ -320,7 +320,7 @@ pipeline {
                             }
                             if(fileExists("ci-scripts/test_results.html")) {
                                 sh "mv ci-scripts/test_results.html test_results-${JOB_NAME}.html"
-                                sh "sed -i -e 's#TEMPLATE_JOB_NAME#${JOB_NAME}#' -e 's#TEMPLATE_BUILD_ID#${BUILD_ID}#' test_results-${JOB_NAME}.html"
+                                sh "sed -i -e 's#TEMPLATE_JOB_NAME#${JOB_NAME}#' -e 's#TEMPLATE_BUILD_ID#<a href=\"${BUILD_URL}\">${BUILD_ID}</a>#' test_results-${JOB_NAME}.html"
                                 archiveArtifacts "test_results-${JOB_NAME}.html"
                             }
                         }
diff --git a/ci-scripts/main.py b/ci-scripts/main.py
index d172d6654538f05d124b33cb44eb75d9b4d2528a..e66d25204b7b01eeaec55c5ca9f0081f3f616ac1 100644
--- a/ci-scripts/main.py
+++ b/ci-scripts/main.py
@@ -277,7 +277,11 @@ class SSHConnection():
 			Usage()
 			sys.exit('Insufficient Parameter')
 		initialize_eNB_flag = True
-		self.CheckProcessExist(initialize_eNB_flag)
+		pStatus = self.CheckProcessExist(initialize_eNB_flag)
+		if (pStatus < 0):
+			self.CreateHtmlTestRow(self.Initialize_eNB_args, 'KO', pStatus)
+			self.CreateHtmlFooter()
+			sys.exit(1)
 		self.open(self.eNBIPAddress, self.eNBUserName, self.eNBPassword)
 		self.command('cd ' + self.eNBSourceCodePath, '\$', 5)
 		# Initialize_eNB_args usually start with -O and followed by the location in repository
@@ -422,7 +426,11 @@ class SSHConnection():
 			Usage()
 			sys.exit('Insufficient Parameter')
 		initialize_eNB_flag = False
-		self.CheckProcessExist(initialize_eNB_flag)
+		pStatus = self.CheckProcessExist(initialize_eNB_flag)
+		if (pStatus < 0):
+			self.CreateHtmlTestRow('N/A', 'KO', pStatus)
+			self.CreateHtmlFooter()
+			sys.exit(1)
 		multi_jobs = []
 		status_queue = SimpleQueue()
 		lock = Lock()
@@ -435,7 +443,7 @@ class SSHConnection():
 			job.join()
 
 		if (status_queue.empty()):
-			self.CreateHtmlTestRow('N/A', 'KO', len(self.UEDevices))
+			self.CreateHtmlTestRow('N/A', 'KO', 0)
 			sys.exit(1)
 		else:
 			attach_status = True
@@ -472,7 +480,11 @@ class SSHConnection():
 			Usage()
 			sys.exit('Insufficient Parameter')
 		initialize_eNB_flag = False
-		self.CheckProcessExist(initialize_eNB_flag)
+		pStatus = self.CheckProcessExist(initialize_eNB_flag)
+		if (pStatus < 0):
+			self.CreateHtmlTestRow('N/A', 'KO', pStatus)
+			self.CreateHtmlFooter()
+			sys.exit(1)
 		multi_jobs = []
 		for device_id in self.UEDevices:
 			p = Process(target = SSH.DetachUE_common, args = (device_id,))
@@ -527,7 +539,11 @@ class SSHConnection():
 			Usage()
 			sys.exit('Insufficient Parameter')
 		initialize_eNB_flag = False
-		self.CheckProcessExist(initialize_eNB_flag)
+		pStatus = self.CheckProcessExist(initialize_eNB_flag)
+		if (pStatus < 0):
+			self.CreateHtmlTestRow('N/A', 'KO', pStatus)
+			self.CreateHtmlFooter()
+			sys.exit(1)
 		multi_jobs = []
 		for device_id in self.UEDevices:
 			p = Process(target = SSH.RebootUE_common, args = (device_id,))
@@ -649,7 +665,11 @@ class SSHConnection():
 			Usage()
 			sys.exit('Insufficient Parameter')
 		initialize_eNB_flag = False
-		self.CheckProcessExist(initialize_eNB_flag)
+		pStatus = self.CheckProcessExist(initialize_eNB_flag)
+		if (pStatus < 0):
+			self.CreateHtmlTestRow(self.ping_args, 'KO', pStatus)
+			self.CreateHtmlFooter()
+			sys.exit(1)
 		self.GetAllUEIPAddresses()
 		multi_jobs = []
 		i = 0
@@ -666,7 +686,7 @@ class SSHConnection():
 			job.join()
 
 		if (status_queue.empty()):
-			self.CreateHtmlTestRow(self.ping_args, 'KO', len(self.UEDevices))
+			self.CreateHtmlTestRow(self.ping_args, 'KO', 0)
 			self.CreateHtmlFooter()
 			sys.exit(1)
 		else:
@@ -1073,7 +1093,11 @@ class SSHConnection():
 			Usage()
 			sys.exit('Insufficient Parameter')
 		initialize_eNB_flag = False
-		self.CheckProcessExist(initialize_eNB_flag)
+		pStatus = self.CheckProcessExist(initialize_eNB_flag)
+		if (pStatus < 0):
+			self.CreateHtmlTestRow(self.iperf_args, 'KO', pStatus)
+			self.CreateHtmlFooter()
+			sys.exit(1)
 		self.GetAllUEIPAddresses()
 		multi_jobs = []
 		i = 0
@@ -1091,7 +1115,7 @@ class SSHConnection():
 			job.join()
 
 		if (status_queue.empty()):
-			self.CreateHtmlTestRow(self.iperf_args, 'KO', len(self.UEDevices))
+			self.CreateHtmlTestRow(self.iperf_args, 'KO', 0)
 			self.CreateHtmlFooter()
 			sys.exit(1)
 		else:
@@ -1120,39 +1144,53 @@ class SSHConnection():
 
 	def CheckProcessExist(self, initialize_eNB_flag):
 		multi_jobs = []
-		p = Process(target = SSH.CheckHSSProcess, args = ())
+		status_queue = SimpleQueue()
+		p = Process(target = SSH.CheckHSSProcess, args = (status_queue,))
 		p.daemon = True
 		p.start()
 		multi_jobs.append(p)
-		p = Process(target = SSH.CheckMMEProcess, args = ())
+		p = Process(target = SSH.CheckMMEProcess, args = (status_queue,))
 		p.daemon = True
 		p.start()
 		multi_jobs.append(p)
-		p = Process(target = SSH.CheckSPGWProcess, args = ())
+		p = Process(target = SSH.CheckSPGWProcess, args = (status_queue,))
 		p.daemon = True
 		p.start()
 		multi_jobs.append(p)
 		if initialize_eNB_flag == False:
-			p = Process(target = SSH.CheckeNBProcess, args = ())
+			p = Process(target = SSH.CheckeNBProcess, args = (status_queue,))
 			p.daemon = True
 			p.start()
 			multi_jobs.append(p)
 		for job in multi_jobs:
 			job.join()
 
-	def CheckeNBProcess(self):
+		if (status_queue.empty()):
+			return -15
+		else:
+			result = 0
+			while (not status_queue.empty()):
+				status = status_queue.get()
+				if (status < 0):
+					result = status
+			return result
+
+	def CheckeNBProcess(self, status_queue):
 		try:
 			self.open(self.eNBIPAddress, self.eNBUserName, self.eNBPassword)
 			self.command('stdbuf -o0 ps -aux | grep -v grep | grep --color=never lte-softmodem', '\$', 5)
 			result = re.search('lte-softmodem', str(self.ssh.before))
 			if result is None:
 				logging.debug('\u001B[1;37;41m eNB Process Not Found! \u001B[0m')
-				sys.exit(1)
+				#sys.exit(1)
+				status_queue.put(-1)
+			else:
+				status_queue.put(1)
 			self.close()
 		except:
 			os.kill(os.getppid(),signal.SIGUSR1)
 
-	def CheckHSSProcess(self):
+	def CheckHSSProcess(self, status_queue):
 		try:
 			self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
 			self.command('stdbuf -o0 ps -aux | grep -v grep | grep --color=never hss', '\$', 5)
@@ -1162,12 +1200,15 @@ class SSHConnection():
 				result = re.search('hss_sim s6as diam_hss', str(self.ssh.before))
 			if result is None:
 				logging.debug('\u001B[1;37;41m HSS Process Not Found! \u001B[0m')
-				sys.exit(1)
+				status_queue.put(-2)
+				#sys.exit(1)
+			else:
+				status_queue.put(2)
 			self.close()
 		except:
 			os.kill(os.getppid(),signal.SIGUSR1)
 
-	def CheckMMEProcess(self):
+	def CheckMMEProcess(self, status_queue):
 		try:
 			self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
 			self.command('stdbuf -o0 ps -aux | grep -v grep | grep --color=never mme', '\$', 5)
@@ -1177,12 +1218,15 @@ class SSHConnection():
 				result = re.search('mme', str(self.ssh.before))
 			if result is None:
 				logging.debug('\u001B[1;37;41m MME Process Not Found! \u001B[0m')
-				sys.exit(1)
+				status_queue.put(-3)
+				#sys.exit(1)
+			else:
+				status_queue.put(3)
 			self.close()
 		except:
 			os.kill(os.getppid(),signal.SIGUSR1)
 
-	def CheckSPGWProcess(self):
+	def CheckSPGWProcess(self, status_queue):
 		try:
 			self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
 			if re.match('OAI', self.EPCType, re.IGNORECASE):
@@ -1193,7 +1237,10 @@ class SSHConnection():
 				result = re.search('xGw', str(self.ssh.before))
 			if result is None:
 				logging.debug('\u001B[1;37;41m SPGW Process Not Found! \u001B[0m')
-				sys.exit(1)
+				status_queue.put(-4)
+				#sys.exit(1)
+			else:
+				status_queue.put(4)
 			self.close()
 		except:
 			os.kill(os.getppid(),signal.SIGUSR1)
@@ -1396,7 +1443,7 @@ class SSHConnection():
 			self.htmlFile.write('  <table border = "1">\n')
 			self.htmlFile.write('     <tr>\n')
 			self.htmlFile.write('       <td bgcolor = "lightcyan" >GIT Repository</td>\n')
-			self.htmlFile.write('       <td>' + SSH.eNBRepository + '</td>\n')
+			self.htmlFile.write('       <td><a href="' + SSH.eNBRepository + '">' + SSH.eNBRepository + '</a></td>\n')
 			self.htmlFile.write('     </tr>\n')
 			self.htmlFile.write('     <tr>\n')
 			self.htmlFile.write('       <td bgcolor = "lightcyan" >Job Trigger</td>\n')
@@ -1454,7 +1501,7 @@ class SSHConnection():
 			self.htmlFile.close()
 		self.htmlFooterCreated = False
 
-	def CreateHtmlTestRow(self, options, status, ue_status):
+	def CreateHtmlTestRow(self, options, status, processesStatus):
 		if ((not self.htmlFooterCreated) and (self.htmlHeaderCreated)):
 			self.htmlFile.write('      <tr>\n')
 			self.htmlFile.write('        <td bgcolor = "lightcyan" >' + SSH.testCase_id  + '</td>\n')
@@ -1463,15 +1510,23 @@ class SSHConnection():
 			if (str(status) == 'OK'):
 				self.htmlFile.write('        <td bgcolor = "lightgreen" >' + str(status)  + '</td>\n')
 			elif (str(status) == 'KO'):
-				self.htmlFile.write('        <td bgcolor = "lightcoral" >' + str(status)  + '</td>\n')
+				if (processesStatus == 0):
+					self.htmlFile.write('        <td bgcolor = "lightcoral" >' + str(status)  + '</td>\n')
+				elif (processesStatus == -1):
+					self.htmlFile.write('        <td bgcolor = "lightcoral" >KO - eNB process not found</td>\n')
+				elif (processesStatus == -2):
+					self.htmlFile.write('        <td bgcolor = "lightcoral" >KO - HSS process not found</td>\n')
+				elif (processesStatus == -3):
+					self.htmlFile.write('        <td bgcolor = "lightcoral" >KO - MME process not found</td>\n')
+				elif (processesStatus == -4):
+					self.htmlFile.write('        <td bgcolor = "lightcoral" >KO - SPGW process not found</td>\n')
+				else:
+					self.htmlFile.write('        <td bgcolor = "lightcoral" >' + str(status)  + '</td>\n')
 			else:
 				self.htmlFile.write('        <td bgcolor = "orange" >' + str(status)  + '</td>\n')
 			i = 0
 			while (i < self.htmlUEConnected):
-				if (i < ue_status):
-					self.htmlFile.write('        <td>-</td>\n')
-				else:
-					self.htmlFile.write('        <td>-</td>\n')
+				self.htmlFile.write('        <td>-</td>\n')
 				i += 1
 			self.htmlFile.write('      </tr>\n')