diff --git a/ci-scripts/cls_cots_ue.py b/ci-scripts/cls_cots_ue.py
index 7943f698c29fb2ac6b349c8550e6c848310543f0..9474e2b7eff569d791fa5ea767a78e253066f72b 100644
--- a/ci-scripts/cls_cots_ue.py
+++ b/ci-scripts/cls_cots_ue.py
@@ -43,6 +43,7 @@ class CotsUe:
 		self.ADBUserName = ADBUserName
 		self.ADBPassWord = ADBPassWord
 		self.cots_run_mode = '' #on of off to toggle airplane mode on/off
+		self.__cots_cde_dict_file = 'cots_ue_ctl.yaml'
 		self.__SetAirplaneRetry = 3
 
 #-----------------$
@@ -59,7 +60,7 @@ class CotsUe:
 
 	def Set_Airplane(self, target_id, target_state_str):
 		#load cots commands dictionary
-		with open('cots_ue_ctl.yaml','r') as file:
+		with open(self.__cots_cde_dict_file,'r') as file:
 			cots_ue_ctl = yaml.load(file,Loader=yaml.FullLoader)
 		if target_id in cots_ue_ctl:
 			mySSH = sshconnection.SSHConnection()
@@ -89,7 +90,8 @@ class CotsUe:
 			mySSH.command('sudo adb kill-server','$',5)
 			mySSH.close()
 		else:
-			logging.error("COTS UE Id from XML could not be found in UE YAML dictionary cots_ue_ctl.yaml)
+			logging.error("COTS UE Id from XML could not be found in UE YAML dictionary " + self.__cots_cde_dict_file)
+			sys.exit("COTS UE Id from XML could not be found in UE YAML dictionary " + self.__cots_cde_dict_file)
 
 
 
diff --git a/ci-scripts/ran.py b/ci-scripts/ran.py
index 96f28e21fe3f58e19d56510c3fcac22645a2df05..c0c3045333c5ce62ed1426c61e28ce999f23cdfa 100644
--- a/ci-scripts/ran.py
+++ b/ci-scripts/ran.py
@@ -90,6 +90,7 @@ class RANManagement():
 		self.epcPcapFile = ''
 		self.htmlObj = None
 		self.epcObj = None
+		self.runtime_stats= ''
 
 
 
@@ -614,7 +615,7 @@ class RANManagement():
 			logging.debug('\u001B[1m Analyzing eNB replay logfile \u001B[0m')
 			logStatus = self.AnalyzeLogFile_eNB(extracted_log_file)
 			if self.htmlObj is not None:
-				self.htmlObj.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
+				self.htmlObj.CreateHtmlTestRow(self.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK)
 			self.eNBLogFiles[int(self.eNB_instance)] = ''
 		else:
 			analyzeFile = False
@@ -643,10 +644,10 @@ class RANManagement():
 					return
 				else:
 					if self.htmlObj is not None:
-						self.htmlObj.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
+						self.htmlObj.CreateHtmlTestRow(self.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK)
 			else:
 				if self.htmlObj is not None:
-					self.htmlObj.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
+					self.htmlObj.CreateHtmlTestRow(self.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK)
 		self.eNBmbmsEnables[int(self.eNB_instance)] = False
 		self.eNBstatuses[int(self.eNB_instance)] = -1
 
@@ -712,16 +713,20 @@ class RANManagement():
 			if runTime != '':
 				result = re.search('Time executing user inst', str(line))
 				if result is not None:
-					userTime = 'to be decoded - 1'
+					fields=line.split(':')
+					userTime = 'userTime : ' + fields[1].replace('\n','')
 				result = re.search('Time executing system inst', str(line))
 				if result is not None:
-					systemTime = 'to be decoded - 2'
+					fields=line.split(':')
+					systemTime = 'systemTime : ' + fields[1].replace('\n','')
 				result = re.search('Max. Phy. memory usage:', str(line))
 				if result is not None:
-					maxPhyMemUsage = 'to be decoded - 3'
+					fields=line.split(':')
+					maxPhyMemUsage = 'maxPhyMemUsage : ' + fields[1].replace('\n','')
 				result = re.search('Number of context switch.*process origin', str(line))
 				if result is not None:
-					nbContextSwitches = 'to be decoded - 4'
+					fields=line.split(':')
+					nbContextSwitches = 'nbContextSwitches : ' + fields[1].replace('\n','')
 			if X2HO_state == CONST.X2_HO_REQ_STATE__IDLE:
 				result = re.search('target eNB Receives X2 HO Req X2AP_HANDOVER_REQ', str(line))
 				if result is not None:
@@ -978,11 +983,12 @@ class RANManagement():
 			global_status = CONST.ENB_PROCESS_REALTIME_ISSUE
 		if self.htmlObj is not None:
 			self.htmlObj.htmleNBFailureMsg=htmleNBFailureMsg
-		# Runtime statistics
+		# Runtime statistics for console output and HTML
 		if runTime != '':
 			logging.debug(runTime)
-			logging.debug('Time executing user inst   : ' + userTime)
-			logging.debug('Time executing system inst : ' + systemTime)
-			logging.debug('Max Physical Memory Usage  : ' + maxPhyMemUsage)
-			logging.debug('Nb Context Switches        : ' + nbContextSwitches)
+			logging.debug(userTime)
+			logging.debug(systemTime)
+			logging.debug(maxPhyMemUsage)
+			logging.debug(nbContextSwitches)
+			self.runtime_stats=runTime + '\n' + userTime + '\n' + systemTime + '\n' + maxPhyMemUsage + '\n' + nbContextSwitches
 		return global_status