diff --git a/ci-scripts/Jenkinsfile-GitLab-Container b/ci-scripts/Jenkinsfile-GitLab-Container
index b37c9d4f4b30e08177ae58f6e5f497486b605b2b..7c872e7b228dfdd040bed277029efe1f6c0546a6 100644
--- a/ci-scripts/Jenkinsfile-GitLab-Container
+++ b/ci-scripts/Jenkinsfile-GitLab-Container
@@ -238,6 +238,26 @@ pipeline {
             }
           }
         }
+        stage ("4G L2 Simulators") {
+          when { expression {doMandatoryTests} }
+          steps {
+            script {
+              triggerSlaveJob ('RAN-L2-Sim-Test-4G', 'Test-L2-Sim-Container-4G')
+            }
+          }
+          post {
+            always {
+              script {
+                finalizeSlaveJob('RAN-L2-Sim-Test-4G')
+              }
+            }
+            failure {
+              script {
+                currentBuild.result = 'FAILURE'
+              }
+            }
+          }
+        }
         stage ("5G L2 Simulators") {
           when { expression {doMandatoryTests} }
           steps {
diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py
index 8f992689e207ece7bec91aa328a32e6d448d37f1..1d2de33d97b85f94fb8f7b566a43d1d928b4bebd 100644
--- a/ci-scripts/cls_containerize.py
+++ b/ci-scripts/cls_containerize.py
@@ -532,6 +532,25 @@ class Containerize():
 			# don't delete such that we might recover the zips
 			#mySSH.command('rm -f build_log_' + self.testCase_id + '.zip','\$', 5)
 
+		# we do not analyze the logs (we assume the proxy builds fine at this stage),
+		# but need to have the following information to correctly display the HTML
+		files = {}
+		errorandwarnings = {}
+		errorandwarnings['errors'] = 0
+		errorandwarnings['warnings'] = 0
+		errorandwarnings['status'] = True
+		files['Target Image Creation'] = errorandwarnings
+		self.collectInfo['proxy'] = files
+		mySSH.command('docker image inspect --format=\'Size = {{.Size}} bytes\' proxy:' + tag, '\$', 5)
+		result = re.search('Size *= *(?P<size>[0-9\-]+) *bytes', mySSH.getBefore())
+		if result is not None:
+			imageSize = float(result.group('size')) / 1000000
+			logging.debug('\u001B[1m   proxy size is ' + ('%.0f' % imageSize) + ' Mbytes\u001B[0m')
+			self.allImagesSize['proxy'] = str(round(imageSize,1)) + ' Mbytes'
+		else:
+			logging.debug('proxy size is unknown')
+			self.allImagesSize['proxy'] = 'unknown'
+
 		# Cleaning any created tmp volume
 		mySSH.command(self.cli + ' volume prune --force || true','\$', 15)
 		mySSH.close()
diff --git a/ci-scripts/xml_files/container_5g_l2sim_proxy.xml b/ci-scripts/xml_files/container_4g_l2sim_proxy.xml
similarity index 96%
rename from ci-scripts/xml_files/container_5g_l2sim_proxy.xml
rename to ci-scripts/xml_files/container_4g_l2sim_proxy.xml
index af1715d793669550b31871c5421620568aecb604..c378ce89053dd5b2193cb3b734f47341d52cb5e1 100644
--- a/ci-scripts/xml_files/container_5g_l2sim_proxy.xml
+++ b/ci-scripts/xml_files/container_4g_l2sim_proxy.xml
@@ -21,7 +21,7 @@
 
 -->
 <testCaseList>
-        <htmlTabRef>l2sim-5gnr-proxy-build</htmlTabRef>
+        <htmlTabRef>l2sim-4glte-proxy-build</htmlTabRef>
         <htmlTabName>Build L2sim proxy image</htmlTabName>
         <htmlTabIcon>wrench</htmlTabIcon>
         <repeatCount>1</repeatCount>
diff --git a/ci-scripts/xml_files/container_4g_l2sim_tdd.xml b/ci-scripts/xml_files/container_4g_l2sim_tdd.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5298d01ef30677f858d6786771b01b674a7a4e2a
--- /dev/null
+++ b/ci-scripts/xml_files/container_4g_l2sim_tdd.xml
@@ -0,0 +1,135 @@
+<!--
+
+ Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The OpenAirInterface Software Alliance licenses this file to You under
+ the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.openairinterface.org/?page_id=698
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ For more information about the OpenAirInterface (OAI) Software Alliance:
+      contact@openairinterface.org
+
+-->
+<testCaseList>
+        <htmlTabRef>l2sim-4glte-tdd</htmlTabRef>
+        <htmlTabName>Testing 4G LTE L2 sim - FDD eNB</htmlTabName>
+        <htmlTabIcon>wrench</htmlTabIcon>
+        <repeatCount>2</repeatCount>
+        <TestCaseRequestedList>
+ 100001
+ 000000
+ 000001
+ 000002
+ 000003
+ 000011
+ 200000
+ 020001
+ 020002
+ 030011
+ 030012
+ 200001
+ 100001
+        </TestCaseRequestedList>
+        <TestCaseExclusionList></TestCaseExclusionList>
+
+        <testCase id="000000">
+                <class>DeployGenObject</class>
+                <desc>Deploy Cassandra Database</desc>
+                <yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
+                <services>cassandra db_init</services>
+                <nb_healthy>1</nb_healthy>
+        </testCase>
+
+        <testCase id="000001">
+                <class>DeployGenObject</class>
+                <desc>Deploy OAI 4G CoreNetwork</desc>
+                <yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
+                <services>oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen</services>
+                <nb_healthy>7</nb_healthy>
+        </testCase>
+
+        <testCase id="000002">
+                <class>DeployGenObject</class>
+                <desc>Deploy OAI 4G eNB L2 sim</desc>
+                <yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
+                <services>oai_enb</services>
+                <nb_healthy>8</nb_healthy>
+        </testCase>
+
+        <testCase id="000003">
+                <class>DeployGenObject</class>
+                <desc>Deploy OAI L2 sim 4G LTE-UE 1 and Proxy</desc>
+                <yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
+                <services>proxy oai_ue1</services>
+                <nb_healthy>10</nb_healthy>
+        </testCase>
+
+        <testCase id="000011">
+                <class>IdleSleep</class>
+                <desc>Sleep</desc>
+                <idle_sleep_time_in_sec>10</idle_sleep_time_in_sec>
+        </testCase>
+
+        <testCase id="020001">
+                <class>PingFromContainer</class>
+                <desc>Ping trf-gen from LTE-UE 1</desc>
+                <container_name>l2sim4g-oai-lte-ue1</container_name>
+                <options>-I oaitun_ue1 -c 20 192.168.61.11</options>
+                <loss_threshold>0</loss_threshold>
+        </testCase>
+
+        <testCase id="020002">
+                <class>PingFromContainer</class>
+                <desc>Ping LTE-UE 1 from trf-gen</desc>
+                <container_name>l2sim4g-trf-gen</container_name>
+                <options>-c 20 12.0.0.2</options>
+                <loss_threshold>0</loss_threshold>
+        </testCase>
+
+        <testCase id="030011">
+                <class>IperfFromContainer</class>
+                <desc>Iperf UDP Downlink</desc>
+                <server_container_name>l2sim4g-oai-lte-ue1</server_container_name>
+                <client_container_name>l2sim4g-trf-gen</client_container_name>
+                <server_options>-B 12.0.0.2 -u -i 1 -s</server_options>
+                <client_options>-c 12.0.0.2 -u -i 1 -t 30 -b 1M</client_options>
+        </testCase>
+
+        <testCase id="030012">
+                <class>IperfFromContainer</class>
+                <desc>Iperf UDP Uplink</desc>
+                <server_container_name>l2sim4g-trf-gen</server_container_name>
+                <client_container_name>l2sim4g-oai-lte-ue1</client_container_name>
+                <server_options>-u -i 1 -s</server_options>
+                <client_options>-B 12.0.0.2 -c 192.168.61.11 -u -i 1 -t 30 -b 3M</client_options>
+        </testCase>
+
+        <testCase id="100001">
+                <class>UndeployGenObject</class>
+                <desc>Undeploy all OAI 4G stack</desc>
+                <yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
+        </testCase>
+
+        <testCase id="200000">
+                <class>StatsFromGenObject</class>
+                <desc>Statistics before Traffic Test</desc>
+                <yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
+        </testCase>
+
+        <testCase id="200001">
+                <class>StatsFromGenObject</class>
+                <desc>Statistics after Traffic Test</desc>
+                <yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
+        </testCase>
+
+</testCaseList>
diff --git a/ci-scripts/xml_files/container_4g_l2sim_tdd_down.xml b/ci-scripts/xml_files/container_4g_l2sim_tdd_down.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ec0f2523e2035cfd0c632eddce7c8b1d878723de
--- /dev/null
+++ b/ci-scripts/xml_files/container_4g_l2sim_tdd_down.xml
@@ -0,0 +1,38 @@
+<!--
+
+ Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The OpenAirInterface Software Alliance licenses this file to You under
+ the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.openairinterface.org/?page_id=698
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ For more information about the OpenAirInterface (OAI) Software Alliance:
+      contact@openairinterface.org
+
+-->
+<testCaseList>
+        <htmlTabRef>l2sim-4glte-down</htmlTabRef>
+        <htmlTabName>CleanUp 4G L2 sim - FDD eNB</htmlTabName>
+        <htmlTabIcon>trash</htmlTabIcon>
+        <TestCaseRequestedList>
+ 100002
+        </TestCaseRequestedList>
+        <TestCaseExclusionList></TestCaseExclusionList>
+
+        <testCase id="100002">
+                <class>UndeployGenObject</class>
+                <desc>Undeploy all OAI 4G stack</desc>
+                <yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
+        </testCase>
+
+</testCaseList>
diff --git a/ci-scripts/xml_files/container_l2sim_proxy.xml b/ci-scripts/xml_files/container_l2sim_proxy.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f32658daca5e2f3471ce66ccd1096d4569fa0323
--- /dev/null
+++ b/ci-scripts/xml_files/container_l2sim_proxy.xml
@@ -0,0 +1,42 @@
+<!--
+
+ Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The OpenAirInterface Software Alliance licenses this file to You under
+ the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.openairinterface.org/?page_id=698
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ For more information about the OpenAirInterface (OAI) Software Alliance:
+      contact@openairinterface.org
+
+-->
+<testCaseList>
+        <htmlTabRef>l2sim-4glte-5gnr-proxy-build</htmlTabRef>
+        <htmlTabName>Build L2sim proxy image</htmlTabName>
+        <htmlTabIcon>wrench</htmlTabIcon>
+        <repeatCount>1</repeatCount>
+        <TestCaseRequestedList>
+ 000001
+        </TestCaseRequestedList>
+        <TestCaseExclusionList></TestCaseExclusionList>
+
+        <testCase id="000001">
+                <class>Build_Proxy</class>
+                <desc>Build L2sim Proxy Image</desc>
+                <eNB_instance>1</eNB_instance>
+                <eNB_serverId>1</eNB_serverId>
+                <forced_workspace_cleanup>True</forced_workspace_cleanup>
+                <proxy_commit>56cfdc0</proxy_commit>
+        </testCase>
+
+</testCaseList>
diff --git a/ci-scripts/yaml_files/4g_l2sim_fdd/docker-compose.yml b/ci-scripts/yaml_files/4g_l2sim_fdd/docker-compose.yml
new file mode 100644
index 0000000000000000000000000000000000000000..0562adab4b9f80d441bcf1aabc713bb858d96d33
--- /dev/null
+++ b/ci-scripts/yaml_files/4g_l2sim_fdd/docker-compose.yml
@@ -0,0 +1,305 @@
+version: '3.8'
+
+services:
+    cassandra:
+        image: cassandra:2.1
+        container_name: l2sim4g-cassandra
+        networks:
+            private_net:
+                ipv4_address: 192.168.68.2
+        environment:
+            CASSANDRA_CLUSTER_NAME: "OAI HSS Cluster"
+            CASSANDRA_ENDPOINT_SNITCH: GossipingPropertyFileSnitch
+        healthcheck:
+            test: /bin/bash -c "nodetool status"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+
+    db_init:
+        image: cassandra:2.1
+        container_name: l2sim4g-db-init
+        depends_on: [cassandra]
+        deploy:
+            restart_policy:
+                condition: on-failure
+                max_attempts: 10
+        networks:
+            private_net:
+                ipv4_address: 192.168.68.4
+        volumes:
+            - ../4g_rfsimulator_fdd_05MHz/oai_db.cql:/home/oai_db.cql
+        entrypoint: /bin/bash -c "cqlsh --file /home/oai_db.cql 192.168.68.2 && echo 'OK'"
+
+    oai_hss:
+        image: oai-hss:latest
+        container_name: l2sim4g-oai-hss
+        privileged: true
+        depends_on: [cassandra]
+        networks:
+            private_net:
+                ipv4_address: 192.168.68.3
+            public_net:
+                ipv4_address: 192.168.61.2
+        environment:
+            REALM: openairinterface.org
+            HSS_FQDN: hss.openairinterface.org
+            PREFIX: /openair-hss/etc
+            cassandra_Server_IP: 192.168.68.2
+            OP_KEY: 1006020f0a478bf6b699f15c062e42b3
+            LTE_K: fec86ba6eb707ed08905757b1bb44b8f
+            APN1: oai.ipv4
+            APN2: internet
+            FIRST_IMSI: 208960100000001
+            NB_USERS: 10
+        healthcheck:
+            test: /bin/bash -c "pgrep oai_hss"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+
+    redis:
+        image: redis:6.0.5
+        container_name: l2sim4g-redis
+        privileged: true
+        networks:
+            public_net:
+                ipv4_address: 192.168.61.6
+        volumes:
+            - ../4g_rfsimulator_fdd_05MHz/redis_extern.conf:/usr/local/etc/redis/redis.conf
+        entrypoint: /bin/bash -c "redis-server /usr/local/etc/redis/redis.conf"
+        healthcheck:
+            test: /bin/bash -c "redis-cli -h 192.168.61.6 -p 6380 ping"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+
+    magma_mme:
+        image: magma-mme:latest
+        container_name: l2sim4g-magma-mme
+        hostname: mme
+        privileged: true
+        depends_on: [oai_hss, redis]
+        networks:
+            public_net:
+                ipv4_address: 192.168.61.3
+        environment:
+            TZ: Europe/Paris
+            REALM: openairinterface.org
+            PREFIX: /openair-mme/etc
+            HSS_HOSTNAME: hss
+            HSS_FQDN: hss.openairinterface.org
+            HSS_REALM: openairinterface.org
+            MME_FQDN: mme.openairinterface.org
+            FEATURES: mme_oai
+        volumes:
+            - ../4g_rfsimulator_fdd_05MHz/mme_fd.sprint.conf:/magma-mme/etc/mme_fd.conf.tmplt
+            - ../4g_rfsimulator_fdd_05MHz/mme.conf:/magma-mme/etc/mme.conf
+            - ../4g_rfsimulator_fdd_05MHz/entrypoint.sh:/magma-mme/bin/entrypoint.sh
+        entrypoint: /bin/bash -c "/magma-mme/bin/entrypoint.sh"
+        healthcheck:
+            test: /bin/bash -c "pgrep oai_mme"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+
+    oai_spgwc:
+        image: oai-spgwc:latest
+        privileged: true
+        depends_on: [magma_mme]
+        container_name: l2sim4g-oai-spgwc
+        networks:
+            public_net:
+                ipv4_address: 192.168.61.4
+        environment:
+            TZ: Europe/Paris
+            SGW_INTERFACE_NAME_FOR_S11: eth0
+            PGW_INTERFACE_NAME_FOR_SX: eth0
+            DEFAULT_DNS_IPV4_ADDRESS: 172.21.3.100
+            DEFAULT_DNS_SEC_IPV4_ADDRESS: 8.8.4.4
+            PUSH_PROTOCOL_OPTION: 'true'
+            APN_NI_1: oai.ipv4
+            APN_NI_2: oai.ipv4_2
+            DEFAULT_APN_NI_1: oai.ipv4
+            UE_IP_ADDRESS_POOL_1: '12.0.0.2 - 12.0.0.254'
+            UE_IP_ADDRESS_POOL_2: '12.1.1.2 - 12.1.1.254'
+            MCC: '208'
+            MNC: '96'
+            MNC03: '096'
+            TAC: 1
+            GW_ID: 1
+            REALM: openairinterface.org
+        healthcheck:
+            test: /bin/bash -c "pgrep oai_spgwc"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+
+    oai_spgwu:
+        image: oai-spgwu-tiny:latest
+        privileged: true
+        container_name: l2sim4g-oai-spgwu-tiny
+        depends_on: [oai_spgwc]
+        networks:
+            public_net:
+                ipv4_address: 192.168.61.5
+        environment:
+            TZ: Europe/Paris
+            PID_DIRECTORY: /var/run
+            INSTANCE: 1
+            SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP: eth0
+            PGW_INTERFACE_NAME_FOR_SGI: eth0
+            SGW_INTERFACE_NAME_FOR_SX: eth0
+            SPGWC0_IP_ADDRESS: 192.168.61.4
+            NETWORK_UE_IP: '12.0.0.0/24'
+            NETWORK_UE_NAT_OPTION: 'yes'
+            MCC: '208'
+            MNC: '96'
+            MNC03: '096'
+            TAC: 1
+            GW_ID: 1
+            REALM: openairinterface.org
+        healthcheck:
+            test: /bin/bash -c "pgrep oai_spgwu"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+
+    trf_gen:
+        image: trf-gen:production
+        privileged: true
+        container_name: l2sim4g-trf-gen
+        networks:
+            public_net:
+                ipv4_address: 192.168.61.11
+        entrypoint: /bin/bash -c "ip route add 12.0.0.0/24 via 192.168.61.5 dev eth0; sleep infinity"
+        healthcheck:
+            test: /bin/bash -c "ping -c 2 192.168.61.5"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+
+    oai_enb:
+        image: oai-enb:develop
+        privileged: true
+        container_name: l2sim4g-oai-enb
+        network_mode: "host"
+        environment:
+            TZ: Europe/Paris
+            USE_NFAPI_VNF: 'yes'
+            ENB_NAME: enb-l2sim-vnf
+            MCC: '208'
+            MNC: '96'
+            MNC_LENGTH: 2
+            TAC: 1
+            UTRA_BAND_ID: 7
+            DL_FREQUENCY_IN_MHZ: 2680
+            UL_FREQUENCY_OFFSET_IN_MHZ: 120
+            NID_CELL: 10
+            NB_PRB: 25
+            MME_S1C_IP_ADDRESS: 192.168.61.3
+            ENB_INTERFACE_NAME_FOR_S1_MME: eth0
+            ENB_IPV4_ADDRESS_FOR_S1_MME: 192.168.61.1
+            ENB_INTERFACE_NAME_FOR_S1U: eth0
+            ENB_IPV4_ADDRESS_FOR_S1U: 192.168.61.1
+            ENB_IPV4_ADDRESS_FOR_X2C: 192.168.61.1
+            FLEXRAN_ENABLED: 'no'
+            FLEXRAN_INTERFACE_NAME: eth0
+            FLEXRAN_IPV4_ADDRESS: 192.168.61.1
+            LOCAL_S_IF_NAME: 'lo:'
+            REMOTE_S_ADDRESS: 127.0.0.1
+            LOCAL_S_ADDRESS: 127.0.0.2
+            USE_ADDITIONAL_OPTIONS: --MACRLCs.[0].scheduler_mode "default" --log_config.global_log_options level,nocolor,time
+        healthcheck:
+            test: /bin/bash -c "pgrep lte-softmodem"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+
+    proxy:
+        image: oai-lte-multi-ue-proxy:latest
+        privileged: true
+        container_name: "l2sim4g-proxy"
+        network_mode: "host"
+        environment:
+            TZ: Europe/Paris
+        command: "/oai-lte-multi-ue-proxy/bin/proxy 1"
+        depends_on:
+            - oai_enb
+        healthcheck:
+            test: /bin/bash -c "pgrep proxy"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+
+    oai_ue1:
+        image: oai-lte-ue:develop
+        privileged: true
+        container_name: l2sim4g-oai-lte-ue1
+        network_mode: "host"
+        environment:
+            TZ: Europe/Paris
+            USE_NFAPI: 'yes'
+            OPENAIR_DIR: /opt/oai-nr-ue
+            MCC: '208'
+            MNC: '96'
+            SHORT_IMSI: '0100000001'
+            LTE_KEY: 'fec86ba6eb707ed08905757b1bb44b8f'
+            OPC: 'c42449363bbad02b66d16bc975d77cc1'
+            MSISDN: '001011234561010'
+            HPLMN: 20896
+            UE_NFAPI_IF_NAME: eno1
+            ENB_IP_ADDRESS: 127.0.0.1
+            LTE_UE_IP_ADDRESS: 127.0.0.1
+            USE_ADDITIONAL_OPTIONS: --L2-emul 5 --nokrnmod 1 --num-ues 1 --node-number 2 --log_config.global_log_options level,nocolor,time
+        volumes:
+            - ../../../openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results:/opt/oai-nr-ue/openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results
+        healthcheck:
+            test: /bin/bash -c "pgrep lte-uesoftmodem"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+
+    oai_ue2:
+        image: oai-lte-ue:develop
+        privileged: true
+        container_name: l2sim4g-oai-lte-ue2
+        network_mode: "host"
+        environment:
+            TZ: Europe/Paris
+            USE_NFAPI: 'yes'
+            OPENAIR_DIR: /opt/oai-nr-ue
+            MCC: '208'
+            MNC: '96'
+            SHORT_IMSI: '0100000002'
+            LTE_KEY: 'fec86ba6eb707ed08905757b1bb44b8f'
+            OPC: 'c42449363bbad02b66d16bc975d77cc1'
+            MSISDN: '001011234561010'
+            HPLMN: 20896
+            UE_NFAPI_IF_NAME: eno1
+            ENB_IP_ADDRESS: 127.0.0.1
+            LTE_UE_IP_ADDRESS: 127.0.0.1
+            USE_ADDITIONAL_OPTIONS: --L2-emul 5 --nokrnmod 1 --num-ues 1 --node-number 3 --log_config.global_log_options level,nocolor,time
+        volumes:
+            - ../../../openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results:/opt/oai-nr-ue/openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results
+        healthcheck:
+            test: /bin/bash -c "pgrep lte-uesoftmodem"
+            interval: 10s
+            timeout: 5s
+            retries: 5
+
+networks:
+    private_net:
+        name: l2sim4g-oai-private-net
+        ipam:
+            config:
+                - subnet: 192.168.68.0/26
+        driver_opts:
+            com.docker.network.bridge.name: "l2sim4g-private"
+    public_net:
+        name: l2sim4g-oai-public-net
+        ipam:
+            config:
+                - subnet: 192.168.61.0/26
+        driver_opts:
+            com.docker.network.bridge.name: "l2sim4g-public"
diff --git a/doc/TESTBenches.md b/doc/TESTBenches.md
index c6a01f278d41becdfba7fcefa3713be97af469ce..c9a9870953dc11245c63c855d0888f232f7e7721 100644
--- a/doc/TESTBenches.md
+++ b/doc/TESTBenches.md
@@ -83,6 +83,9 @@ Webhook
   - caracal + N310
   - pure performance test through phy-test scheduler, see command line for more
     details
+- [RAN-L2-Sim-Test-5G](https://jenkins-oai.eurecom.fr/job/RAN-L2-Sim-Test-4G/)
+  - obelix (eNB, 1x UE, OAI EPC)
+  - L2simulator: skips physical layer and uses proxy between eNB and UE
 - [RAN-L2-Sim-Test-5G](https://jenkins-oai.eurecom.fr/job/RAN-L2-Sim-Test-5G/)
   - obelix (gNB, 1x UE, OAI 5GC)
   - L2simulator: skips physical layer and uses proxy between gNB and UE,
diff --git a/docker/scripts/enb_entrypoint.sh b/docker/scripts/enb_entrypoint.sh
index 06e94b1e7a9d64696e92c2c6768f342333a6bb2b..825dfd73c1392723d6fee1334636096fdc153370 100755
--- a/docker/scripts/enb_entrypoint.sh
+++ b/docker/scripts/enb_entrypoint.sh
@@ -18,6 +18,7 @@ if [[ -v USE_FDD_IF4P5_RCC ]]; then cp $PREFIX/etc/rcc.if4p5.fdd.conf $PREFIX/et
 if [[ -v USE_TDD_IF4P5_RCC ]]; then cp $PREFIX/etc/rcc.if4p5.tdd.conf $PREFIX/etc/enb.conf; fi
 if [[ -v USE_FDD_RRU ]]; then cp $PREFIX/etc/rru.fdd.conf $PREFIX/etc/enb.conf; fi
 if [[ -v USE_TDD_RRU ]]; then cp $PREFIX/etc/rru.tdd.conf $PREFIX/etc/enb.conf; fi
+if [[ -v USE_NFAPI_VNF ]]; then cp $PREFIX/etc/enb.nfapi.vnf.conf $PREFIX/etc/enb.conf; fi
 # Sometimes, the templates are not enough. We mount a conf file on $PREFIX/etc. It can be a template itself.
 if [[ -v USE_VOLUMED_CONF ]]; then cp $PREFIX/etc/mounted.conf $PREFIX/etc/enb.conf; fi
 
diff --git a/docker/scripts/enb_parameters.yaml b/docker/scripts/enb_parameters.yaml
index 07bba4479b95417e58cabb7866f83e7d2de9a955..69baaebb3d9138a123fff4fb5fd1ca1fe0b05312 100644
--- a/docker/scripts/enb_parameters.yaml
+++ b/docker/scripts/enb_parameters.yaml
@@ -354,3 +354,45 @@
     - key: parallel_config
       env: "@THREAD_PARALLEL_CONFIG@"
 
+  - filePrefix: "proxy_rcc.band7.tm1.nfapi.conf"
+    outputfilename: "enb.nfapi.vnf.conf"
+    config:
+    - key: Active_eNBs
+      env: "@ENB_NAME@"
+    - key: eNB_name
+      env: "@ENB_NAME@"
+    - key: plmn_list
+      env:
+        mcc: "@MCC@"
+        mnc: "@MNC@"
+        mnc_length: "@MNC_LENGTH@"
+    - key: tracking_area_code
+      env: "@TAC@"
+    - key: eutra_band
+      env: "@UTRA_BAND_ID@"
+    - key: downlink_frequency
+      env: "@DL_FREQUENCY_IN_MHZ@000000"
+    - key: uplink_frequency_offset
+      env: "@UL_FREQUENCY_OFFSET_IN_MHZ@000000"
+    - key: Nid_cell
+      env: "@NID_CELL@"
+    - key: N_RB_DL
+      env: "@NB_PRB@"
+    - key: ipv4
+      env: "@MME_S1C_IP_ADDRESS@"
+    - key: ENB_INTERFACE_NAME_FOR_S1_MME
+      env: "@ENB_INTERFACE_NAME_FOR_S1_MME@"
+    - key: ENB_IPV4_ADDRESS_FOR_S1_MME
+      env: "@ENB_IPV4_ADDRESS_FOR_S1_MME@"
+    - key: ENB_INTERFACE_NAME_FOR_S1U
+      env: "@ENB_INTERFACE_NAME_FOR_S1U@"
+    - key: ENB_IPV4_ADDRESS_FOR_S1U
+      env: "@ENB_IPV4_ADDRESS_FOR_S1U@"
+    - key: ENB_IPV4_ADDRESS_FOR_X2C
+      env: "@ENB_IPV4_ADDRESS_FOR_X2C@"
+    - key: LOCAL_S_IF_NAME
+      env: "@LOCAL_S_IF_NAME@"
+    - key: REMOTE_S_ADDRESS
+      env: "@REMOTE_S_ADDRESS@"
+    - key: LOCAL_S_ADDRESS
+      env: "@LOCAL_S_ADDRESS@"
diff --git a/docker/scripts/generateTemplate.py b/docker/scripts/generateTemplate.py
index ec8f32ec6e849c55643e856b07775d7cdffe9834..723bf860709448374d4832c2969e8a8fa2fc2070 100644
--- a/docker/scripts/generateTemplate.py
+++ b/docker/scripts/generateTemplate.py
@@ -65,6 +65,7 @@ def main():
                              "gNB_SA_CU.conf": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
                              "gNB_SA_DU.conf": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
                              "proxy_gnb.band78.sa.fr1.106PRB.usrpn310.conf": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
+                             "proxy_rcc.band7.tm1.nfapi.conf": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
                              "proxy_nr-ue.nfapi.conf": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
                              "ue.nfapi": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
                              "ue_sim_ci": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}'
diff --git a/openair3/NAS/TOOLS/ue_sim_ci.conf b/openair3/NAS/TOOLS/ue_sim_ci.conf
index 5d95c9ba3f182497836948f5c872071f678b4228..e9b02e9b1fbbf289501e92ff8cd8196d593cce34 100644
--- a/openair3/NAS/TOOLS/ue_sim_ci.conf
+++ b/openair3/NAS/TOOLS/ue_sim_ci.conf
@@ -43,3 +43,111 @@ UE0:
     EHPLMN_LIST = ();
 
 };
+
+UE1:
+{
+    USER: {
+        IMEI="356113022094149";
+        MANUFACTURER="OAI";
+        MODEL="LTE SoftModem";
+        PIN="0000";
+    };
+
+    SIM: {
+        MSIN="0100001111";
+        USIM_API_K="8baf473f2f8fd09487cccbd7097c6862";
+        OPC="e734f8734007d6c5ce7a0508809e7e9c";
+        MSISDN="33611123456";
+    };
+
+    # Home PLMN Selector with Access Technology
+    HPLMN= "20896";
+
+    # User controlled PLMN Selector with Access Technology
+    UCPLMN_LIST = ();
+
+    # Operator PLMN List
+    OPLMN_LIST = ("20896");
+
+    # Operator controlled PLMN Selector with Access Technology
+    OCPLMN_LIST = ();
+
+    # Forbidden plmns
+    FPLMN_LIST = ();
+
+    # Equivalent home plmns
+    EHPLMN_LIST = ();
+
+};
+
+UE2:
+{
+    USER: {
+        IMEI="356113022094149";
+        MANUFACTURER="OAI";
+        MODEL="LTE SoftModem";
+        PIN="0000";
+    };
+
+    SIM: {
+        MSIN="0100001111";
+        USIM_API_K="8baf473f2f8fd09487cccbd7097c6862";
+        OPC="e734f8734007d6c5ce7a0508809e7e9c";
+        MSISDN="33611123456";
+    };
+
+    # Home PLMN Selector with Access Technology
+    HPLMN= "20896";
+
+    # User controlled PLMN Selector with Access Technology
+    UCPLMN_LIST = ();
+
+    # Operator PLMN List
+    OPLMN_LIST = ("20896");
+
+    # Operator controlled PLMN Selector with Access Technology
+    OCPLMN_LIST = ();
+
+    # Forbidden plmns
+    FPLMN_LIST = ();
+
+    # Equivalent home plmns
+    EHPLMN_LIST = ();
+
+};
+
+UE3:
+{
+    USER: {
+        IMEI="356113022094149";
+        MANUFACTURER="OAI";
+        MODEL="LTE SoftModem";
+        PIN="0000";
+    };
+
+    SIM: {
+        MSIN="0100001111";
+        USIM_API_K="8baf473f2f8fd09487cccbd7097c6862";
+        OPC="e734f8734007d6c5ce7a0508809e7e9c";
+        MSISDN="33611123456";
+    };
+
+    # Home PLMN Selector with Access Technology
+    HPLMN= "20896";
+
+    # User controlled PLMN Selector with Access Technology
+    UCPLMN_LIST = ();
+
+    # Operator PLMN List
+    OPLMN_LIST = ("20896");
+
+    # Operator controlled PLMN Selector with Access Technology
+    OCPLMN_LIST = ();
+
+    # Forbidden plmns
+    FPLMN_LIST = ();
+
+    # Equivalent home plmns
+    EHPLMN_LIST = ();
+
+};