diff --git a/src/tests/ofc25/deploy_e2e.sh b/src/tests/ofc25/_old/deploy_e2e.sh
similarity index 100%
rename from src/tests/ofc25/deploy_e2e.sh
rename to src/tests/ofc25/_old/deploy_e2e.sh
diff --git a/src/tests/ofc25/deploy_ip.sh b/src/tests/ofc25/_old/deploy_ip.sh
similarity index 100%
rename from src/tests/ofc25/deploy_ip.sh
rename to src/tests/ofc25/_old/deploy_ip.sh
diff --git a/src/tests/ofc25/deploy_opt.sh b/src/tests/ofc25/_old/deploy_opt.sh
similarity index 100%
rename from src/tests/ofc25/deploy_opt.sh
rename to src/tests/ofc25/_old/deploy_opt.sh
diff --git a/src/tests/ofc25/subscription_ws_e2e.sh b/src/tests/ofc25/_old/subscription_ws_e2e.sh
similarity index 100%
rename from src/tests/ofc25/subscription_ws_e2e.sh
rename to src/tests/ofc25/_old/subscription_ws_e2e.sh
diff --git a/src/tests/ofc25/subscription_ws_ip.sh b/src/tests/ofc25/_old/subscription_ws_ip.sh
similarity index 100%
rename from src/tests/ofc25/subscription_ws_ip.sh
rename to src/tests/ofc25/_old/subscription_ws_ip.sh
diff --git a/src/tests/ofc25/descriptors/descriptor_e2e.json b/src/tests/ofc25/descriptors/topology_e2e.json
similarity index 100%
rename from src/tests/ofc25/descriptors/descriptor_e2e.json
rename to src/tests/ofc25/descriptors/topology_e2e.json
diff --git a/src/tests/ofc25/descriptors/descriptor_ip.json b/src/tests/ofc25/descriptors/topology_ip.json
similarity index 100%
rename from src/tests/ofc25/descriptors/descriptor_ip.json
rename to src/tests/ofc25/descriptors/topology_ip.json
diff --git a/src/tests/ofc25/descriptors/descriptor_opt.json b/src/tests/ofc25/descriptors/topology_opt.json
similarity index 100%
rename from src/tests/ofc25/descriptors/descriptor_opt.json
rename to src/tests/ofc25/descriptors/topology_opt.json
diff --git a/src/tests/ofc25/tests/test_functional_bootstrap_e2e.py b/src/tests/ofc25/tests/test_functional_bootstrap_e2e.py
index 27648969b1610b01e25d21dc76bdec2279c314f1..54225ea3fe5c682636492e741a44746974502850 100644
--- a/src/tests/ofc25/tests/test_functional_bootstrap_e2e.py
+++ b/src/tests/ofc25/tests/test_functional_bootstrap_e2e.py
@@ -16,6 +16,7 @@ import logging, os, time
 from common.Constants import DEFAULT_CONTEXT_NAME
 from common.proto.context_pb2 import ContextId, DeviceOperationalStatusEnum, Empty
 from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results, validate_empty_scenario
+from common.tools.grpc.Tools import grpc_message_to_json, grpc_message_to_json_string
 from common.tools.object_factory.Context import json_context_id
 from context.client.ContextClient import ContextClient
 from device.client.DeviceClient import DeviceClient
@@ -24,7 +25,7 @@ from tests.Fixtures import context_client, device_client # pylint: disable=unuse
 LOGGER = logging.getLogger(__name__)
 LOGGER.setLevel(logging.DEBUG)
 
-DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors', 'descriptor_e2e.json')
+DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors', 'topology_e2e.json')
 ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME))
 
 def test_scenario_bootstrap(
@@ -50,7 +51,7 @@ def test_scenario_devices_enabled(
     """
     This test validates that the devices are enabled.
     """
-    """     DEVICE_OP_STATUS_ENABLED = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_ENABLED
+    DEVICE_OP_STATUS_ENABLED = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_ENABLED
 
     num_devices = -1
     num_devices_enabled, num_retry = 0, 0
@@ -59,9 +60,15 @@ def test_scenario_devices_enabled(
         response = context_client.ListDevices(Empty())
         num_devices = len(response.devices)
         num_devices_enabled = 0
+        disabled_devices = list()
         for device in response.devices:
-            if device.device_operational_status != DEVICE_OP_STATUS_ENABLED: continue
-            num_devices_enabled += 1
+            if device.device_operational_status == DEVICE_OP_STATUS_ENABLED:
+                num_devices_enabled += 1
+            else:
+                disabled_devices.append(grpc_message_to_json(device))
         LOGGER.info('Num Devices enabled: {:d}/{:d}'.format(num_devices_enabled, num_devices))
-        num_retry += 1 """
-    assert 1 == 1
+        num_retry += 1
+    if num_devices_enabled != num_devices:
+        LOGGER.info('Disabled Devices: {:s}'.format(str(disabled_devices)))
+    LOGGER.info('Devices: {:s}'.format(grpc_message_to_json_string(response)))
+    assert num_devices_enabled == num_devices
diff --git a/src/tests/ofc25/tests/test_functional_bootstrap_ip.py b/src/tests/ofc25/tests/test_functional_bootstrap_ip.py
index 668213a56f00d850e0a6e94d1e18f7fa7b7f8a08..e4ace756f3906a6f91f830b7b15a8646711b2620 100644
--- a/src/tests/ofc25/tests/test_functional_bootstrap_ip.py
+++ b/src/tests/ofc25/tests/test_functional_bootstrap_ip.py
@@ -24,7 +24,7 @@ from tests.Fixtures import context_client, device_client # pylint: disable=unuse
 LOGGER = logging.getLogger(__name__)
 LOGGER.setLevel(logging.DEBUG)
 
-DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors', 'descriptor_ip.json')
+DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors', 'topology_ip.json')
 ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME))
 
 def test_scenario_bootstrap(
@@ -47,10 +47,7 @@ def test_scenario_bootstrap(
 def test_scenario_devices_enabled(
     context_client : ContextClient,         # pylint: disable=redefined-outer-name
 ) -> None:
-    """
-    This test validates that the devices are enabled.
-    """
-    """     DEVICE_OP_STATUS_ENABLED = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_ENABLED
+    DEVICE_OP_STATUS_ENABLED = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_ENABLED
 
     num_devices = -1
     num_devices_enabled, num_retry = 0, 0
@@ -63,5 +60,4 @@ def test_scenario_devices_enabled(
             if device.device_operational_status != DEVICE_OP_STATUS_ENABLED: continue
             num_devices_enabled += 1
         LOGGER.info('Num Devices enabled: {:d}/{:d}'.format(num_devices_enabled, num_devices))
-        num_retry += 1 """
-    assert 1 == 1
+        num_retry += 1
diff --git a/src/tests/ofc25/tests/test_functional_bootstrap_opt.py b/src/tests/ofc25/tests/test_functional_bootstrap_opt.py
index f3097519ab53437c467763490ae6c7d09dcf7857..32893e5dd4fa8f6ca6dc601eac3882e732f539a9 100644
--- a/src/tests/ofc25/tests/test_functional_bootstrap_opt.py
+++ b/src/tests/ofc25/tests/test_functional_bootstrap_opt.py
@@ -24,7 +24,7 @@ from tests.Fixtures import context_client, device_client # pylint: disable=unuse
 LOGGER = logging.getLogger(__name__)
 LOGGER.setLevel(logging.DEBUG)
 
-DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors', 'descriptor_opt.json')
+DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors', 'topology_opt.json')
 ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME))
 
 def test_scenario_bootstrap(
diff --git a/src/tests/ofc25/tests/test_functional_cleanup_e2e.py b/src/tests/ofc25/tests/test_functional_cleanup_e2e.py
new file mode 100644
index 0000000000000000000000000000000000000000..cd294ae90e704ca6dfaf9a282f74c0c0f2651e6c
--- /dev/null
+++ b/src/tests/ofc25/tests/test_functional_cleanup_e2e.py
@@ -0,0 +1,44 @@
+# 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 logging, os
+from common.Constants import DEFAULT_CONTEXT_NAME
+from common.proto.context_pb2 import ContextId
+from common.tools.descriptor.Loader import DescriptorLoader, validate_empty_scenario
+from common.tools.object_factory.Context import json_context_id
+from context.client.ContextClient import ContextClient
+from device.client.DeviceClient import DeviceClient
+from tests.Fixtures import context_client, device_client    # pylint: disable=unused-import
+
+LOGGER = logging.getLogger(__name__)
+LOGGER.setLevel(logging.DEBUG)
+
+DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors', 'topology_e2e.json')
+ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME))
+
+def test_scenario_cleanup(
+    context_client : ContextClient, # pylint: disable=redefined-outer-name
+    device_client : DeviceClient,   # pylint: disable=redefined-outer-name
+) -> None:
+    # Verify the scenario has no services/slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.service_ids) == 0
+    assert len(response.slice_ids) == 0
+
+    # Load descriptors and validate the base scenario
+    descriptor_loader = DescriptorLoader(
+        descriptors_file=DESCRIPTOR_FILE, context_client=context_client, device_client=device_client)
+    descriptor_loader.validate()
+    descriptor_loader.unload()
+    validate_empty_scenario(context_client)
diff --git a/src/tests/ofc25/tests/test_functional_cleanup.py b/src/tests/ofc25/tests/test_functional_cleanup_ip.py
similarity index 97%
rename from src/tests/ofc25/tests/test_functional_cleanup.py
rename to src/tests/ofc25/tests/test_functional_cleanup_ip.py
index a482c6e46559a97e3d194c6eb9dbc0a092cc39d4..87c5e2e386327a1bd8718192a9b3734368190858 100644
--- a/src/tests/ofc25/tests/test_functional_cleanup.py
+++ b/src/tests/ofc25/tests/test_functional_cleanup_ip.py
@@ -24,7 +24,7 @@ from tests.Fixtures import context_client, device_client    # pylint: disable=un
 LOGGER = logging.getLogger(__name__)
 LOGGER.setLevel(logging.DEBUG)
 
-DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors', 'topology.json')
+DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors', 'topology_ip.json')
 ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME))
 
 def test_scenario_cleanup(
diff --git a/src/tests/ofc25/tests/test_functional_cleanup_opt.py b/src/tests/ofc25/tests/test_functional_cleanup_opt.py
new file mode 100644
index 0000000000000000000000000000000000000000..03fa50fff002be382359a3c4a2b1aa89504d6462
--- /dev/null
+++ b/src/tests/ofc25/tests/test_functional_cleanup_opt.py
@@ -0,0 +1,44 @@
+# 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 logging, os
+from common.Constants import DEFAULT_CONTEXT_NAME
+from common.proto.context_pb2 import ContextId
+from common.tools.descriptor.Loader import DescriptorLoader, validate_empty_scenario
+from common.tools.object_factory.Context import json_context_id
+from context.client.ContextClient import ContextClient
+from device.client.DeviceClient import DeviceClient
+from tests.Fixtures import context_client, device_client    # pylint: disable=unused-import
+
+LOGGER = logging.getLogger(__name__)
+LOGGER.setLevel(logging.DEBUG)
+
+DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors', 'topology_opt.json')
+ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME))
+
+def test_scenario_cleanup(
+    context_client : ContextClient, # pylint: disable=redefined-outer-name
+    device_client : DeviceClient,   # pylint: disable=redefined-outer-name
+) -> None:
+    # Verify the scenario has no services/slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.service_ids) == 0
+    assert len(response.slice_ids) == 0
+
+    # Load descriptors and validate the base scenario
+    descriptor_loader = DescriptorLoader(
+        descriptors_file=DESCRIPTOR_FILE, context_client=context_client, device_client=device_client)
+    descriptor_loader.validate()
+    descriptor_loader.unload()
+    validate_empty_scenario(context_client)