diff --git a/ci-scripts/Jenkinsfile-gitlab b/ci-scripts/Jenkinsfile-gitlab
index ded95eff03cf5726c5f5ba2f427d37041e77d139..af3fb1073057ee320ce3dcebf814f57cf532a48f 100644
--- a/ci-scripts/Jenkinsfile-gitlab
+++ b/ci-scripts/Jenkinsfile-gitlab
@@ -40,7 +40,7 @@ pipeline {
         disableConcurrentBuilds()
         timestamps()
         gitLabConnection('OAI GitLab')
-        gitlabBuilds(builds: ["Build eNb-USRP", "Build basic-sim", "Build phy-sim", "Build eNb-ethernet", "Build UE-ethernet", "Analysis with cppcheck", "Test phy-sim"])
+        gitlabBuilds(builds: ["Build eNb-USRP", "Build basic-sim", "Build phy-sim", "Build eNb-ethernet", "Build UE-ethernet", "Analysis with cppcheck", "Test phy-sim", "Test-FDD-Band7"])
         ansiColor('xterm')
     }
 
@@ -197,15 +197,17 @@ pipeline {
                         expression {doRedHatBuild}
                     }
                     steps {
-                        script {
-                            try {
-                                withCredentials([
-                                    [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.RedHatRemoteCredentials}", usernameVariable: 'RH_Username', passwordVariable: 'RH_Password']
-                                ]) {
-                                    sh "./ci-scripts/buildOnRH.sh --workspace $WORKSPACE --job-name ${JOB_NAME} --build-id ${BUILD_ID} --remote-host ${params.RedHatRemoteServer} --remote-path ${params.RedHatWorkingPath} --remote-user-name ${RH_Username} --remote-password ${RH_Password}"
+                        gitlabCommitStatus(name: "Build eNb-USRP-CentOS") {
+                            script {
+                                try {
+                                    withCredentials([
+                                        [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.RedHatRemoteCredentials}", usernameVariable: 'RH_Username', passwordVariable: 'RH_Password']
+                                    ]) {
+                                        sh "./ci-scripts/buildOnRH.sh --workspace $WORKSPACE --job-name ${JOB_NAME} --build-id ${BUILD_ID} --remote-host ${params.RedHatRemoteServer} --remote-path ${params.RedHatWorkingPath} --remote-user-name ${RH_Username} --remote-password ${RH_Password}"
+                                    }
+                                } catch (Exception e) {
+                                    echo "Red Hat build failed not an error now"
                                 }
-                            } catch (Exception e) {
-                                echo "Red Hat build failed not an error now"
                             }
                         }
                     }
@@ -260,23 +262,25 @@ pipeline {
                 }
 		stage ("Test FDD - Band 7 - B210") {
                     steps {
-                        script {
-                            if ("MERGE".equals(env.gitlabActionType)) {
-                                build job: 'eNB-CI-FDD-Band7-B210',
-                                   parameters: [
-                                       string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
-                                       string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
-                                       string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
-                                       booleanParam(name: 'eNB_mergeRequest', value: true)
-                                   ]
-                            } else {
-                                build job: 'eNB-CI-FDD-Band7-B210',
-                                   parameters: [
-                                       string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
-                                       string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
-                                       string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
-                                       booleanParam(name: 'eNB_mergeRequest', value: false)
-                                   ]
+                        gitlabCommitStatus(name: "Test-FDD-Band7") {
+                            script {
+                                if ("MERGE".equals(env.gitlabActionType)) {
+                                    build job: 'eNB-CI-FDD-Band7-B210',
+                                       parameters: [
+                                           string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
+                                           string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)),
+                                           string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)),
+                                           booleanParam(name: 'eNB_mergeRequest', value: true)
+                                       ]
+                                } else {
+                                    build job: 'eNB-CI-FDD-Band7-B210',
+                                       parameters: [
+                                           string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)),
+                                           string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)),
+                                           string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)),
+                                           booleanParam(name: 'eNB_mergeRequest', value: false)
+                                       ]
+                                }
                             }
                         }
                     }
diff --git a/ci-scripts/Jenkinsfile-tmp-ran b/ci-scripts/Jenkinsfile-tmp-ran
index 796271a8d4e260916354e87866d8fc79b7192a7e..78f62cd8ebde1472cf747098e05ec1e19d3e3ad4 100644
--- a/ci-scripts/Jenkinsfile-tmp-ran
+++ b/ci-scripts/Jenkinsfile-tmp-ran
@@ -44,9 +44,12 @@ termStatusArray[termSPGW] = false
 termStatusArray[termMME] = false
 termStatusArray[termHSS] = false
 
+// Global Parameters. Normally they should be populated when the master job
+// triggers the slave job with parameters
 def eNB_Repository
 def eNB_Branch
 def eNB_CommitID
+def eNB_AllowMergeRequestProcess = false
 
 pipeline {
     agent {
@@ -118,7 +121,7 @@ pipeline {
                     if (params.eNB_Credentials == null) {
                         allParametersPresent = false
                     }
-                    // the following 3 parameters should be pushed by the master trigger
+                    // the following 4 parameters should be pushed by the master trigger
                     // if not present, take the job GIT variables (used for developing)
                     if (params.eNB_Repository == null) {
                         eNB_Repository = env.GIT_URL
@@ -138,6 +141,9 @@ pipeline {
                         eNB_CommitID = params.eNB_CommitID
                     }
                     echo "eNB_CommitID          :   ${eNB_CommitID}"
+                    if (params.eNB_mergeRequest != null) {
+                        eNB_AllowMergeRequestProcess = params.eNB_mergeRequest
+                    }
 
                     if (params.EPC_IPAddress == null) {
                         allParametersPresent = false
@@ -179,7 +185,7 @@ pipeline {
                                 [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.EPC_Credentials}", usernameVariable: 'EPC_Username', passwordVariable: 'EPC_Password'],
                                 [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.ADB_Credentials}", usernameVariable: 'ADB_Username', passwordVariable: 'ADB_Password']
                             ]) {
-                                sh "python3 main.py --mode=TesteNB --eNBIPAddress=${params.eNB_IPAddress} --eNBRepository=${eNB_Repository} --eNBBranch=${eNB_Branch} --eNBCommitID=${eNB_CommitID} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --eNBSourceCodePath=${params.eNB_SourceCodePath} --EPCIPAddress=${params.EPC_IPAddress} --EPCType=${params.EPC_Type} --EPCUserName=${EPC_Username} --EPCPassword=${EPC_Password} --EPCSourceCodePath=${params.EPC_SourceCodePath} --ADBIPAddress=${params.ADB_IPAddress} --ADBUserName=${ADB_Username} --ADBPassword=${ADB_Password} --XMLTestFile=${testXMLFile}"
+                                sh "python3 main.py --mode=TesteNB --eNBIPAddress=${params.eNB_IPAddress} --eNBRepository=${eNB_Repository} --eNBBranch=${eNB_Branch} --eNBCommitID=${eNB_CommitID} --eNB_AllowMerge=${eNB_AllowMergeRequestProcess} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --eNBSourceCodePath=${params.eNB_SourceCodePath} --EPCIPAddress=${params.EPC_IPAddress} --EPCType=${params.EPC_Type} --EPCUserName=${EPC_Username} --EPCPassword=${EPC_Password} --EPCSourceCodePath=${params.EPC_SourceCodePath} --ADBIPAddress=${params.ADB_IPAddress} --ADBUserName=${ADB_Username} --ADBPassword=${ADB_Password} --XMLTestFile=${testXMLFile}"
                             }
                         } catch (Exception e) {
                             currentBuild.result = 'FAILURE'
@@ -312,6 +318,11 @@ pipeline {
                             if(fileExists("enb.log.${env.BUILD_ID}.zip")) {
                                 archiveArtifacts "enb.log.${env.BUILD_ID}.zip"
                             }
+                            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"
+                                archiveArtifacts "test_results-${JOB_NAME}.html"
+                            }
                         }
                     }
                 }
diff --git a/ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf b/ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf
index 2feb577f68b6807ec96bac78f7f0132fd771c325..2bd28a60df37f1ac70518eed908139d8b3110ea2 100644
--- a/ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf
+++ b/ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf
@@ -220,7 +220,7 @@ RUs = (
          att_rx         = 0;
          bands          = [7];
          max_pdschReferenceSignalPower = -27;
-         max_rxgain                    = 125;
+         max_rxgain                    = 115;
          eNB_instances  = [0];
 
     }
diff --git a/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf b/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf
index 38df1a28e50ed26c617bd333a8512fd17a69c0ba..102fc89a13b6fde8a8192202f320b1edf2e10467 100644
--- a/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf
+++ b/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf
@@ -220,7 +220,7 @@ RUs = (
          att_rx         = 0;
          bands          = [7];
          max_pdschReferenceSignalPower = -27;
-         max_rxgain                    = 125;
+         max_rxgain                    = 115;
          eNB_instances  = [0];
 
     }
diff --git a/ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf b/ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf
index 213f2bbcd36d2997468e7425194c0e7d99cb5583..fe6e2f0b59589f9ec4ab462b87fbbeb1c0379cf9 100644
--- a/ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf
+++ b/ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf
@@ -220,7 +220,7 @@ RUs = (
          att_rx         = 0;
          bands          = [7];
          max_pdschReferenceSignalPower = -27;
-         max_rxgain                    = 125;
+         max_rxgain                    = 115;
          eNB_instances  = [0];
 
     }
diff --git a/ci-scripts/main.py b/ci-scripts/main.py
index 656b1d11a7f055b3f1cd0d93cc3f086f17398ed8..85e27acb6967c8dacf1ccafc8557506219b623ab 100644
--- a/ci-scripts/main.py
+++ b/ci-scripts/main.py
@@ -59,6 +59,7 @@ class SSHConnection():
 		self.eNBIPAddress = ''
 		self.eNBRepository = ''
 		self.eNBBranch = ''
+		self.eNB_AllowMerge = False
 		self.eNBCommitID = ''
 		self.eNBUserName = ''
 		self.eNBPassword = ''
@@ -82,6 +83,10 @@ class SSHConnection():
 		self.iperf_packetloss_threshold = ''
 		self.UEDevices = []
 		self.UEIPAddresses = []
+		self.htmlFile = ''
+		self.htmlHeaderCreated = False
+		self.htmlFooterCreated = False
+		self.htmlUEConnected = 0
 
 	def open(self, ipaddress, username, password):
 		self.ssh = pexpect.spawn('ssh', [username + '@' + ipaddress], timeout = 5)
@@ -165,8 +170,9 @@ class SSHConnection():
 			self.command('git checkout -f ' + self.eNBCommitID, '\$', 5)
 		# if the branch is not develop, then it is a merge request and we need to do 
 		# the potential merge. Note that merge conflicts should already been checked earlier
-		if (self.eNBBranch != 'develop') and (self.eNBBranch != 'origin/develop'):
-			self.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 5)
+		if (self.eNB_AllowMerge):
+			if (self.eNBBranch != 'develop') and (self.eNBBranch != 'origin/develop'):
+				self.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 5)
 		self.command('source oaienv', '\$', 5)
 		self.command('cd cmake_targets', '\$', 5)
 		self.command('mkdir -p  log', '\$', 5)
@@ -176,6 +182,7 @@ class SSHConnection():
 		self.command('echo ' + self.eNBPassword + ' | sudo -S mv log/* ' + 'build_log_' + SSH.testCase_id, '\$', 5)
 		self.command('echo ' + self.eNBPassword + ' | sudo -S mv compile_oai_enb.log ' + 'build_log_' + SSH.testCase_id, '\$', 5)
 		self.close()
+		self.CreateHtmlTestRow(self.Build_eNB_args, 'OK', 0)
 
 	def InitializeHSS(self):
 		if self.EPCIPAddress == '' or self.EPCUserName == '' or self.EPCPassword == '' or self.EPCSourceCodePath == '' or self.EPCType == '':
@@ -196,6 +203,7 @@ class SSHConnection():
 			self.command('echo ' + self.EPCPassword + ' | sudo -S rm -f hss.log daemon.log', '\$', 5)
 			self.command('echo ' + self.EPCPassword + ' | sudo -S echo "Starting sudo session" && sudo daemon --unsafe --name=simulated_hss --chdir=/opt/hss_sim0609 ./starthss_real  ', '\$', 5)
 		self.close()
+		self.CreateHtmlTestRow(self.EPCType, 'OK', 0)
 
 	def InitializeMME(self):
 		if self.EPCIPAddress == '' or self.EPCUserName == '' or self.EPCPassword == '' or self.EPCSourceCodePath == '' or self.EPCType == '':
@@ -217,6 +225,7 @@ class SSHConnection():
 			self.command('cd /opt/ltebox/tools', '\$', 5)
 			self.command('echo ' + self.EPCPassword + ' | sudo -S ./start_mme', '\$', 5)
 		self.close()
+		self.CreateHtmlTestRow(self.EPCType, 'OK', 0)
 
 	def InitializeSPGW(self):
 		if self.EPCIPAddress == '' or self.EPCUserName == '' or self.EPCPassword == '' or self.EPCSourceCodePath == '' or self.EPCType == '':
@@ -232,6 +241,7 @@ class SSHConnection():
 			self.command('cd /opt/ltebox/tools', '\$', 5)
 			self.command('echo ' + self.EPCPassword + ' | sudo -S ./start_xGw', '\$', 5)
 		self.close()
+		self.CreateHtmlTestRow(self.EPCType, 'OK', 0)
 
 	def InitializeeNB(self):
 		if self.eNBIPAddress == '' or self.eNBUserName == '' or self.eNBPassword == '' or self.eNBSourceCodePath == '':
@@ -264,6 +274,7 @@ class SSHConnection():
 			if (loopCounter == 0):
 				doLoop = False
 				logging.debug('\u001B[1;37;43m eNB logging system did not show got sync! See with attach later \u001B[0m')
+				self.CreateHtmlTestRow(config_file, 'eNB not showing got sync!', 0)
 				# Not getting got sync is bypassed for the moment
 				#sys.exit(1)
 			self.command('stdbuf -o0 cat enb_' + SSH.testCase_id + '.log', '\$', 10)
@@ -272,6 +283,7 @@ class SSHConnection():
 				time.sleep(6)
 			else:
 				doLoop = False
+				self.CreateHtmlTestRow(config_file, 'OK', 0)
 				logging.debug('\u001B[1m Initialize eNB Completed\u001B[0m')
 
 		self.close()
@@ -304,6 +316,7 @@ class SSHConnection():
 			multi_jobs.append(p)
 		for job in multi_jobs:
 			job.join()
+		self.CreateHtmlTestRow('N/A', 'OK', 0)
 
 	def AttachUE_common(self, device_id):
 		try:
@@ -351,6 +364,7 @@ class SSHConnection():
 			multi_jobs.append(p)
 		for job in multi_jobs:
 			job.join()
+		self.CreateHtmlTestRow('N/A', 'OK', len(self.UEDevices))
 
 	def DetachUE_common(self, device_id):
 		try:
@@ -375,6 +389,7 @@ class SSHConnection():
 			multi_jobs.append(p)
 		for job in multi_jobs:
 			job.join()
+		self.CreateHtmlTestRow('N/A', 'OK', 0)
 
 	def RebootUE_common(self, device_id):
 		try:
@@ -429,6 +444,7 @@ class SSHConnection():
 			multi_jobs.append(p)
 		for job in multi_jobs:
 			job.join()
+		self.CreateHtmlTestRow('N/A', 'OK', 0)
 
 	def GetAllUEDevices(self, terminate_ue_flag):
 		if self.ADBIPAddress == '' or self.ADBUserName == '' or self.ADBPassword == '':
@@ -522,6 +538,7 @@ class SSHConnection():
 			i = i + 1
 		for job in multi_jobs:
 			job.join()
+		self.CreateHtmlTestRow(self.ping_args, 'OK', 0)
 
 	def Iperf_common(self, lock, UE_IPAddress, device_id, ue_num):
 		try:
@@ -658,6 +675,7 @@ class SSHConnection():
 			i = i + 1
 		for job in multi_jobs:
 			job.join()
+		self.CreateHtmlTestRow(self.iperf_args, 'OK', 0)
 
 	def CheckProcessExist(self, initialize_eNB_flag):
 		multi_jobs = []
@@ -751,6 +769,7 @@ class SSHConnection():
 		if result is not None:
 			self.command('echo ' + self.eNBPassword + ' | sudo -S killall --signal SIGKILL lte-softmodem || true', '\$', 5)
 		self.close()
+		self.CreateHtmlTestRow('N/A', 'OK', 0)
 
 	def TerminateHSS(self):
 		self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
@@ -772,6 +791,7 @@ class SSHConnection():
 			self.command('echo ' + self.EPCPassword + ' | sudo -S ./kill_hss.sh', '\$', 5)
 			self.command('rm ./kill_hss.sh', '\$', 5)
 		self.close()
+		self.CreateHtmlTestRow('N/A', 'OK', 0)
 
 	def TerminateMME(self):
 		self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
@@ -800,6 +820,7 @@ class SSHConnection():
 			self.command('cd /opt/ltebox/tools', '\$', 5)
 			self.command('echo ' + self.EPCPassword + ' | sudo -S ./stop_xGw', '\$', 5)
 		self.close()
+		self.CreateHtmlTestRow('N/A', 'OK', 0)
 
 	def TerminateUE_common(self, device_id):
 		try:
@@ -827,6 +848,7 @@ class SSHConnection():
 			multi_jobs.append(p)
 		for job in multi_jobs:
 			job.join()
+		self.CreateHtmlTestRow('N/A', 'OK', 0)
 
 	def LogCollectBuild(self):
 		self.open(self.eNBIPAddress, self.eNBUserName, self.eNBPassword)
@@ -903,6 +925,115 @@ class SSHConnection():
 			self.command('zip spgw.log.zip xGwLog.0', '\$', 60)
 		self.close()
 #-----------------------------------------------------------
+# HTML Reporting....
+#-----------------------------------------------------------
+	def CreateHtmlHeader(self):
+		if (not self.htmlHeaderCreated):
+			self.htmlFile = open('test_results.html', 'w')
+			self.htmlFile.write('<!DOCTYPE html>\n')
+			self.htmlFile.write('<html class="no-js" lang="en-US">\n')
+			self.htmlFile.write('<head>\n')
+			self.htmlFile.write('  <title>Test Results for TEMPLATE_JOB_NAME job build #TEMPLATE_BUILD_ID</title>\n')
+			self.htmlFile.write('  <base href = "http://www.openairinterface.org/" />\n')
+			self.htmlFile.write('</head>\n')
+			self.htmlFile.write('<body>\n')
+			self.htmlFile.write('  <table style="border-collapse: collapse; border: none;">\n')
+			self.htmlFile.write('    <tr style="border-collapse: collapse; border: none;">\n')
+			self.htmlFile.write('      <td style="border-collapse: collapse; border: none;">\n')
+			self.htmlFile.write('        <a href="http://www.openairinterface.org/">\n')
+			self.htmlFile.write('           <img src="/wp-content/uploads/2016/03/cropped-oai_final_logo2.png" alt="" border="none" height=50 width=150>\n')
+			self.htmlFile.write('           </img>\n')
+			self.htmlFile.write('        </a>\n')
+			self.htmlFile.write('      </td>\n')
+			self.htmlFile.write('      <td style="border-collapse: collapse; border: none; vertical-align: center;">\n')
+			self.htmlFile.write('        <b><font size = "6">Job Summary -- Job: TEMPLATE_JOB_NAME -- Build-ID: TEMPLATE_BUILD_ID</font></b>\n')
+			self.htmlFile.write('      </td>\n')
+			self.htmlFile.write('    </tr>\n')
+			self.htmlFile.write('  </table>\n')
+			self.htmlFile.write('  <br>\n')
+			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('     </tr>\n')
+			self.htmlFile.write('     <tr>\n')
+			self.htmlFile.write('       <td bgcolor = "lightcyan" >Job Trigger</td>\n')
+			if (SSH.eNB_AllowMerge):
+				self.htmlFile.write('       <td>Merge-Request</td>\n')
+			else:
+				self.htmlFile.write('       <td>Push to Branch</td>\n')
+			self.htmlFile.write('     </tr>\n')
+			self.htmlFile.write('     <tr>\n')
+			if (SSH.eNB_AllowMerge):
+				self.htmlFile.write('       <td bgcolor = "lightcyan" >Source Branch</td>\n')
+			else:
+				self.htmlFile.write('       <td bgcolor = "lightcyan" >Branch</td>\n')
+			self.htmlFile.write('       <td>' + SSH.eNBBranch + '</td>\n')
+			self.htmlFile.write('     </tr>\n')
+			self.htmlFile.write('     <tr>\n')
+			if (SSH.eNB_AllowMerge):
+				self.htmlFile.write('       <td bgcolor = "lightcyan" >Source Commit ID</td>\n')
+			else:
+				self.htmlFile.write('       <td bgcolor = "lightcyan" >Commit ID</td>\n')
+			self.htmlFile.write('       <td>' + SSH.eNBCommitID + '</td>\n')
+			self.htmlFile.write('     </tr>\n')
+			if (SSH.eNB_AllowMerge):
+				self.htmlFile.write('     <tr>\n')
+				self.htmlFile.write('       <td bgcolor = "lightcyan" >Target Branch</td>\n')
+				self.htmlFile.write('       <td>develop</td>\n')
+				self.htmlFile.write('     </tr>\n')
+			self.htmlFile.write('  </table>\n')
+
+			terminate_ue_flag = True
+			SSH.GetAllUEDevices(terminate_ue_flag)
+			self.htmlUEConnected = len(self.UEDevices)
+			self.htmlFile.write('<h2>' + str(self.htmlUEConnected) + ' UE(s) is(are) connected to ADB bench server</h2>\n')
+
+			self.htmlFile.write('  <br>\n')
+			self.htmlFile.write('  <h2>Test Summary for ' + SSH.testXMLfile + '</h2>\n')
+			self.htmlFile.write('  <table border = "1">\n')
+			self.htmlFile.write('      <tr bgcolor = "#33CCFF" >\n')
+			self.htmlFile.write('        <th>Test Id</th>\n')
+			self.htmlFile.write('        <th>Test Desc</th>\n')
+			self.htmlFile.write('        <th>Test Options</th>\n')
+			self.htmlFile.write('        <th>Test Status</th>\n')
+			i = 0
+			while (i < self.htmlUEConnected):
+				self.htmlFile.write('        <th>UE' + str(i) + ' Status</th>\n')
+				i += 1
+			self.htmlFile.write('      </tr>\n')
+		self.htmlHeaderCreated = True
+
+	def CreateHtmlFooter(self):
+		if ((not self.htmlFooterCreated) and (self.htmlHeaderCreated)):
+			self.htmlFile.write('  </table>\n')
+			self.htmlFile.write('</body>\n')
+			self.htmlFile.write('</html>\n')
+			self.htmlFile.close()
+		self.htmlFooterCreated = False
+
+	def CreateHtmlTestRow(self, options, status, ue_status):
+		if ((not self.htmlFooterCreated) and (self.htmlHeaderCreated)):
+			self.htmlFile.write('      <tr>\n')
+			self.htmlFile.write('        <td bgcolor = "lightcyan" >' + SSH.testCase_id  + '</td>\n')
+			self.htmlFile.write('        <td>' + SSH.desc  + '</td>\n')
+			self.htmlFile.write('        <td>' + str(options)  + '</td>\n')
+			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')
+			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')
+				i += 1
+			self.htmlFile.write('      </tr>\n')
+
+#-----------------------------------------------------------
 # Usage()
 #-----------------------------------------------------------
 def Usage():
@@ -998,6 +1129,11 @@ while len(argvs) > 1:
 	elif re.match('^\-\-eNBRepository=(.+)$', myArgv, re.IGNORECASE):
 		matchReg = re.match('^\-\-eNBRepository=(.+)$', myArgv, re.IGNORECASE)
 		SSH.eNBRepository = matchReg.group(1)
+	elif re.match('^\-\-eNB_AllowMerge=(.+)$', myArgv, re.IGNORECASE):
+		matchReg = re.match('^\-\-eNB_AllowMerge=(.+)$', myArgv, re.IGNORECASE)
+		doMerge = matchReg.group(1)
+		if ((doMerge == 'true') or (doMerge == 'True')):
+			SSH.eNB_AllowMerge = True
 	elif re.match('^\-\-eNBBranch=(.+)$', myArgv, re.IGNORECASE):
 		matchReg = re.match('^\-\-eNBBranch=(.+)$', myArgv, re.IGNORECASE)
 		SSH.eNBBranch = matchReg.group(1)
@@ -1116,6 +1252,8 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE):
 		Usage()
 		sys.exit('Insufficient Parameter')
 
+	SSH.CreateHtmlHeader()
+
 	#read test_case_list.xml file
         # if no parameters for XML file, use default value
 	if SSH.testXMLfile == '':
@@ -1214,6 +1352,8 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE):
 				SSH.TerminateSPGW()
 			else:
 				sys.exit('Invalid action')
+
+	SSH.CreateHtmlFooter()
 else:
 	Usage()
 	sys.exit('Invalid mode')
diff --git a/ci-scripts/xml_files/enb_usrp210_band7.xml b/ci-scripts/xml_files/enb_usrp210_band7.xml
index 4bea6d50e58ef99ab4e76e3ae241515f510ac41f..6f8cfbad5b43198fb37343c1ef7a8ebadbca1e02 100644
--- a/ci-scripts/xml_files/enb_usrp210_band7.xml
+++ b/ci-scripts/xml_files/enb_usrp210_band7.xml
@@ -21,7 +21,7 @@
 
 -->
 <testCaseList>
-	<TestCaseRequestedList>010101 050101 060101 070101 040101 030101 040301 040501 040601 040602 040603 040401 040201 030201 040101 030111 040301 040511 040611 040612 040613 040401 040201 030201</TestCaseRequestedList>
+	<TestCaseRequestedList>010101 050101 060101 070101 040101 030101 040301 040501 040601 040602 040603 040401 040201 030201 030111 040301 040511 040611 040612 040613 040401 040201 030201 030112 040301 040512 040621 040622 040623 040401 040201 030201 </TestCaseRequestedList>
 	<TestCaseExclusionList></TestCaseExclusionList>
 
 	<testCase id="010101">
@@ -42,6 +42,12 @@
 		<Initialize_eNB_args>-O ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf</Initialize_eNB_args>
 	</testCase>
 
+	<testCase id="030112">
+		<class>Initialize_eNB</class>
+		<desc>Initialize eNB (FDD/Band7/20MHz)</desc>
+		<Initialize_eNB_args>-O ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf</Initialize_eNB_args>
+	</testCase>
+
 	<testCase id="030201">
 		<class>Terminate_eNB</class>
 		<desc>Terminate eNB</desc>
@@ -81,6 +87,13 @@
                 <ping_packetloss_threshold>5</ping_packetloss_threshold>
         </testCase>
 
+        <testCase id="040512">
+                <class>Ping</class>
+                <desc>ping (20MHz - 20 sec)</desc>
+                <ping_args>-c 20</ping_args>
+                <ping_packetloss_threshold>5</ping_packetloss_threshold>
+        </testCase>
+
 	<testCase id="040601">
 		<class>Iperf</class>
 		<desc>iperf (5MHz - DL/6Mbps/UDP)(60 sec)</desc>
@@ -123,6 +136,27 @@
 		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
         </testCase>
 
+	<testCase id="040621">
+		<class>Iperf</class>
+		<desc>iperf (20MHz - DL/20Mbps/UDP)(60 sec)</desc>
+		<iperf_args>-u -b 20M -t 60 -i 1</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+	</testCase>
+
+        <testCase id="040622">
+		<class>Iperf</class>
+		<desc>iperf (20MHz - DL/40Mbps/UDP)(60 sec)</desc>
+		<iperf_args>-u -b 40M -t 60 -i 1</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+        </testCase>
+
+        <testCase id="040623">
+		<class>Iperf</class>
+		<desc>iperf (20MHz - DL/70Mbps/UDP)(60 sec)</desc>
+		<iperf_args>-u -b 70M -t 60 -i 1</iperf_args>
+		<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
+        </testCase>
+
         <testCase id="050101">
 		<class>Initialize_HSS</class>
 		<desc>Initialize HSS</desc>