diff --git a/.gitmodules b/.gitmodules
index ca90588770a82157f85630d2b5083dded841ea7c..fe521efc68bff3e1a1bcd10987ca17d9b5fd1129 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -7,3 +7,6 @@
 [submodule "component/oai-upf-equivalent"]
 	path = component/oai-upf-equivalent
 	url = https://github.com/OPENAIRINTERFACE/openair-spgwu-tiny.git
+[submodule "component/oai-nrf"]
+	path = component/oai-nrf
+	url = https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-nrf.git
diff --git a/ci-scripts/Jenkinsfile-GitLab-Docker b/ci-scripts/Jenkinsfile-GitLab-Docker
index 4b2a8e7aa9aaa5d4e0635809f30a39507418fb6f..7803482f7c67d57c17a2fb81d635f05f5e6263ce 100644
--- a/ci-scripts/Jenkinsfile-GitLab-Docker
+++ b/ci-scripts/Jenkinsfile-GitLab-Docker
@@ -38,6 +38,9 @@ def cn_ci_host = params.Host_CN_CI_Server
 def cn_ci_resource = params.DockerContainers
 def ds_tester_ci_resource = params.DsTester
 
+// Location of the DsTester workspace
+def dsTestFrameworkLocation = params.dsTestFrameworkLocation
+
 // When triggered by upstream, specify which tag to use
 def upstreamTagToUse = params.upstreamTagToUse
 
@@ -57,6 +60,8 @@ def scmEvent = false
 def upstreamEvent = false
 
 // Default tags / branches  --> could be passed on by upstream job or by PR content
+def nrfTag = 'develop'
+def nrfBranch = 'dockerfile'
 def amfTag = 'develop'
 def amfBranch = 'develop'
 def smfTag = 'develop'
@@ -136,6 +141,14 @@ pipeline {
           }
 
           if (upstreamEvent) {
+            if (params.NRF_TAG != null) {
+              nrfTag = params.NRF_TAG
+              echo "Upstream Job passed NRF_TAG to use: ${nrfTag}"
+            }
+            if (params.NRF_BRANCH != null) {
+              nrfBranch = params.NRF_BRANCH
+              echo "Upstream Job passed NRF_BRANCH to use: ${nrfBranch}"
+            }
             if (params.AMF_TAG != null) {
               amfTag = params.AMF_TAG
               echo "Upstream Job passed AMF_TAG to use: ${amfTag}"
@@ -157,13 +170,13 @@ pipeline {
             sh 'git checkout -f ' + upstreamTagToUse
             sh "zip -r -qq oai-cn5g-fed.zip .git"
             sh "mkdir -p archives DS-TEST-RESULTS"
-            sh './scripts/syncComponents.sh --amf-branch ' + amfBranch + ' --smf-branch ' + smfBranch + ' --spgwu-tiny-branch ' + spgwuBranch
+            sh './scripts/syncComponents.sh --nrf-branch ' + nrfBranch + ' --amf-branch ' + amfBranch + ' --smf-branch ' + smfBranch + ' --spgwu-tiny-branch ' + spgwuBranch
             if (new_host_flag) {
               // Prepare the workspace in remote server
               copyTo2ndServer('oai-cn5g-fed.zip', new_host_flag, new_host_user, new_host)
               myShCmd('git clean -x -d -f > /dev/null 2>&1', new_host_flag, new_host_user, new_host)
               myShCmd('mkdir -p archives DS-TEST-RESULTS', new_host_flag, new_host_user, new_host)
-              myShCmd('./scripts/syncComponents.sh --amf-branch ' + amfBranch + ' --smf-branch ' + smfBranch, new_host_flag, new_host_user, new_host)
+              myShCmd('./scripts/syncComponents.sh --nrf-branch ' + nrfBranch + ' --amf-branch ' + amfBranch + ' --smf-branch ' + smfBranch, new_host_flag, new_host_user, new_host)
             }
           }
           if (scmEvent) {
@@ -187,41 +200,112 @@ pipeline {
           }
           if ((!upstreamEvent) && (!scmEvent)) {
             sh "git clean -x -d -f > /dev/null 2>&1"
-            sh './scripts/syncComponents.sh --amf-branch ' + amfBranch + ' --smf-branch ' + smfBranch + ' --spgwu-tiny-branch ' + spgwuBranch
+            sh './scripts/syncComponents.sh --nrf-branch ' + nrfBranch + ' --amf-branch ' + amfBranch + ' --smf-branch ' + smfBranch + ' --spgwu-tiny-branch ' + spgwuBranch
             sh "mkdir -p archives DS-TEST-RESULTS"
           }
+          // Verify that the images are available
+          try {
+            sh 'echo "OAI_NRF_TAG: oai-nrf:' + nrfTag +'" > archives/oai_nrf_image_info.log'
+            sh 'docker image inspect --format=\'Size = {{.Size}} bytes\' oai-nrf:' + nrfTag + ' >> archives/oai_nrf_image_info.log'
+            sh 'docker image inspect --format=\'Date = {{.Created}}\' oai-nrf:' + nrfTag + ' >> archives/oai_nrf_image_info.log'
+          } catch (Exception e) {
+            error "OAI NRF Image tag to test does not exist!"
+          }
+          try {
+            sh 'echo "OAI_AMF_TAG: oai-amf:' + amfTag +'" > archives/oai_amf_image_info.log'
+            sh 'docker image inspect --format=\'Size = {{.Size}} bytes\' oai-amf:' + amfTag + ' >> archives/oai_amf_image_info.log'
+            sh 'docker image inspect --format=\'Date = {{.Created}}\' oai-amf:' + amfTag + ' >> archives/oai_amf_image_info.log'
+          } catch (Exception e) {
+            error "OAI AMF Image tag to test does not exist!"
+          }
+          try {
+            sh 'echo "OAI_SMF_TAG: oai-smf:' + smfTag +'" > archives/oai_smf_image_info.log'
+            sh 'docker image inspect --format=\'Size = {{.Size}} bytes\' oai-smf:' + smfTag + ' >> archives/oai_smf_image_info.log'
+            sh 'docker image inspect --format=\'Date = {{.Created}}\' oai-smf:' + smfTag + ' >> archives/oai_smf_image_info.log'
+          } catch (Exception e) {
+            error "OAI SMF Image tag to test does not exist!"
+          }
+          try {
+            sh 'echo "OAI_SPGWU_TAG: oai-spgwu-tiny:' + spgwuTag +'" > archives/oai_spgwu_image_info.log'
+            sh 'docker image inspect --format=\'Size = {{.Size}} bytes\' oai-spgwu-tiny:' + spgwuTag + ' >> archives/oai_spgwu_image_info.log'
+            sh 'docker image inspect --format=\'Date = {{.Created}}\' oai-spgwu-tiny:' + spgwuTag + ' >> archives/oai_spgwu_image_info.log'
+          } catch (Exception e) {
+            error "OAI SPGW-U-Tiny Image tag to test does not exist!"
+          }
         }
       }
     }
-    stage ('Deploy Whole EPC') {
-      stages {
-        stage ('Create Public Network') {
-          steps {
-            script {
-              myShCmd('python3 ./ci-scripts/dsTestDeployTools.py --action=CreateNetworks', new_host_flag, new_host_user, new_host)
-            }
+    stage ('Deploy Whole 5G Core Network') {
+      steps {
+        script {
+          echo '\u2705 \u001B[32mDeploy CN5G in idle mode\u001B[0m'
+          // Prepare all needed files for docker-compose
+          // First put all correct tags to test
+          sh 'sed -e "s#NRF_IMAGE_TAG#' + nrfTag + '#" -e "s#AMF_IMAGE_TAG#' + amfTag + '#" -e "s#SMF_IMAGE_TAG#' + smfTag + '#" ci-scripts/dsTesterDockerCompose/docker-compose.tplt > ci-scripts/dsTesterDockerCompose/docker-compose.yml'
+          // Entrypoints are modified to be inactive for dsTester framework
+          sh 'sed -e "s@exec.*@sleep infinity@" component/oai-nrf/scripts/entrypoint.sh > ci-scripts/dsTesterDockerCompose/nrf-entrypoint-sleep.sh'
+          sh 'sed -e "s@exec.*@sleep infinity@" component/oai-amf/scripts/entrypoint.sh > ci-scripts/dsTesterDockerCompose/amf-entrypoint-sleep.sh'
+          sh 'sed -e "s@exec.*@sleep infinity@" component/oai-smf/scripts/entrypoint.sh > ci-scripts/dsTesterDockerCompose/smf-entrypoint-sleep.sh'
+          sh 'sed -e "s@exec.*@sleep infinity@" component/oai-upf-equivalent/scripts/entrypoint.sh > ci-scripts/dsTesterDockerCompose/upf-entrypoint-sleep.sh'
+          sh 'chmod 775 ci-scripts/dsTesterDockerCompose/*entrypoint-sleep.sh'
+          dir('ci-scripts/dsTesterDockerCompose') {
+            sh 'docker-compose up -d  > ../../archives/compose_5gcn_up.log 2>&1'
+            sh 'sleep 100'
+            // Do a check on number of healthy containers
+            // 5 == mysql + nrf + amf + smf + upf(spgwu-tiny)
+            ret = sh returnStdout: true, script: 'docker-compose ps -a | grep -v unhealthy | grep -c healthy || true'
+            ret = ret.trim()
+            if (ret != '5') {
+              error "Deployment went wrong!"
+            }          
           }
         }
-        stage ('Deploy Containers') {
-          steps {
-            script {
-              // Deploy and configure MySQL Server
-              myShCmd('python3 ./ci-scripts/dsTestDeployTools.py --action=DeployMySqlServer', new_host_flag, new_host_user, new_host)
-              // Deploy and configure AMF
-              myShCmd('python3 ./ci-scripts/dsTestDeployTools.py --action=DeployAMF --tag=' + amfTag, new_host_flag, new_host_user, new_host)
-              // Deploy and configure SMF
-              myShCmd('python3 ./ci-scripts/dsTestDeployTools.py --action=DeploySMF --tag=' + smfTag, new_host_flag, new_host_user, new_host)
-              // Deploy and configure UPF
-              myShCmd('python3 ./ci-scripts/dsTestDeployTools.py --action=DeployUPF --tag=' + spgwuTag, new_host_flag, new_host_user, new_host)
+      }
+      post {
+        always {
+          script {
+            // Check status on mysql.
+            try {
+              sh 'docker exec cicd-mysql-svr /bin/bash -c "mysqladmin -u root --password=linux ping" > archives/mysql_status.log 2>&1'
+              sh 'docker inspect --format=\'STATUS: {{.State.Health.Status}}\' cicd-mysql-svr >> archives/mysql_status.log'
+            } catch (Exception e) {
+              sh 'echo "STATUS: KO" >> archives/mysql_status.log'
             }
-          }
-          post {
-            always {
-              script {
-                copyFrom2ndServer('archives/*_config.log', 'archives', new_host_flag, new_host_user, new_host)
-                sh 'python3 ./ci-scripts/generateHtmlReportDeployment.py --job_name=' + JOB_NAME + ' --job_id=' + BUILD_ID + ' --job_url=' + BUILD_URL
-              }
+            // Do docker logs to recover the configuration results
+            try {
+              sh 'docker logs cicd-oai-nrf > archives/nrf_config.log 2>&1'
+              sh 'docker inspect --format=\'STATUS: {{.State.Health.Status}}\' cicd-oai-nrf >> archives/nrf_config.log'
+            } catch (Exception e) {
+              sh 'echo "STATUS: KO" >> archives/nrf_config.log'
+            }
+            try {
+              sh 'docker logs cicd-oai-amf > archives/amf_config.log 2>&1'
+              sh 'docker inspect --format=\'STATUS: {{.State.Health.Status}}\' cicd-oai-amf >> archives/amf_config.log'
+            } catch (Exception e) {
+              sh 'echo "STATUS: KO" >> archives/amf_config.log'
+            }
+            try {
+              sh 'docker logs cicd-oai-smf > archives/smf_config.log 2>&1'
+              sh 'docker inspect --format=\'STATUS: {{.State.Health.Status}}\' cicd-oai-smf >> archives/smf_config.log'
+            } catch (Exception e) {
+              sh 'echo "STATUS: OK" >> archives/smf_config.log'
             }
+            try {
+              sh 'docker logs cicd-oai-upf > archives/spgwu_config.log 2>&1'
+              sh 'docker inspect --format=\'STATUS: {{.State.Health.Status}}\' cicd-oai-upf >> archives/spgwu_config.log'
+            } catch (Exception e) {
+              sh 'echo "STATUS: KO" >> archives/spgwu_config.log'
+            }
+          }
+        }
+        success {
+          script {
+            sh 'echo "DEPLOYMENT: OK" > archives/deployment_status.log'
+          }
+        }
+        unsuccessful {
+          script {
+            sh 'echo "DEPLOYMENT: KO" > archives/deployment_status.log'
           }
         }
       }
@@ -231,32 +315,20 @@ pipeline {
       steps {
         lock (ds_tester_ci_resource) {
           script {
-//            myShCmd('cd /home/oaici/CI-dev-ops-cn5g && git clean -x -d -f > /dev/null', new_host_flag, new_host_user, new_host)
-//            myShCmdWithLog('cd /home/oaici/CI-dev-ops-cn5g/scripts && CI_ENV=True SRC_BASE_DIR=/tmp/CI-CN5G-FED ./run-5gc.bash -pt --shark --detach --get-results --5g', 'archives/run-5g-dstester.log', new_host_flag, new_host_user, new_host)
-//            copyFrom2ndServer('DS-TEST-RESULTS/status.txt', 'DS-TEST-RESULTS', new_host_flag, new_host_user, new_host)
-//            copyFrom2ndServer('DS-TEST-RESULTS/*.tar', 'DS-TEST-RESULTS', new_host_flag, new_host_user, new_host)
-            sh 'cd /home/oaici/CI-dev-ops-cn5g && git clean -x -d -f > /dev/null'
-            sh 'cd /home/oaici/CI-dev-ops-cn5g/scripts && export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:.:/usr/local/devsol/bin && CI_ENV=True SRC_BASE_DIR=' + WORKSPACE + ' ./run-5gc.bash -pt --shark --detach --get-results --5g > ' + WORKSPACE + '/archives/run-5g-dstester.log 2>&1'
-            sh 'python3 ./ci-scripts/dsTestGenerateHTMLReport.py --job_name=' + JOB_NAME + ' --job_id=' + BUILD_ID + ' --job_url=' + BUILD_URL
+            sh 'cd ' + dsTestFrameworkLocation + ' && git clean -x -d -f > /dev/null'
+            sh 'cd ' + dsTestFrameworkLocation + '/scripts && export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:.:/usr/local/devsol/bin && CI_ENV=True SRC_BASE_DIR=' + WORKSPACE + ' ./run-5gc.bash -pt --shark --detach --get-results --5g > ' + WORKSPACE + '/archives/run-5g-dstester.log 2>&1'
+            sh 'cd ' + dsTestFrameworkLocation + ' && git stash > /dev/null'
+            sh 'cd ' + dsTestFrameworkLocation + ' && git stash clear > /dev/null'
           }
         }
       }
     }
-    stage ('Undeploy EPC') {
-      stages {
-        stage ('Undeploy Containers') {
-          steps {
-            script {
-              // Remove the containers
-              myShCmd('python3 ./ci-scripts/dsTestDeployTools.py --action=RemoveAllContainers', new_host_flag, new_host_user, new_host)
-            }
-          }
-        }
-        stage ('Delete Public Network') {
-          steps {
-            script {
-              myShCmd('python3 ./ci-scripts/dsTestDeployTools.py --action=RemoveNetworks', new_host_flag, new_host_user, new_host)
-            }
+    stage ('Undeploy 5G-CN') {
+      steps {
+        script {
+          echo '\u2705 \u001B[32mUn-Deploy CN5G\u001B[0m'
+          dir('ci-scripts/dsTesterDockerCompose') {
+            sh 'docker-compose down > ../../archives/compose_normal_down.log 2>&1'
           }
         }
       }
@@ -265,20 +337,20 @@ pipeline {
   post {
     always {
       script { 
-        // Removing all containers
-        myShCmd('python3 ./ci-scripts/dsTestDeployTools.py --action=RemoveAllContainers', new_host_flag, new_host_user, new_host)
-        // Removing the network
-        myShCmd('python3 ./ci-scripts/dsTestDeployTools.py --action=RemoveNetworks', new_host_flag, new_host_user, new_host)
+        // Remove any leftover containers/networks
+        dir('ci-scripts/dsTesterDockerCompose') {
+          sh 'docker-compose down > ../../archives/compose_l_down.log 2>&1'
+        }
+        // Generating the HTML report
+        sh 'python3 ./ci-scripts/dsTestGenerateHTMLReport.py --job_name=' + JOB_NAME + ' --job_id=' + BUILD_ID + ' --job_url=' + BUILD_URL
+
         // Zipping all archived log files
         sh "zip -r -qq cn5g_fed_docker_logs.zip archives DS-TEST-RESULTS/*.tar DS-TEST-RESULTS/status.txt"
         if (fileExists('cn5g_fed_docker_logs.zip')) {
           archiveArtifacts artifacts: 'cn5g_fed_docker_logs.zip'
         }
-        if (fileExists('deploy_results_oai_cn5g.html')) {
-          archiveArtifacts artifacts: 'deploy_results_oai_cn5g.html'
-        }
-        if (fileExists('ds_tester_results_oai_cn5g.html')) {
-          archiveArtifacts artifacts: 'ds_tester_results_oai_cn5g.html'
+        if (fileExists('test_results_oai_cn5g.html')) {
+          archiveArtifacts artifacts: 'test_results_oai_cn5g.html'
         }
       }
     }
diff --git a/ci-scripts/dsTestGenerateHTMLReport.py b/ci-scripts/dsTestGenerateHTMLReport.py
index 06e54574ea69d787729ec639e8034ebb840eb6cc..7b0defb8968f64205b6f092406f5fd189c3bf613 100644
--- a/ci-scripts/dsTestGenerateHTMLReport.py
+++ b/ci-scripts/dsTestGenerateHTMLReport.py
@@ -34,9 +34,9 @@ class HtmlReport():
 
 	def generate(self):
 		cwd = os.getcwd()
-		self.file = open(cwd + '/ds_tester_results_oai_cn5g.html', 'w')
+		self.file = open(cwd + '/test_results_oai_cn5g.html', 'w')
 		self.generateHeader()
-
+		self.deploymentSummaryHeader()
 		finalStatus = self.testSummaryHeader()
 		self.testSummaryDetails()
 		self.testSummaryFooter()
@@ -44,10 +44,11 @@ class HtmlReport():
 		self.generateFooter()
 		self.file.close()
 
-		if finalStatus:
-			sys.exit(0)
-		else:
-			sys.exit(-1)
+		try:
+			if finalStatus:
+				sys.exit(0)
+		except:
+			print("DS-TESTER testing FAILED")
 
 	def generateHeader(self):
 		# HTML Header
@@ -81,9 +82,138 @@ class HtmlReport():
 		self.file.write('</div></body>\n')
 		self.file.write('</html>\n')
 
+	def deploymentSummaryHeader(self):
+	    self.file.write('  <h2>Deployment Summary</h2>\n')
+	    cwd = os.getcwd()
+	    if os.path.isfile(cwd + '/archives/deployment_status.log'):
+	        cmd = 'egrep -c "DEPLOYMENT: OK" archives/deployment_status.log || true'
+	        status = False
+	        ret = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, encoding='utf-8')
+	        if ret.stdout is not None:
+	            if ret.stdout.strip() == '1':
+	                status = True
+	        if status:
+	            self.file.write('  <div class="alert alert-success">\n')
+	            self.file.write('    <strong>Successful Deployment! <span class="glyphicon glyphicon-warning-sign"></span></strong>\n')
+	            self.file.write('  </div>\n')
+	        else:
+	            self.file.write('  <div class="alert alert-danger">\n')
+	            self.file.write('    <strong>Failed Deployment! <span class="glyphicon glyphicon-warning-sign"></span></strong>\n')
+	            self.file.write('  </div>\n')
+	    else:
+	        self.file.write('  <div class="alert alert-warning">\n')
+	        self.file.write('    <strong>LogFile not available! <span class="glyphicon glyphicon-warning-sign"></span></strong>\n')
+	        self.file.write('  </div>\n')
+	    self.file.write('  <br>\n')
+	    self.file.write('  <button data-toggle="collapse" data-target="#deployment-details">More details on Deployment</button>\n')
+	    self.file.write('  <br>\n')
+	    self.file.write('  <div id="deployment-details" class="collapse">\n')
+	    self.file.write('  <br>\n')
+	    self.file.write('  <table class="table-bordered" width = "80%" align = "center" border = 1>\n')
+	    self.file.write('     <tr bgcolor = "#33CCFF" >\n')
+	    self.file.write('       <th>Container Name</th>\n')
+	    self.file.write('       <th>Used Image Tag</th>\n')
+	    self.file.write('       <th>Image Creation Date</th>\n')
+	    self.file.write('       <th>Used Image Size</th>\n')
+	    self.file.write('       <th>Configuration Status</th>\n')
+	    self.file.write('     </tr>\n')
+	    self.addImageRow('mysql')
+	    self.addImageRow('oai_nrf')
+	    self.addImageRow('oai_amf')
+	    self.addImageRow('oai_smf')
+	    self.addImageRow('oai_spgwu')
+	    self.file.write('  </table>\n')
+	    self.file.write('  </div>\n')
+
+	def addImageRow(self, imageInfoPrefix):
+	    cwd = os.getcwd()
+	    if imageInfoPrefix == 'oai_amf':
+	        containerName = 'oai-amf'
+	        tagPattern = 'OAI_AMF_TAG'
+	        statusPrefix = 'amf'
+	    if imageInfoPrefix == 'oai_smf':
+	        containerName = 'oai-smf'
+	        tagPattern = 'OAI_SMF_TAG'
+	        statusPrefix = 'smf'
+	    if imageInfoPrefix == 'oai_nrf':
+	        containerName = 'oai-nrf'
+	        tagPattern = 'OAI_NRF_TAG'
+	        statusPrefix = 'nrf'
+	    if imageInfoPrefix == 'oai_spgwu':
+	        containerName = 'oai-spgwu-tiny'
+	        tagPattern = 'OAI_SPGWU_TAG'
+	        statusPrefix = 'spgwu'
+	    if imageInfoPrefix == 'mysql':
+	        containerName = imageInfoPrefix
+	        tagPattern = 'N/A'
+	    if os.path.isfile(cwd + '/archives/' + imageInfoPrefix + '_image_info.log'):
+	        usedTag = ''
+	        createDate = ''
+	        size = ''
+	        with open(cwd + '/archives/' + imageInfoPrefix + '_image_info.log') as imageLog:
+	            for line in imageLog:
+	                line = line.strip()
+	                result = re.search(tagPattern + ': (?P<tag>[a-zA-Z0-9\-\_:]+)', line)
+	                if result is not None:
+	                    usedTag = result.group('tag')
+	                result = re.search('Date = (?P<date>[a-zA-Z0-9\-\_:]+)', line)
+	                if result is not None:
+	                    createDate = result.group('date')
+	                result = re.search('Size = (?P<size>[0-9]+) bytes', line)
+	                if result is not None:
+	                    sizeInt = int(result.group('size'))
+	                    if sizeInt < 1000000:
+	                        sizeInt = int(sizeInt / 1000)
+	                        size = str(sizeInt) + ' kB'
+	                    else:
+	                        sizeInt = int(sizeInt / 1000000)
+	                        size = str(sizeInt) + ' MB'
+	        imageLog.close()
+	        configState = 'KO'
+	        cmd = 'egrep -c "STATUS: healthy" archives/' + statusPrefix + '_config.log || true'
+	        ret = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, encoding='utf-8')
+	        if ret.stdout is not None:
+	            if ret.stdout.strip() == '1':
+	                configState = 'OK'
+	        self.file.write('     <tr>\n')
+	        self.file.write('       <td>' + containerName + '</td>\n')
+	        self.file.write('       <td>' + usedTag + '</td>\n')
+	        self.file.write('       <td>' + createDate + '</td>\n')
+	        self.file.write('       <td>' + size + '</td>\n')
+	        if configState == 'OK':
+	            self.file.write('       <td bgcolor = "DarkGreen"><b><font color="white">' + configState + '</font></b></td>\n')
+	        else:
+	            self.file.write('       <td bgcolor = "Red"><b><font color="white">' + configState + '</font></b></td>\n')
+	        self.file.write('     </tr>\n')
+	    else:
+	        if imageInfoPrefix == 'mysql':
+	            self.file.write('     <tr>\n')
+	            self.file.write('       <td>' + containerName + '</td>\n')
+	            self.file.write('       <td>mysql:5.7</td>\n')
+	            self.file.write('       <td>N/A</td>\n')
+	            self.file.write('       <td>449MB</td>\n')
+	            configState = 'KO'
+	            cmd = 'egrep -c "STATUS: healthy" archives/mysql_status.log || true'
+	            ret = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, encoding='utf-8')
+	            if ret.stdout is not None:
+	                if ret.stdout.strip() == '1':
+	                    configState = 'OK'
+	            if configState == 'OK':
+	                self.file.write('       <td bgcolor = "DarkGreen"><b><font color="white">OK</font></b></td>\n')
+	            else:
+	                self.file.write('       <td bgcolor = "Red"><b><font color="white">KO</font></b></td>\n')
+	            self.file.write('     </tr>\n')
+	        else:
+	            self.file.write('     <tr>\n')
+	            self.file.write('       <td>' + containerName + '</td>\n')
+	            self.file.write('       <td>UNKNOWN</td>\n')
+	            self.file.write('       <td>N/A</td>\n')
+	            self.file.write('       <td>N/A</td>\n')
+	            self.file.write('       <td bgcolor = "DarkOrange"><b><font color="white">UNKNOW</font></b></td>\n')
+	            self.file.write('     </tr>\n')
+
 	def testSummaryHeader(self):
 		self.file.write('  <h2>DS Tester Summary</h2>\n')
-
 		finalDsTesterSummaryFile = 'DS-TEST-RESULTS/status.txt'
 		cwd = os.getcwd()
 		if os.path.isfile(cwd + '/' + finalDsTesterSummaryFile):
diff --git a/ci-scripts/dsTesterDockerCompose/amf-healthy-check.sh b/ci-scripts/dsTesterDockerCompose/amf-healthy-check.sh
new file mode 100755
index 0000000000000000000000000000000000000000..95792ef89711d190b474dbec28d2f361bf38ce2e
--- /dev/null
+++ b/ci-scripts/dsTesterDockerCompose/amf-healthy-check.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+STATUS=0
+NB_UNREPLACED_AT=`cat /openair-amf/etc/*.conf | grep -v contact@openairinterface.org | grep -c @ || true`
+NOT_FOUND=`ldd /openair-amf/bin/oai_amf | grep -c "not found" || true`
+if [[ $NB_UNREPLACED_AT -ne 0 || $NOT_FOUND -ne 0 ]]
+then
+  STATUS=-1
+fi
+
+exit $STATUS
diff --git a/ci-scripts/dsTesterDockerCompose/docker-compose.tplt b/ci-scripts/dsTesterDockerCompose/docker-compose.tplt
new file mode 100644
index 0000000000000000000000000000000000000000..f00ab826c8ae096f55af41fdc1edc3ac21cd9523
--- /dev/null
+++ b/ci-scripts/dsTesterDockerCompose/docker-compose.tplt
@@ -0,0 +1,209 @@
+version: '3.8'
+services:
+    cicd_mysql:
+        container_name: cicd-mysql-svr
+        image: mysql:5.7
+        ports:
+             - 3306
+        command: --init-file /docker-entrypoint-initdb.d/oai_db.sql
+        volumes:
+            - ../../docker-compose/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql:rw
+        environment:
+            - MYSQL_DATABASE=oai_db
+            - MYSQL_USER=test
+            - MYSQL_PASSWORD=test
+            - MYSQL_ROOT_PASSWORD=linux
+        healthcheck:
+            test: "/usr/bin/mysql --user=root --password=linux -e 'show databases;'"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+        networks:
+            cicd_public_net:
+                ipv4_address: 192.168.61.194
+
+    cicd_oai_nrf:
+        container_name: cicd-oai-nrf
+        image: oai-nrf:NRF_IMAGE_TAG
+        ports:
+            - 80
+            - 9090
+        environment:
+            - NRF_INTERFACE_NAME_FOR_SBI=eth0
+            - NRF_INTERFACE_PORT_FOR_SBI=80
+            - NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
+            - NRF_API_VERSION=v1
+            - INSTANCE=0
+            - PID_DIRECTORY=/var/run
+        networks:
+            cicd_public_net:
+                ipv4_address: 192.168.61.195
+        volumes:
+            - ./nrf-entrypoint-sleep.sh:/openair-nrf/bin/nrf-entrypoint-sleep.sh
+            - ./nrf-healthy-check.sh:/openair-nrf/bin/nrf-healthy-check.sh
+        entrypoint: /bin/bash -c "/openair-nrf/bin/nrf-entrypoint-sleep.sh"
+        healthcheck:
+            test: /bin/bash -c "/openair-nrf/bin/nrf-healthy-check.sh"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+
+    cicd_oai_amf:
+        container_name: cicd-oai-amf
+        image: oai-amf:AMF_IMAGE_TAG
+        ports:
+             - 38412
+             - 80
+        environment:
+            - INSTANCE=1
+            - PID_DIRECTORY=/var/run
+            - MCC=208
+            - MNC=95
+            - REGION_ID=128
+            - AMF_SET_ID=1
+            - SERVED_GUAMI_MCC_0=208
+            - SERVED_GUAMI_MNC_0=95
+            - SERVED_GUAMI_REGION_ID_0=128
+            - SERVED_GUAMI_AMF_SET_ID_0=1
+            - SERVED_GUAMI_MCC_1=460
+            - SERVED_GUAMI_MNC_1=11
+            - SERVED_GUAMI_REGION_ID_1=10
+            - SERVED_GUAMI_AMF_SET_ID_1=1
+            - PLMN_SUPPORT_MCC=208
+            - PLMN_SUPPORT_MNC=95
+            - PLMN_SUPPORT_TAC=0xa000
+            - SST_0=222
+            - SD_0=123
+            - SST_1=1
+            - SD_1=12
+            - AMF_INTERFACE_NAME_FOR_NGAP=eth0
+            - AMF_INTERFACE_NAME_FOR_N11=eth0
+            - SMF_INSTANCE_ID_0=1
+            - SMF_IPV4_ADDR_0=192.168.61.197
+            - SMF_HTTP_VERSION_0=v1
+            - SMF_INSTANCE_ID_1=2
+            - SMF_IPV4_ADDR_1=192.168.61.197
+            - SMF_HTTP_VERSION_1=v1
+            - MYSQL_SERVER=cicd-mysql-svr
+            - MYSQL_USER=root
+            - MYSQL_PASS=linux
+            - MYSQL_DB=oai_db
+            - OPERATOR_KEY=63bfa50ee6523365ff14c1f45f88737d
+            - NRF_IPV4_ADDRESS=192.168.61.195
+            - NRF_PORT=80
+            - NRF_API_VERSION=v1
+            - AUSF_IPV4_ADDRESS=192.168.61.210
+            - AUSF_PORT=80
+            - AUSF_API_VERSION=v1
+        depends_on:
+            - cicd_mysql
+            - cicd_oai_nrf
+        networks:
+            cicd_public_net:
+                ipv4_address: 192.168.61.196
+        volumes:
+            - ./amf-entrypoint-sleep.sh:/openair-amf/bin/amf-entrypoint-sleep.sh
+            - ./amf-healthy-check.sh:/openair-amf/bin/amf-healthy-check.sh
+        entrypoint: /bin/bash -c "/openair-amf/bin/amf-entrypoint-sleep.sh"
+        healthcheck:
+            test: /bin/bash -c "/openair-amf/bin/amf-healthy-check.sh"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+
+    cicd_oai_smf:
+        container_name: cicd-oai-smf
+        image: oai-smf:SMF_IMAGE_TAG
+        ports:
+            - 80
+        environment:
+            - INSTANCE=1
+            - PID_DIRECTORY=/var/run
+            - SMF_INTERFACE_NAME_FOR_N4=eth0
+            - SMF_INTERFACE_NAME_FOR_SBI=eth0
+            - SMF_INTERFACE_PORT_FOR_SBI=80
+            - SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
+            - SMF_API_VERSION=v1
+            - DEFAULT_DNS_IPV4_ADDRESS=192.168.18.129
+            - DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4
+            - AMF_IPV4_ADDRESS=192.168.61.196
+            - AMF_PORT=80
+            - AMF_API_VERSION=v1
+            - UDM_IPV4_ADDRESS=127.0.0.1
+            - UDM_PORT=80
+            - UDM_API_VERSION=v1
+            - UPF_IPV4_ADDRESS=192.168.61.198
+            - NRF_IPV4_ADDRESS=192.168.61.195
+            - NRF_PORT=80
+            - NRF_API_VERSION=v1
+        depends_on:
+            - cicd_oai_nrf
+            - cicd_oai_amf
+        networks:
+            cicd_public_net:
+                ipv4_address: 192.168.61.197
+        volumes:
+            - ./smf-entrypoint-sleep.sh:/oai-cn5g-smf/bin/smf-entrypoint-sleep.sh
+            - ./smf-healthy-check.sh:/oai-cn5g-smf/bin/smf-healthy-check.sh
+        entrypoint: /bin/bash -c "/oai-cn5g-smf/bin/smf-entrypoint-sleep.sh"
+        healthcheck:
+            test: /bin/bash -c "/oai-cn5g-smf/bin/smf-healthy-check.sh"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+
+    cicd_oai_upf:
+        container_name: cicd-oai-upf
+        image: oai-spgwu-tiny:v1.1.0
+        ports:
+            - 2152
+            - 8805
+        environment:
+            - PID_DIRECTORY=/var/run
+            - SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0
+            - SGW_INTERFACE_NAME_FOR_SX=eth0
+            - PGW_INTERFACE_NAME_FOR_SGI=eth0
+            - NETWORK_UE_NAT_OPTION=yes
+            - NETWORK_UE_IP=12.0.0.0/24
+            - THREAD_S1U_PRIO=9090
+            - S1U_THREADS=16
+            - THREAD_SX_PRIO=64
+            - SX_THREADS=1
+            - THREAD_SGI_PRIO=64
+            - SGI_THREADS=16
+            - SPGWC0_IP_ADDRESS=192.168.61.197
+            - BYPASS_UL_PFCP_RULES=no
+            - MCC=208
+            - MNC=95
+            - MNC03=095
+            - TAC=40960
+            - GW_ID=1
+            - REALM=openairinterface.org
+        depends_on:
+            - cicd_oai_smf
+        cap_add:
+            - NET_ADMIN
+            - SYS_ADMIN
+        cap_drop:
+            - ALL
+        privileged: true
+        networks:
+            cicd_public_net:
+                ipv4_address: 192.168.61.198
+        volumes:
+            - ./upf-entrypoint-sleep.sh:/openair-spgwu-tiny/bin/upf-entrypoint-sleep.sh
+            - ./upf-healthy-check.sh:/openair-spgwu-tiny/bin/upf-healthy-check.sh
+        entrypoint: /bin/bash -c "/openair-spgwu-tiny/bin/upf-entrypoint-sleep.sh"
+        healthcheck:
+            test: /bin/bash -c "/openair-spgwu-tiny/bin/upf-healthy-check.sh"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+
+networks:
+    cicd_public_net:
+        name: cicd-oai-public-net
+        driver: bridge
+        ipam:
+            config:
+                - subnet: 192.168.61.192/26
diff --git a/ci-scripts/dsTesterDockerCompose/nrf-healthy-check.sh b/ci-scripts/dsTesterDockerCompose/nrf-healthy-check.sh
new file mode 100755
index 0000000000000000000000000000000000000000..3e18ed44fd33853a036365b8c9a474e63f5f3b0a
--- /dev/null
+++ b/ci-scripts/dsTesterDockerCompose/nrf-healthy-check.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+STATUS=0
+NB_UNREPLACED_AT=`cat /openair-nrf/etc/*.conf | grep -v contact@openairinterface.org | grep -c @ || true`
+NOT_FOUND=`ldd /openair-nrf/bin/oai_nrf | grep -c "not found" || true`
+if [[ $NB_UNREPLACED_AT -ne 0 || $NOT_FOUND -ne 0 ]]
+then
+  STATUS=-1
+fi
+
+exit $STATUS
diff --git a/ci-scripts/dsTesterDockerCompose/smf-healthy-check.sh b/ci-scripts/dsTesterDockerCompose/smf-healthy-check.sh
new file mode 100755
index 0000000000000000000000000000000000000000..7298b14c862b7afeb8e859f70d1d6dcdca9fd5bf
--- /dev/null
+++ b/ci-scripts/dsTesterDockerCompose/smf-healthy-check.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+STATUS=0
+NB_UNREPLACED_AT=`cat /openair-smf/etc/*.conf | grep -v contact@openairinterface.org | grep -c @ || true`
+NOT_FOUND=`ldd /openair-smf/bin/oai_smf | grep -c "not found" || true`
+if [[ $NB_UNREPLACED_AT -ne 0 || $NOT_FOUND -ne 0 ]]
+then
+  STATUS=-1
+fi
+
+exit $STATUS
diff --git a/ci-scripts/dsTesterDockerCompose/upf-healthy-check.sh b/ci-scripts/dsTesterDockerCompose/upf-healthy-check.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f53ec204f98ebf77db9b34c7c2e357aa61ef27e9
--- /dev/null
+++ b/ci-scripts/dsTesterDockerCompose/upf-healthy-check.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+STATUS=0
+NB_UNREPLACED_AT=`cat /openair-spgwc/etc/*.conf | grep -v contact@openairinterface.org | grep -c @ || true`
+NOT_FOUND=`ldd /openair-spgwu-tiny/bin/oai_spgwu | grep -c "not found" || true`
+if [[ $NB_UNREPLACED_AT -ne 0 || $NOT_FOUND -ne 0 ]]
+then    
+  STATUS=-1
+fi
+
+exit $STATUS
diff --git a/component/oai-nrf b/component/oai-nrf
new file mode 160000
index 0000000000000000000000000000000000000000..738473e2d16d78569acb8ded41a363bac8c0deeb
--- /dev/null
+++ b/component/oai-nrf
@@ -0,0 +1 @@
+Subproject commit 738473e2d16d78569acb8ded41a363bac8c0deeb
diff --git a/docker-compose/docker-compose-with-nrf.yaml b/docker-compose/docker-compose-with-nrf.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1b0b0639203afd1321fad081d2b7e02c089aec25
--- /dev/null
+++ b/docker-compose/docker-compose-with-nrf.yaml
@@ -0,0 +1,156 @@
+version: '3.8'
+services:
+    mysql:
+        container_name: "mysql"
+        image: mysql:5.7
+        ports:
+             - 3306
+        command: --init-file /tmp/oai_db.sql
+        volumes:
+            - ./oai_db.sql:/tmp/oai_db.sql:rw
+        environment:
+            - MYSQL_DATABASE=oai_db
+            - MYSQL_USER=test
+            - MYSQL_PASSWORD=test
+            - MYSQL_ROOT_PASSWORD=linux
+        networks:
+            5gcore:
+                ipv4_address: 192.168.68.6
+    oai_amf:
+        container_name: "oai_amf"
+        image: oai_amf:1.0
+        ports:
+             - 38412
+             - 80
+        environment:
+            - INSTANCE=0
+            - PID_DIRECTORY=/var/run
+            - MCC=208
+            - MNC=95
+            - REGION_ID=128
+            - AMF_SET_ID=1
+            - SERVED_GUAMI_MCC_0=208
+            - SERVED_GUAMI_MNC_0=95
+            - SERVED_GUAMI_REGION_ID_0=128
+            - SERVED_GUAMI_AMF_SET_ID_0=1
+            - SERVED_GUAMI_MCC_1=460
+            - SERVED_GUAMI_MNC_1=11
+            - SERVED_GUAMI_REGION_ID_1=10
+            - SERVED_GUAMI_AMF_SET_ID_1=1
+            - PLMN_SUPPORT_MCC=208
+            - PLMN_SUPPORT_MNC=95
+            - PLMN_SUPPORT_TAC=0xa000
+            - SST_0=222
+            - SD_0=123
+            - SST_1=1
+            - SD_1=12
+            - AMF_INTERFACE_NAME_FOR_NGAP=eth0
+            - AMF_INTERFACE_NAME_FOR_N11=eth0
+            - SMF_INSTANCE_ID_0=1
+            - SMF_IPV4_ADDR_0=192.168.68.3
+            - SMF_HTTP_VERSION_0=v1
+            - SMF_INSTANCE_ID_1=2
+            - SMF_IPV4_ADDR_1=192.168.68.3
+            - SMF_HTTP_VERSION_1=v1
+            - MYSQL_SERVER=mysql
+            - MYSQL_USER=root
+            - MYSQL_PASS=linux
+            - MYSQL_DB=oai_db
+            - OPERATOR_KEY=63bfa50ee6523365ff14c1f45f88737d
+            - NRF_IPV4_ADDRESS=192.168.68.4
+            - NRF_PORT=80
+            - NRF_API_VERSION=v1
+            - AUSF_IPV4_ADDRESS=192.168.68.10
+            - AUSF_PORT=80
+            - AUSF_API_VERSION=v1
+        depends_on:
+            - mysql
+            - oai_nrf
+        networks:
+            5gcore:
+                ipv4_address: 192.168.68.2
+    oai_smf:
+        container_name: "oai_smf"
+        image: oai_smf:1.0
+        ports:
+            - 80
+        environment:
+            - INSTANCE=0
+            - PID_DIRECTORY=/var/run
+            - SMF_INTERFACE_NAME_FOR_N4=eth0
+            - SMF_INTERFACE_NAME_FOR_SBI=eth0
+            - SMF_INTERFACE_PORT_FOR_SBI=8080
+            - SMF_INTERFACE_HTTP2_PORT_FOR_SBI=8081
+            - SMF_API_VERSION=v1
+            - DEFAULT_DNS_IPV4_ADDRESS=192.168.106.12
+            - DEFAULT_DNS_SEC_IPV4_ADDRESS=192.168.106.10
+            - AMF_IPV4_ADDRESS=192.168.68.2
+            - AMF_PORT=8082
+            - AMF_API_VERSION=v1
+            - UDM_IPV4_ADDRESS=127.0.0.1
+            - UDM_PORT=8083
+            - UDM_API_VERSION=v1
+            - UPF_IPV4_ADDRESS=192.168.68.5
+            - NRF_IPV4_ADDRESS=192.168.68.4
+            - NRF_PORT=80
+            - NRF_API_VERSION=v1
+        depends_on:
+            - oai_nrf
+            - oai_amf
+        networks:
+            5gcore:
+                ipv4_address: 192.168.68.3
+    oai_nrf:
+        container_name: "oai_nrf"
+        image: oai_nrf:1.0
+        ports:
+            - 80
+            - 9090
+        environment:
+            - NRF_INTERFACE_NAME_FOR_SBI=eth0
+            - NRF_INTERFACE_PORT_FOR_SBI=80
+            - NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090
+            - NRF_API_VERSION=v1
+            - INSTANCE=0
+            - PID_DIRECTORY=/var/run
+        networks:
+            5gcore:
+                ipv4_address: 192.168.68.4
+    oai_spgwu:
+        container_name: "oai_spgwu"
+        image: oai_sgpwu:1.0
+        ports:
+            - 2152
+            - 8805
+        environment:
+            - PID_DIRECTORY=/var/run
+            - SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0
+            - SGW_INTERFACE_NAME_FOR_SX=eth0
+            - PGW_INTERFACE_NAME_FOR_SGI=eth0
+            - NETWORK_UE_NAT_OPTION=yes
+            - NETWORK_UE_IP=192.168.22.0/24
+            - THREAD_S1U_PRIO=9090
+            - S1U_THREADS=16
+            - THREAD_SX_PRIO=64
+            - SX_THREADS=1
+            - THREAD_SGI_PRIO=64
+            - SGI_THREADS=16
+            - SPGWC0_IP_ADDRESS=192.168.68.3
+            - BYPASS_UL_PFCP_RULES=no
+        depends_on:
+            - oai_smf
+        cap_add:
+            - NET_ADMIN
+            - SYS_ADMIN
+        cap_drop:
+            - ALL
+        privileged: true
+        networks:
+            5gcore:
+                ipv4_address: 192.168.68.5
+networks:
+    5gcore:
+        driver: bridge
+        ipam:
+            config:
+                - subnet: 192.168.68.0/24
\ No newline at end of file
diff --git a/docker-compose/docker-compose-without-nrf.yaml b/docker-compose/docker-compose-without-nrf.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2be47ddba88ae81b11b883421fb4041dc10c0010
--- /dev/null
+++ b/docker-compose/docker-compose-without-nrf.yaml
@@ -0,0 +1,138 @@
+version: '3.8'
+services:
+    mysql:
+        container_name: "mysql"
+        image: mysql:5.7
+        ports:
+             - 3306
+        command: --init-file /tmp/oai_db.sql
+        volumes:
+            - ./oai_db.sql:/tmp/oai_db.sql:rw
+        environment:
+            - MYSQL_DATABASE=oai_db
+            - MYSQL_USER=test
+            - MYSQL_PASSWORD=test
+            - MYSQL_ROOT_PASSWORD=linux
+        networks:
+            5gcore:
+                ipv4_address: 192.168.68.6
+    oai_amf:
+        container_name: "oai_amf"
+        image: oai_amf:1.0
+        ports:
+             - 38412
+             - 80
+        environment:
+            - INSTANCE=0
+            - PID_DIRECTORY=/var/run
+            - MCC=208
+            - MNC=95
+            - REGION_ID=128
+            - AMF_SET_ID=1
+            - SERVED_GUAMI_MCC_0=208
+            - SERVED_GUAMI_MNC_0=95
+            - SERVED_GUAMI_REGION_ID_0=128
+            - SERVED_GUAMI_AMF_SET_ID_0=1
+            - SERVED_GUAMI_MCC_1=460
+            - SERVED_GUAMI_MNC_1=11
+            - SERVED_GUAMI_REGION_ID_1=10
+            - SERVED_GUAMI_AMF_SET_ID_1=1
+            - PLMN_SUPPORT_MCC=208
+            - PLMN_SUPPORT_MNC=95
+            - PLMN_SUPPORT_TAC=0xa000
+            - SST_0=222
+            - SD_0=123
+            - SST_1=1
+            - SD_1=12
+            - AMF_INTERFACE_NAME_FOR_NGAP=eth0
+            - AMF_INTERFACE_NAME_FOR_N11=eth0
+            - SMF_INSTANCE_ID_0=1
+            - SMF_IPV4_ADDR_0=192.168.68.3
+            - SMF_HTTP_VERSION_0=v1
+            - SMF_INSTANCE_ID_1=2
+            - SMF_IPV4_ADDR_1=192.168.68.3
+            - SMF_HTTP_VERSION_1=v1
+            - MYSQL_SERVER=mysql
+            - MYSQL_USER=root
+            - MYSQL_PASS=linux
+            - MYSQL_DB=oai_db
+            - OPERATOR_KEY=63bfa50ee6523365ff14c1f45f88737d
+            - NRF_IPV4_ADDRESS=192.168.68.4
+            - NRF_PORT=80
+            - NRF_API_VERSION=v1
+            - AUSF_IPV4_ADDRESS=192.168.68.10
+            - AUSF_PORT=80
+            - AUSF_API_VERSION=v1
+        depends_on:
+            - mysql
+        networks:
+            5gcore:
+                ipv4_address: 192.168.68.2
+    oai_smf:
+        container_name: "oai_smf"
+        image: oai_smf:1.0
+        ports:
+            - 80
+        environment:
+            - INSTANCE=0
+            - PID_DIRECTORY=/var/run
+            - SMF_INTERFACE_NAME_FOR_N4=eth0
+            - SMF_INTERFACE_NAME_FOR_SBI=eth0
+            - SMF_INTERFACE_PORT_FOR_SBI=8080
+            - SMF_INTERFACE_HTTP2_PORT_FOR_SBI=8081
+            - SMF_API_VERSION=v1
+            - DEFAULT_DNS_IPV4_ADDRESS=192.168.106.12
+            - DEFAULT_DNS_SEC_IPV4_ADDRESS=192.168.106.10
+            - AMF_IPV4_ADDRESS=192.168.68.2
+            - AMF_PORT=8082
+            - AMF_API_VERSION=v1
+            - UDM_IPV4_ADDRESS=127.0.0.1
+            - UDM_PORT=8083
+            - UDM_API_VERSION=v1
+            - UPF_IPV4_ADDRESS=192.168.68.5
+            - NRF_IPV4_ADDRESS=192.168.68.4
+            - NRF_PORT=80
+            - NRF_API_VERSION=v1
+        depends_on:
+            - oai_amf
+        networks:
+            5gcore:
+                ipv4_address: 192.168.68.3
+    oai_spgwu:
+        container_name: "oai_spgwu"
+        image: oai_sgpwu:1.0
+        ports:
+            - 2152
+            - 8805
+        environment:
+            - PID_DIRECTORY=/var/run
+            - SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0
+            - SGW_INTERFACE_NAME_FOR_SX=eth0
+            - PGW_INTERFACE_NAME_FOR_SGI=eth0
+            - NETWORK_UE_NAT_OPTION=yes
+            - NETWORK_UE_IP=192.168.22.0/24
+            - THREAD_S1U_PRIO=9090
+            - S1U_THREADS=16
+            - THREAD_SX_PRIO=64
+            - SX_THREADS=1
+            - THREAD_SGI_PRIO=64
+            - SGI_THREADS=16
+            - SPGWC0_IP_ADDRESS=192.168.68.3
+            - BYPASS_UL_PFCP_RULES=no
+        depends_on:
+            - oai_smf
+        cap_add:
+            - NET_ADMIN
+            - SYS_ADMIN
+        cap_drop:
+            - ALL
+        privileged: true
+        networks:
+            5gcore:
+                ipv4_address: 192.168.68.5
+networks:
+    5gcore:
+        driver: bridge
+        ipam:
+            config:
+                - subnet: 192.168.68.0/24
\ No newline at end of file
diff --git a/docker-compose/oai_db.sql b/docker-compose/oai_db.sql
new file mode 100644
index 0000000000000000000000000000000000000000..15bc9bdf2d1c36488a541a0ab478175f734bad52
--- /dev/null
+++ b/docker-compose/oai_db.sql
@@ -0,0 +1,207 @@
+-- MySQL dump 10.13  Distrib 5.5.46, for debian-linux-gnu (x86_64)
+--
+-- Host: localhost    Database: oai_db
+-- ------------------------------------------------------
+-- Server version	5.5.46-0ubuntu0.14.04.2
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `apn`
+--
+
+DROP TABLE IF EXISTS `apn`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `apn` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `apn-name` varchar(60) NOT NULL,
+  `pdn-type` enum('IPv4','IPv6','IPv4v6','IPv4_or_IPv6') NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `apn-name` (`apn-name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `apn`
+--
+
+LOCK TABLES `apn` WRITE;
+/*!40000 ALTER TABLE `apn` DISABLE KEYS */;
+/*!40000 ALTER TABLE `apn` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mmeidentity`
+--
+
+DROP TABLE IF EXISTS `mmeidentity`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mmeidentity` (
+  `idmmeidentity` int(11) NOT NULL AUTO_INCREMENT,
+  `mmehost` varchar(255) DEFAULT NULL,
+  `mmerealm` varchar(200) DEFAULT NULL,
+  `UE-Reachability` tinyint(1) NOT NULL COMMENT 'Indicates whether the MME supports UE Reachability Notifcation',
+  PRIMARY KEY (`idmmeidentity`)
+) ENGINE=MyISAM AUTO_INCREMENT=46 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mmeidentity`
+--
+
+LOCK TABLES `mmeidentity` WRITE;
+/*!40000 ALTER TABLE `mmeidentity` DISABLE KEYS */;
+INSERT INTO `mmeidentity` VALUES (2,'mme2.openair4G.eur','openair4G.eur',0),(1,'nano.openair4G.eur','openair4G.eur',0),(5,'abeille.openair4G.eur','openair4G.eur',0),(4,'yang.openair4G.eur','openair4G.eur',0),(3,'mme3.openair4G.eur','openair4G.eur',0),(6,'calisson.openair4G.eur','openair4G.eur',0);
+/*!40000 ALTER TABLE `mmeidentity` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `pdn`
+--
+
+DROP TABLE IF EXISTS `pdn`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `pdn` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `apn` varchar(60) NOT NULL,
+  `pdn_type` enum('IPv4','IPv6','IPv4v6','IPv4_or_IPv6') NOT NULL DEFAULT 'IPv4',
+  `pdn_ipv4` varchar(15) DEFAULT '0.0.0.0',
+  `pdn_ipv6` varchar(45) CHARACTER SET latin1 COLLATE latin1_general_ci DEFAULT '0:0:0:0:0:0:0:0',
+  `aggregate_ambr_ul` int(10) unsigned DEFAULT '50000000',
+  `aggregate_ambr_dl` int(10) unsigned DEFAULT '100000000',
+  `pgw_id` int(11) NOT NULL,
+  `users_imsi` varchar(15) NOT NULL,
+  `qci` tinyint(3) unsigned NOT NULL DEFAULT '9',
+  `priority_level` tinyint(3) unsigned NOT NULL DEFAULT '15',
+  `pre_emp_cap` enum('ENABLED','DISABLED') DEFAULT 'DISABLED',
+  `pre_emp_vul` enum('ENABLED','DISABLED') DEFAULT 'DISABLED',
+  `LIPA-Permissions` enum('LIPA-prohibited','LIPA-only','LIPA-conditional') NOT NULL DEFAULT 'LIPA-only',
+  PRIMARY KEY (`id`,`pgw_id`,`users_imsi`),
+  KEY `fk_pdn_pgw1_idx` (`pgw_id`),
+  KEY `fk_pdn_users1_idx` (`users_imsi`)
+) ENGINE=MyISAM AUTO_INCREMENT=60 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `pdn`
+--
+
+LOCK TABLES `pdn` WRITE;
+/*!40000 ALTER TABLE `pdn` DISABLE KEYS */;
+INSERT INTO `pdn` VALUES (1,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208930000000001',9,15,'DISABLED','ENABLED','LIPA-only'),(41,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'20834123456789',9,15,'DISABLED','ENABLED','LIPA-only'),(40,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'20810000001234',9,15,'DISABLED','ENABLED','LIPA-only'),(42,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'31002890832150',9,15,'DISABLED','ENABLED','LIPA-only'),(16,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208950000000002',9,15,'DISABLED','ENABLED','LIPA-only'),(43,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'001010123456789',9,15,'DISABLED','ENABLED','LIPA-only'),(2,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208930000000002',9,15,'DISABLED','ENABLED','LIPA-only'),(3,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208930000000003',9,15,'DISABLED','ENABLED','LIPA-only'),(4,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208930000000004',9,15,'DISABLED','ENABLED','LIPA-only'),(5,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208930000000005',9,15,'DISABLED','ENABLED','LIPA-only'),(6,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208930000000006',9,15,'DISABLED','ENABLED','LIPA-only'),(7,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208930000000007',9,15,'DISABLED','ENABLED','LIPA-only'),(8,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208940000000001',9,15,'DISABLED','ENABLED','LIPA-only'),(9,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208940000000002',9,15,'DISABLED','ENABLED','LIPA-only'),(10,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208940000000003',9,15,'DISABLED','ENABLED','LIPA-only'),(11,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208940000000004',9,15,'DISABLED','ENABLED','LIPA-only'),(12,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208940000000005',9,15,'DISABLED','ENABLED','LIPA-only'),(13,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208940000000006',9,15,'DISABLED','ENABLED','LIPA-only'),(14,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208940000000007',9,15,'DISABLED','ENABLED','LIPA-only'),(15,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208950000000001',9,15,'DISABLED','ENABLED','LIPA-only'),(17,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208950000000003',9,15,'DISABLED','ENABLED','LIPA-only'),(18,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208950000000004',9,15,'DISABLED','ENABLED','LIPA-only'),(19,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208950000000005',9,15,'DISABLED','ENABLED','LIPA-only'),(20,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208950000000006',9,15,'DISABLED','ENABLED','LIPA-only'),(21,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208950000000007',9,15,'DISABLED','ENABLED','LIPA-only'),(22,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208920100001100',9,15,'DISABLED','ENABLED','LIPA-only'),(23,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208920100001101',9,15,'DISABLED','ENABLED','LIPA-only'),(24,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208920100001102',9,15,'DISABLED','ENABLED','LIPA-only'),(25,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208920100001103',9,15,'DISABLED','ENABLED','LIPA-only'),(26,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208920100001104',9,15,'DISABLED','ENABLED','LIPA-only'),(27,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208920100001105',9,15,'DISABLED','ENABLED','LIPA-only'),(28,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208920100001106',9,15,'DISABLED','ENABLED','LIPA-only'),(29,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208920100001107',9,15,'DISABLED','ENABLED','LIPA-only'),(30,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208920100001108',9,15,'DISABLED','ENABLED','LIPA-only'),(31,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208920100001109',9,15,'DISABLED','ENABLED','LIPA-only'),(32,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208920100001110',9,15,'DISABLED','ENABLED','LIPA-only'),(33,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208930100001111',9,15,'DISABLED','ENABLED','LIPA-only'),(34,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208930100001112',9,15,'DISABLED','ENABLED','LIPA-only'),(35,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208930100001113',9,15,'DISABLED','ENABLED','LIPA-only'),(44,'operator','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208930100001113',9,15,'DISABLED','ENABLED','LIPA-only'),(45,'operator','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208930100001112',9,15,'DISABLED','ENABLED','LIPA-only'),(46,'operator','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208930100001111',9,15,'DISABLED','ENABLED','LIPA-only'),(47,'operator','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208950000000002',9,15,'DISABLED','ENABLED','LIPA-only'),(48,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208950000000008',9,15,'DISABLED','ENABLED','LIPA-only'),(49,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208950000000009',9,15,'DISABLED','ENABLED','LIPA-only'),(50,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208950000000010',9,15,'DISABLED','ENABLED','LIPA-only'),(51,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208950000000011',9,15,'DISABLED','ENABLED','LIPA-only'),(52,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208950000000012',9,15,'DISABLED','ENABLED','LIPA-only'),(53,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208950000000013',9,15,'DISABLED','ENABLED','LIPA-only'),(54,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208950000000014',9,15,'DISABLED','ENABLED','LIPA-only'),(55,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208950000000015',9,15,'DISABLED','ENABLED','LIPA-only'),(56,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208920100001118',9,15,'DISABLED','ENABLED','LIPA-only'),(57,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208920100001121',9,15,'DISABLED','ENABLED','LIPA-only'),(58,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208920100001120',9,15,'DISABLED','ENABLED','LIPA-only'),(59,'oai.ipv4','IPv4','0.0.0.0','0:0:0:0:0:0:0:0',50000000,100000000,3,'208920100001119',9,15,'DISABLED','ENABLED','LIPA-only');
+/*!40000 ALTER TABLE `pdn` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `pgw`
+--
+
+DROP TABLE IF EXISTS `pgw`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `pgw` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `ipv4` varchar(15) NOT NULL,
+  `ipv6` varchar(39) NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `ipv4` (`ipv4`),
+  UNIQUE KEY `ipv6` (`ipv6`)
+) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `pgw`
+--
+
+LOCK TABLES `pgw` WRITE;
+/*!40000 ALTER TABLE `pgw` DISABLE KEYS */;
+INSERT INTO `pgw` VALUES (1,'127.0.0.1','0:0:0:0:0:0:0:1'),(2,'192.168.56.101',''),(3,'10.0.0.2','0');
+/*!40000 ALTER TABLE `pgw` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `terminal-info`
+--
+
+DROP TABLE IF EXISTS `terminal-info`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `terminal-info` (
+  `imei` varchar(15) NOT NULL,
+  `sv` varchar(2) NOT NULL,
+  UNIQUE KEY `imei` (`imei`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `terminal-info`
+--
+
+LOCK TABLES `terminal-info` WRITE;
+/*!40000 ALTER TABLE `terminal-info` DISABLE KEYS */;
+/*!40000 ALTER TABLE `terminal-info` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `users`
+--
+
+DROP TABLE IF EXISTS `users`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `users` (
+  `imsi` varchar(15) NOT NULL COMMENT 'IMSI is the main reference key.',
+  `msisdn` varchar(46) DEFAULT NULL COMMENT 'The basic MSISDN of the UE (Presence of MSISDN is optional).',
+  `imei` varchar(15) DEFAULT NULL COMMENT 'International Mobile Equipment Identity',
+  `imei_sv` varchar(2) DEFAULT NULL COMMENT 'International Mobile Equipment Identity Software Version Number',
+  `ms_ps_status` enum('PURGED','NOT_PURGED') DEFAULT 'PURGED' COMMENT 'Indicates that ESM and EMM status are purged from MME',
+  `rau_tau_timer` int(10) unsigned DEFAULT '120',
+  `ue_ambr_ul` bigint(20) unsigned DEFAULT '50000000' COMMENT 'The Maximum Aggregated uplink MBRs to be shared across all Non-GBR bearers according to the subscription of the user.',
+  `ue_ambr_dl` bigint(20) unsigned DEFAULT '100000000' COMMENT 'The Maximum Aggregated downlink MBRs to be shared across all Non-GBR bearers according to the subscription of the user.',
+  `access_restriction` int(10) unsigned DEFAULT '60' COMMENT 'Indicates the access restriction subscription information. 3GPP TS.29272 #7.3.31',
+  `mme_cap` int(10) unsigned zerofill DEFAULT NULL COMMENT 'Indicates the capabilities of the MME with respect to core functionality e.g. regional access restrictions.',
+  `mmeidentity_idmmeidentity` int(11) NOT NULL DEFAULT '0',
+  `key` varbinary(16) NOT NULL DEFAULT '0' COMMENT 'UE security key',
+  `RFSP-Index` smallint(5) unsigned NOT NULL DEFAULT '1' COMMENT 'An index to specific RRM configuration in the E-UTRAN. Possible values from 1 to 256',
+  `urrp_mme` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'UE Reachability Request Parameter indicating that UE activity notification from MME has been requested by the HSS.',
+  `sqn` bigint(20) unsigned zerofill NOT NULL,
+  `rand` varbinary(16) NOT NULL,
+  `OPc` varbinary(16) DEFAULT NULL COMMENT 'Can be computed by HSS',
+  PRIMARY KEY (`imsi`,`mmeidentity_idmmeidentity`),
+  KEY `fk_users_mmeidentity_idx1` (`mmeidentity_idmmeidentity`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `users`
+--
+
+LOCK TABLES `users` WRITE;
+/*!40000 ALTER TABLE `users` DISABLE KEYS */;
+INSERT INTO `users` VALUES ('20834123456789','380561234567','35609204079300',NULL,'PURGED',50,40000000,100000000,47,0000000000,1,'+Eų\0,IHH',0,0,00000000000000000096,'PxX \Z1x','^KFeU'),('20810000001234','33611123456','35609204079299',NULL,'PURGED',120,40000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000281454575616225,'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0','4s@z~'),('31002890832150','33638060059','35611302209414',NULL,'PURGED',120,40000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000012416,'`F݆Dϛ','4s@z~'),('001010123456789','33600101789','35609204079298',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'\0	\n\r',1,0,00000000000000000351,'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0','L*\\^] '),('208930000000001','33638030001','35609204079301',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'wqgzWЁZ]','4s@z~'),('208950000000002','33638050002','35609204079502',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000020471,'\0	\n\r','4s@z~'),('208950000000003','33638050003','35609204079503',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000012343,'\0	\n\r','4s@z~'),('208950000000004','33638050004','35609204079504',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000012215,'56f0261d9d051063','4s@z~'),('208950000000005','33638050005','35609204079505',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000012215,'56f0261d9d051063','4s@z~'),('208950000000001','33638050001','35609204079501',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'wqgzWЁZ]','4s@z~'),('208950000000006','33638050006','35609204079506',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000012215,'56f0261d9d051063','4s@z~'),('208950000000007','33638050007','35609204079507',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000012215,'56f0261d9d051063','4s@z~'),('208930000000002','33638030002','35609204079302',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'wqgzWЁZ]','4s@z~'),('208930000000003','33638030003','35609204079303',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'wqgzWЁZ]','4s@z~'),('208930000000004','33638030004','35609204079304',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'wqgzWЁZ]','4s@z~'),('208930000000005','33638030005','35609204079305',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'wqgzWЁZ]','4s@z~'),('208930000000006','33638030006','35609204079306',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'wqgzWЁZ]','4s@z~'),('208930000000007','33638030007','35609204079307',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'wqgzWЁZ]','4s@z~'),('208940000000007','33638040007','35609204079407',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'wqgzWЁZ]','4s@z~'),('208940000000006','33638040006','35609204079406',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'wqgzWЁZ]','4s@z~'),('208940000000005','33638040005','35609204079405',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'wqgzWЁZ]','4s@z~'),('208940000000004','33638040004','35609204079404',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'wqgzWЁZ]','4s@z~'),('208940000000003','33638040003','35609204079403',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'wqgzWЁZ]','4s@z~'),('208940000000002','33638040002','35609204079402',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'wqgzWЁZ]','4s@z~'),('208940000000001','33638040001','35609204079401',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'wqgzWЁZ]','4s@z~'),('208920100001100','33638020001','35609204079201',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'ebd07771ace8677a','4s@z~'),('208920100001101','33638020001','35609204079201',NULL,'NOT_PURGED',120,50000000,100000000,47,0000000000,1,'kp~Љu{K',1,0,00000281044204937234,'\0	\n\r','$I6;+fku|'),('208920100001102','33638020002','35609204079202',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'ebd07771ace8677a','4s@z~'),('208920100001103','33638020003','35609204079203',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'ebd07771ace8677a','4s@z~'),('208920100001104','33638020004','35609204079204',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'ebd07771ace8677a','4s@z~'),('208920100001105','33638020005','35609204079205',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'ebd07771ace8677a','4s@z~'),('208920100001106','33638020006','35609204079206',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'kp~Љu{K',1,0,00000000000000006103,'ebd07771ace8677a','$I6;+fku|'),('208920100001107','33638020007','35609204079207',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'ebd07771ace8677a','4s@z~'),('208920100001108','33638020008','35609204079208',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'ebd07771ace8677a','4s@z~'),('208920100001109','33638020009','35609204079209',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'ebd07771ace8677a','4s@z~'),('208920100001110','33638020010','35609204079210',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'ebd07771ace8677a','4s@z~'),('208930100001111','33638030011','35609304079211',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'ebd07771ace8677a','4s@z~'),('208930100001112','33638030012','35609304079212',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006103,'ebd07771ace8677a','4s@z~'),('208930100001113','33638030013','35609304079213',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000006263,'SNܒIve6','4s@z~'),('208950000000008','33638050008','35609204079508',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000012215,'56f0261d9d051063','4s@z~'),('208950000000009','33638050009','35609204079509',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000012215,'56f0261d9d051063','4s@z~'),('208950000000010','33638050010','35609204079510',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000012215,'56f0261d9d051063','4s@z~'),('208950000000011','33638050011','35609204079511',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000012215,'56f0261d9d051063','4s@z~'),('208950000000012','33638050012','35609204079512',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000012215,'56f0261d9d051063','4s@z~'),('208950000000013','33638050013','35609204079513',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000012215,'56f0261d9d051063','4s@z~'),('208950000000014','33638050014','35609204079514',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000012215,'56f0261d9d051063','4s@z~'),('208950000000015','33638050015','35609204079515',NULL,'PURGED',120,50000000,100000000,47,0000000000,1,'G?/Д	|hb',1,0,00000000000000000000,'3536663032363164','4s@z~'),('208920100001118','33638020010','35609204079210',NULL,'NOT_PURGED',120,50000000,100000000,47,0000000000,1,'kp~Љu{K',1,0,00000281044204934762,'~?03u-%eyy','$I6;+fku|'),('208920100001121','33638020010','35609204079210',NULL,'NOT_PURGED',120,50000000,100000000,47,0000000000,1,'kp~Љu{K',1,0,00000281044204935293,'&@xg]\nVp','$I6;+fku|'),('208920100001119','33638020010','35609204079210',NULL,'NOT_PURGED',120,50000000,100000000,47,0000000000,1,'kp~Љu{K',1,0,00000281044204935293,'269482407867805d','$I6;+fku|'),('208920100001120','33638020010','35609204079210',NULL,'NOT_PURGED',120,50000000,100000000,47,0000000000,1,'kp~Љu{K',1,0,00000281044204935293,'3236393438323430','$I6;+fku|');
+INSERT INTO `users` VALUES ('208950000000031','380561234567','55000000000001',NULL,'PURGED',50,40000000,100000000,47,0000000000,1,0x0C0A34601D4F07677303652C0462535B,0,0,0x40,'ebd07771ace8677a',0x63bfa50ee6523365ff14c1f45f88737d);
+/*!40000 ALTER TABLE `users` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2016-06-28 11:41:40
diff --git a/scripts/syncComponents.sh b/scripts/syncComponents.sh
index d146956d82ed9c90ba70f004e3cbfbe11672f63e..72685d56945c73500503681837fa27744e76e2bc 100755
--- a/scripts/syncComponents.sh
+++ b/scripts/syncComponents.sh
@@ -36,6 +36,9 @@ function usage {
     echo ""
     echo "Options:"
     echo "--------"
+    echo "    --nrf-branch ####"
+    echo "    Specify the source branch for the OAI-NRF component"
+    echo ""
     echo "    --amf-branch ####"
     echo "    Specify the source branch for the OAI-AMF component"
     echo ""
@@ -50,6 +53,7 @@ function usage {
     echo ""
 }
 
+NRF_BRANCH='develop'
 AMF_BRANCH='develop'
 SMF_BRANCH='develop'
 SPGWU_BRANCH='master'
@@ -66,6 +70,12 @@ case $key in
     usage
     exit 0
     ;;
+    --nrf-branch)
+    NRF_BRANCH="$2"
+    doDefault=0
+    shift
+    shift
+    ;;
     --amf-branch)
     AMF_BRANCH="$2"
     doDefault=0
@@ -94,6 +104,7 @@ esac
 done
 
 echo "---------------------------------------------------------"
+echo "OAI-NRF    component branch : ${NRF_BRANCH}"
 echo "OAI-AMF    component branch : ${AMF_BRANCH}"
 echo "OAI-SMF    component branch : ${SMF_BRANCH}"
 echo "OAI-SPGW-U component branch : ${SPGWU_BRANCH}"
@@ -112,6 +123,11 @@ if [ $doDefault -eq 1 ]
 then
     git submodule foreach 'git fetch --prune && git checkout develop && git pull origin develop'  > /dev/null 2>&1
 else
+    pushd component/oai-nrf
+    git fetch --prune > /dev/null 2>&1
+    git checkout $NRF_BRANCH > /dev/null 2>&1
+    git pull origin $NRF_BRANCH > /dev/null 2>&1
+    popd
     pushd component/oai-amf
     git fetch --prune > /dev/null 2>&1
     git checkout $AMF_BRANCH > /dev/null 2>&1