diff --git a/manifests/servicemonitors.yaml b/manifests/servicemonitors.yaml
index d486ca971e63cf9ccc20a435d49c39e530fb438f..fa6aed0f927efa21d55ff65b18b401070e411bf4 100644
--- a/manifests/servicemonitors.yaml
+++ b/manifests/servicemonitors.yaml
@@ -575,9 +575,9 @@ apiVersion: monitoring.coreos.com/v1
 kind: ServiceMonitor
 metadata:
   namespace: monitoring # namespace where prometheus is running
-  name: tfs-kpi_value_apiservice-metric
+  name: tfs-kpi-value-apiservice-metric
   labels:
-    app: kpi_value_apiservice
+    app: kpi-value-apiservice
     #release: prometheus
     #release: prom  # name of the release
     # ( VERY IMPORTANT: You need to know the correct release name by viewing
@@ -588,7 +588,7 @@ spec:
     matchLabels:
       # Target app service
       #namespace: tfs
-      app: kpi_value_apiservice # same as above
+      app: kpi-value-apiservice # same as above
       #release: prometheus # same as above
   endpoints:
     - port: metrics # named port in target app
@@ -604,9 +604,9 @@ apiVersion: monitoring.coreos.com/v1
 kind: ServiceMonitor
 metadata:
   namespace: monitoring # namespace where prometheus is running
-  name: tfs-kpi_value_writerservice-metric
+  name: tfs-kpi-value-writerservice-metric
   labels:
-    app: kpi_value_writerservice
+    app: kpi-value-writerservice
     #release: prometheus
     #release: prom  # name of the release
     # ( VERY IMPORTANT: You need to know the correct release name by viewing
@@ -617,7 +617,7 @@ spec:
     matchLabels:
       # Target app service
       #namespace: tfs
-      app: kpi_value_writerservice # same as above
+      app: kpi-value-writerservice # same as above
       #release: prometheus # same as above
   endpoints:
     - port: metrics # named port in target app
diff --git a/src/device/requirements.in b/src/device/requirements.in
index e5ac64a6452abf7a17d31e93c36f16ca66122bc0..ca2cdea47bb1ec1045a8bb8c35d64999b8f77f85 100644
--- a/src/device/requirements.in
+++ b/src/device/requirements.in
@@ -24,7 +24,7 @@ Flask-HTTPAuth==4.5.0
 Flask-RESTful==0.3.9
 ipaddress
 Jinja2==3.0.3
-libyang==2.8.0
+libyang==2.8.4
 macaddress
 ncclient==0.6.15
 numpy<2.0.0
diff --git a/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py b/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py
index 00409dfbdf0f1932da4cedef9c02dccbb5be5ad0..03a55f472d2d4d4cd6726795fe6000c4fb68f95b 100644
--- a/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py
+++ b/src/device/service/drivers/gnmi_openconfig/GnmiSessionHandler.py
@@ -40,7 +40,6 @@ class GnmiSessionHandler:
         self._use_tls   = settings.get('use_tls', False)
         self._channel : Optional[grpc.Channel] = None
         self._stub : Optional[gNMIStub] = None
-        self._yang_handler = None
         self._monit_thread = None
         self._yang_handler = YangHandler()
         self._subscriptions = Subscriptions()
diff --git a/src/device/service/drivers/gnmi_openconfig/examples/libyang_examples.py b/src/device/service/drivers/gnmi_openconfig/examples/libyang_examples.py
new file mode 100644
index 0000000000000000000000000000000000000000..f16be652b753ca24fb7c16b361d43781328d97d4
--- /dev/null
+++ b/src/device/service/drivers/gnmi_openconfig/examples/libyang_examples.py
@@ -0,0 +1,162 @@
+# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
+#
+# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+#
+# 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.
+
+import json, libyang, logging, os
+from typing import Dict
+
+logging.basicConfig(level=logging.DEBUG)
+LOGGER = logging.getLogger(__name__)
+
+YANG_BASE_PATH = '/home/tfs/tfs-ctrl/src/device/service/drivers/gnmi_openconfig/git/openconfig/public'
+YANG_SEARCH_PATHS = ':'.join([
+    os.path.join(YANG_BASE_PATH, 'release'),
+    os.path.join(YANG_BASE_PATH, 'third_party'),
+])
+
+YANG_MODULES = [
+    'iana-if-type',
+    'openconfig-bgp-types',
+    'openconfig-vlan-types',
+
+    'openconfig-interfaces',
+    'openconfig-if-8021x',
+    'openconfig-if-aggregate',
+    'openconfig-if-ethernet-ext',
+    'openconfig-if-ethernet',
+    'openconfig-if-ip-ext',
+    'openconfig-if-ip',
+    'openconfig-if-poe',
+    'openconfig-if-sdn-ext',
+    'openconfig-if-tunnel',
+
+    'openconfig-vlan',
+
+    'openconfig-types',
+    'openconfig-policy-types',
+    'openconfig-mpls-types',
+    'openconfig-network-instance-types',
+    'openconfig-network-instance',
+
+    'openconfig-platform',
+    'openconfig-platform-controller-card',
+    'openconfig-platform-cpu',
+    'openconfig-platform-ext',
+    'openconfig-platform-fabric',
+    'openconfig-platform-fan',
+    'openconfig-platform-integrated-circuit',
+    'openconfig-platform-linecard',
+    'openconfig-platform-pipeline-counters',
+    'openconfig-platform-port',
+    'openconfig-platform-psu',
+    'openconfig-platform-software',
+    'openconfig-platform-transceiver',
+    'openconfig-platform-types',
+]
+
+class YangHandler:
+    def __init__(self) -> None:
+        self._yang_context = libyang.Context(YANG_SEARCH_PATHS)
+        self._loaded_modules = set()
+        for yang_module_name in YANG_MODULES:
+            LOGGER.info('Loading module: {:s}'.format(str(yang_module_name)))
+            self._yang_context.load_module(yang_module_name).feature_enable_all()
+            self._loaded_modules.add(yang_module_name)
+        self._data_path_instances = dict()
+
+    def get_data_paths(self) -> Dict[str, libyang.DNode]:
+        return self._data_path_instances
+
+    def get_data_path(self, path : str) -> libyang.DNode:
+        data_path_instance = self._data_path_instances.get(path)
+        if data_path_instance is None:
+            data_path_instance = self._yang_context.create_data_path(path)
+            self._data_path_instances[path] = data_path_instance
+        return data_path_instance
+
+    def destroy(self) -> None:
+        self._yang_context.destroy()
+
+def main():
+    yang_handler = YangHandler()
+
+    LOGGER.info('YangHandler Data (before):')
+    for path, dnode in yang_handler.get_data_paths().items():
+        LOGGER.info('|-> {:s}: {:s}'.format(str(path), json.dumps(dnode.print_dict())))
+
+    if_name        = 'eth1'
+    sif_index      = 0
+    enabled        = True
+    address_ip     = '172.16.0.1'
+    address_ip2    = '192.168.0.1'
+    address_prefix = 24
+    mtu            = 1500
+
+    yang_ifs : libyang.DContainer = yang_handler.get_data_path('/openconfig-interfaces:interfaces')
+    yang_if_path = 'interface[name="{:s}"]'.format(if_name)
+    yang_if : libyang.DContainer = yang_ifs.create_path(yang_if_path)
+    yang_if.create_path('config/name',    if_name)
+    yang_if.create_path('config/enabled', enabled)
+    yang_if.create_path('config/mtu',     mtu    )
+
+    yang_sifs : libyang.DContainer = yang_if.create_path('subinterfaces')
+    yang_sif_path = 'subinterface[index="{:d}"]'.format(sif_index)
+    yang_sif : libyang.DContainer = yang_sifs.create_path(yang_sif_path)
+    yang_sif.create_path('config/index',   sif_index)
+    yang_sif.create_path('config/enabled', enabled  )
+
+    yang_ipv4 : libyang.DContainer = yang_sif.create_path('openconfig-if-ip:ipv4')
+    yang_ipv4.create_path('config/enabled', enabled)
+
+    yang_ipv4_addrs : libyang.DContainer = yang_ipv4.create_path('addresses')
+    yang_ipv4_addr_path = 'address[ip="{:s}"]'.format(address_ip)
+    yang_ipv4_addr : libyang.DContainer = yang_ipv4_addrs.create_path(yang_ipv4_addr_path)
+    yang_ipv4_addr.create_path('config/ip',            address_ip    )
+    yang_ipv4_addr.create_path('config/prefix-length', address_prefix)
+
+    yang_ipv4_addr_path2 = 'address[ip="{:s}"]'.format(address_ip2)
+    yang_ipv4_addr2 : libyang.DContainer = yang_ipv4_addrs.create_path(yang_ipv4_addr_path2)
+    yang_ipv4_addr2.create_path('config/ip',            address_ip2   )
+    yang_ipv4_addr2.create_path('config/prefix-length', address_prefix)
+
+    str_data = yang_if.print_mem('json')
+    json_data = json.loads(str_data)
+    json_data = json_data['openconfig-interfaces:interface'][0]
+    str_data = json.dumps(json_data, indent=4)
+    LOGGER.info('Resulting Request (before unlink): {:s}'.format(str_data))
+
+    yang_ipv4_addr2.unlink()
+
+    root_node : libyang.DContainer = yang_handler.get_data_path('/openconfig-interfaces:interfaces')
+    LOGGER.info('root_node={:s}'.format(str(root_node.print_mem('json'))))
+
+    for s in root_node.siblings():
+        LOGGER.info('sibling: {:s}'.format(str(s)))
+
+    PATH_TMPL = '/openconfig-interfaces:interfaces/interface[name="{:s}"]/subinterfaces/subinterface[index="{:d}"]'
+    yang_sif = root_node.find_path(PATH_TMPL.format(if_name, sif_index))
+    if yang_sif is not None:
+        LOGGER.info('yang_sif={:s}'.format(str(yang_sif.print_mem('json'))))
+        yang_sif.unlink()
+        yang_sif.free()
+
+    str_data = yang_if.print_mem('json')
+    json_data = json.loads(str_data)
+    json_data = json_data['openconfig-interfaces:interface'][0]
+    str_data = json.dumps(json_data, indent=4)
+    LOGGER.info('Resulting Request (after unlink): {:s}'.format(str_data))
+
+    yang_handler.destroy()
+
+if __name__ == '__main__':
+    main()
diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/Interface.py b/src/device/service/drivers/gnmi_openconfig/handlers/Interface.py
index a52c84691c00b0c09336e2400dbeb94a9ca310ed..ed833b647d9c856cd7e54c5258b14924d187eb9f 100644
--- a/src/device/service/drivers/gnmi_openconfig/handlers/Interface.py
+++ b/src/device/service/drivers/gnmi_openconfig/handlers/Interface.py
@@ -34,6 +34,21 @@ class InterfaceHandler(_Handler):
             PATH_TMPL = '/interfaces/interface[name={:s}]/subinterfaces/subinterface[index={:d}]'
             str_path = PATH_TMPL.format(if_name, sif_index)
             str_data = json.dumps({})
+
+            root_node : libyang.DContainer = yang_handler.get_data_path(
+                '/openconfig-interfaces:interfaces'
+            )
+            yang_sif = root_node.find_path('/'.join([
+                '', # add slash at the beginning
+                'openconfig-interfaces:interfaces',
+                'interface[name="{:s}"]'.format(if_name),
+                'subinterfaces',
+                'subinterface[index="{:d}"]'.format(sif_index),
+            ]))
+            if yang_sif is not None:
+                yang_sif.unlink()
+                yang_sif.free()
+
             return str_path, str_data
 
         enabled        = get_bool(resource_value, 'enabled',  True) # True/False
diff --git a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceInterface.py b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceInterface.py
index 2a4c19baa7ccdcc177e2724609a87636d1398a8a..f6f61a32403f154578da0247d0e1db24a727b017 100644
--- a/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceInterface.py
+++ b/src/device/service/drivers/gnmi_openconfig/handlers/NetworkInstanceInterface.py
@@ -36,15 +36,13 @@ class NetworkInstanceInterfaceHandler(_Handler):
 
         if IS_CEOS: ni_if_id = if_name
 
+        PATH_TMPL = '/network-instances/network-instance[name={:s}]/interfaces/interface[id={:s}]'
+        str_path = PATH_TMPL.format(ni_name, ni_if_id)
+
         if delete:
-            PATH_TMPL = '/network-instances/network-instance[name={:s}]/interfaces/interface[id={:s}]'
-            str_path = PATH_TMPL.format(ni_name, ni_if_id)
             str_data = json.dumps({})
             return str_path, str_data
 
-        str_path = '/network-instances/network-instance[name={:s}]/interfaces/interface[id={:s}]'.format(
-            ni_name, ni_if_id
-        )
         #str_data = json.dumps({
         #    'id': if_id,
         #    'config': {'id': if_id, 'interface': if_name, 'subinterface': sif_index},
diff --git a/src/nbi/README.md b/src/nbi/README.md
index 32902a0b33dba2f9ce3df4a60833608bac6e129d..f997ce21c9b809a1749f046672e895d3ad466824 100644
--- a/src/nbi/README.md
+++ b/src/nbi/README.md
@@ -31,5 +31,5 @@ sudo ldconfig
 
 ### Install Python bindings
 ```bash
-pip install libyang==2.8.0
+pip install libyang==2.8.4
 ```
diff --git a/src/nbi/requirements.in b/src/nbi/requirements.in
index 0d780483626979cc993a984d3da709762c749d56..d56ee821b19894e435368cd6250b25d3bdc33c10 100644
--- a/src/nbi/requirements.in
+++ b/src/nbi/requirements.in
@@ -18,7 +18,7 @@ Flask==2.1.3
 Flask-HTTPAuth==4.5.0
 Flask-RESTful==0.3.9
 jsonschema==4.4.0
-libyang==2.8.0
+libyang==2.8.4
 netaddr==0.9.0
 pyang==2.6.0
 git+https://github.com/robshakir/pyangbind.git
diff --git a/src/service/service/service_handlers/l3nm_gnmi_openconfig/StaticRouteGenerator.py b/src/service/service/service_handlers/l3nm_gnmi_openconfig/StaticRouteGenerator.py
index b315c7f4d44c7f806a68b8466c393c1668d1d3bb..cdc58049d8c22dbd0ed4b338aa5c0f0e61e9842e 100644
--- a/src/service/service/service_handlers/l3nm_gnmi_openconfig/StaticRouteGenerator.py
+++ b/src/service/service/service_handlers/l3nm_gnmi_openconfig/StaticRouteGenerator.py
@@ -72,6 +72,15 @@ class StaticRouteGenerator:
             added_connection_hops.add(connection_hop)
         connection_hop_list = filtered_connection_hop_list
 
+        # In some cases connection_hop_list first and last items might be internal endpoints of
+        # devices instead of link endpoints. Filter those endpoints not reaching a new device.
+        if len(connection_hop_list) > 2 and connection_hop_list[0][0] == connection_hop_list[1][0]:
+            # same device on first 2 endpoints
+            connection_hop_list = connection_hop_list[1:]
+        if len(connection_hop_list) > 2 and connection_hop_list[-1][0] == connection_hop_list[-2][0]:
+            # same device on last 2 endpoints
+            connection_hop_list = connection_hop_list[:-1]
+
         num_connection_hops = len(connection_hop_list)
         if num_connection_hops % 2 != 0: raise Exception('Number of connection hops must be even')
         if num_connection_hops < 4: raise Exception('Number of connection hops must be >= 4')
diff --git a/src/tests/eucnc24/.gitlab-ci.yml b/src/tests/eucnc24/.gitlab-ci.yml
index 8c5e9f20ba2e891cd39c89beee200b22088b6438..02c4cced3981f4c12042e636652dca95c384a169 100644
--- a/src/tests/eucnc24/.gitlab-ci.yml
+++ b/src/tests/eucnc24/.gitlab-ci.yml
@@ -70,6 +70,11 @@ end2end_test eucnc24:
     - sleep 3
     - docker ps -a
 
+    # Dump configuration of the routers (before any configuration)
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r1 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r2 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r3 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+
     # Configure TeraFlowSDN deployment
     # Uncomment if DEBUG log level is needed for the components
     #- yq -i '((select(.kind=="Deployment").spec.template.spec.containers.[] | select(.name=="server").env.[]) | select(.name=="LOG_LEVEL").value) |= "DEBUG"' manifests/contextservice.yaml
@@ -126,12 +131,30 @@ end2end_test eucnc24:
       --volume "$PWD/src/tests/${TEST_NAME}:/opt/results"
       $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-service-tfs-create.sh
 
+    # Dump configuration of the routers (after configure TFS service)
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r1 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r2 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r3 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+
     # Run end-to-end test: test connectivity with ping
-    - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.1.10'
-    - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.1.1'
-    - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.2.1'
-    - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.2.10'
-    - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.3.10'
+    - export TEST1_10=$(sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.1.10' --format json)
+    - echo $TEST1_10
+    - echo $TEST1_10 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
+    - export TEST1_1=$(sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.1.1' --format json)
+    - echo $TEST1_1
+    - echo $TEST1_1 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
+    - export TEST2_1=$(sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.2.1' --format json)
+    - echo $TEST2_1
+    - echo $TEST2_1 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
+    - export TEST2_10=$(sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.2.10' --format json)
+    - echo $TEST2_10
+    - echo $TEST2_10 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
+    - export TEST3_1=$(sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.3.1' --format json)
+    - echo $TEST3_1
+    - echo $TEST3_1 | grep -E '3 packets transmitted, 0 received, 100\% packet loss'
+    - export TEST3_10=$(sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.3.10' --format json)
+    - echo $TEST3_10
+    - echo $TEST3_10 | grep -E '3 packets transmitted, 0 received, 100\% packet loss'
 
     # Run end-to-end test: deconfigure service TFS
     - >
@@ -140,6 +163,11 @@ end2end_test eucnc24:
       --volume "$PWD/src/tests/${TEST_NAME}:/opt/results"
       $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-service-tfs-remove.sh
 
+    # Dump configuration of the routers (after deconfigure TFS service)
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r1 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r2 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r3 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+
     # Run end-to-end test: configure service IETF
     - >
       docker run -t --rm --name ${TEST_NAME} --network=host 
@@ -147,12 +175,30 @@ end2end_test eucnc24:
       --volume "$PWD/src/tests/${TEST_NAME}:/opt/results"
       $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-service-ietf-create.sh
 
+    # Dump configuration of the routers (after configure IETF service)
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r1 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r2 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r3 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+
     # Run end-to-end test: test connectivity with ping
-    - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.1.10'
-    - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.1.1'
-    - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.2.1'
-    - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.2.10'
-    - sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 192.168.3.10'
+    - export TEST1_10=$(sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.1.10' --format json)
+    - echo $TEST1_10
+    - echo $TEST1_10 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
+    - export TEST1_1=$(sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.1.1' --format json)
+    - echo $TEST1_1
+    - echo $TEST1_1 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
+    - export TEST2_1=$(sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.2.1' --format json)
+    - echo $TEST2_1
+    - echo $TEST2_1 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
+    - export TEST2_10=$(sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.2.10' --format json)
+    - echo $TEST2_10
+    - echo $TEST2_10 | grep -E '3 packets transmitted, 3 received, 0\% packet loss'
+    - export TEST3_1=$(sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.3.1' --format json)
+    - echo $TEST3_1
+    - echo $TEST3_1 | grep -E '3 packets transmitted, 0 received, 100\% packet loss'
+    - export TEST3_10=$(sudo containerlab exec --name eucnc24 --label clab-node-name=dc1 --cmd 'ping -n -c3 172.16.3.10' --format json)
+    - echo $TEST3_10
+    - echo $TEST3_10 | grep -E '3 packets transmitted, 0 received, 100\% packet loss'
 
     # Run end-to-end test: deconfigure service IETF
     - >
@@ -161,6 +207,11 @@ end2end_test eucnc24:
       --volume "$PWD/src/tests/${TEST_NAME}:/opt/results"
       $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-service-ietf-remove.sh
 
+    # Dump configuration of the routers (after deconfigure IETF service)
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r1 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r2 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r3 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+
     # Run end-to-end test: cleanup scenario
     - >
       docker run -t --rm --name ${TEST_NAME} --network=host 
@@ -169,6 +220,11 @@ end2end_test eucnc24:
       $CI_REGISTRY_IMAGE/${TEST_NAME}:latest /var/teraflow/run-cleanup.sh
 
   after_script:
+    # Dump configuration of the routers (on after_script)
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r1 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r2 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+    - sudo containerlab exec --name eucnc24 --label clab-node-name=r3 --cmd "Cli --command \"enable"$'\n'$"show running-config\""
+
     # Dump TeraFlowSDN component logs
     - source src/tests/${TEST_NAME}/deploy_specs.sh
     - kubectl --namespace $TFS_K8S_NAMESPACE logs deployment/contextservice -c server
diff --git a/src/tests/eucnc24/README.md b/src/tests/eucnc24/README.md
index f8c2f9d49793b8e0751ea4ea09bf893e7ceae0b6..3cc7974568028faa2bfbad70942ff2cc82bbafa0 100644
--- a/src/tests/eucnc24/README.md
+++ b/src/tests/eucnc24/README.md
@@ -8,7 +8,7 @@
 ## TeraFlowSDN Deployment
 ```bash
 cd ~/tfs-ctrl
-source dataplane-in-a-box/deploy_specs.sh
+source ~/tfs-ctrl/src/tests/eucnc24/deploy_specs.sh
 ./deploy/all.sh
 ```
 
@@ -16,67 +16,55 @@ source dataplane-in-a-box/deploy_specs.sh
 
 ## Download and install ContainerLab
 ```bash
-sudo bash -c "$(curl -sL https://get.containerlab.dev)" -- -v 0.48.6
+sudo bash -c "$(curl -sL https://get.containerlab.dev)" -- -v 0.59.0
 ```
 
 ## Download Arista cEOS image and create Docker image
 ```bash
-cd ~/tfs-ctrl/dataplane-in-a-box
-docker import arista/cEOS64-lab-4.31.2F.tar ceos:4.31.2F
+cd ~/tfs-ctrl/src/tests/eucnc24/
+docker import arista/cEOS64-lab-4.32.2F.tar ceos:4.32.2F
 ```
 
 ## Deploy scenario
 ```bash
-cd ~/tfs-ctrl/dataplane-in-a-box
-sudo containerlab deploy --topo arista.clab.yml
+cd ~/tfs-ctrl/src/tests/eucnc24/
+sudo containerlab deploy --topo eucnc24.clab.yml
 ```
 
 ## Inspect scenario
 ```bash
-cd ~/tfs-ctrl/dataplane-in-a-box
-sudo containerlab inspect --topo arista.clab.yml
+cd ~/tfs-ctrl/src/tests/eucnc24/
+sudo containerlab inspect --topo eucnc24.clab.yml
 ```
 
 ## Destroy scenario
 ```bash
-cd ~/tfs-ctrl/dataplane-in-a-box
-sudo containerlab destroy --topo arista.clab.yml
-sudo rm -rf clab-arista/ .arista.clab.yml.bak
+cd ~/tfs-ctrl/src/tests/eucnc24/
+sudo containerlab destroy --topo eucnc24.clab.yml
+sudo rm -rf clab-eucnc24/ .eucnc24.clab.yml.bak
 ```
 
-## Access cEOS Bash
+## Access cEOS Bash/CLI
 ```bash
-docker exec -it clab-arista-r1 bash
-```
-
-## Access cEOS CLI
-```bash
-docker exec -it clab-arista-r1 Cli
-docker exec -it clab-arista-r2 Cli
+docker exec -it clab-eucnc24-r1 bash
+docker exec -it clab-eucnc24-r2 bash
+docker exec -it clab-eucnc24-r3 bash
+docker exec -it clab-eucnc24-r1 Cli
+docker exec -it clab-eucnc24-r2 Cli
+docker exec -it clab-eucnc24-r3 Cli
 ```
 
 ## Configure ContainerLab clients
 ```bash
-docker exec -it clab-arista-client1 bash
-    ip address add 192.168.1.10/24 dev eth1
-    ip route add 192.168.2.0/24 via 192.168.1.1
-    ip route add 192.168.3.0/24 via 192.168.1.1
-    ping 192.168.2.10
-    ping 192.168.3.10
-
-docker exec -it clab-arista-client2 bash
-    ip address add 192.168.2.10/24 dev eth1
-    ip route add 192.168.1.0/24 via 192.168.2.1
-    ip route add 192.168.3.0/24 via 192.168.2.1
-    ping 192.168.1.10
-    ping 192.168.3.10
-
-docker exec -it clab-arista-client3 bash
-    ip address add 192.168.3.10/24 dev eth1
-    ip route add 192.168.2.0/24 via 192.168.3.1
-    ip route add 192.168.3.0/24 via 192.168.3.1
-    ping 192.168.2.10
-    ping 192.168.3.10
+docker exec -it clab-eucnc24-dc1 bash
+    ip address add 172.16.1.10/24 dev eth1
+    ip route add 172.16.2.0/24 via 172.16.1.1
+    ping 172.16.2.10
+
+docker exec -it clab-eucnc24-dc2 bash
+    ip address add 172.16.2.10/24 dev eth1
+    ip route add 172.16.1.0/24 via 172.16.2.1
+    ping 172.16.1.10
 ```
 
 ## Install gNMIc
@@ -86,38 +74,38 @@ sudo bash -c "$(curl -sL https://get-gnmic.kmrd.dev)"
 
 ## gNMI Capabilities request
 ```bash
-gnmic --address clab-arista-wan1 --port 6030 --username admin --password admin --insecure capabilities
+gnmic --address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure capabilities
 ```
 
 ## gNMI Get request
 ```bash
-gnmic --address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path / > wan1.json
-gnmic --address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path /interfaces/interface > wan1-ifaces.json
+gnmic --address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path / > r1.json
+gnmic --address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path /interfaces/interface > r1-ifaces.json
 ```
 
 ## gNMI Set request
 ```bash
-#gnmic --address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf set --update-path /system/config/hostname --update-value srl11
-#gnmic --address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path /system/config/hostname
+gnmic --address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf set --update-path /system/config/hostname --update-value srl11
+gnmic --address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path /system/config/hostname
 ```
 
 ## Subscribe request
 ```bash
-gnmic --address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf subscribe --path /interfaces/interface[name=Management0]/state/
+gnmic --address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf subscribe --path /interfaces/interface[name=Management0]/state/
 
 # In another terminal, you can generate traffic opening SSH connection
-ssh admin@clab-arista-wan1
+ssh admin@clab-eucnc24-r1
 ```
 
 # Check configurations done:
 ```bash
-gnmic --address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path '/network-instances' > wan1-nis.json
-gnmic --address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path '/interfaces' > wan1-ifs.json
+gnmic --address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path '/network-instances' > r1-nis.json
+gnmic --address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf get --path '/interfaces' > r1-ifs.json
 ```
 
 # Delete elements:
 ```bash
---address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf set --delete '/network-instances/network-instance[name=b19229e8]'
---address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf set --delete '/interfaces/interface[name=ethernet-1/1]/subinterfaces/subinterface[index=0]'
---address clab-arista-wan1 --port 6030 --username admin --password admin --insecure --encoding json_ietf set --delete '/interfaces/interface[name=ethernet-1/2]/subinterfaces/subinterface[index=0]'
+--address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf set --delete '/network-instances/network-instance[name=b19229e8]'
+--address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf set --delete '/interfaces/interface[name=ethernet-1/1]/subinterfaces/subinterface[index=0]'
+--address clab-eucnc24-r1 --port 6030 --username admin --password admin --insecure --encoding json_ietf set --delete '/interfaces/interface[name=ethernet-1/2]/subinterfaces/subinterface[index=0]'
 ```
diff --git a/src/tests/eucnc24/clab/eucnc24.clab.yml b/src/tests/eucnc24/clab/eucnc24.clab.yml
index 807a1847c2c2f7580a699aada2d21c0d2577942d..aaf971e360b4770913b9aade3c21b348d700fa86 100644
--- a/src/tests/eucnc24/clab/eucnc24.clab.yml
+++ b/src/tests/eucnc24/clab/eucnc24.clab.yml
@@ -26,10 +26,11 @@ topology:
       kind: arista_ceos
       #image: ceos:4.30.4M
       #image: ceos:4.31.2F
-      #image: ceos:4.31.5M
+      #image: ceos:4.31.5M # tested, works
       #image: ceos:4.32.0F
-      image: ceos:4.32.2F
+      image: ceos:4.32.2F # tested, works
       #image: ceos:4.32.2.1F
+      #image: ceos:4.33.1F # does not work, libyang.util.LibyangError: failed to parse data tree: No module named "openconfig-platform-healthz" in the context.
     linux:
       kind: linux
       image: ghcr.io/hellt/network-multitool:latest
@@ -38,30 +39,33 @@ topology:
     r1:
       kind: arista_ceos
       mgmt-ipv4: 172.20.20.101
+      startup-config: r1-startup.cfg
 
     r2:
       kind: arista_ceos
       mgmt-ipv4: 172.20.20.102
+      startup-config: r2-startup.cfg
 
     r3:
       kind: arista_ceos
       mgmt-ipv4: 172.20.20.103
+      startup-config: r3-startup.cfg
 
     dc1:
       kind: linux
-      mgmt-ipv4: 172.20.20.211
+      mgmt-ipv4: 172.20.20.201
       exec:
         - ip link set address 00:c1:ab:00:01:01 dev eth1
-        - ip address add 192.168.1.10/24 dev eth1
-        - ip route add 192.168.2.0/24 via 192.168.1.1
+        - ip address add 172.16.1.10/24 dev eth1
+        - ip route add 172.16.2.0/24 via 172.16.1.1
 
     dc2:
       kind: linux
-      mgmt-ipv4: 172.20.20.221
+      mgmt-ipv4: 172.20.20.202
       exec:
         - ip link set address 00:c1:ab:00:02:01 dev eth1
-        - ip address add 192.168.2.10/24 dev eth1
-        - ip route add 192.168.1.0/24 via 192.168.2.1
+        - ip address add 172.16.2.10/24 dev eth1
+        - ip route add 172.16.1.0/24 via 172.16.2.1
 
   links:
     - endpoints: ["r1:eth2", "r2:eth1"]
diff --git a/src/tests/eucnc24/clab/r1-startup.cfg b/src/tests/eucnc24/clab/r1-startup.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..b7feebe067b9c77572d63b719a588a4a2aa44cb9
--- /dev/null
+++ b/src/tests/eucnc24/clab/r1-startup.cfg
@@ -0,0 +1,48 @@
+! device: r1 (cEOSLab, EOS-4.32.2F-38195967.4322F (engineering build))
+!
+no aaa root
+!
+username admin privilege 15 role network-admin secret sha512 $6$OmfaAwJRg/r44r5U$9Fca1O1G6Bgsd4NKwSyvdRJcHHk71jHAR3apDWAgSTN/t/j1iroEhz5J36HjWjOF/jEVC/R8Wa60VmbX6.cr70
+!
+management api http-commands
+   no shutdown
+!
+no service interface inactive port-id allocation disabled
+!
+transceiver qsfp default-mode 4x10G
+!
+service routing protocols model multi-agent
+!
+hostname r1
+!
+spanning-tree mode mstp
+!
+system l1
+   unsupported speed action error
+   unsupported error-correction action error
+!
+management api gnmi
+   transport grpc default
+!
+management api netconf
+   transport ssh default
+!
+interface Ethernet2
+!
+interface Ethernet10
+!
+interface Management0
+   ip address 172.20.20.101/24
+!
+ip routing
+!
+ip route 0.0.0.0/0 172.20.20.1
+!
+router multicast
+   ipv4
+      software-forwarding kernel
+   !
+   ipv6
+      software-forwarding kernel
+!
+end
diff --git a/src/tests/eucnc24/clab/r2-startup.cfg b/src/tests/eucnc24/clab/r2-startup.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e1ab661a0ab455ab22f025ec6b2f96cf42a9f2dd
--- /dev/null
+++ b/src/tests/eucnc24/clab/r2-startup.cfg
@@ -0,0 +1,48 @@
+! device: r2 (cEOSLab, EOS-4.32.2F-38195967.4322F (engineering build))
+!
+no aaa root
+!
+username admin privilege 15 role network-admin secret sha512 $6$OmfaAwJRg/r44r5U$9Fca1O1G6Bgsd4NKwSyvdRJcHHk71jHAR3apDWAgSTN/t/j1iroEhz5J36HjWjOF/jEVC/R8Wa60VmbX6.cr70
+!
+management api http-commands
+   no shutdown
+!
+no service interface inactive port-id allocation disabled
+!
+transceiver qsfp default-mode 4x10G
+!
+service routing protocols model multi-agent
+!
+hostname r2
+!
+spanning-tree mode mstp
+!
+system l1
+   unsupported speed action error
+   unsupported error-correction action error
+!
+management api gnmi
+   transport grpc default
+!
+management api netconf
+   transport ssh default
+!
+interface Ethernet1
+!
+interface Ethernet3
+!
+interface Management0
+   ip address 172.20.20.102/24
+!
+ip routing
+!
+ip route 0.0.0.0/0 172.20.20.1
+!
+router multicast
+   ipv4
+      software-forwarding kernel
+   !
+   ipv6
+      software-forwarding kernel
+!
+end
diff --git a/src/tests/eucnc24/clab/r3-startup.cfg b/src/tests/eucnc24/clab/r3-startup.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..63c0625931e5a4645c8ae8741a2b5bd5fe8a28d6
--- /dev/null
+++ b/src/tests/eucnc24/clab/r3-startup.cfg
@@ -0,0 +1,48 @@
+! device: r3 (cEOSLab, EOS-4.32.2F-38195967.4322F (engineering build))
+!
+no aaa root
+!
+username admin privilege 15 role network-admin secret sha512 $6$OmfaAwJRg/r44r5U$9Fca1O1G6Bgsd4NKwSyvdRJcHHk71jHAR3apDWAgSTN/t/j1iroEhz5J36HjWjOF/jEVC/R8Wa60VmbX6.cr70
+!
+management api http-commands
+   no shutdown
+!
+no service interface inactive port-id allocation disabled
+!
+transceiver qsfp default-mode 4x10G
+!
+service routing protocols model multi-agent
+!
+hostname r3
+!
+spanning-tree mode mstp
+!
+system l1
+   unsupported speed action error
+   unsupported error-correction action error
+!
+management api gnmi
+   transport grpc default
+!
+management api netconf
+   transport ssh default
+!
+interface Ethernet2
+!
+interface Ethernet10
+!
+interface Management0
+   ip address 172.20.20.103/24
+!
+ip routing
+!
+ip route 0.0.0.0/0 172.20.20.1
+!
+router multicast
+   ipv4
+      software-forwarding kernel
+   !
+   ipv6
+      software-forwarding kernel
+!
+end
diff --git a/src/tests/eucnc24/data/ietf-l3vpn-service.json b/src/tests/eucnc24/data/ietf-l3vpn-service.json
index a6297b28f0fea94dcc8a457ad2b45d38e77aa4ea..a0f28ee063c97aaabdd3fdda679e8ebbcd8089dc 100644
--- a/src/tests/eucnc24/data/ietf-l3vpn-service.json
+++ b/src/tests/eucnc24/data/ietf-l3vpn-service.json
@@ -11,7 +11,7 @@
                     "site-network-accesses": {
                         "site-network-access": [
                             {
-                                "site-network-access-id": "int",
+                                "site-network-access-id": "eth1",
                                 "site-network-access-type": "ietf-l3vpn-svc:multipoint",
                                 "device-reference": "dc1",
                                 "vpn-attachment": {"vpn-id": "ietf-l3vpn-svc", "site-role": "ietf-l3vpn-svc:spoke-role"},
@@ -19,8 +19,8 @@
                                     "ipv4": {
                                         "address-allocation-type": "ietf-l3vpn-svc:static-address",
                                         "addresses": {
-                                            "provider-address": "192.168.1.1",
-                                            "customer-address": "192.168.1.10",
+                                            "provider-address": "172.16.1.1",
+                                            "customer-address": "172.16.1.10",
                                             "prefix-length": 24
                                         }
                                     }
@@ -48,7 +48,7 @@
                     "site-network-accesses": {
                         "site-network-access": [
                             {
-                                "site-network-access-id": "int",
+                                "site-network-access-id": "eth1",
                                 "site-network-access-type": "ietf-l3vpn-svc:multipoint",
                                 "device-reference": "dc2",
                                 "vpn-attachment": {"vpn-id": "ietf-l3vpn-svc", "site-role": "ietf-l3vpn-svc:hub-role"},
@@ -56,8 +56,8 @@
                                     "ipv4": {
                                         "address-allocation-type": "ietf-l3vpn-svc:static-address",
                                         "addresses": {
-                                            "provider-address": "192.168.2.1",
-                                            "customer-address": "192.168.2.10",
+                                            "provider-address": "172.16.2.1",
+                                            "customer-address": "172.16.2.10",
                                             "prefix-length": 24
                                         }
                                     }
diff --git a/src/tests/eucnc24/data/tfs-service.json b/src/tests/eucnc24/data/tfs-service.json
index 397fc84789111932da047acd22c7bc787888657f..e4bb7c2d255d2f119cd5c9646d01450ac4bffd9c 100644
--- a/src/tests/eucnc24/data/tfs-service.json
+++ b/src/tests/eucnc24/data/tfs-service.json
@@ -14,11 +14,11 @@
             "service_config": {"config_rules": [
                 {"action": "CONFIGACTION_SET", "custom": {
                     "resource_key": "/device[dc1]/endpoint[eth1]/settings",
-                    "resource_value": {"address_ip": "192.168.1.10", "address_prefix": 24, "index": 0}
+                    "resource_value": {"address_ip": "172.16.1.10", "address_prefix": 24, "index": 0}
                 }},
                 {"action": "CONFIGACTION_SET", "custom": {
                     "resource_key": "/device[dc2]/endpoint[eth1]/settings",
-                    "resource_value": {"address_ip": "192.168.2.10", "address_prefix": 24, "index": 0}
+                    "resource_value": {"address_ip": "172.16.2.10", "address_prefix": 24, "index": 0}
                 }}
             ]}
         }