diff --git a/proto/ztp_server.proto b/proto/ztp_server.proto
new file mode 100755
index 0000000000000000000000000000000000000000..37ccc71d36d87938b55dc1a53ddb8acaa7287116
--- /dev/null
+++ b/proto/ztp_server.proto
@@ -0,0 +1,23 @@
+// 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.
+
+syntax = "proto3";
+package ztpServer;
+
+import "context.proto";
+
+service ZtpServerService {
+  rpc GetProvisioningScript     (context.ProvisioningScriptName         ) returns (context.ProvisioningScript       ) {}
+  rpc GetZtpProvisioning        (context.ZtpFileName                    ) returns (context.ZtpFile       ) {}
+}
diff --git a/src/common/Constants.py b/src/common/Constants.py
index 68200764610b5fded328dbec741fdbbf70bc0930..660e99f04ba8a67d06e8e6f2a038009d2c095a55 100644
--- a/src/common/Constants.py
+++ b/src/common/Constants.py
@@ -42,6 +42,7 @@ class ServiceNameEnum(Enum):
     SERVICE                = 'service'
     SLICE                  = 'slice'
     ZTP                    = 'ztp'
+    ZTP_SERVER             = 'ztp_server'
     POLICY                 = 'policy'
     MONITORING             = 'monitoring'
     DLT                    = 'dlt'
@@ -84,6 +85,7 @@ DEFAULT_SERVICE_GRPC_PORTS = {
     ServiceNameEnum.SERVICE                .value :  3030,
     ServiceNameEnum.SLICE                  .value :  4040,
     ServiceNameEnum.ZTP                    .value :  5050,
+    ServiceNameEnum.ZTP_SERVER             .value :  5051,
     ServiceNameEnum.POLICY                 .value :  6060,
     ServiceNameEnum.MONITORING             .value :  7070,
     ServiceNameEnum.DLT                    .value :  8080,
diff --git a/src/ztp_server/.gitlab-ci.yml b/src/ztp_server/.gitlab-ci.yml
new file mode 100755
index 0000000000000000000000000000000000000000..71bf223ba9408e178e252d600c625dc2256dbe92
--- /dev/null
+++ b/src/ztp_server/.gitlab-ci.yml
@@ -0,0 +1,120 @@
+# 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.
+
+# Build, tag, and push the Docker image to the GitLab Docker registry
+build nbi:
+  variables:
+    IMAGE_NAME: 'nbi' # name of the microservice
+    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
+  stage: build
+  before_script:
+    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
+  script:
+    - docker buildx build -t "$IMAGE_NAME:$IMAGE_TAG" -f ./src/$IMAGE_NAME/Dockerfile .
+    - docker tag "$IMAGE_NAME:$IMAGE_TAG" "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
+    - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
+  after_script:
+    - docker images --filter="dangling=true" --quiet | xargs -r docker rmi
+  rules:
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
+    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
+    - changes:
+      - src/common/**/*.py
+      - proto/*.proto
+      - src/$IMAGE_NAME/**/*.{py,in,yml}
+      - src/$IMAGE_NAME/Dockerfile
+      - src/$IMAGE_NAME/tests/*.py
+      - manifests/${IMAGE_NAME}service.yaml
+      - .gitlab-ci.yml
+
+# Apply unit test to the component
+unit_test nbi:
+  variables:
+    IMAGE_NAME: 'nbi' # name of the microservice
+    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
+  stage: unit_test
+  needs:
+    - build nbi
+  before_script:
+    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
+    - >
+      if docker network list | grep teraflowbridge; then
+        echo "teraflowbridge is already created";
+      else
+        docker network create -d bridge teraflowbridge;
+      fi
+    - >
+      if docker container ls | grep $IMAGE_NAME; then
+        docker rm -f $IMAGE_NAME;
+      else
+        echo "$IMAGE_NAME image is not in the system";
+      fi
+  script:
+    - docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
+    - docker run --name $IMAGE_NAME -d -p 9090:9090 -v "$PWD/src/$IMAGE_NAME/tests:/opt/results" --network=teraflowbridge $CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG
+    - sleep 5
+    - docker ps -a
+    - docker logs $IMAGE_NAME
+    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_tfs_api.py --junitxml=/opt/results/${IMAGE_NAME}_report_tfs_api.xml"
+    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_ietf_l2vpn.py --junitxml=/opt/results/${IMAGE_NAME}_report_ietf_l2vpn.xml"
+    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_ietf_network.py --junitxml=/opt/results/${IMAGE_NAME}_report_ietf_network.xml"
+    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_ietf_l3vpn.py --junitxml=/opt/results/${IMAGE_NAME}_report_ietf_l3vpn.xml"
+    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_etsi_bwm.py --junitxml=/opt/results/${IMAGE_NAME}_report_etsi_bwm.xml"
+    - docker exec -i $IMAGE_NAME bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing"
+  coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/'
+  after_script:
+    - docker rm -f $IMAGE_NAME
+    - docker network rm teraflowbridge
+  rules:
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
+    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
+    - changes:
+      - src/common/**/*.py
+      - proto/*.proto
+      - src/$IMAGE_NAME/**/*.{py,in,yml}
+      - src/$IMAGE_NAME/Dockerfile
+      - src/$IMAGE_NAME/tests/*.py
+      - src/$IMAGE_NAME/tests/Dockerfile
+      - manifests/${IMAGE_NAME}service.yaml
+      - .gitlab-ci.yml
+  artifacts:
+      when: always
+      reports:
+        junit: src/$IMAGE_NAME/tests/${IMAGE_NAME}_report_*.xml
+
+## Deployment of the service in Kubernetes Cluster
+#deploy nbi:
+#  variables:
+#    IMAGE_NAME: 'nbi' # name of the microservice
+#    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
+#  stage: deploy
+#  needs:
+#    - unit test nbi
+#    # - integ_test execute
+#  script:
+#    - 'sed -i "s/$IMAGE_NAME:.*/$IMAGE_NAME:$IMAGE_TAG/" manifests/${IMAGE_NAME}service.yaml'
+#    - kubectl version
+#    - kubectl get all
+#    - kubectl apply -f "manifests/${IMAGE_NAME}service.yaml"
+#    - kubectl get all
+#  # environment:
+#  #   name: test
+#  #   url: https://example.com
+#  #   kubernetes:
+#  #     namespace: test
+#  rules:
+#    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
+#      when: manual    
+#    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
+#      when: manual
diff --git a/src/ztp_server/Config.py b/src/ztp_server/Config.py
new file mode 100755
index 0000000000000000000000000000000000000000..83a35005855d60b714259c6b671c7210cf14331d
--- /dev/null
+++ b/src/ztp_server/Config.py
@@ -0,0 +1,20 @@
+# 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.
+
+from werkzeug.security import generate_password_hash
+
+# REST-API users
+RESTAPI_USERS = {   # TODO: implement a database of credentials and permissions
+    'admin': generate_password_hash('admin'),
+}
diff --git a/src/ztp_server/Dockerfile b/src/ztp_server/Dockerfile
new file mode 100755
index 0000000000000000000000000000000000000000..a9be06d37c15757f51d6d849f395d683885e9508
--- /dev/null
+++ b/src/ztp_server/Dockerfile
@@ -0,0 +1,97 @@
+# 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.
+
+FROM python:3.9-slim
+
+# Install dependencies
+RUN apt-get --yes --quiet --quiet update && \
+    apt-get --yes --quiet --quiet install wget g++ git build-essential cmake libpcre2-dev python3-dev python3-cffi && \
+    rm -rf /var/lib/apt/lists/*
+
+# Download, build and install libyang. Note that APT package is outdated
+# - Ref: https://github.com/CESNET/libyang
+# - Ref: https://github.com/CESNET/libyang-python/
+RUN mkdir -p /var/libyang
+RUN git clone https://github.com/CESNET/libyang.git /var/libyang
+WORKDIR /var/libyang
+RUN git fetch
+RUN git checkout v2.1.148
+RUN mkdir -p /var/libyang/build
+WORKDIR /var/libyang/build
+RUN cmake -D CMAKE_BUILD_TYPE:String="Release" ..
+RUN make
+RUN make install
+RUN ldconfig
+
+# Set Python to show logs as they occur
+ENV PYTHONUNBUFFERED=0
+
+# Download the gRPC health probe
+RUN GRPC_HEALTH_PROBE_VERSION=v0.2.0 && \
+    wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \
+    chmod +x /bin/grpc_health_probe
+
+# Get generic Python packages
+RUN python3 -m pip install --upgrade pip
+RUN python3 -m pip install --upgrade setuptools wheel
+RUN python3 -m pip install --upgrade pip-tools
+
+# Get common Python packages
+# Note: this step enables sharing the previous Docker build steps among all the Python components
+WORKDIR /var/teraflow
+COPY common_requirements.in common_requirements.in
+RUN pip-compile --quiet --output-file=common_requirements.txt common_requirements.in
+RUN python3 -m pip install -r common_requirements.txt
+
+# Add common files into working directory
+WORKDIR /var/teraflow/common
+COPY src/common/. ./
+RUN rm -rf proto
+
+# Create proto sub-folder, copy .proto files, and generate Python code
+RUN mkdir -p /var/teraflow/common/proto
+WORKDIR /var/teraflow/common/proto
+RUN touch __init__.py
+COPY proto/*.proto ./
+RUN python3 -m grpc_tools.protoc -I=. --python_out=. --grpc_python_out=. *.proto
+RUN rm *.proto
+RUN find . -type f -exec sed -i -E 's/(import\ .*)_pb2/from . \1_pb2/g' {} \;
+
+# Create component sub-folders, get specific Python packages
+RUN mkdir -p /var/teraflow/nbi
+WORKDIR /var/teraflow/nbi
+COPY src/nbi/requirements.in requirements.in
+RUN pip-compile --quiet --output-file=requirements.txt requirements.in
+RUN python3 -m pip install -r requirements.txt
+
+# Add component files into working directory
+WORKDIR /var/teraflow
+COPY src/nbi/. nbi/
+COPY src/context/__init__.py context/__init__.py
+COPY src/context/client/. context/client/
+COPY src/device/__init__.py device/__init__.py
+COPY src/device/client/. device/client/
+COPY src/service/__init__.py service/__init__.py
+COPY src/service/client/. service/client/
+COPY src/slice/__init__.py slice/__init__.py
+COPY src/slice/client/. slice/client/
+COPY src/qkd_app/__init__.py qkd_app/__init__.py
+COPY src/qkd_app/client/. qkd_app/client/
+COPY src/vnt_manager/__init__.py vnt_manager/__init__.py
+COPY src/vnt_manager/client/. vnt_manager/client/
+RUN mkdir -p /var/teraflow/tests/tools
+COPY src/tests/tools/mock_osm/. tests/tools/mock_osm/
+
+# Start the service
+ENTRYPOINT ["python", "-m", "nbi.service"]
diff --git a/src/ztp_server/README.md b/src/ztp_server/README.md
new file mode 100755
index 0000000000000000000000000000000000000000..32902a0b33dba2f9ce3df4a60833608bac6e129d
--- /dev/null
+++ b/src/ztp_server/README.md
@@ -0,0 +1,35 @@
+# NBI Component
+
+The NBI component uses libyang to validate and process messages. Follow instructions below to install it.
+
+## Install libyang
+- Ref: https://github.com/CESNET/libyang
+- Ref: https://github.com/CESNET/libyang-python/
+
+__NOTE__: APT package is extremely outdated and does not work for our purposes.
+
+### Build Requisites
+```bash
+sudo apt-get install build-essential cmake libpcre2-dev
+sudo apt-get install python3-dev gcc python3-cffi
+```
+
+### Build from source
+```bash
+mkdir ~/tfs-ctrl/libyang
+git clone https://github.com/CESNET/libyang.git ~/tfs-ctrl/libyang
+cd ~/tfs-ctrl/libyang
+git fetch
+git checkout v2.1.148
+mkdir ~/tfs-ctrl/libyang/build
+cd ~/tfs-ctrl/libyang/build
+cmake -D CMAKE_BUILD_TYPE:String="Release" ..
+make
+sudo make install
+sudo ldconfig
+```
+
+### Install Python bindings
+```bash
+pip install libyang==2.8.0
+```
diff --git a/src/ztp_server/__init__.py b/src/ztp_server/__init__.py
new file mode 100755
index 0000000000000000000000000000000000000000..53d5157f750bfb085125cbd33faff1cec5924e14
--- /dev/null
+++ b/src/ztp_server/__init__.py
@@ -0,0 +1,14 @@
+# 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.
+
diff --git a/src/ztp_server/client/ZtpClient.py b/src/ztp_server/client/ZtpClient.py
new file mode 100755
index 0000000000000000000000000000000000000000..a790b76e29fbc4697ea0ee7094d327064b54fa23
--- /dev/null
+++ b/src/ztp_server/client/ZtpClient.py
@@ -0,0 +1,61 @@
+# 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 grpc, logging
+from common.Constants import ServiceNameEnum
+from common.Settings import get_service_host, get_service_port_grpc
+from common.proto.ztpServer_pb2_grpc import ztpServerServiceStub    #TODO
+from common.proto.context_pb2 import (
+    ZtpFileName, ZtpFile, ProvisioningScriptName, ProvisioningScript)
+from common.tools.client.RetryDecorator import retry, delay_exponential
+from common.tools.grpc.Tools import grpc_message_to_json_string
+
+LOGGER = logging.getLogger(__name__)
+MAX_RETRIES = 15
+DELAY_FUNCTION = delay_exponential(initial=0.01, increment=2.0, maximum=5.0)
+RETRY_DECORATOR = retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION, prepare_method_name='connect')
+
+class ZtpClient:
+    def __init__(self, host=None, port=None):
+        if not host: host = get_service_host(ServiceNameEnum.ZTP_SERVER)
+        if not port: port = get_service_port_grpc(ServiceNameEnum.ZTP_SERVER)
+        self.endpoint = '{:s}:{:s}'.format(str(host), str(port))
+        LOGGER.debug('Creating channel to {:s}...'.format(str(self.endpoint)))
+        self.channel = None
+        self.stub = None
+        self.connect()
+        LOGGER.debug('Channel created')
+
+    def connect(self):
+        self.channel = grpc.insecure_channel(self.endpoint)
+        self.stub = ztpServerServiceStub(self.channel) #TODO
+
+    def close(self):
+        if self.channel is not None: self.channel.close()
+        self.channel = None
+        self.stub = None
+
+    @RETRY_DECORATOR
+    def GetProvisioningScript(self, request : ProvisioningScriptName) -> ProvisioningScript:
+        LOGGER.debug('GetProvisioningScript request: {:s}'.format(grpc_message_to_json_string(request)))
+        response = self.stub.GetProvisioningScript(request)
+        LOGGER.debug('GetProvisioningScript result: {:s}'.format(grpc_message_to_json_string(response)))
+        return response
+
+    @RETRY_DECORATOR
+    def GetZtpProvisioning(self, request : ZtpFileName) -> ZtpFile:
+        LOGGER.debug('GetZtpProvisioning request: {:s}'.format(grpc_message_to_json_string(request)))
+        response = self.stub.GetZtpProvisioning(request)
+        LOGGER.debug('GetZtpProvisioning result: {:s}'.format(grpc_message_to_json_string(response)))
+        return response
diff --git a/src/ztp_server/client/__init__.py b/src/ztp_server/client/__init__.py
new file mode 100755
index 0000000000000000000000000000000000000000..53d5157f750bfb085125cbd33faff1cec5924e14
--- /dev/null
+++ b/src/ztp_server/client/__init__.py
@@ -0,0 +1,14 @@
+# 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.
+
diff --git a/src/ztp_server/data/nso_client.proto b/src/ztp_server/data/nso_client.proto
new file mode 100644
index 0000000000000000000000000000000000000000..d5983c62cfb5d6524d340be2c6570e7b5133ee03
--- /dev/null
+++ b/src/ztp_server/data/nso_client.proto
@@ -0,0 +1,60 @@
+// Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (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.
+
+syntax = "proto3";
+package nos_client;
+
+message NOS_SW {
+	string ztp_device_sw_url = 1;
+  bytes ztp_device_sw_file = 2;
+}
+
+// For ONIE Requests
+message NOS_SW_REQ {
+  string serial_number = 1;
+  string eth_addr = 2;
+  string vendor_id = 3;
+  string machine = 4;
+  string machine_rev = 5;
+  string arch = 6;
+  string security_key = 7;
+  string operation = 8;
+}
+
+message Config_Script {
+  string config_script_url = 1;
+  bytes config_script_file = 2;
+}
+
+message Config_Script_REQ {
+  string agent = 1;
+  string machine = 2; 
+  string serial_number = 3;
+  string eth_addr = 4;
+  string version = 5;
+}
+
+message Status_Notification {
+  string status = 1;
+  string serial_number = 2;
+  string eth_addr = 3;
+}
+
+message Empty{}
+
+service nos_client {
+    rpc GetNOSFile            (NOS_SW_REQ) returns (NOS_SW) {}
+    rpc GetConfigScriptFile   (Config_Script_REQ) returns (Config_Script) {}
+    rpc NotifyStatus          (Status_Notification) returns (Empty) {}
+}
diff --git a/src/ztp_server/data/provisioning_script_sonic.sh b/src/ztp_server/data/provisioning_script_sonic.sh
new file mode 100644
index 0000000000000000000000000000000000000000..c4dd2043804afc81dc25441c97cfd7ff98c1309a
--- /dev/null
+++ b/src/ztp_server/data/provisioning_script_sonic.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+PRODUCT_NAME=$(show version | grep 'Platform' | awk '{print $2}')
+SERIAL_NUMBER=$(show version | grep 'Serial Number' | awk '{print $3}')
+BASE_MAC_ADDRESS=$(show platform syseeprom | grep 'Base MAC Address' | awk '{print $6}')
+SONIC_VERSION=$(show version | grep 'SONiC Software Version' | awk '{print $4}')
+
+# URL of the config_db.json file
+CONFIG_DB_URL="http://10.1.1.119:9001/config/config_db.json"
+
+# Directory where the file will be saved
+DEST_DIR="/etc/sonic"
+DEST_FILE="$DEST_DIR/config_db.json"
+
+# Download the config_db.json file
+curl -o $DEST_FILE -H "User-Agent: SONiC-ZTP/0.1" \
+                     -H "PRODUCT-NAME: $PRODUCT_NAME" \
+                     -H "SERIAL-NUMBER: $SERIAL_NUMBER" \
+                     -H "BASE-MAC-ADDRESS: $BASE_MAC_ADDRESS" \
+                     -H "SONiC-VERSION: $SONIC_VERSION" \
+                     $CONFIG_DB_URL
+if [ $? -ne 0 ]; then
+    logger "Error: Failed to download the file from $CONFIG_DB_URL"
+    exit 1
+fi
+
+# Reload the configuration database
+sudo config reload -y
+
+# Check if the reload was successful
+if [ $? -eq 0 ]; then
+    logger "The configuration database reloaded successfully."
+else
+    logger "Error: Failed to reload the configuration database."
+    exit 1
+fi
+
+logger "Plugin executed successfully."
diff --git a/src/ztp_server/data/ztp.json b/src/ztp_server/data/ztp.json
new file mode 100644
index 0000000000000000000000000000000000000000..6e606a5e857a93d9f30c1aa015602551e12b7e44
--- /dev/null
+++ b/src/ztp_server/data/ztp.json
@@ -0,0 +1,11 @@
+{
+    "ztp": {
+      "01-provisioning-script": {
+        "plugin": {
+          "url": "http://localhost:9001/provisioning/provisioning_script_sonic.sh"
+        },
+        "reboot-on-success": true
+      }
+    }
+  }
+  
\ No newline at end of file
diff --git a/src/ztp_server/requirements.in b/src/ztp_server/requirements.in
new file mode 100755
index 0000000000000000000000000000000000000000..0d780483626979cc993a984d3da709762c749d56
--- /dev/null
+++ b/src/ztp_server/requirements.in
@@ -0,0 +1,28 @@
+# 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.
+
+deepdiff==6.7.*
+deepmerge==1.1.*
+Flask==2.1.3
+Flask-HTTPAuth==4.5.0
+Flask-RESTful==0.3.9
+jsonschema==4.4.0
+libyang==2.8.0
+netaddr==0.9.0
+pyang==2.6.0
+git+https://github.com/robshakir/pyangbind.git
+pydantic==2.6.3
+requests==2.27.1
+werkzeug==2.3.7
+websockets==12.0
diff --git a/src/ztp_server/service/ZtpServerService.py b/src/ztp_server/service/ZtpServerService.py
new file mode 100755
index 0000000000000000000000000000000000000000..2b4da4f93c9126bd706ee288e7191153a482c64e
--- /dev/null
+++ b/src/ztp_server/service/ZtpServerService.py
@@ -0,0 +1,28 @@
+# 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.
+
+from common.Constants import ServiceNameEnum
+from common.Settings import get_service_port_grpc
+from common.proto.ztpServer_pb2_grpc import add_Ztp_ServerServiceServicer_to_server 
+from common.tools.service.GenericGrpcService import GenericGrpcService
+from ztp_server.service.ZtpServerServiceServicerImpl import ZtpServerServiceServicerImpl
+
+class ZtpServerService(GenericGrpcService):
+    def __init__(self, cls_name: str = __name__) -> None:
+        port = get_service_port_grpc(ServiceNameEnum.ZTP_SERVER)
+        super().__init__(port, cls_name=cls_name)
+        self.ztp_servicer = ZtpServerServiceServicerImpl()
+
+    def install_servicers(self):
+        add_Ztp_ServerServiceServicer_to_server(self.ztp_servicer, self.server)
diff --git a/src/ztp_server/service/ZtpServerServiceServicerImpl.py b/src/ztp_server/service/ZtpServerServiceServicerImpl.py
new file mode 100755
index 0000000000000000000000000000000000000000..009cda9227a1652f21c67ebddfa60c057327bd20
--- /dev/null
+++ b/src/ztp_server/service/ZtpServerServiceServicerImpl.py
@@ -0,0 +1,40 @@
+# 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 grpc, logging
+from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method
+from common.proto.context_pb2 import (
+    ZtpFileName, ZtpFile, ProvisioningScriptName, ProvisioningScript)
+from common.proto.ztpServer_pb2_grpc import ztpServerServiceServicer
+
+LOGGER = logging.getLogger(__name__)
+
+METRICS_POOL = MetricsPool('ZTP_SERVER', 'RPC')
+
+class ZtpServerServiceServicerImpl(ztpServerServiceServicer):
+    def __init__(self):
+        LOGGER.info('Creating Servicer...')
+        LOGGER.info('Servicer Created')
+
+    @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
+    def GetZtpProvisioning(self, request : ProvisioningScriptName, context : grpc.ServicerContext) -> ProvisioningScript:
+        LOGGER.warning('NOT IMPLEMENTED')
+        return ProvisioningScript()
+    
+    @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
+    def GetZtpProvisioning(self, request : ZtpFileName, context : grpc.ServicerContext) -> ZtpFile:
+        LOGGER.warning('NOT IMPLEMENTED')
+        return ZtpFile()
+    
+
diff --git a/src/ztp_server/service/__init__.py b/src/ztp_server/service/__init__.py
new file mode 100755
index 0000000000000000000000000000000000000000..53d5157f750bfb085125cbd33faff1cec5924e14
--- /dev/null
+++ b/src/ztp_server/service/__init__.py
@@ -0,0 +1,14 @@
+# 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.
+
diff --git a/src/ztp_server/service/__main__.py b/src/ztp_server/service/__main__.py
new file mode 100755
index 0000000000000000000000000000000000000000..25e8605d300f3b26261ba3cbb10818b8671bdf6d
--- /dev/null
+++ b/src/ztp_server/service/__main__.py
@@ -0,0 +1,78 @@
+# 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, signal, sys, threading
+from prometheus_client import start_http_server
+from common.Constants import ServiceNameEnum
+from common.Settings import (
+    ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC,
+    get_env_var_name, get_log_level, get_metrics_port,
+)
+from .ZtpServerService import ZtpServerService
+from .rest_server.RestServer import RestServer
+
+from .context_subscription import register_context_subscription
+
+terminate = threading.Event()
+LOGGER = None
+
+def signal_handler(signal, frame): # pylint: disable=redefined-outer-name, unused-argument
+    LOGGER.warning('Terminate signal received')
+    terminate.set()
+
+def main():
+    global LOGGER # pylint: disable=global-statement
+
+    log_level = get_log_level()
+    logging.basicConfig(level=log_level)
+    LOGGER = logging.getLogger(__name__)
+
+    signal.signal(signal.SIGINT,  signal_handler)
+    signal.signal(signal.SIGTERM, signal_handler)
+
+    LOGGER.info('Starting...')
+
+    # Start metrics server
+    metrics_port = get_metrics_port()
+    start_http_server(metrics_port)
+
+    # Starting ZtpServer service
+    grpc_service = ZtpServerService()
+    grpc_service.start()
+
+    rest_server = RestServer()
+    register_tfs_api(rest_server)
+    rest_server.start()
+
+    LOGGER.debug('Configured Resources:')
+    for resource in rest_server.api.resources:
+        LOGGER.debug(' - {:s}'.format(str(resource)))
+
+    LOGGER.debug('Configured Rules:')
+    for rule in rest_server.app.url_map.iter_rules():
+        LOGGER.debug(' - {:s}'.format(str(rule)))
+
+    # Wait for Ctrl+C or termination signal
+    while not terminate.wait(timeout=1.0): pass
+
+    LOGGER.info('Terminating...')
+    grpc_service.stop()
+    rest_server.shutdown()
+    rest_server.join()
+
+    LOGGER.info('Bye')
+    return 0
+
+if __name__ == '__main__':
+    sys.exit(main())
diff --git a/src/ztp_server/service/context_subscription/__init__.py b/src/ztp_server/service/context_subscription/__init__.py
new file mode 100755
index 0000000000000000000000000000000000000000..758f3d82c538fe364add40cc5119f745aea1dc34
--- /dev/null
+++ b/src/ztp_server/service/context_subscription/__init__.py
@@ -0,0 +1,64 @@
+# 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
+
+from websockets.sync.server import serve
+from common.proto.vnt_manager_pb2 import VNTSubscriptionRequest
+from common.Settings import get_setting
+from context.client.ContextClient import ContextClient
+from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME
+from common.tools.object_factory.Topology import json_topology_id
+from common.tools.object_factory.Context import json_context_id
+from common.proto.context_pb2 import ContextId, TopologyId
+import json
+import os
+from vnt_manager.client.VNTManagerClient import VNTManagerClient
+
+JSON_ADMIN_CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_NAME)
+ADMIN_CONTEXT_ID = ContextId(**JSON_ADMIN_CONTEXT_ID)
+ADMIN_TOPOLOGY_ID = TopologyId(**json_topology_id(DEFAULT_TOPOLOGY_NAME, context_id=JSON_ADMIN_CONTEXT_ID))
+
+vnt_manager_client: VNTManagerClient =  VNTManagerClient()
+context_client:     ContextClient =     ContextClient()   
+
+ALL_HOSTS = "0.0.0.0"
+WS_E2E_PORT = int(get_setting('WS_E2E_PORT', default='8762'))
+
+LOGGER = logging.getLogger(__name__)
+
+
+def register_context_subscription():
+    with serve(subcript_to_vnt_manager, ALL_HOSTS, WS_E2E_PORT, logger=LOGGER) as server:
+        LOGGER.info("Running subscription server...: {}:{}".format(ALL_HOSTS, str(WS_E2E_PORT)))
+        server.serve_forever()
+        LOGGER.info("Exiting subscription server...")
+
+
+def subcript_to_vnt_manager(websocket):
+    for message in websocket:
+        LOGGER.debug("Message received: {}".format(message))
+        message_json = json.loads(message)
+        request = VNTSubscriptionRequest()
+        request.host = message_json['host']
+        request.port = message_json['port']
+        LOGGER.debug("Received gRPC from ws: {}".format(request))
+
+        try:
+            vntm_reply = vnt_manager_client.VNTSubscript(request)
+            LOGGER.debug("Received gRPC from vntm: {}".format(vntm_reply))
+        except Exception as e:
+            LOGGER.error('Could not subscript to VTNManager: {}'.format(e))
+
+        websocket.send(vntm_reply.subscription)
diff --git a/src/ztp_server/service/rest_server/RestServer.py b/src/ztp_server/service/rest_server/RestServer.py
new file mode 100755
index 0000000000000000000000000000000000000000..0c4e45a8ca7db6ab4b8cf0cd6ac9c5618153a10a
--- /dev/null
+++ b/src/ztp_server/service/rest_server/RestServer.py
@@ -0,0 +1,23 @@
+# 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.
+
+from common.Constants import ServiceNameEnum
+from common.Settings import get_service_baseurl_http, get_service_port_http
+from common.tools.service.GenericRestServer import GenericRestServer
+
+class RestServer(GenericRestServer):
+    def __init__(self, cls_name: str = __name__) -> None:
+        bind_port = get_service_port_http(ServiceNameEnum.ZTP_SERVER)
+        base_url = get_service_baseurl_http(ServiceNameEnum.ZTP_SERVER)
+        super().__init__(bind_port, base_url, cls_name=cls_name)
diff --git a/src/ztp_server/service/rest_server/__init__.py b/src/ztp_server/service/rest_server/__init__.py
new file mode 100755
index 0000000000000000000000000000000000000000..53d5157f750bfb085125cbd33faff1cec5924e14
--- /dev/null
+++ b/src/ztp_server/service/rest_server/__init__.py
@@ -0,0 +1,14 @@
+# 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.
+
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/__init__.py b/src/ztp_server/service/rest_server/ztpServer_plugins/__init__.py
new file mode 100755
index 0000000000000000000000000000000000000000..53d5157f750bfb085125cbd33faff1cec5924e14
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/__init__.py
@@ -0,0 +1,14 @@
+# 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.
+
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Resources.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Resources.py
new file mode 100755
index 0000000000000000000000000000000000000000..c1b8c3733c17e0d70638ddde1bd2e0754fb7cc7a
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Resources.py
@@ -0,0 +1,47 @@
+# 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
+import logging
+from flask.json import jsonify
+from flask_restful import Resource, request
+from werkzeug.exceptions import BadRequest
+from common.proto.context_pb2 import Empty, LinkTypeEnum
+from common.tools.grpc.Tools import grpc_message_to_json
+from context.client.ContextClient import ContextClient
+from device.client.DeviceClient import DeviceClient
+from service.client.ServiceClient import ServiceClient
+from slice.client.SliceClient import SliceClient
+from vnt_manager.client.VNTManagerClient import VNTManagerClient
+
+from .Tools import (
+    format_grpc_to_json, returnConfigFile
+)
+
+LOGGER = logging.getLogger(__name__)
+
+
+class _Resource(Resource):
+    def __init__(self) -> None:
+        super().__init__()
+        self.context_client = ContextClient()
+        self.device_client  = DeviceClient()
+        self.service_client = ServiceClient()
+        self.vntmanager_client = VNTManagerClient()
+        self.slice_client   = SliceClient()
+
+
+class config(_Resource):
+    def get(self, config_db : str):
+        return returnConfigFile(config_db)  #TODO define how to return configFile.json
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Tools.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Tools.py
new file mode 100755
index 0000000000000000000000000000000000000000..6665dd4ce544867cb380e2d1030525d5a7caacfb
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Tools.py
@@ -0,0 +1,41 @@
+# 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.
+
+from typing import Dict
+from flask.json import jsonify
+from common.proto.context_pb2 import (
+    ConnectionId, returnConfigFile
+)
+from common.proto.policy_pb2 import PolicyRule, PolicyRuleId
+from common.tools.grpc.Tools import grpc_message_to_json
+from common.tools.object_factory.Connection import json_connection_id
+from common.tools.object_factory.Context import json_context_id
+from common.tools.object_factory.Device import json_device_id
+from common.tools.object_factory.Link import json_link_id
+from common.tools.object_factory.PolicyRule import json_policyrule_id
+from common.tools.object_factory.Service import json_service_id
+from common.tools.object_factory.Slice import json_slice_id
+from common.tools.object_factory.Topology import json_topology_id
+
+
+def format_grpc_to_json(grpc_reply):
+    return jsonify(grpc_message_to_json(grpc_reply))
+
+def returnConfigFile(config_db):
+    path = config_db
+
+    with open(path, 'r', encoding='utf-8') as configFile:
+        content = configFile.read()
+
+    return content
\ No newline at end of file
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/__init__.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/__init__.py
new file mode 100755
index 0000000000000000000000000000000000000000..7062772b4fed30e72e25ce6e290e9e95c1d3abef
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/__init__.py
@@ -0,0 +1,30 @@
+# 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.
+
+from ztp_server.service.rest_server.RestServer import RestServer
+from .Resources import (
+    config
+)
+
+URL_PREFIX = '/provisioning'
+
+# Use 'path' type since some identifiers might contain char '/' and Flask is unable to recognize them in 'string' type.
+RESOURCES = [
+    # (endpoint_name, resource_class, resource_url)
+    ('api.config',    config,    '/config/<path:config_db>'),
+]
+
+def register_tfs_api(rest_server : RestServer):
+    for endpoint_name, resource_class, resource_url in RESOURCES:
+        rest_server.add_resource(resource_class, URL_PREFIX + resource_url, endpoint=endpoint_name)
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Authentication.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Authentication.py
new file mode 100755
index 0000000000000000000000000000000000000000..aab239f365bd3450aa363eb098e64e1c2c8fd8d6
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Authentication.py
@@ -0,0 +1,25 @@
+# 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.
+
+from flask_httpauth import HTTPBasicAuth
+from werkzeug.security import check_password_hash
+from ztp_server.Config import RESTAPI_USERS
+
+HTTP_AUTH = HTTPBasicAuth()
+
+@HTTP_AUTH.verify_password
+def verify_password(username, password):
+    if username not in RESTAPI_USERS: return None
+    if not check_password_hash(RESTAPI_USERS[username], password): return None
+    return username
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tools/HttpStatusCodes.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/HttpStatusCodes.py
new file mode 100755
index 0000000000000000000000000000000000000000..56ea475c7657c80957f0d34ec5c8a3560d68d20a
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/HttpStatusCodes.py
@@ -0,0 +1,20 @@
+# 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.
+
+HTTP_OK             = 200
+HTTP_CREATED        = 201
+HTTP_NOCONTENT      = 204
+HTTP_BADREQUEST     = 400
+HTTP_SERVERERROR    = 500
+HTTP_GATEWAYTIMEOUT = 504
\ No newline at end of file
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Validator.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Validator.py
new file mode 100755
index 0000000000000000000000000000000000000000..66b607c8bd6b115c83ff9173446646cebae11697
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Validator.py
@@ -0,0 +1,35 @@
+# 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.
+
+from typing import List
+from flask.json import jsonify
+from jsonschema import _utils
+from jsonschema.validators import validator_for
+from jsonschema.protocols import Validator
+from jsonschema.exceptions import ValidationError
+from werkzeug.exceptions import BadRequest
+from .HttpStatusCodes import HTTP_BADREQUEST
+
+def validate_message(schema, message):
+    validator_class = validator_for(schema)
+    validator : Validator = validator_class(schema)
+    errors : List[ValidationError] = sorted(validator.iter_errors(message), key=str)
+    if len(errors) == 0: return
+    response = jsonify([
+        {'message': str(error.message), 'schema': str(error.schema), 'validator': str(error.validator),
+         'where': str(_utils.format_as_index(container='message', indices=error.relative_path))}
+        for error in errors
+    ])
+    response.status_code = HTTP_BADREQUEST
+    raise BadRequest(response=response)
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tools/__init__.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/__init__.py
new file mode 100755
index 0000000000000000000000000000000000000000..53d5157f750bfb085125cbd33faff1cec5924e14
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/__init__.py
@@ -0,0 +1,14 @@
+# 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.
+
diff --git a/src/ztp_server/tests/Constants.py b/src/ztp_server/tests/Constants.py
new file mode 100755
index 0000000000000000000000000000000000000000..886ddcafa4c3e1d798558f5dc285808ac7deecc6
--- /dev/null
+++ b/src/ztp_server/tests/Constants.py
@@ -0,0 +1,85 @@
+# 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.
+
+USERNAME = 'admin'
+PASSWORD = 'admin'
+
+# Ref: https://osm.etsi.org/wikipub/index.php/WIM
+WIM_MAPPING  = [
+    {
+        'device-id'           : 'dev-1',            # pop_switch_dpid
+        #'device_interface_id' : ??,                # pop_switch_port
+        'service_endpoint_id' : 'ep-1',             # wan_service_endpoint_id
+        'service_mapping_info': {                   # wan_service_mapping_info, other extra info
+            'bearer': {'bearer-reference': 'R1-EMU:13/1/2'},
+            'site-id': '1',
+        },
+        #'switch_dpid'         : ??,                # wan_switch_dpid
+        #'switch_port'         : ??,                # wan_switch_port
+        #'datacenter_id'       : ??,                # vim_account
+    },
+    {
+        'device-id'           : 'dev-2',            # pop_switch_dpid
+        #'device_interface_id' : ??,                # pop_switch_port
+        'service_endpoint_id' : 'ep-2',             # wan_service_endpoint_id
+        'service_mapping_info': {                   # wan_service_mapping_info, other extra info
+            'bearer': {'bearer-reference': 'R2-EMU:13/1/2'},
+            'site-id': '2',
+        },
+        #'switch_dpid'         : ??,                # wan_switch_dpid
+        #'switch_port'         : ??,                # wan_switch_port
+        #'datacenter_id'       : ??,                # vim_account
+    },
+    {
+        'device-id'           : 'dev-3',            # pop_switch_dpid
+        #'device_interface_id' : ??,                # pop_switch_port
+        'service_endpoint_id' : 'ep-3',             # wan_service_endpoint_id
+        'service_mapping_info': {                   # wan_service_mapping_info, other extra info
+            'bearer': {'bearer-reference': 'R3-EMU:13/1/2'},
+            'site-id': '3',
+        },
+        #'switch_dpid'         : ??,                # wan_switch_dpid
+        #'switch_port'         : ??,                # wan_switch_port
+        #'datacenter_id'       : ??,                # vim_account
+    },
+    {
+        'device-id'           : 'dev-4',            # pop_switch_dpid
+        #'device_interface_id' : ??,                # pop_switch_port
+        'service_endpoint_id' : 'ep-4',             # wan_service_endpoint_id
+        'service_mapping_info': {                   # wan_service_mapping_info, other extra info
+            'bearer': {'bearer-reference': 'R4-EMU:13/1/2'},
+            'site-id': '4',
+        },
+        #'switch_dpid'         : ??,                # wan_switch_dpid
+        #'switch_port'         : ??,                # wan_switch_port
+        #'datacenter_id'       : ??,                # vim_account
+    },
+]
+
+SERVICE_TYPE = 'ELINE'
+
+SERVICE_CONNECTION_POINTS_1 = [
+    {'service_endpoint_id': 'ep-1',
+        'service_endpoint_encapsulation_type': 'dot1q',
+        'service_endpoint_encapsulation_info': {'vlan': 1234}},
+    {'service_endpoint_id': 'ep-2',
+        'service_endpoint_encapsulation_type': 'dot1q',
+        'service_endpoint_encapsulation_info': {'vlan': 1234}},
+]
+
+SERVICE_CONNECTION_POINTS_2 = [
+    {'service_endpoint_id': 'ep-3',
+        'service_endpoint_encapsulation_type': 'dot1q',
+        'service_endpoint_encapsulation_info': {'vlan': 1234}},
+]
\ No newline at end of file
diff --git a/src/ztp_server/tests/MockService_Dependencies.py b/src/ztp_server/tests/MockService_Dependencies.py
new file mode 100755
index 0000000000000000000000000000000000000000..3224413670f02a3318e4f6af95b258993b2edd2d
--- /dev/null
+++ b/src/ztp_server/tests/MockService_Dependencies.py
@@ -0,0 +1,58 @@
+# 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 os
+from typing import Union
+from common.Constants import ServiceNameEnum
+from common.Settings import ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, get_env_var_name
+from common.proto.context_pb2_grpc import add_ContextServiceServicer_to_server
+from common.proto.service_pb2_grpc import add_ServiceServiceServicer_to_server
+from common.proto.slice_pb2_grpc import add_SliceServiceServicer_to_server
+from common.tests.MockServicerImpl_Context import MockServicerImpl_Context
+from common.tests.MockServicerImpl_Service import MockServicerImpl_Service
+from common.tests.MockServicerImpl_Slice import MockServicerImpl_Slice
+from common.tools.service.GenericGrpcService import GenericGrpcService
+
+LOCAL_HOST = '127.0.0.1'
+
+SERVICE_CONTEXT = ServiceNameEnum.CONTEXT
+SERVICE_SERVICE = ServiceNameEnum.SERVICE
+SERVICE_SLICE   = ServiceNameEnum.SLICE
+
+class MockService_Dependencies(GenericGrpcService):
+    # Mock Service implementing Context, Service and Slice to simplify unitary tests of NBI
+
+    def __init__(self, bind_port: Union[str, int]) -> None:
+        super().__init__(bind_port, LOCAL_HOST, enable_health_servicer=False, cls_name='MockService')
+
+    # pylint: disable=attribute-defined-outside-init
+    def install_servicers(self):
+        self.context_servicer = MockServicerImpl_Context()
+        add_ContextServiceServicer_to_server(self.context_servicer, self.server)
+
+        self.service_servicer = MockServicerImpl_Service()
+        add_ServiceServiceServicer_to_server(self.service_servicer, self.server)
+
+        self.slice_servicer = MockServicerImpl_Slice()
+        add_SliceServiceServicer_to_server(self.slice_servicer, self.server)
+
+    def configure_env_vars(self):
+        os.environ[get_env_var_name(SERVICE_CONTEXT, ENVVAR_SUFIX_SERVICE_HOST     )] = str(self.bind_address)
+        os.environ[get_env_var_name(SERVICE_CONTEXT, ENVVAR_SUFIX_SERVICE_PORT_GRPC)] = str(self.bind_port)
+
+        os.environ[get_env_var_name(SERVICE_SERVICE, ENVVAR_SUFIX_SERVICE_HOST     )] = str(self.bind_address)
+        os.environ[get_env_var_name(SERVICE_SERVICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC)] = str(self.bind_port)
+
+        os.environ[get_env_var_name(SERVICE_SLICE,   ENVVAR_SUFIX_SERVICE_HOST     )] = str(self.bind_address)
+        os.environ[get_env_var_name(SERVICE_SLICE,   ENVVAR_SUFIX_SERVICE_PORT_GRPC)] = str(self.bind_port)
diff --git a/src/ztp_server/tests/PrepareTestScenario.py b/src/ztp_server/tests/PrepareTestScenario.py
new file mode 100755
index 0000000000000000000000000000000000000000..a574f086b30cf0125d82f1b41a986e3dc0fd2366
--- /dev/null
+++ b/src/ztp_server/tests/PrepareTestScenario.py
@@ -0,0 +1,169 @@
+# 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 enum, logging, os, pytest, requests, time
+from typing import Any, Dict, List, Optional, Set, Union
+from common.Constants import ServiceNameEnum
+from common.Settings import (
+    ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_HTTP,
+    get_env_var_name, get_service_baseurl_http, get_service_port_http
+)
+from context.client.ContextClient import ContextClient
+from nbi.service.rest_server.RestServer import RestServer
+from nbi.service.rest_server.nbi_plugins.etsi_bwm import register_etsi_bwm_api
+from nbi.service.rest_server.nbi_plugins.ietf_l2vpn import register_ietf_l2vpn
+from nbi.service.rest_server.nbi_plugins.ietf_l3vpn import register_ietf_l3vpn
+from nbi.service.rest_server.nbi_plugins.ietf_network import register_ietf_network
+from nbi.service.rest_server.nbi_plugins.tfs_api import register_tfs_api
+from nbi.tests.MockService_Dependencies import MockService_Dependencies
+from service.client.ServiceClient import ServiceClient
+from slice.client.SliceClient import SliceClient
+from tests.tools.mock_osm.MockOSM import MockOSM
+from .Constants import USERNAME, PASSWORD, WIM_MAPPING
+
+LOCAL_HOST = '127.0.0.1'
+MOCKSERVICE_PORT = 10000
+NBI_SERVICE_PORT = MOCKSERVICE_PORT + get_service_port_http(ServiceNameEnum.NBI)    # avoid privileged ports
+os.environ[get_env_var_name(ServiceNameEnum.NBI, ENVVAR_SUFIX_SERVICE_HOST     )] = str(LOCAL_HOST)
+os.environ[get_env_var_name(ServiceNameEnum.NBI, ENVVAR_SUFIX_SERVICE_PORT_HTTP)] = str(NBI_SERVICE_PORT)
+
+@pytest.fixture(scope='session')
+def mock_service():
+    _service = MockService_Dependencies(MOCKSERVICE_PORT)
+    _service.configure_env_vars()
+    _service.start()
+    yield _service
+    _service.stop()
+
+@pytest.fixture(scope='session')
+def nbi_service_rest(mock_service : MockService_Dependencies):  # pylint: disable=redefined-outer-name, unused-argument
+    _rest_server = RestServer()
+    register_etsi_bwm_api(_rest_server)
+    register_ietf_l2vpn(_rest_server)
+    register_ietf_l3vpn(_rest_server)
+    register_ietf_network(_rest_server)
+    register_tfs_api(_rest_server)
+    _rest_server.start()
+    time.sleep(1) # bring time for the server to start
+    yield _rest_server
+    _rest_server.shutdown()
+    _rest_server.join()
+
+@pytest.fixture(scope='session')
+def osm_wim(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    wim_url = 'http://{:s}:{:d}'.format(LOCAL_HOST, NBI_SERVICE_PORT)
+    return MockOSM(wim_url, WIM_MAPPING, USERNAME, PASSWORD)
+
+@pytest.fixture(scope='session')
+def context_client(mock_service : MockService_Dependencies): # pylint: disable=redefined-outer-name, unused-argument
+    _client = ContextClient()
+    yield _client
+    _client.close()
+
+@pytest.fixture(scope='session')
+def service_client(mock_service : MockService_Dependencies): # pylint: disable=redefined-outer-name, unused-argument
+    _client = ServiceClient()
+    yield _client
+    _client.close()
+
+@pytest.fixture(scope='session')
+def slice_client(mock_service : MockService_Dependencies): # pylint: disable=redefined-outer-name, unused-argument
+    _client = SliceClient()
+    yield _client
+    _client.close()
+
+class RestRequestMethod(enum.Enum):
+    GET    = 'get'
+    POST   = 'post'
+    PUT    = 'put'
+    PATCH  = 'patch'
+    DELETE = 'delete'
+
+EXPECTED_STATUS_CODES : Set[int] = {
+    requests.codes['OK'        ],
+    requests.codes['CREATED'   ],
+    requests.codes['ACCEPTED'  ],
+    requests.codes['NO_CONTENT'],
+}
+
+def do_rest_request(
+    method : RestRequestMethod, url : str, body : Optional[Any] = None, timeout : int = 10,
+    allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES,
+    logger : Optional[logging.Logger] = None
+) -> Optional[Union[Dict, List]]:
+    base_url = get_service_baseurl_http(ServiceNameEnum.NBI) or ''
+    request_url = 'http://{:s}:{:s}@{:s}:{:d}{:s}{:s}'.format(
+        USERNAME, PASSWORD, LOCAL_HOST, NBI_SERVICE_PORT, str(base_url), url
+    )
+    if logger is not None:
+        msg = 'Request: {:s} {:s}'.format(str(method.value).upper(), str(request_url))
+        if body is not None: msg += ' body={:s}'.format(str(body))
+        logger.warning(msg)
+    reply = requests.request(method.value, request_url, timeout=timeout, json=body, allow_redirects=allow_redirects)
+    if logger is not None:
+        logger.warning('Reply: {:s}'.format(str(reply.text)))
+    assert reply.status_code in expected_status_codes, 'Reply failed with status code {:d}'.format(reply.status_code)
+
+    if reply.content and len(reply.content) > 0: return reply.json()
+    return None
+
+def do_rest_get_request(
+    url : str, body : Optional[Any] = None, timeout : int = 10,
+    allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES,
+    logger : Optional[logging.Logger] = None
+) -> Optional[Union[Dict, List]]:
+    return do_rest_request(
+        RestRequestMethod.GET, url, body=body, timeout=timeout, allow_redirects=allow_redirects,
+        expected_status_codes=expected_status_codes, logger=logger
+    )
+
+def do_rest_post_request(
+    url : str, body : Optional[Any] = None, timeout : int = 10,
+    allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES,
+    logger : Optional[logging.Logger] = None
+) -> Optional[Union[Dict, List]]:
+    return do_rest_request(
+        RestRequestMethod.POST, url, body=body, timeout=timeout, allow_redirects=allow_redirects,
+        expected_status_codes=expected_status_codes, logger=logger
+    )
+
+def do_rest_put_request(
+    url : str, body : Optional[Any] = None, timeout : int = 10,
+    allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES,
+    logger : Optional[logging.Logger] = None
+) -> Optional[Union[Dict, List]]:
+    return do_rest_request(
+        RestRequestMethod.PUT, url, body=body, timeout=timeout, allow_redirects=allow_redirects,
+        expected_status_codes=expected_status_codes, logger=logger
+    )
+
+def do_rest_patch_request(
+    url : str, body : Optional[Any] = None, timeout : int = 10,
+    allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES,
+    logger : Optional[logging.Logger] = None
+) -> Optional[Union[Dict, List]]:
+    return do_rest_request(
+        RestRequestMethod.PATCH, url, body=body, timeout=timeout, allow_redirects=allow_redirects,
+        expected_status_codes=expected_status_codes, logger=logger
+    )
+
+def do_rest_delete_request(
+    url : str, body : Optional[Any] = None, timeout : int = 10,
+    allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES,
+    logger : Optional[logging.Logger] = None
+) -> Optional[Union[Dict, List]]:
+    return do_rest_request(
+        RestRequestMethod.DELETE, url, body=body, timeout=timeout, allow_redirects=allow_redirects,
+        expected_status_codes=expected_status_codes, logger=logger
+    )
diff --git a/src/ztp_server/tests/__init__.py b/src/ztp_server/tests/__init__.py
new file mode 100755
index 0000000000000000000000000000000000000000..53d5157f750bfb085125cbd33faff1cec5924e14
--- /dev/null
+++ b/src/ztp_server/tests/__init__.py
@@ -0,0 +1,14 @@
+# 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.
+
diff --git a/src/ztp_server/tests/data/ietf_acl.json b/src/ztp_server/tests/data/ietf_acl.json
new file mode 100755
index 0000000000000000000000000000000000000000..072df6d01513db8e47e50ffd42fc6719a6715f77
--- /dev/null
+++ b/src/ztp_server/tests/data/ietf_acl.json
@@ -0,0 +1,56 @@
+{
+    "ietf-access-control-list": {
+        "acls": {
+            "acl": [
+                {
+                    "name": "sample-ipv4-acl",
+                    "type": "ipv4-acl-type",
+                    "aces": {
+                        "ace": [
+                            {
+                                "name": "rule1",
+                                "matches": {
+                                    "ipv4": {
+                                        "dscp": 18,
+                                        "source-ipv4-network": "128.32.10.6/24",
+                                        "destination-ipv4-network": "172.10.33.0/24"
+                                    },
+                                    "tcp": {
+                                        "flags": "syn",
+                                        "source-port": {
+                                            "port": 1444,
+                                            "operator": "eq"
+                                        },
+                                        "destination-port": {
+                                            "port": 1333,
+                                            "operator": "eq"
+                                        }
+                                    }
+                                },
+                                "actions": {
+                                    "forwarding": "drop"
+                                }
+                            }
+                        ]
+                    }
+                }
+            ],
+            "attachment-points": {
+                "interface": [
+                    {
+                        "interface-id": "200",
+                        "ingress": {
+                            "acl-sets": {
+                                "acl-set": [
+                                    {
+                                        "name": "sample-ipv4-acl"
+                                    }
+                                ]
+                            }
+                        }
+                    }
+                ]
+            }
+        }
+    }
+}
diff --git a/src/ztp_server/tests/data/ietf_l3vpn_req_svc1.json b/src/ztp_server/tests/data/ietf_l3vpn_req_svc1.json
new file mode 100755
index 0000000000000000000000000000000000000000..bfeb93fb74c9513ef4d175d5962110127303a2a7
--- /dev/null
+++ b/src/ztp_server/tests/data/ietf_l3vpn_req_svc1.json
@@ -0,0 +1,231 @@
+{
+  "ietf-l3vpn-svc:l3vpn-svc": {
+    "vpn-services": {
+      "vpn-service": [
+        {
+          "vpn-id": "vpn1"
+        }
+      ]
+    },
+    "sites": {
+      "site": [
+        {
+          "site-id": "site_OLT",
+          "management": {
+            "type": "ietf-l3vpn-svc:provider-managed"
+          },
+          "locations": {
+            "location": [
+              {
+                "location-id": "OLT"
+              }
+            ]
+          },
+          "devices": {
+            "device": [
+              {
+                "device-id": "128.32.33.5",
+                "location": "OLT"
+              }
+            ]
+          },
+          "routing-protocols": {
+            "routing-protocol": [
+              {
+                "type": "ietf-l3vpn-svc:static",
+                "static": {
+                  "cascaded-lan-prefixes": {
+                    "ipv4-lan-prefixes": [
+                      {
+                        "lan": "128.32.10.1/24",
+                        "lan-tag": "vlan21",
+                        "next-hop": "128.32.33.2"
+                      },
+                      {
+                        "lan": "128.32.20.1/24",
+                        "lan-tag": "vlan21",
+                        "next-hop": "128.32.33.2"
+                      }
+                    ]
+                  }
+                }
+              }
+            ]
+          },
+          "site-network-accesses": {
+            "site-network-access": [
+              {
+                "site-network-access-id": "500",
+                "site-network-access-type": "ietf-l3vpn-svc:multipoint",
+                "device-reference": "128.32.33.5",
+                "vpn-attachment": {
+                  "vpn-id": "vpn1",
+                  "site-role": "ietf-l3vpn-svc:spoke-role"
+                },
+                "ip-connection": {
+                  "ipv4": {
+                    "address-allocation-type": "ietf-l3vpn-svc:static-address",
+                    "addresses": {
+                      "provider-address": "128.32.33.254",
+                      "customer-address": "128.32.33.2",
+                      "prefix-length": 24
+                    }
+                  }
+                },
+                "routing-protocols": {
+                  "routing-protocol": [
+                    {
+                      "type": "ietf-l3vpn-svc:static",
+                      "static": {
+                        "cascaded-lan-prefixes": {
+                          "ipv4-lan-prefixes": [
+                            {
+                              "lan": "172.1.101.1/24",
+                              "lan-tag": "vlan21",
+                              "next-hop": "128.32.33.254"
+                            }
+                          ]
+                        }
+                      }
+                    }
+                  ]
+                },
+                "service": {
+                  "svc-mtu": 1500,
+                  "svc-input-bandwidth": 1000000000,
+                  "svc-output-bandwidth": 1000000000,
+                  "qos": {
+                    "qos-profile": {
+                      "classes": {
+                        "class": [
+                          {
+                            "class-id": "qos-realtime",
+                            "direction": "ietf-l3vpn-svc:both",
+                            "latency": {
+                              "latency-boundary": 10
+                            },
+                            "bandwidth": {
+                              "guaranteed-bw-percent": 100
+                            }
+                          }
+                        ]
+                      }
+                    }
+                  }
+                }
+              }
+            ]
+          }
+        },
+        {
+          "site-id": "site_POP",
+          "management": {
+            "type": "ietf-l3vpn-svc:provider-managed"
+          },
+          "locations": {
+            "location": [
+              {
+                "location-id": "POP"
+              }
+            ]
+          },
+          "devices": {
+            "device": [
+              {
+                "device-id": "172.10.33.5",
+                "location": "POP"
+              }
+            ]
+          },
+          "routing-protocols": {
+            "routing-protocol": [
+              {
+                "type": "ietf-l3vpn-svc:static",
+                "static": {
+                  "cascaded-lan-prefixes": {
+                    "ipv4-lan-prefixes": [
+                      {
+                        "lan": "172.1.101.1/24",
+                        "lan-tag": "vlan101",
+                        "next-hop": "172.10.33.2"
+                      }
+                    ]
+                  }
+                }
+              }
+            ]
+          },
+          "site-network-accesses": {
+            "site-network-access": [
+              {
+                "site-network-access-id": "500",
+                "site-network-access-type": "ietf-l3vpn-svc:multipoint",
+                "device-reference": "172.10.33.5",
+                "vpn-attachment": {
+                  "vpn-id": "vpn1",
+                  "site-role": "ietf-l3vpn-svc:hub-role"
+                },
+                "ip-connection": {
+                  "ipv4": {
+                    "address-allocation-type": "ietf-l3vpn-svc:static-address",
+                    "addresses": {
+                      "provider-address": "172.10.33.254",
+                      "customer-address": "172.10.33.2",
+                      "prefix-length": 24
+                    }
+                  }
+                },
+                "routing-protocols": {
+                  "routing-protocol": [
+                    {
+                      "type": "ietf-l3vpn-svc:static",
+                      "static": {
+                        "cascaded-lan-prefixes": {
+                          "ipv4-lan-prefixes": [
+                            {
+                              "lan": "128.32.10.1/24",
+                              "lan-tag": "vlan101",
+                              "next-hop": "172.10.33.254"
+                            },
+                            {
+                              "lan": "128.32.20.1/24",
+                              "lan-tag": "vlan101",
+                              "next-hop": "172.10.33.254"
+                            }
+                          ]
+                        }
+                      }
+                    }
+                  ]
+                },
+                "service": {
+                  "svc-mtu": 1500,
+                  "svc-input-bandwidth": 1000000000,
+                  "svc-output-bandwidth": 1000000000,
+                  "qos": {
+                    "qos-profile": {
+                      "classes": {
+                        "class": [
+                          {
+                            "class-id": "qos-realtime",
+                            "direction": "ietf-l3vpn-svc:both",
+                            "latency": {
+                              "latency-boundary": 10
+                            },
+                            "bandwidth": {
+                              "guaranteed-bw-percent": 100
+                            }
+                          }
+                        ]
+                      }
+                    }
+                  }
+                }
+              }
+            ]
+          }
+        }
+      ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/ztp_server/tests/data/ietf_l3vpn_req_svc2.json b/src/ztp_server/tests/data/ietf_l3vpn_req_svc2.json
new file mode 100755
index 0000000000000000000000000000000000000000..2cc512e595c820a8df42ec06af973fefa4601095
--- /dev/null
+++ b/src/ztp_server/tests/data/ietf_l3vpn_req_svc2.json
@@ -0,0 +1,231 @@
+{
+  "ietf-l3vpn-svc:l3vpn-svc": {
+    "vpn-services": {
+      "vpn-service": [
+        {
+          "vpn-id": "vpn2"
+        }
+      ]
+    },
+    "sites": {
+      "site": [
+        {
+          "site-id": "site_OLT",
+          "management": {
+            "type": "ietf-l3vpn-svc:provider-managed"
+          },
+          "locations": {
+            "location": [
+              {
+                "location-id": "OLT"
+              }
+            ]
+          },
+          "devices": {
+            "device": [
+              {
+                "device-id": "128.32.33.5",
+                "location": "OLT"
+              }
+            ]
+          },
+          "routing-protocols": {
+            "routing-protocol": [
+              {
+                "type": "ietf-l3vpn-svc:static",
+                "static": {
+                  "cascaded-lan-prefixes": {
+                    "ipv4-lan-prefixes": [
+                      {
+                        "lan": "128.32.10.1/24",
+                        "lan-tag": "vlan31",
+                        "next-hop": "128.32.33.2"
+                      },
+                      {
+                        "lan": "128.32.20.1/24",
+                        "lan-tag": "vlan31",
+                        "next-hop": "128.32.33.2"
+                      }
+                    ]
+                  }
+                }
+              }
+            ]
+          },
+          "site-network-accesses": {
+            "site-network-access": [
+              {
+                "site-network-access-id": "500",
+                "site-network-access-type": "ietf-l3vpn-svc:multipoint",
+                "device-reference": "128.32.33.5",
+                "vpn-attachment": {
+                  "vpn-id": "vpn2",
+                  "site-role": "ietf-l3vpn-svc:spoke-role"
+                },
+                "ip-connection": {
+                  "ipv4": {
+                    "address-allocation-type": "ietf-l3vpn-svc:static-address",
+                    "addresses": {
+                      "provider-address": "128.32.33.254",
+                      "customer-address": "128.32.33.2",
+                      "prefix-length": 24
+                    }
+                  }
+                },
+                "routing-protocols": {
+                  "routing-protocol": [
+                    {
+                      "type": "ietf-l3vpn-svc:static",
+                      "static": {
+                        "cascaded-lan-prefixes": {
+                          "ipv4-lan-prefixes": [
+                            {
+                              "lan": "172.1.201.1/24",
+                              "lan-tag": "vlan31",
+                              "next-hop": "128.32.33.254"
+                            }
+                          ]
+                        }
+                      }
+                    }
+                  ]
+                },
+                "service": {
+                  "svc-mtu": 1500,
+                  "svc-input-bandwidth": 1000000000,
+                  "svc-output-bandwidth": 1000000000,
+                  "qos": {
+                    "qos-profile": {
+                      "classes": {
+                        "class": [
+                          {
+                            "class-id": "qos-realtime",
+                            "direction": "ietf-l3vpn-svc:both",
+                            "latency": {
+                              "latency-boundary": 10
+                            },
+                            "bandwidth": {
+                              "guaranteed-bw-percent": 100
+                            }
+                          }
+                        ]
+                      }
+                    }
+                  }
+                }
+              }
+            ]
+          }
+        },
+        {
+          "site-id": "site_POP",
+          "management": {
+            "type": "ietf-l3vpn-svc:provider-managed"
+          },
+          "locations": {
+            "location": [
+              {
+                "location-id": "POP"
+              }
+            ]
+          },
+          "devices": {
+            "device": [
+              {
+                "device-id": "172.10.33.5",
+                "location": "POP"
+              }
+            ]
+          },
+          "routing-protocols": {
+            "routing-protocol": [
+              {
+                "type": "ietf-l3vpn-svc:static",
+                "static": {
+                  "cascaded-lan-prefixes": {
+                    "ipv4-lan-prefixes": [
+                      {
+                        "lan": "172.1.201.1/24",
+                        "lan-tag": "vlan201",
+                        "next-hop": "172.10.33.2"
+                      }
+                    ]
+                  }
+                }
+              }
+            ]
+          },
+          "site-network-accesses": {
+            "site-network-access": [
+              {
+                "site-network-access-id": "500",
+                "site-network-access-type": "ietf-l3vpn-svc:multipoint",
+                "device-reference": "172.10.33.5",
+                "vpn-attachment": {
+                  "vpn-id": "vpn2",
+                  "site-role": "ietf-l3vpn-svc:hub-role"
+                },
+                "ip-connection": {
+                  "ipv4": {
+                    "address-allocation-type": "ietf-l3vpn-svc:static-address",
+                    "addresses": {
+                      "provider-address": "172.10.33.254",
+                      "customer-address": "172.10.33.2",
+                      "prefix-length": 24
+                    }
+                  }
+                },
+                "routing-protocols": {
+                  "routing-protocol": [
+                    {
+                      "type": "ietf-l3vpn-svc:static",
+                      "static": {
+                        "cascaded-lan-prefixes": {
+                          "ipv4-lan-prefixes": [
+                            {
+                              "lan": "128.32.10.1/24",
+                              "lan-tag": "vlan201",
+                              "next-hop": "172.10.33.254"
+                            },
+                            {
+                              "lan": "128.32.20.1/24",
+                              "lan-tag": "vlan201",
+                              "next-hop": "172.10.33.254"
+                            }
+                          ]
+                        }
+                      }
+                    }
+                  ]
+                },
+                "service": {
+                  "svc-mtu": 1500,
+                  "svc-input-bandwidth": 1000000000,
+                  "svc-output-bandwidth": 1000000000,
+                  "qos": {
+                    "qos-profile": {
+                      "classes": {
+                        "class": [
+                          {
+                            "class-id": "qos-realtime",
+                            "direction": "ietf-l3vpn-svc:both",
+                            "latency": {
+                              "latency-boundary": 10
+                            },
+                            "bandwidth": {
+                              "guaranteed-bw-percent": 100
+                            }
+                          }
+                        ]
+                      }
+                    }
+                  }
+                }
+              }
+            ]
+          }
+        }
+      ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/ztp_server/tests/data/test-ietf-network.json b/src/ztp_server/tests/data/test-ietf-network.json
new file mode 100755
index 0000000000000000000000000000000000000000..7643ef53a18e0aca583189bdefe097a10c2e502d
--- /dev/null
+++ b/src/ztp_server/tests/data/test-ietf-network.json
@@ -0,0 +1,1962 @@
+{
+    "ietf-network:networks": {
+        "network": [
+            {
+                "network-id": "providerId-10-clientId-0-topologyId-1",
+                "ietf-te-topology:te": {
+                    "name": "Huawei-Network"
+                },
+                "ietf-te-topology:te-topology-identifier": {
+                    "provider-id": 10,
+                    "client-id": 0,
+                    "topology-id": "1"
+                },
+                "network-types": {
+                    "ietf-te-topology:te-topology": {
+                        "ietf-otn-topology:otn-topology": {}
+                    }
+                },
+                "node": [
+                    {
+                        "node-id": "10.0.10.1",
+                        "ietf-te-topology:te-node-id": "10.0.10.1",
+                        "ietf-network-topology:termination-point": [
+                            {
+                                "tp-id": "501",
+                                "ietf-te-topology:te-tp-id": 501,
+                                "ietf-te-topology:te": {
+                                    "name": "1-1-1-1-1",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "ietf-otn-topology:client-svc": {
+                                        "client-facing": false
+                                    },
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-oduk",
+                                            "switching-capability": "ietf-te-types:switching-otn",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-otn-topology:otn": {
+                                                            "odu-type": "ietf-layer1-types:ODU4"
+                                                        }
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            },
+                            {
+                                "tp-id": "500",
+                                "ietf-te-topology:te-tp-id": 500,
+                                "ietf-te-topology:te": {
+                                    "name": "1-1-1-1-1",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "ietf-otn-topology:client-svc": {
+                                        "client-facing": false
+                                    },
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-oduk",
+                                            "switching-capability": "ietf-te-types:switching-otn",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-otn-topology:otn": {
+                                                            "odu-type": "ietf-layer1-types:ODU4"
+                                                        }
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            }
+                        ],
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-node-attributes": {
+                                "admin-status": "up",
+                                "name": "OA"
+                            },
+                            "tunnel-termination-point": [
+                                {
+                                    "tunnel-tp-id": "NTAx",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "encoding": "ietf-te-types:lsp-encoding-oduk",
+                                    "name": "1-1-1-1-1",
+                                    "protection-type": "ietf-te-types:lsp-protection-unprotected",
+                                    "switching-capability": "ietf-te-types:switching-otn",
+                                    "local-link-connectivities": {
+                                        "local-link-connectivity": [
+                                            {
+                                                "is-allowed": true,
+                                                "link-tp-ref": "501"
+                                            }
+                                        ]
+                                    }
+                                },
+                                {
+                                    "tunnel-tp-id": "NTAw",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "encoding": "ietf-te-types:lsp-encoding-oduk",
+                                    "name": "1-1-1-1-1",
+                                    "protection-type": "ietf-te-types:lsp-protection-unprotected",
+                                    "switching-capability": "ietf-te-types:switching-otn",
+                                    "local-link-connectivities": {
+                                        "local-link-connectivity": [
+                                            {
+                                                "is-allowed": true,
+                                                "link-tp-ref": "500"
+                                            }
+                                        ]
+                                    }
+                                }
+                            ]
+                        }
+                    },
+                    {
+                        "node-id": "10.0.20.1",
+                        "ietf-te-topology:te-node-id": "10.0.20.1",
+                        "ietf-network-topology:termination-point": [
+                            {
+                                "tp-id": "501",
+                                "ietf-te-topology:te-tp-id": 501,
+                                "ietf-te-topology:te": {
+                                    "name": "1-1-1-1-1",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "ietf-otn-topology:client-svc": {
+                                        "client-facing": false
+                                    },
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-oduk",
+                                            "switching-capability": "ietf-te-types:switching-otn",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-otn-topology:otn": {
+                                                            "odu-type": "ietf-layer1-types:ODU4"
+                                                        }
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            },
+                            {
+                                "tp-id": "500",
+                                "ietf-te-topology:te-tp-id": 500,
+                                "ietf-te-topology:te": {
+                                    "name": "1-1-1-1-1",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "ietf-otn-topology:client-svc": {
+                                        "client-facing": false
+                                    },
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-oduk",
+                                            "switching-capability": "ietf-te-types:switching-otn",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-otn-topology:otn": {
+                                                            "odu-type": "ietf-layer1-types:ODU4"
+                                                        }
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            }
+                        ],
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-node-attributes": {
+                                "admin-status": "up",
+                                "name": "P"
+                            },
+                            "tunnel-termination-point": [
+                                {
+                                    "tunnel-tp-id": "NTAx",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "encoding": "ietf-te-types:lsp-encoding-oduk",
+                                    "name": "1-1-1-1-1",
+                                    "protection-type": "ietf-te-types:lsp-protection-unprotected",
+                                    "switching-capability": "ietf-te-types:switching-otn",
+                                    "local-link-connectivities": {
+                                        "local-link-connectivity": [
+                                            {
+                                                "is-allowed": true,
+                                                "link-tp-ref": "501"
+                                            }
+                                        ]
+                                    }
+                                },
+                                {
+                                    "tunnel-tp-id": "NTAw",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "encoding": "ietf-te-types:lsp-encoding-oduk",
+                                    "name": "1-1-1-1-1",
+                                    "protection-type": "ietf-te-types:lsp-protection-unprotected",
+                                    "switching-capability": "ietf-te-types:switching-otn",
+                                    "local-link-connectivities": {
+                                        "local-link-connectivity": [
+                                            {
+                                                "is-allowed": true,
+                                                "link-tp-ref": "500"
+                                            }
+                                        ]
+                                    }
+                                }
+                            ]
+                        }
+                    },
+                    {
+                        "node-id": "10.0.40.1",
+                        "ietf-te-topology:te-node-id": "10.0.40.1",
+                        "ietf-network-topology:termination-point": [
+                            {
+                                "tp-id": "500",
+                                "ietf-te-topology:te-tp-id": 500,
+                                "ietf-te-topology:te": {
+                                    "name": "1-1-1-1-1",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "ietf-otn-topology:client-svc": {
+                                        "client-facing": false
+                                    },
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-oduk",
+                                            "switching-capability": "ietf-te-types:switching-otn",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-otn-topology:otn": {
+                                                            "odu-type": "ietf-layer1-types:ODU4"
+                                                        }
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            },
+                            {
+                                "tp-id": "501",
+                                "ietf-te-topology:te-tp-id": 501,
+                                "ietf-te-topology:te": {
+                                    "name": "1-1-1-1-1",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "ietf-otn-topology:client-svc": {
+                                        "client-facing": false
+                                    },
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-oduk",
+                                            "switching-capability": "ietf-te-types:switching-otn",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-otn-topology:otn": {
+                                                            "odu-type": "ietf-layer1-types:ODU4"
+                                                        }
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            }
+                        ],
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-node-attributes": {
+                                "admin-status": "up",
+                                "name": "P"
+                            },
+                            "tunnel-termination-point": [
+                                {
+                                    "tunnel-tp-id": "NTAw",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "encoding": "ietf-te-types:lsp-encoding-oduk",
+                                    "name": "1-1-1-1-1",
+                                    "protection-type": "ietf-te-types:lsp-protection-unprotected",
+                                    "switching-capability": "ietf-te-types:switching-otn",
+                                    "local-link-connectivities": {
+                                        "local-link-connectivity": [
+                                            {
+                                                "is-allowed": true,
+                                                "link-tp-ref": "500"
+                                            }
+                                        ]
+                                    }
+                                },
+                                {
+                                    "tunnel-tp-id": "NTAx",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "encoding": "ietf-te-types:lsp-encoding-oduk",
+                                    "name": "1-1-1-1-1",
+                                    "protection-type": "ietf-te-types:lsp-protection-unprotected",
+                                    "switching-capability": "ietf-te-types:switching-otn",
+                                    "local-link-connectivities": {
+                                        "local-link-connectivity": [
+                                            {
+                                                "is-allowed": true,
+                                                "link-tp-ref": "501"
+                                            }
+                                        ]
+                                    }
+                                }
+                            ]
+                        }
+                    },
+                    {
+                        "node-id": "10.0.30.1",
+                        "ietf-te-topology:te-node-id": "10.0.30.1",
+                        "ietf-network-topology:termination-point": [
+                            {
+                                "tp-id": "500",
+                                "ietf-te-topology:te-tp-id": 500,
+                                "ietf-te-topology:te": {
+                                    "name": "1-1-1-1-1",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "ietf-otn-topology:client-svc": {
+                                        "client-facing": false
+                                    },
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-oduk",
+                                            "switching-capability": "ietf-te-types:switching-otn",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-otn-topology:otn": {
+                                                            "odu-type": "ietf-layer1-types:ODU4"
+                                                        }
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            },
+                            {
+                                "tp-id": "501",
+                                "ietf-te-topology:te-tp-id": 501,
+                                "ietf-te-topology:te": {
+                                    "name": "1-1-1-1-1",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "ietf-otn-topology:client-svc": {
+                                        "client-facing": false
+                                    },
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-oduk",
+                                            "switching-capability": "ietf-te-types:switching-otn",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-otn-topology:otn": {
+                                                            "odu-type": "ietf-layer1-types:ODU4"
+                                                        }
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            }
+                        ],
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-node-attributes": {
+                                "admin-status": "up",
+                                "name": "OE"
+                            },
+                            "tunnel-termination-point": [
+                                {
+                                    "tunnel-tp-id": "NTAw",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "encoding": "ietf-te-types:lsp-encoding-oduk",
+                                    "name": "1-1-1-1-1",
+                                    "protection-type": "ietf-te-types:lsp-protection-unprotected",
+                                    "switching-capability": "ietf-te-types:switching-otn",
+                                    "local-link-connectivities": {
+                                        "local-link-connectivity": [
+                                            {
+                                                "is-allowed": true,
+                                                "link-tp-ref": "500"
+                                            }
+                                        ]
+                                    }
+                                },
+                                {
+                                    "tunnel-tp-id": "NTAx",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "encoding": "ietf-te-types:lsp-encoding-oduk",
+                                    "name": "1-1-1-1-1",
+                                    "protection-type": "ietf-te-types:lsp-protection-unprotected",
+                                    "switching-capability": "ietf-te-types:switching-otn",
+                                    "local-link-connectivities": {
+                                        "local-link-connectivity": [
+                                            {
+                                                "is-allowed": true,
+                                                "link-tp-ref": "501"
+                                            }
+                                        ]
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                ],
+                "ietf-network-topology:link": [
+                    {
+                        "link-id": "10.0.10.1-501",
+                        "source": {
+                            "source-node": "10.0.10.1",
+                            "source-tp": "501"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.20.1",
+                            "dest-tp": "501"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.10.1-501",
+                                "te-delay-metric": 1,
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-otn-topology:otn": {
+                                            "odulist": [
+                                                {
+                                                    "odu-type": "ietf-layer1-types:ODU0",
+                                                    "ts-number": 80
+                                                }
+                                            ]
+                                        }
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-otn-topology:otn": {
+                                                "odulist": [
+                                                    {
+                                                        "ts-number": 80,
+                                                        "odu-type": "ietf-layer1-types:ODU0"
+                                                    }
+                                                ]
+                                            }
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "10.0.10.1-500",
+                        "source": {
+                            "source-node": "10.0.10.1",
+                            "source-tp": "500"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.40.1",
+                            "dest-tp": "500"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.10.1-500",
+                                "te-delay-metric": 1,
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-otn-topology:otn": {
+                                            "odulist": [
+                                                {
+                                                    "odu-type": "ietf-layer1-types:ODU0",
+                                                    "ts-number": 80
+                                                }
+                                            ]
+                                        }
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-otn-topology:otn": {
+                                                "odulist": [
+                                                    {
+                                                        "ts-number": 80,
+                                                        "odu-type": "ietf-layer1-types:ODU0"
+                                                    }
+                                                ]
+                                            }
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "10.0.20.1-501",
+                        "source": {
+                            "source-node": "10.0.20.1",
+                            "source-tp": "501"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.10.1",
+                            "dest-tp": "501"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.20.1-501",
+                                "te-delay-metric": 1,
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-otn-topology:otn": {
+                                            "odulist": [
+                                                {
+                                                    "odu-type": "ietf-layer1-types:ODU0",
+                                                    "ts-number": 80
+                                                }
+                                            ]
+                                        }
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-otn-topology:otn": {
+                                                "odulist": [
+                                                    {
+                                                        "ts-number": 80,
+                                                        "odu-type": "ietf-layer1-types:ODU0"
+                                                    }
+                                                ]
+                                            }
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "10.0.20.1-500",
+                        "source": {
+                            "source-node": "10.0.20.1",
+                            "source-tp": "500"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.30.1",
+                            "dest-tp": "500"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.20.1-500",
+                                "te-delay-metric": 1,
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-otn-topology:otn": {
+                                            "odulist": [
+                                                {
+                                                    "odu-type": "ietf-layer1-types:ODU0",
+                                                    "ts-number": 80
+                                                }
+                                            ]
+                                        }
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-otn-topology:otn": {
+                                                "odulist": [
+                                                    {
+                                                        "ts-number": 80,
+                                                        "odu-type": "ietf-layer1-types:ODU0"
+                                                    }
+                                                ]
+                                            }
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "10.0.40.1-500",
+                        "source": {
+                            "source-node": "10.0.40.1",
+                            "source-tp": "500"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.10.1",
+                            "dest-tp": "500"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.40.1-500",
+                                "te-delay-metric": 1,
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-otn-topology:otn": {
+                                            "odulist": [
+                                                {
+                                                    "odu-type": "ietf-layer1-types:ODU0",
+                                                    "ts-number": 80
+                                                }
+                                            ]
+                                        }
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-otn-topology:otn": {
+                                                "odulist": [
+                                                    {
+                                                        "ts-number": 80,
+                                                        "odu-type": "ietf-layer1-types:ODU0"
+                                                    }
+                                                ]
+                                            }
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "10.0.40.1-501",
+                        "source": {
+                            "source-node": "10.0.40.1",
+                            "source-tp": "501"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.30.1",
+                            "dest-tp": "501"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.40.1-501",
+                                "te-delay-metric": 1,
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-otn-topology:otn": {
+                                            "odulist": [
+                                                {
+                                                    "odu-type": "ietf-layer1-types:ODU0",
+                                                    "ts-number": 80
+                                                }
+                                            ]
+                                        }
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-otn-topology:otn": {
+                                                "odulist": [
+                                                    {
+                                                        "ts-number": 80,
+                                                        "odu-type": "ietf-layer1-types:ODU0"
+                                                    }
+                                                ]
+                                            }
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "10.0.30.1-500",
+                        "source": {
+                            "source-node": "10.0.30.1",
+                            "source-tp": "500"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.20.1",
+                            "dest-tp": "500"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.30.1-500",
+                                "te-delay-metric": 1,
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-otn-topology:otn": {
+                                            "odulist": [
+                                                {
+                                                    "odu-type": "ietf-layer1-types:ODU0",
+                                                    "ts-number": 80
+                                                }
+                                            ]
+                                        }
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-otn-topology:otn": {
+                                                "odulist": [
+                                                    {
+                                                        "ts-number": 80,
+                                                        "odu-type": "ietf-layer1-types:ODU0"
+                                                    }
+                                                ]
+                                            }
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "10.0.30.1-501",
+                        "source": {
+                            "source-node": "10.0.30.1",
+                            "source-tp": "501"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.40.1",
+                            "dest-tp": "501"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.30.1-501",
+                                "te-delay-metric": 1,
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-otn-topology:otn": {
+                                            "odulist": [
+                                                {
+                                                    "odu-type": "ietf-layer1-types:ODU0",
+                                                    "ts-number": 80
+                                                }
+                                            ]
+                                        }
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-otn-topology:otn": {
+                                                "odulist": [
+                                                    {
+                                                        "ts-number": 80,
+                                                        "odu-type": "ietf-layer1-types:ODU0"
+                                                    }
+                                                ]
+                                            }
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    }
+                ]
+            },
+            {
+                "network-id": "providerId-10-clientId-0-topologyId-2",
+                "ietf-te-topology:te": {
+                    "name": "Huawei-Network"
+                },
+                "ietf-te-topology:te-topology-identifier": {
+                    "provider-id": 10,
+                    "client-id": 0,
+                    "topology-id": "2"
+                },
+                "network-types": {
+                    "ietf-te-topology:te-topology": {
+                        "ietf-eth-te-topology:eth-tran-topology": {}
+                    }
+                },
+                "node": [
+                    {
+                        "node-id": "10.0.10.1",
+                        "ietf-te-topology:te-node-id": "10.0.10.1",
+                        "ietf-network-topology:termination-point": [
+                            {
+                                "tp-id": "200",
+                                "ietf-te-topology:te-tp-id": "128.32.33.254",
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": true,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                },
+                                "ietf-te-topology:te": {
+                                    "name": "endpoint:111",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-ethernet",
+                                            "switching-capability": "ietf-te-types:switching-l2sc",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            },
+                            {
+                                "tp-id": "501",
+                                "ietf-te-topology:te-tp-id": 501,
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": false,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                },
+                                "ietf-te-topology:te": {
+                                    "name": "endpoint:111",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-ethernet",
+                                            "switching-capability": "ietf-te-types:switching-l2sc",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            },
+                            {
+                                "tp-id": "500",
+                                "ietf-te-topology:te-tp-id": 500,
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": false,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                },
+                                "ietf-te-topology:te": {
+                                    "name": "endpoint:111",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-ethernet",
+                                            "switching-capability": "ietf-te-types:switching-l2sc",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            }
+                        ],
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-node-attributes": {
+                                "admin-status": "up",
+                                "name": "OA"
+                            }
+                        }
+                    },
+                    {
+                        "node-id": "10.0.20.1",
+                        "ietf-te-topology:te-node-id": "10.0.20.1",
+                        "ietf-network-topology:termination-point": [
+                            {
+                                "tp-id": "501",
+                                "ietf-te-topology:te-tp-id": 501,
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": false,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                },
+                                "ietf-te-topology:te": {
+                                    "name": "endpoint:111",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-ethernet",
+                                            "switching-capability": "ietf-te-types:switching-l2sc",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            },
+                            {
+                                "tp-id": "500",
+                                "ietf-te-topology:te-tp-id": 500,
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": false,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                },
+                                "ietf-te-topology:te": {
+                                    "name": "endpoint:111",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-ethernet",
+                                            "switching-capability": "ietf-te-types:switching-l2sc",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            }
+                        ],
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-node-attributes": {
+                                "admin-status": "up",
+                                "name": "P"
+                            }
+                        }
+                    },
+                    {
+                        "node-id": "10.0.40.1",
+                        "ietf-te-topology:te-node-id": "10.0.40.1",
+                        "ietf-network-topology:termination-point": [
+                            {
+                                "tp-id": "501",
+                                "ietf-te-topology:te-tp-id": 501,
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": false,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                },
+                                "ietf-te-topology:te": {
+                                    "name": "endpoint:111",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-ethernet",
+                                            "switching-capability": "ietf-te-types:switching-l2sc",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            },
+                            {
+                                "tp-id": "500",
+                                "ietf-te-topology:te-tp-id": 500,
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": false,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                },
+                                "ietf-te-topology:te": {
+                                    "name": "endpoint:111",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-ethernet",
+                                            "switching-capability": "ietf-te-types:switching-l2sc",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            }
+                        ],
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-node-attributes": {
+                                "admin-status": "up",
+                                "name": "P"
+                            }
+                        }
+                    },
+                    {
+                        "node-id": "10.0.30.1",
+                        "ietf-te-topology:te-node-id": "10.0.30.1",
+                        "ietf-network-topology:termination-point": [
+                            {
+                                "tp-id": "200",
+                                "ietf-te-topology:te-tp-id": "172.10.33.254",
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": true,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                },
+                                "ietf-te-topology:te": {
+                                    "name": "endpoint:111",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-ethernet",
+                                            "switching-capability": "ietf-te-types:switching-l2sc",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            },
+                            {
+                                "tp-id": "501",
+                                "ietf-te-topology:te-tp-id": 501,
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": false,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                },
+                                "ietf-te-topology:te": {
+                                    "name": "endpoint:111",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-ethernet",
+                                            "switching-capability": "ietf-te-types:switching-l2sc",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            },
+                            {
+                                "tp-id": "500",
+                                "ietf-te-topology:te-tp-id": 500,
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": false,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                },
+                                "ietf-te-topology:te": {
+                                    "name": "endpoint:111",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-ethernet",
+                                            "switching-capability": "ietf-te-types:switching-l2sc",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            }
+                        ],
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-node-attributes": {
+                                "admin-status": "up",
+                                "name": "OE"
+                            }
+                        }
+                    },
+                    {
+                        "node-id": "128.32.33.5",
+                        "ietf-te-topology:te-node-id": "128.32.33.5",
+                        "ietf-network-topology:termination-point": [
+                            {
+                                "tp-id": "500",
+                                "ietf-te-topology:te-tp-id": "128.32.33.2",
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": false,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                },
+                                "ietf-te-topology:te": {
+                                    "name": "endpoint:111",
+                                    "admin-status": "up",
+                                    "oper-status": "up",
+                                    "interface-switching-capability": [
+                                        {
+                                            "encoding": "ietf-te-types:lsp-encoding-ethernet",
+                                            "switching-capability": "ietf-te-types:switching-l2sc",
+                                            "max-lsp-bandwidth": [
+                                                {
+                                                    "priority": 7,
+                                                    "te-bandwidth": {
+                                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                                    }
+                                                }
+                                            ]
+                                        }
+                                    ]
+                                }
+                            },
+                            {
+                                "tp-id": "200",
+                                "ietf-te-topology:te-tp-id": 200,
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": true,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                }
+                            },
+                            {
+                                "tp-id": "201",
+                                "ietf-te-topology:te-tp-id": 201,
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": true,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        ],
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-node-attributes": {
+                                "admin-status": "up",
+                                "name": "OLT",
+                                "connectivity-matrices": {
+                                    "label-restrictions": {
+                                        "label-restriction": [
+                                            {
+                                                "index": 0,
+                                                "label-start": {
+                                                    "te-label": {
+                                                        "ietf-eth-te-topology:vlanid": 21
+                                                    }
+                                                },
+                                                "label-end": {
+                                                    "te-label": {
+                                                        "ietf-eth-te-topology:vlanid": 21
+                                                    }
+                                                }
+                                            },
+                                            {
+                                                "index": 1,
+                                                "label-start": {
+                                                    "te-label": {
+                                                        "ietf-eth-te-topology:vlanid": 31
+                                                    }
+                                                },
+                                                "label-end": {
+                                                    "te-label": {
+                                                        "ietf-eth-te-topology:vlanid": 31
+                                                    }
+                                                }
+                                            }
+                                        ]
+                                    }
+                                }
+                            }
+                        }
+                    },
+                    {
+                        "node-id": "128.32.10.1",
+                        "ietf-te-topology:te-node-id": "128.32.10.1",
+                        "ietf-network-topology:termination-point": [
+                            {
+                                "tp-id": "500",
+                                "ietf-te-topology:te-tp-id": 500,
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": false,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                }
+                            },
+                            {
+                                "tp-id": "200",
+                                "ietf-te-topology:te-tp-id": 200,
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": true,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        ],
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-node-attributes": {
+                                "admin-status": "up",
+                                "name": "ONT1"
+                            }
+                        }
+                    },
+                    {
+                        "node-id": "128.32.20.1",
+                        "ietf-te-topology:te-node-id": "128.32.20.1",
+                        "ietf-network-topology:termination-point": [
+                            {
+                                "tp-id": "500",
+                                "ietf-te-topology:te-tp-id": 500,
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": false,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                }
+                            },
+                            {
+                                "tp-id": "200",
+                                "ietf-te-topology:te-tp-id": 200,
+                                "ietf-eth-te-topology:eth-svc": {
+                                    "client-facing": true,
+                                    "supported-classification": {
+                                        "port-classification": true,
+                                        "vlan-classification": {
+                                            "outer-tag": {
+                                                "supported-tag-types": [
+                                                    "ietf-eth-tran-types:classify-c-vlan",
+                                                    "ietf-eth-tran-types:classify-s-vlan"
+                                                ],
+                                                "vlan-bundling": false,
+                                                "vlan-range": "1-4094"
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        ],
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-node-attributes": {
+                                "admin-status": "up",
+                                "name": "ONT2"
+                            }
+                        }
+                    }
+                ],
+                "ietf-network-topology:link": [
+                    {
+                        "link-id": "10.0.10.1-200",
+                        "source": {
+                            "source-node": "10.0.10.1",
+                            "source-tp": "200"
+                        },
+                        "destination": {
+                            "dest-node": "128.32.33.5",
+                            "dest-tp": "500"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.10.1-200",
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "128.32.33.5-500",
+                        "source": {
+                            "source-node": "128.32.33.5",
+                            "source-tp": "500"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.10.1",
+                            "dest-tp": "200"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "128.32.33.5-500",
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "10.0.10.1-501",
+                        "source": {
+                            "source-node": "10.0.10.1",
+                            "source-tp": "501"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.20.1",
+                            "dest-tp": "501"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.10.1-501",
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "10.0.10.1-500",
+                        "source": {
+                            "source-node": "10.0.10.1",
+                            "source-tp": "500"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.40.1",
+                            "dest-tp": "500"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.10.1-500",
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "10.0.20.1-501",
+                        "source": {
+                            "source-node": "10.0.20.1",
+                            "source-tp": "501"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.10.1",
+                            "dest-tp": "501"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.20.1-501",
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "10.0.20.1-500",
+                        "source": {
+                            "source-node": "10.0.20.1",
+                            "source-tp": "500"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.30.1",
+                            "dest-tp": "500"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.20.1-500",
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "10.0.40.1-501",
+                        "source": {
+                            "source-node": "10.0.40.1",
+                            "source-tp": "501"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.30.1",
+                            "dest-tp": "501"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.40.1-501",
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "10.0.40.1-500",
+                        "source": {
+                            "source-node": "10.0.40.1",
+                            "source-tp": "500"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.10.1",
+                            "dest-tp": "500"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.40.1-500",
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "10.0.30.1-501",
+                        "source": {
+                            "source-node": "10.0.30.1",
+                            "source-tp": "501"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.40.1",
+                            "dest-tp": "501"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.30.1-501",
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "10.0.30.1-500",
+                        "source": {
+                            "source-node": "10.0.30.1",
+                            "source-tp": "500"
+                        },
+                        "destination": {
+                            "dest-node": "10.0.20.1",
+                            "dest-tp": "500"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "10.0.30.1-500",
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "128.32.33.5-200",
+                        "source": {
+                            "source-node": "128.32.33.5",
+                            "source-tp": "200"
+                        },
+                        "destination": {
+                            "dest-node": "128.32.10.1",
+                            "dest-tp": "500"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "128.32.33.5-200",
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "128.32.10.1-500",
+                        "source": {
+                            "source-node": "128.32.10.1",
+                            "source-tp": "500"
+                        },
+                        "destination": {
+                            "dest-node": "128.32.33.5",
+                            "dest-tp": "200"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "128.32.10.1-500",
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "128.32.33.5-201",
+                        "source": {
+                            "source-node": "128.32.33.5",
+                            "source-tp": "201"
+                        },
+                        "destination": {
+                            "dest-node": "128.32.20.1",
+                            "dest-tp": "500"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "128.32.33.5-201",
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "link-id": "128.32.20.1-500",
+                        "source": {
+                            "source-node": "128.32.20.1",
+                            "source-tp": "500"
+                        },
+                        "destination": {
+                            "dest-node": "128.32.33.5",
+                            "dest-tp": "201"
+                        },
+                        "ietf-te-topology:te": {
+                            "oper-status": "up",
+                            "te-link-attributes": {
+                                "access-type": "point-to-point",
+                                "admin-status": "up",
+                                "name": "128.32.20.1-500",
+                                "max-link-bandwidth": {
+                                    "te-bandwidth": {
+                                        "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                    }
+                                },
+                                "unreserved-bandwidth": [
+                                    {
+                                        "priority": 7,
+                                        "te-bandwidth": {
+                                            "ietf-eth-te-topology:eth-bandwidth": 10000000
+                                        }
+                                    }
+                                ]
+                            }
+                        }
+                    }
+                ]
+            }
+        ]
+    }
+}
\ No newline at end of file
diff --git a/src/ztp_server/tests/data/tfs_api_dummy.json b/src/ztp_server/tests/data/tfs_api_dummy.json
new file mode 100755
index 0000000000000000000000000000000000000000..d8f5137578629408556e3758c512f137fc633d6c
--- /dev/null
+++ b/src/ztp_server/tests/data/tfs_api_dummy.json
@@ -0,0 +1,442 @@
+{
+    "dummy_mode": true,
+    "contexts": [
+        {
+            "context_id": {"context_uuid": {"uuid": "admin"}},
+            "name": "admin",
+            "topology_ids": [
+                {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+            ],
+            "service_ids": [
+                {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R1/200==R2/200"}},
+                {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R1/200==R3/200"}},
+                {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R2/200==R3/200"}}
+            ],
+            "slice_ids": [
+                {"context_id": {"context_uuid": {"uuid": "admin"}}, "slice_uuid": {"uuid": "SLC:R1-R2-R3"}}
+            ]
+        }
+    ],
+    "topologies": [
+        {
+            "device_ids": [
+                {"device_uuid": {"uuid": "R1"}},
+                {"device_uuid": {"uuid": "R2"}},
+                {"device_uuid": {"uuid": "R3"}}
+            ],
+            "link_ids": [
+                {"link_uuid": {"uuid": "R1/502==R2/501"}},
+                {"link_uuid": {"uuid": "R1/503==R3/501"}},
+                {"link_uuid": {"uuid": "R2/501==R1/502"}},
+                {"link_uuid": {"uuid": "R2/503==R3/502"}},
+                {"link_uuid": {"uuid": "R3/501==R1/503"}},
+                {"link_uuid": {"uuid": "R3/502==R2/503"}}
+            ],
+            "name": "admin",
+            "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+        }
+    ],
+    "devices": [
+        {
+            "device_id": {"device_uuid": {"uuid": "R1"}}, "name": "R1", "device_type": "emu-packet-router",
+            "device_drivers": [0], "device_operational_status": 2,
+            "device_endpoints": [
+                {"name": "200", "endpoint_type": "copper", "endpoint_id": {
+                    "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }},
+                {"name": "502", "endpoint_type": "optical", "endpoint_id": {
+                    "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "502"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }},
+                {"name": "503", "endpoint_type": "optical", "endpoint_id": {
+                    "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "503"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }}
+            ],
+            "device_config": {"config_rules": [
+                {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+                {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": 0}},
+                {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                    {"uuid": "200", "name": "200", "type": "copper"},
+                    {"uuid": "502", "name": "502", "type": "optical"},
+                    {"uuid": "503", "name": "503", "type": "optical"}
+                ]}}},
+                {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[200]", "resource_value": {
+                    "uuid": "200", "name": "200", "type": "copper"
+                }}},
+                {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[502]", "resource_value": {
+                    "uuid": "502", "name": "502", "type": "optical"
+                }}},
+                {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[503]", "resource_value": {
+                    "uuid": "503", "name": "503", "type": "optical"
+                }}}
+            ]}
+        },
+        {
+            "device_id": {"device_uuid": {"uuid": "R2"}}, "name": "R2", "device_type": "emu-packet-router",
+            "device_drivers": [0], "device_operational_status": 2,
+            "device_endpoints": [
+                {"name": "200", "endpoint_type": "copper", "endpoint_id": {
+                    "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }},
+                {"name": "501", "endpoint_type": "optical", "endpoint_id": {
+                    "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "501"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }},
+                {"name": "503", "endpoint_type": "optical", "endpoint_id": {
+                    "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "503"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }}
+            ],
+            "device_config": {"config_rules": [
+                {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+                {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": 0}},
+                {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                    {"uuid": "200", "name": "200", "type": "copper"},
+                    {"uuid": "501", "name": "501", "type": "optical"},
+                    {"uuid": "503", "name": "503", "type": "optical"}
+                ]}}},
+                {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[200]", "resource_value": {
+                    "uuid": "200", "name": "200", "type": "copper"
+                }}},
+                {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[501]", "resource_value": {
+                    "uuid": "501", "name": "501", "type": "optical"
+                }}},
+                {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[503]", "resource_value": {
+                    "uuid": "503", "name": "503", "type": "optical"
+                }}}
+            ]}
+        },
+        {
+            "device_id": {"device_uuid": {"uuid": "R3"}}, "name": "R3", "device_type": "emu-packet-router",
+            "device_drivers": [0], "device_operational_status": 2,
+            "device_endpoints": [
+                {"name": "200", "endpoint_type": "copper", "endpoint_id": {
+                    "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }},
+                {"name": "502", "endpoint_type": "optical", "endpoint_id": {
+                    "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "502"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }},
+                {"name": "503", "endpoint_type": "optical", "endpoint_id": {
+                    "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "503"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }}
+            ],
+            "device_config": {"config_rules": [
+                {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+                {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": 0}},
+                {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                    {"uuid": "200", "name": "200", "type": "copper"},
+                    {"uuid": "502", "name": "502", "type": "optical"},
+                    {"uuid": "503", "name": "503", "type": "optical"}
+                ]}}},
+                {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[200]", "resource_value": {
+                    "uuid": "200", "name": "200", "type": "copper"
+                }}},
+                {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[502]", "resource_value": {
+                    "uuid": "502", "name": "502", "type": "optical"
+                }}},
+                {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[503]", "resource_value": {
+                    "uuid": "503", "name": "503", "type": "optical"
+                }}}
+            ]}
+        }
+    ],
+    "links": [
+        {
+            "link_id": {"link_uuid": {"uuid": "R1/502==R2/501"}}, "name": "R1/502==R2/501",
+            "attributes": {"total_capacity_gbps": 10.0, "used_capacity_gbps": 0.0},
+            "link_endpoint_ids": [
+                {
+                    "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "502"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "501"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }
+            ]
+        },
+        {
+            "link_id": {"link_uuid": {"uuid": "R1/503==R3/501"}}, "name": "R1/503==R3/501",
+            "attributes": {"total_capacity_gbps": 10.0, "used_capacity_gbps": 0.0},
+            "link_endpoint_ids": [
+                {
+                    "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "503"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "501"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }
+            ]
+        },
+        {
+            "link_id": {"link_uuid": {"uuid": "R2/501==R1/502"}}, "name": "R2/501==R1/502",
+            "attributes": {"total_capacity_gbps": 10.0, "used_capacity_gbps": 0.0},
+            "link_endpoint_ids": [
+                {
+                    "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "501"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "502"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }
+            ]
+        },
+        {
+            "link_id": {"link_uuid": {"uuid": "R2/503==R3/502"}}, "name": "R2/503==R3/502",
+            "attributes": {"total_capacity_gbps": 10.0, "used_capacity_gbps": 0.0},
+            "link_endpoint_ids": [
+                {
+                    "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "503"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "502"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }
+            ]
+        },
+        {
+            "link_id": {"link_uuid": {"uuid": "R3/501==R1/503"}}, "name": "R3/501==R1/503",
+            "attributes": {"total_capacity_gbps": 10.0, "used_capacity_gbps": 0.0},
+            "link_endpoint_ids": [
+                {
+                    "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "501"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "503"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }
+            ]
+        },
+        {
+            "link_id": {"link_uuid": {"uuid": "R3/502==R2/503"}}, "name": "R3/502==R2/503",
+            "attributes": {"total_capacity_gbps": 10.0, "used_capacity_gbps": 0.0},
+            "link_endpoint_ids": [
+                {
+                    "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "502"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "503"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }
+            ]
+        }
+    ],
+    "services": [
+        {
+            "service_id" : {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R1/200==R2/200"}},
+            "name": "SVC:R1/200==R2/200", "service_type": 1, "service_status": {"service_status": 1},
+            "service_endpoint_ids": [
+                {
+                    "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }
+            ],
+            "service_constraints": [
+                {"action": 1, "sla_capacity": {"capacity_gbps": 40.0}},
+                {"action": 1, "sla_latency": {"e2e_latency_ms": 10.0}},
+                {"action": 1, "sla_availability": {"num_disjoint_paths": 1, "all_active": true, "availability": 99.99}}
+            ],
+            "service_config": {"config_rules": [
+                {"action": 1, "custom": {"resource_key": "/device[R1]/endpoint[200]/settings", "resource_value": {
+                    "ipv4_address": "10.0.1.1", "ipv4_prefix": 24
+                }}},
+                {"action": 1, "custom": {"resource_key": "/device[R2]/endpoint[200]/settings", "resource_value": {
+                    "ipv4_address": "10.0.2.1", "ipv4_prefix": 24
+                }}}
+            ]}
+        },
+        {
+            "service_id" : {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R1/200==R3/200"}},
+            "name": "SVC:R1/200==R3/200", "service_type": 1, "service_status": {"service_status": 1},
+            "service_endpoint_ids": [
+                {
+                    "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }
+            ],
+            "service_constraints": [
+                {"action": 1, "sla_capacity": {"capacity_gbps": 50.0}},
+                {"action": 1, "sla_latency": {"e2e_latency_ms": 8.0}},
+                {"action": 1, "sla_availability": {"num_disjoint_paths": 1, "all_active": true, "availability": 99.9}}
+            ],
+            "service_config": {"config_rules": [
+                {"action": 1, "custom": {"resource_key": "/device[R1]/endpoint[200]/settings", "resource_value": {
+                    "ipv4_address": "10.0.1.1", "ipv4_prefix": 24
+                }}},
+                {"action": 1, "custom": {"resource_key": "/device[R3]/endpoint[200]/settings", "resource_value": {
+                    "ipv4_address": "10.0.3.1", "ipv4_prefix": 24
+                }}}
+            ]}
+        },
+        {
+            "service_id" : {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R2/200==R3/200"}},
+            "name": "SVC:R2/200==R3/200", "service_type": 1, "service_status": {"service_status": 1},
+            "service_endpoint_ids": [
+                {
+                    "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }
+            ],
+            "service_constraints": [
+                {"action": 1, "sla_capacity": {"capacity_gbps": 10.0}},
+                {"action": 1, "sla_latency": {"e2e_latency_ms": 3.0}},
+                {"action": 1, "sla_availability": {"num_disjoint_paths": 1, "all_active": true, "availability": 99.9999}}
+            ],
+            "service_config": {"config_rules": [
+                {"action": 1, "custom": {"resource_key": "/device[R2]/endpoint[200]/settings", "resource_value": {
+                    "ipv4_address": "10.0.2.1", "ipv4_prefix": 24
+                }}},
+                {"action": 1, "custom": {"resource_key": "/device[R3]/endpoint[200]/settings", "resource_value": {
+                    "ipv4_address": "10.0.3.1", "ipv4_prefix": 24
+                }}}
+            ]}
+        }
+    ],
+    "slices": [
+        {
+            "slice_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "slice_uuid": {"uuid": "SLC:R1-R2-R3"}},
+            "name": "SLC:R1-R2-R3",
+            "slice_endpoint_ids": [
+                {
+                    "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }
+            ],
+            "slice_constraints": [
+                {"action": 1, "sla_capacity": {"capacity_gbps": 40.0}},
+                {"action": 1, "sla_latency": {"e2e_latency_ms": 10.0}},
+                {"action": 1, "sla_availability": {"num_disjoint_paths": 1, "all_active": true, "availability": 99.99}}
+            ],
+            "slice_service_ids": [
+                {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R1/200==R2/200"}},
+                {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R1/200==R3/200"}},
+                {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R2/200==R3/200"}}
+            ],
+            "slice_subslice_ids": [],
+            "slice_status": {"slice_status" : 1},
+            "slice_config": {"config_rules": [
+                {"action": 1, "custom": {"resource_key": "/device[R1]/endpoint[200]/settings", "resource_value": {
+                    "ipv4_address": "10.0.1.1", "ipv4_prefix": 24
+                }}},
+                {"action": 1, "custom": {"resource_key": "/device[R2]/endpoint[200]/settings", "resource_value": {
+                    "ipv4_address": "10.0.2.1", "ipv4_prefix": 24
+                }}},
+                {"action": 1, "custom": {"resource_key": "/device[R3]/endpoint[200]/settings", "resource_value": {
+                    "ipv4_address": "10.0.3.1", "ipv4_prefix": 24
+                }}}
+            ]},
+            "slice_owner": {"owner_uuid": {"uuid": "TFS"}, "owner_string": "TFS:SLC:R1-R2-R3"}
+        }
+    ],
+    "connections": [
+        {
+            "connection_id": {"connection_uuid": {"uuid": "CON:R1/200==R2/200:1"}},
+            "service_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R1/200==R2/200"}},
+            "path_hops_endpoint_ids" : [
+                {
+                    "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "502"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "501"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }
+            ],
+            "sub_service_ids": [],
+            "settings": {
+                "l3": {"src_ip_address": "10.0.1.10", "dst_ip_address": "10.0.2.10", "ttl": 20}
+            }
+        },
+        {
+            "connection_id": {"connection_uuid": {"uuid": "CON:R1/200==R3/200:1"}},
+            "service_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R1/200==R3/200"}},
+            "path_hops_endpoint_ids" : [
+                {
+                    "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "503"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "501"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }
+            ],
+            "sub_service_ids": [],
+            "settings": {
+                "l3": {"src_ip_address": "10.0.1.10", "dst_ip_address": "10.0.3.10", "ttl": 20}
+            }
+        },
+        {
+            "connection_id": {"connection_uuid": {"uuid": "CON:R2/200==R3/200:1"}},
+            "service_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R2/200==R3/200"}},
+            "path_hops_endpoint_ids" : [
+                {
+                    "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "503"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "502"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                },
+                {
+                    "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "200"},
+                    "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}
+                }
+            ],
+            "sub_service_ids": [],
+            "settings": {
+                "l3": {"src_ip_address": "10.0.2.10", "dst_ip_address": "10.0.3.10", "ttl": 20}
+            }
+        }
+    ]
+}
diff --git a/src/ztp_server/tests/data/topology-7router-emu-dummy.json b/src/ztp_server/tests/data/topology-7router-emu-dummy.json
new file mode 100755
index 0000000000000000000000000000000000000000..3bb62262652d0eaab411ac71824af3d167b031dd
--- /dev/null
+++ b/src/ztp_server/tests/data/topology-7router-emu-dummy.json
@@ -0,0 +1,157 @@
+{
+    "dummy_mode": true,
+    "contexts": [
+        {"context_id": {"context_uuid": {"uuid": "admin"}}}
+    ],
+    "topologies": [
+        {"topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}
+    ],
+    "devices": [
+        {"device_id": {"device_uuid": {"uuid": "R1"}}, "device_type": "emu-packet-router", "device_drivers": [0],
+            "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"},
+                {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"},
+                {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"}
+            ]}}}
+        ]}},
+        {"device_id": {"device_uuid": {"uuid": "R2"}}, "device_type": "emu-packet-router", "device_drivers": [0],
+            "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"},
+                {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"},
+                {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"}
+            ]}}}
+        ]}},
+        {"device_id": {"device_uuid": {"uuid": "R3"}}, "device_type": "emu-packet-router", "device_drivers": [0],
+            "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"},
+                {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"},
+                {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"}
+            ]}}}
+        ]}},
+        {"device_id": {"device_uuid": {"uuid": "R4"}}, "device_type": "emu-packet-router", "device_drivers": [0],
+            "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"},
+                {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"},
+                {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"}
+            ]}}}
+        ]}},
+        {"device_id": {"device_uuid": {"uuid": "R5"}}, "device_type": "emu-packet-router", "device_drivers": [0],
+            "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"},
+                {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"},
+                {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"}
+            ]}}}
+        ]}},
+        {"device_id": {"device_uuid": {"uuid": "R6"}}, "device_type": "emu-packet-router", "device_drivers": [0],
+            "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"},
+                {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"},
+                {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"}
+            ]}}}
+        ]}},
+        {"device_id": {"device_uuid": {"uuid": "R7"}}, "device_type": "emu-packet-router", "device_drivers": [0],
+            "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"},
+                {"uuid": "1/3", "type": "copper"}, {"uuid": "2/1", "type": "copper"},
+                {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"},
+                {"uuid": "2/4", "type": "copper"}, {"uuid": "2/5", "type": "copper"},
+                {"uuid": "2/6", "type": "copper"}
+            ]}}}
+        ]}}
+    ],
+    "links": [
+        {"link_id": {"link_uuid": {"uuid": "R1==R2"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/1"}},
+            {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "2/2"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R1==R6"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/2"}},
+            {"device_id": {"device_uuid": {"uuid": "R6"}}, "endpoint_uuid": {"uuid": "2/1"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R1==R7"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/3"}},
+            {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/1"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R2==R1"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "2/2"}},
+            {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/1"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R2==R3"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "2/1"}},
+            {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/2"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R3==R2"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/2"}},
+            {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "2/1"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R3==R4"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/1"}},
+            {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "2/2"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R3==R7"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/3"}},
+            {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/3"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R4==R3"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "2/2"}},
+            {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/1"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R4==R5"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "2/1"}},
+            {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/2"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R5==R4"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/2"}},
+            {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "2/1"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R5==R6"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/1"}},
+            {"device_id": {"device_uuid": {"uuid": "R6"}}, "endpoint_uuid": {"uuid": "2/2"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R5==R7"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/3"}},
+            {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/5"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R6==R1"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R6"}}, "endpoint_uuid": {"uuid": "2/1"}},
+            {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/2"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R6==R5"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R6"}}, "endpoint_uuid": {"uuid": "2/2"}},
+            {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/1"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R7==R1"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/1"}},
+            {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/3"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R7==R3"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/3"}},
+            {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/3"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R7==R5"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/5"}},
+            {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/3"}}
+        ]}
+    ]
+}
diff --git a/src/ztp_server/tests/data/topology-7router-emu.json b/src/ztp_server/tests/data/topology-7router-emu.json
new file mode 100755
index 0000000000000000000000000000000000000000..4174f4fb460c6ff31ff56a45122d9a589f265f80
--- /dev/null
+++ b/src/ztp_server/tests/data/topology-7router-emu.json
@@ -0,0 +1,156 @@
+{
+    "contexts": [
+        {"context_id": {"context_uuid": {"uuid": "admin"}}}
+    ],
+    "topologies": [
+        {"topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}
+    ],
+    "devices": [
+        {"device_id": {"device_uuid": {"uuid": "R1"}}, "device_type": "emu-packet-router", "device_drivers": [0],
+         "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"},
+                {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"},
+                {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"}
+            ]}}}
+        ]}},
+        {"device_id": {"device_uuid": {"uuid": "R2"}}, "device_type": "emu-packet-router", "device_drivers": [0],
+         "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"},
+                {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"},
+                {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"}
+            ]}}}
+        ]}},
+        {"device_id": {"device_uuid": {"uuid": "R3"}}, "device_type": "emu-packet-router", "device_drivers": [0],
+         "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"},
+                {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"},
+                {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"}
+            ]}}}
+        ]}},
+        {"device_id": {"device_uuid": {"uuid": "R4"}}, "device_type": "emu-packet-router", "device_drivers": [0],
+         "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"},
+                {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"},
+                {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"}
+            ]}}}
+        ]}},
+        {"device_id": {"device_uuid": {"uuid": "R5"}}, "device_type": "emu-packet-router", "device_drivers": [0],
+         "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"},
+                {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"},
+                {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"}
+            ]}}}
+        ]}},
+        {"device_id": {"device_uuid": {"uuid": "R6"}}, "device_type": "emu-packet-router", "device_drivers": [0],
+         "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"},
+                {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"},
+                {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"}
+            ]}}}
+        ]}},
+        {"device_id": {"device_uuid": {"uuid": "R7"}}, "device_type": "emu-packet-router", "device_drivers": [0],
+         "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"},
+                {"uuid": "1/3", "type": "copper"}, {"uuid": "2/1", "type": "copper"},
+                {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"},
+                {"uuid": "2/4", "type": "copper"}, {"uuid": "2/5", "type": "copper"},
+                {"uuid": "2/6", "type": "copper"}
+            ]}}}
+        ]}}
+    ],
+    "links": [
+        {"link_id": {"link_uuid": {"uuid": "R1==R2"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/1"}},
+            {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "2/2"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R1==R6"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/2"}},
+            {"device_id": {"device_uuid": {"uuid": "R6"}}, "endpoint_uuid": {"uuid": "2/1"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R1==R7"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/3"}},
+            {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/1"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R2==R1"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "2/2"}},
+            {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/1"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R2==R3"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "2/1"}},
+            {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/2"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R3==R2"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/2"}},
+            {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "2/1"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R3==R4"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/1"}},
+            {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "2/2"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R3==R7"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/3"}},
+            {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/3"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R4==R3"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "2/2"}},
+            {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/1"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R4==R5"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "2/1"}},
+            {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/2"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R5==R4"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/2"}},
+            {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "2/1"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R5==R6"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/1"}},
+            {"device_id": {"device_uuid": {"uuid": "R6"}}, "endpoint_uuid": {"uuid": "2/2"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R5==R7"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/3"}},
+            {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/5"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R6==R1"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R6"}}, "endpoint_uuid": {"uuid": "2/1"}},
+            {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/2"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R6==R5"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R6"}}, "endpoint_uuid": {"uuid": "2/2"}},
+            {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/1"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R7==R1"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/1"}},
+            {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/3"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R7==R3"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/3"}},
+            {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/3"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "R7==R5"}}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/5"}},
+            {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/3"}}
+        ]}
+    ]
+}
diff --git a/src/ztp_server/tests/data/topology-dummy.json b/src/ztp_server/tests/data/topology-dummy.json
new file mode 100755
index 0000000000000000000000000000000000000000..f066051eedf4e2c09b6987ec781c9c17ea4afd82
--- /dev/null
+++ b/src/ztp_server/tests/data/topology-dummy.json
@@ -0,0 +1,3134 @@
+{
+    "contexts": [
+        {
+            "context_id": {
+                "context_uuid": {
+                    "uuid": "admin"
+                }
+            },
+            "name": "admin",
+            "service_ids": [],
+            "slice_ids": [],
+            "topology_ids": [
+                {
+                    "context_id": {
+                        "context_uuid": {
+                            "uuid": "admin"
+                        }
+                    },
+                    "topology_uuid": {
+                        "uuid": "admin"
+                    }
+                }
+            ]
+        }
+    ],
+    "devices": [
+        {
+            "components": [],
+            "controller_id": {},
+            "device_config": {
+                "config_rules": [
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/address",
+                            "resource_value": "127.0.0.1"
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/port",
+                            "resource_value": 0
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/settings",
+                            "resource_value": {
+                                "endpoints": [
+                                    {
+                                        "name": "mgmt",
+                                        "type": "mgmt",
+                                        "uuid": "mgmt"
+                                    },
+                                    {
+                                        "name": "200",
+                                        "type": "copper",
+                                        "uuid": "200"
+                                    },
+                                    {
+                                        "name": "500",
+                                        "type": "optical",
+                                        "uuid": "500"
+                                    },
+                                    {
+                                        "name": "501",
+                                        "type": "optical",
+                                        "uuid": "501"
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[mgmt]",
+                            "resource_value": {
+                                "name": "mgmt",
+                                "type": "mgmt",
+                                "uuid": "mgmt"
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[200]",
+                            "resource_value": {
+                                "name": "200",
+                                "type": "copper",
+                                "uuid": "200"
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[500]",
+                            "resource_value": {
+                                "name": "500",
+                                "type": "optical",
+                                "uuid": "500"
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[501]",
+                            "resource_value": {
+                                "name": "501",
+                                "type": "optical",
+                                "uuid": "501"
+                            }
+                        }
+                    }
+                ]
+            },
+            "device_drivers": [
+                0
+            ],
+            "device_endpoints": [
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "161ad889-3839-5dfb-a4a9-95a1de8c3ad5"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "optical",
+                    "kpi_sample_types": [],
+                    "name": "500"
+                },
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "1e35cf03-d55d-5648-9cb6-fca37bfbf23a"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "copper",
+                    "kpi_sample_types": [],
+                    "name": "200"
+                },
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "859813e0-24c1-518e-ba77-44a4f392e321"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "optical",
+                    "kpi_sample_types": [],
+                    "name": "501"
+                },
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "b72983bd-57d8-5cf8-8ec7-da9084382d7a"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "mgmt",
+                    "kpi_sample_types": [],
+                    "name": "mgmt"
+                }
+            ],
+            "device_id": {
+                "device_uuid": {
+                    "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa"
+                }
+            },
+            "device_operational_status": 2,
+            "device_type": "emu-packet-router",
+            "name": "10.0.30.1"
+        },
+        {
+            "components": [],
+            "controller_id": {},
+            "device_config": {
+                "config_rules": [
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/address",
+                            "resource_value": "127.0.0.1"
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/port",
+                            "resource_value": 0
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/settings",
+                            "resource_value": {
+                                "endpoints": [
+                                    {
+                                        "name": "200",
+                                        "type": "copper",
+                                        "uuid": "200"
+                                    },
+                                    {
+                                        "name": "500",
+                                        "type": "copper",
+                                        "uuid": "500"
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[200]",
+                            "resource_value": {
+                                "name": "200",
+                                "type": "copper",
+                                "uuid": "200"
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[500]",
+                            "resource_value": {
+                                "name": "500",
+                                "type": "copper",
+                                "uuid": "500"
+                            }
+                        }
+                    }
+                ]
+            },
+            "device_drivers": [
+                0
+            ],
+            "device_endpoints": [
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "118295c8-318a-52ec-a394-529fc4b70f2f"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "207ef8a3-18fd-5a63-ac24-4a1cc6af3e92"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "copper",
+                    "kpi_sample_types": [],
+                    "name": "200"
+                },
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "118295c8-318a-52ec-a394-529fc4b70f2f"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "6fad7bc2-4ce5-5794-8bf0-ddd06cde20a6"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "copper",
+                    "kpi_sample_types": [],
+                    "name": "500"
+                }
+            ],
+            "device_id": {
+                "device_uuid": {
+                    "uuid": "118295c8-318a-52ec-a394-529fc4b70f2f"
+                }
+            },
+            "device_operational_status": 2,
+            "device_type": "emu-packet-router",
+            "name": "128.32.10.1"
+        },
+        {
+            "components": [],
+            "controller_id": {},
+            "device_config": {
+                "config_rules": [
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/address",
+                            "resource_value": "127.0.0.1"
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/port",
+                            "resource_value": 0
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/settings",
+                            "resource_value": {
+                                "endpoints": [
+                                    {
+                                        "name": "200",
+                                        "type": "copper",
+                                        "uuid": "200"
+                                    },
+                                    {
+                                        "name": "201",
+                                        "type": "copper",
+                                        "uuid": "201"
+                                    },
+                                    {
+                                        "name": "500",
+                                        "type": "copper",
+                                        "uuid": "500"
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[200]",
+                            "resource_value": {
+                                "name": "200",
+                                "type": "copper",
+                                "uuid": "200"
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[201]",
+                            "resource_value": {
+                                "name": "201",
+                                "type": "copper",
+                                "uuid": "201"
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[500]",
+                            "resource_value": {
+                                "name": "500",
+                                "type": "copper",
+                                "uuid": "500"
+                            }
+                        }
+                    }
+                ]
+            },
+            "device_drivers": [
+                0
+            ],
+            "device_endpoints": [
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "4c367472-545c-544d-935d-829f0a0e1c72"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "227b6bb2-dacf-5b3d-84e9-c1d0c107bcd8"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "copper",
+                    "kpi_sample_types": [],
+                    "name": "201"
+                },
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "4c367472-545c-544d-935d-829f0a0e1c72"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "3d0c36bb-80dc-5bab-8a7d-c47cce8d474f"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "copper",
+                    "kpi_sample_types": [],
+                    "name": "500"
+                },
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "4c367472-545c-544d-935d-829f0a0e1c72"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "d8528b70-9215-59ed-851d-b9590ab0c94b"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "copper",
+                    "kpi_sample_types": [],
+                    "name": "200"
+                }
+            ],
+            "device_id": {
+                "device_uuid": {
+                    "uuid": "4c367472-545c-544d-935d-829f0a0e1c72"
+                }
+            },
+            "device_operational_status": 2,
+            "device_type": "emu-datacenter",
+            "name": "172.10.33.5"
+        },
+        {
+            "components": [],
+            "controller_id": {},
+            "device_config": {
+                "config_rules": [
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/address",
+                            "resource_value": "127.0.0.1"
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/port",
+                            "resource_value": 0
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/settings",
+                            "resource_value": {
+                                "endpoints": [
+                                    {
+                                        "name": "mgmt",
+                                        "type": "mgmt",
+                                        "uuid": "mgmt"
+                                    },
+                                    {
+                                        "name": "500",
+                                        "type": "optical",
+                                        "uuid": "500"
+                                    },
+                                    {
+                                        "name": "501",
+                                        "type": "optical",
+                                        "uuid": "501"
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[mgmt]",
+                            "resource_value": {
+                                "name": "mgmt",
+                                "type": "mgmt",
+                                "uuid": "mgmt"
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[500]",
+                            "resource_value": {
+                                "name": "500",
+                                "type": "optical",
+                                "uuid": "500"
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[501]",
+                            "resource_value": {
+                                "name": "501",
+                                "type": "optical",
+                                "uuid": "501"
+                            }
+                        }
+                    }
+                ]
+            },
+            "device_drivers": [
+                0
+            ],
+            "device_endpoints": [
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "75e62edc-a0f9-53f9-821b-023045db1551"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "optical",
+                    "kpi_sample_types": [],
+                    "name": "501"
+                },
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "b5efeee2-5062-5d8f-ae06-f901fed7a7d7"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "optical",
+                    "kpi_sample_types": [],
+                    "name": "500"
+                },
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "ede34dea-6b51-5787-88d2-553fe548f540"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "mgmt",
+                    "kpi_sample_types": [],
+                    "name": "mgmt"
+                }
+            ],
+            "device_id": {
+                "device_uuid": {
+                    "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925"
+                }
+            },
+            "device_operational_status": 2,
+            "device_type": "emu-packet-router",
+            "name": "10.0.40.1"
+        },
+        {
+            "components": [],
+            "controller_id": {},
+            "device_config": {
+                "config_rules": [
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/address",
+                            "resource_value": "127.0.0.1"
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/port",
+                            "resource_value": 0
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/settings",
+                            "resource_value": {
+                                "endpoints": [
+                                    {
+                                        "name": "200",
+                                        "type": "copper",
+                                        "uuid": "200"
+                                    },
+                                    {
+                                        "name": "201",
+                                        "type": "copper",
+                                        "uuid": "201"
+                                    },
+                                    {
+                                        "name": "500",
+                                        "type": "copper",
+                                        "uuid": "500"
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[200]",
+                            "resource_value": {
+                                "name": "200",
+                                "type": "copper",
+                                "uuid": "200"
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[201]",
+                            "resource_value": {
+                                "name": "201",
+                                "type": "copper",
+                                "uuid": "201"
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[500]",
+                            "resource_value": {
+                                "name": "500",
+                                "type": "copper",
+                                "uuid": "500"
+                            }
+                        }
+                    }
+                ]
+            },
+            "device_drivers": [
+                0
+            ],
+            "device_endpoints": [
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "387f7f12-3168-5c75-801e-f06c8afdbf88"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "copper",
+                    "kpi_sample_types": [],
+                    "name": "201"
+                },
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "9095f6af-6381-54fa-9a0e-b1ef5720d163"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "copper",
+                    "kpi_sample_types": [],
+                    "name": "500"
+                },
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "c6435612-3aca-590f-89ba-e606f54df474"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "copper",
+                    "kpi_sample_types": [],
+                    "name": "200"
+                }
+            ],
+            "device_id": {
+                "device_uuid": {
+                    "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c"
+                }
+            },
+            "device_operational_status": 2,
+            "device_type": "emu-optical-transponder",
+            "name": "128.32.33.5"
+        },
+        {
+            "components": [],
+            "controller_id": {},
+            "device_config": {
+                "config_rules": [
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/address",
+                            "resource_value": "127.0.0.1"
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/port",
+                            "resource_value": 0
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/settings",
+                            "resource_value": {
+                                "endpoints": [
+                                    {
+                                        "name": "mgmt",
+                                        "type": "mgmt",
+                                        "uuid": "mgmt"
+                                    },
+                                    {
+                                        "name": "200",
+                                        "type": "copper",
+                                        "uuid": "200"
+                                    },
+                                    {
+                                        "name": "500",
+                                        "type": "optical",
+                                        "uuid": "500"
+                                    },
+                                    {
+                                        "name": "501",
+                                        "type": "optical",
+                                        "uuid": "501"
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[mgmt]",
+                            "resource_value": {
+                                "name": "mgmt",
+                                "type": "mgmt",
+                                "uuid": "mgmt"
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[200]",
+                            "resource_value": {
+                                "name": "200",
+                                "type": "copper",
+                                "uuid": "200"
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[500]",
+                            "resource_value": {
+                                "name": "500",
+                                "type": "optical",
+                                "uuid": "500"
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[501]",
+                            "resource_value": {
+                                "name": "501",
+                                "type": "optical",
+                                "uuid": "501"
+                            }
+                        }
+                    }
+                ]
+            },
+            "device_drivers": [
+                0
+            ],
+            "device_endpoints": [
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "59e1e30f-ea65-5e04-8a91-760a648a02c6"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "mgmt",
+                    "kpi_sample_types": [],
+                    "name": "mgmt"
+                },
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "70cbb732-8149-59ee-939b-011828e4292b"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "copper",
+                    "kpi_sample_types": [],
+                    "name": "200"
+                },
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "a2579e11-2e86-5e53-a235-3dd6ba92bb9a"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "optical",
+                    "kpi_sample_types": [],
+                    "name": "500"
+                },
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "ad2e136d-a981-5c9a-8427-07352ac03351"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "optical",
+                    "kpi_sample_types": [],
+                    "name": "501"
+                }
+            ],
+            "device_id": {
+                "device_uuid": {
+                    "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069"
+                }
+            },
+            "device_operational_status": 2,
+            "device_type": "emu-packet-router",
+            "name": "10.0.10.1"
+        },
+        {
+            "components": [],
+            "controller_id": {},
+            "device_config": {
+                "config_rules": [
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/address",
+                            "resource_value": "127.0.0.1"
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/port",
+                            "resource_value": 0
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/settings",
+                            "resource_value": {
+                                "endpoints": [
+                                    {
+                                        "name": "mgmt",
+                                        "type": "mgmt",
+                                        "uuid": "mgmt"
+                                    },
+                                    {
+                                        "name": "500",
+                                        "type": "optical",
+                                        "uuid": "500"
+                                    },
+                                    {
+                                        "name": "501",
+                                        "type": "optical",
+                                        "uuid": "501"
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[mgmt]",
+                            "resource_value": {
+                                "name": "mgmt",
+                                "type": "mgmt",
+                                "uuid": "mgmt"
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[500]",
+                            "resource_value": {
+                                "name": "500",
+                                "type": "optical",
+                                "uuid": "500"
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[501]",
+                            "resource_value": {
+                                "name": "501",
+                                "type": "optical",
+                                "uuid": "501"
+                            }
+                        }
+                    }
+                ]
+            },
+            "device_drivers": [
+                0
+            ],
+            "device_endpoints": [
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "23c04144-5ad3-5419-8b96-cf4eb329ca96"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "optical",
+                    "kpi_sample_types": [],
+                    "name": "501"
+                },
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "356378dd-952b-5032-912d-37fc21284b4c"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "optical",
+                    "kpi_sample_types": [],
+                    "name": "500"
+                },
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "da826790-a4b0-5317-b30b-e1370918a644"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "mgmt",
+                    "kpi_sample_types": [],
+                    "name": "mgmt"
+                }
+            ],
+            "device_id": {
+                "device_uuid": {
+                    "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b"
+                }
+            },
+            "device_operational_status": 2,
+            "device_type": "emu-packet-router",
+            "name": "10.0.20.1"
+        },
+        {
+            "components": [],
+            "controller_id": {},
+            "device_config": {
+                "config_rules": [
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/address",
+                            "resource_value": "127.0.0.1"
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/port",
+                            "resource_value": 0
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/settings",
+                            "resource_value": {
+                                "endpoints": [
+                                    {
+                                        "name": "eth1",
+                                        "type": "copper",
+                                        "uuid": "eth1"
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[eth1]",
+                            "resource_value": {
+                                "name": "eth1",
+                                "type": "copper",
+                                "uuid": "eth1"
+                            }
+                        }
+                    }
+                ]
+            },
+            "device_drivers": [
+                0
+            ],
+            "device_endpoints": [
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "df4be2f2-a4a2-587d-b3ed-61a53cae3aa6"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "0701f406-633f-53e7-a44d-c93384745df8"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "copper",
+                    "kpi_sample_types": [],
+                    "name": "eth1"
+                }
+            ],
+            "device_id": {
+                "device_uuid": {
+                    "uuid": "df4be2f2-a4a2-587d-b3ed-61a53cae3aa6"
+                }
+            },
+            "device_operational_status": 2,
+            "device_type": "emu-client",
+            "name": "128.32.20.5"
+        },
+        {
+            "components": [],
+            "controller_id": {},
+            "device_config": {
+                "config_rules": [
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/address",
+                            "resource_value": "127.0.0.1"
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/port",
+                            "resource_value": 0
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/settings",
+                            "resource_value": {
+                                "endpoints": [
+                                    {
+                                        "name": "200",
+                                        "type": "copper",
+                                        "uuid": "200"
+                                    },
+                                    {
+                                        "name": "500",
+                                        "type": "copper",
+                                        "uuid": "500"
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[200]",
+                            "resource_value": {
+                                "name": "200",
+                                "type": "copper",
+                                "uuid": "200"
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[500]",
+                            "resource_value": {
+                                "name": "500",
+                                "type": "copper",
+                                "uuid": "500"
+                            }
+                        }
+                    }
+                ]
+            },
+            "device_drivers": [
+                0
+            ],
+            "device_endpoints": [
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "e15007fb-aae4-50d6-b686-b6dc4ae504e2"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "852a3fd3-3f55-5e31-865d-c52984efb186"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "copper",
+                    "kpi_sample_types": [],
+                    "name": "500"
+                },
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "e15007fb-aae4-50d6-b686-b6dc4ae504e2"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "bbbec9f8-618a-591a-bc3e-c188ee31008e"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "copper",
+                    "kpi_sample_types": [],
+                    "name": "200"
+                }
+            ],
+            "device_id": {
+                "device_uuid": {
+                    "uuid": "e15007fb-aae4-50d6-b686-b6dc4ae504e2"
+                }
+            },
+            "device_operational_status": 2,
+            "device_type": "emu-packet-router",
+            "name": "128.32.20.1"
+        },
+        {
+            "components": [],
+            "controller_id": {},
+            "device_config": {
+                "config_rules": [
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/address",
+                            "resource_value": "127.0.0.1"
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/port",
+                            "resource_value": 0
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/settings",
+                            "resource_value": {
+                                "endpoints": [
+                                    {
+                                        "name": "eth1",
+                                        "type": "copper",
+                                        "uuid": "eth1"
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[eth1]",
+                            "resource_value": {
+                                "name": "eth1",
+                                "type": "copper",
+                                "uuid": "eth1"
+                            }
+                        }
+                    }
+                ]
+            },
+            "device_drivers": [
+                0
+            ],
+            "device_endpoints": [
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "f3840f4a-6ea2-551a-8afd-0f3faa8ac1e6"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "16d56d61-63cd-5704-9d2a-5515e633b64b"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "copper",
+                    "kpi_sample_types": [],
+                    "name": "eth1"
+                }
+            ],
+            "device_id": {
+                "device_uuid": {
+                    "uuid": "f3840f4a-6ea2-551a-8afd-0f3faa8ac1e6"
+                }
+            },
+            "device_operational_status": 2,
+            "device_type": "emu-client",
+            "name": "128.32.10.5"
+        },
+        {
+            "components": [],
+            "controller_id": {},
+            "device_config": {
+                "config_rules": [
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/address",
+                            "resource_value": "127.0.0.1"
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/port",
+                            "resource_value": 0
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "_connect/settings",
+                            "resource_value": {
+                                "endpoints": [
+                                    {
+                                        "name": "mgmt",
+                                        "type": "mgmt",
+                                        "uuid": "mgmt"
+                                    }
+                                ]
+                            }
+                        }
+                    },
+                    {
+                        "action": 1,
+                        "custom": {
+                            "resource_key": "/endpoints/endpoint[mgmt]",
+                            "resource_value": {
+                                "name": "mgmt",
+                                "type": "mgmt",
+                                "uuid": "mgmt"
+                            }
+                        }
+                    }
+                ]
+            },
+            "device_drivers": [
+                0
+            ],
+            "device_endpoints": [
+                {
+                    "endpoint_id": {
+                        "device_id": {
+                            "device_uuid": {
+                                "uuid": "fe0dc2e8-b9ce-555f-8f28-a1a4468fabde"
+                            }
+                        },
+                        "endpoint_uuid": {
+                            "uuid": "086906ec-fd3b-55e1-b9bb-5a9e5bb5daff"
+                        },
+                        "topology_id": {
+                            "context_id": {
+                                "context_uuid": {
+                                    "uuid": "admin"
+                                }
+                            },
+                            "topology_uuid": {
+                                "uuid": "admin"
+                            }
+                        }
+                    },
+                    "endpoint_location": {},
+                    "endpoint_type": "mgmt",
+                    "kpi_sample_types": [],
+                    "name": "mgmt"
+                }
+            ],
+            "device_id": {
+                "device_uuid": {
+                    "uuid": "fe0dc2e8-b9ce-555f-8f28-a1a4468fabde"
+                }
+            },
+            "device_operational_status": 2,
+            "device_type": "emu-open-line-system",
+            "name": "nce-t"
+        }
+    ],
+    "dummy_mode": true,
+    "links": [
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "70cbb732-8149-59ee-939b-011828e4292b"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "9095f6af-6381-54fa-9a0e-b1ef5720d163"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "0b3d5943-c2bf-595f-a805-dc29c2be2f52"
+                }
+            },
+            "name": "10.0.10.1-200"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "b5efeee2-5062-5d8f-ae06-f901fed7a7d7"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "a2579e11-2e86-5e53-a235-3dd6ba92bb9a"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "1490e70f-472c-5e4c-8280-21c48ed03477"
+                }
+            },
+            "name": "10.0.40.1-500"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "118295c8-318a-52ec-a394-529fc4b70f2f"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "6fad7bc2-4ce5-5794-8bf0-ddd06cde20a6"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "c6435612-3aca-590f-89ba-e606f54df474"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "18ba8eb2-342b-5a73-aeae-7288ea9bb28b"
+                }
+            },
+            "name": "128.32.10.1-500"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "118295c8-318a-52ec-a394-529fc4b70f2f"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "207ef8a3-18fd-5a63-ac24-4a1cc6af3e92"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "f3840f4a-6ea2-551a-8afd-0f3faa8ac1e6"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "16d56d61-63cd-5704-9d2a-5515e633b64b"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "1901b0dc-1b5e-5fdf-b9ac-9168787464c1"
+                }
+            },
+            "name": "128.32.10.1-200"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "9095f6af-6381-54fa-9a0e-b1ef5720d163"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "70cbb732-8149-59ee-939b-011828e4292b"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "1afdae8b-a281-53aa-99c2-205afb8f4ee7"
+                }
+            },
+            "name": "128.32.33.5-500"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "356378dd-952b-5032-912d-37fc21284b4c"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "161ad889-3839-5dfb-a4a9-95a1de8c3ad5"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "30ca0f8f-b150-57f2-ae5e-8a6844944783"
+                }
+            },
+            "name": "10.0.20.1-500"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "23c04144-5ad3-5419-8b96-cf4eb329ca96"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "ad2e136d-a981-5c9a-8427-07352ac03351"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "34c9c6c3-0dcf-54e5-ba67-da33eb2d3c1a"
+                }
+            },
+            "name": "10.0.20.1-501"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "161ad889-3839-5dfb-a4a9-95a1de8c3ad5"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "356378dd-952b-5032-912d-37fc21284b4c"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "35801e61-45f3-564e-ad5c-09baf4aae906"
+                }
+            },
+            "name": "10.0.30.1-500"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "4c367472-545c-544d-935d-829f0a0e1c72"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "3d0c36bb-80dc-5bab-8a7d-c47cce8d474f"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "1e35cf03-d55d-5648-9cb6-fca37bfbf23a"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "36643dba-e8fa-5fb7-952d-dff313db957b"
+                }
+            },
+            "name": "172.10.33.5-500"
+        },
+        {
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "fe0dc2e8-b9ce-555f-8f28-a1a4468fabde"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "086906ec-fd3b-55e1-b9bb-5a9e5bb5daff"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "ede34dea-6b51-5787-88d2-553fe548f540"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "36856920-3387-5384-b1b1-dbc9e54da226"
+                }
+            },
+            "name": "nce-t/mgmt==10.0.40.1/mgmt"
+        },
+        {
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "fe0dc2e8-b9ce-555f-8f28-a1a4468fabde"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "086906ec-fd3b-55e1-b9bb-5a9e5bb5daff"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "b72983bd-57d8-5cf8-8ec7-da9084382d7a"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "46ba12f9-dd17-5f2a-9558-e4611515a6b9"
+                }
+            },
+            "name": "nce-t/mgmt==10.0.30.1/mgmt"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "859813e0-24c1-518e-ba77-44a4f392e321"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "75e62edc-a0f9-53f9-821b-023045db1551"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "4dfe28dd-ac28-53d5-b330-1707e350d772"
+                }
+            },
+            "name": "10.0.30.1-501"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "e15007fb-aae4-50d6-b686-b6dc4ae504e2"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "852a3fd3-3f55-5e31-865d-c52984efb186"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "387f7f12-3168-5c75-801e-f06c8afdbf88"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "644ab377-572c-53a4-8ab5-f5cf45591d88"
+                }
+            },
+            "name": "128.32.20.1-500"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "c6435612-3aca-590f-89ba-e606f54df474"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "118295c8-318a-52ec-a394-529fc4b70f2f"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "6fad7bc2-4ce5-5794-8bf0-ddd06cde20a6"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "661ac531-4309-58cc-b70e-2a79492c2488"
+                }
+            },
+            "name": "128.32.33.5-200"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "387f7f12-3168-5c75-801e-f06c8afdbf88"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "e15007fb-aae4-50d6-b686-b6dc4ae504e2"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "852a3fd3-3f55-5e31-865d-c52984efb186"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "6a236e01-853c-51d0-8915-2d09b45923b0"
+                }
+            },
+            "name": "128.32.33.5-201"
+        },
+        {
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "fe0dc2e8-b9ce-555f-8f28-a1a4468fabde"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "086906ec-fd3b-55e1-b9bb-5a9e5bb5daff"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "da826790-a4b0-5317-b30b-e1370918a644"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "6c802ae7-59d1-55e7-9498-146c465bcab5"
+                }
+            },
+            "name": "nce-t/mgmt==10.0.20.1/mgmt"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "e15007fb-aae4-50d6-b686-b6dc4ae504e2"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "bbbec9f8-618a-591a-bc3e-c188ee31008e"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "df4be2f2-a4a2-587d-b3ed-61a53cae3aa6"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "0701f406-633f-53e7-a44d-c93384745df8"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "6fa77ad9-e4d7-5830-bf84-ab206eff613a"
+                }
+            },
+            "name": "128.32.20.1-200"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "1e35cf03-d55d-5648-9cb6-fca37bfbf23a"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "4c367472-545c-544d-935d-829f0a0e1c72"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "3d0c36bb-80dc-5bab-8a7d-c47cce8d474f"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "808b54e8-3d5a-5e03-a42e-d6c2a57cf6f3"
+                }
+            },
+            "name": "10.0.30.1-200"
+        },
+        {
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "fe0dc2e8-b9ce-555f-8f28-a1a4468fabde"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "086906ec-fd3b-55e1-b9bb-5a9e5bb5daff"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "59e1e30f-ea65-5e04-8a91-760a648a02c6"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "85a18715-3ce0-57f9-8025-5634fe622a06"
+                }
+            },
+            "name": "nce-t/mgmt==10.0.10.1/mgmt"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "75e62edc-a0f9-53f9-821b-023045db1551"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "859813e0-24c1-518e-ba77-44a4f392e321"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "8e8d1a2b-beae-5624-8826-9235bd73a3a8"
+                }
+            },
+            "name": "10.0.40.1-501"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "a2579e11-2e86-5e53-a235-3dd6ba92bb9a"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "b5efeee2-5062-5d8f-ae06-f901fed7a7d7"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "e9c5b57e-de50-509c-9f5a-0107ff233703"
+                }
+            },
+            "name": "10.0.10.1-500"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "df4be2f2-a4a2-587d-b3ed-61a53cae3aa6"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "0701f406-633f-53e7-a44d-c93384745df8"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "e15007fb-aae4-50d6-b686-b6dc4ae504e2"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "bbbec9f8-618a-591a-bc3e-c188ee31008e"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "effca6e0-acf3-5c02-ba9a-d82c17a3f006"
+                }
+            },
+            "name": "128.32.20.5-eth1"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "ad2e136d-a981-5c9a-8427-07352ac03351"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "23c04144-5ad3-5419-8b96-cf4eb329ca96"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "f45b4432-4ae2-5719-b4e8-a5e8baa1ccd2"
+                }
+            },
+            "name": "10.0.10.1-501"
+        },
+        {
+            "attributes": {
+                "total_capacity_gbps": 10.0,
+                "used_capacity_gbps": 0.0
+            },
+            "link_endpoint_ids": [
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "f3840f4a-6ea2-551a-8afd-0f3faa8ac1e6"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "16d56d61-63cd-5704-9d2a-5515e633b64b"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                },
+                {
+                    "device_id": {
+                        "device_uuid": {
+                            "uuid": "118295c8-318a-52ec-a394-529fc4b70f2f"
+                        }
+                    },
+                    "endpoint_uuid": {
+                        "uuid": "207ef8a3-18fd-5a63-ac24-4a1cc6af3e92"
+                    },
+                    "topology_id": {
+                        "context_id": {
+                            "context_uuid": {
+                                "uuid": "admin"
+                            }
+                        },
+                        "topology_uuid": {
+                            "uuid": "admin"
+                        }
+                    }
+                }
+            ],
+            "link_id": {
+                "link_uuid": {
+                    "uuid": "fd005f34-39f5-550e-b2c0-c6e6f8c16325"
+                }
+            },
+            "name": "128.32.10.5-eth1"
+        }
+    ],
+    "topologies": [
+        {
+            "device_ids": [
+                {
+                    "device_uuid": {
+                        "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa"
+                    }
+                },
+                {
+                    "device_uuid": {
+                        "uuid": "118295c8-318a-52ec-a394-529fc4b70f2f"
+                    }
+                },
+                {
+                    "device_uuid": {
+                        "uuid": "4c367472-545c-544d-935d-829f0a0e1c72"
+                    }
+                },
+                {
+                    "device_uuid": {
+                        "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925"
+                    }
+                },
+                {
+                    "device_uuid": {
+                        "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c"
+                    }
+                },
+                {
+                    "device_uuid": {
+                        "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069"
+                    }
+                },
+                {
+                    "device_uuid": {
+                        "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b"
+                    }
+                },
+                {
+                    "device_uuid": {
+                        "uuid": "df4be2f2-a4a2-587d-b3ed-61a53cae3aa6"
+                    }
+                },
+                {
+                    "device_uuid": {
+                        "uuid": "e15007fb-aae4-50d6-b686-b6dc4ae504e2"
+                    }
+                },
+                {
+                    "device_uuid": {
+                        "uuid": "f3840f4a-6ea2-551a-8afd-0f3faa8ac1e6"
+                    }
+                },
+                {
+                    "device_uuid": {
+                        "uuid": "fe0dc2e8-b9ce-555f-8f28-a1a4468fabde"
+                    }
+                }
+            ],
+            "link_ids": [
+                {
+                    "link_uuid": {
+                        "uuid": "0b3d5943-c2bf-595f-a805-dc29c2be2f52"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "1490e70f-472c-5e4c-8280-21c48ed03477"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "18ba8eb2-342b-5a73-aeae-7288ea9bb28b"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "1901b0dc-1b5e-5fdf-b9ac-9168787464c1"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "1afdae8b-a281-53aa-99c2-205afb8f4ee7"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "30ca0f8f-b150-57f2-ae5e-8a6844944783"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "34c9c6c3-0dcf-54e5-ba67-da33eb2d3c1a"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "35801e61-45f3-564e-ad5c-09baf4aae906"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "36643dba-e8fa-5fb7-952d-dff313db957b"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "36856920-3387-5384-b1b1-dbc9e54da226"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "46ba12f9-dd17-5f2a-9558-e4611515a6b9"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "4dfe28dd-ac28-53d5-b330-1707e350d772"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "644ab377-572c-53a4-8ab5-f5cf45591d88"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "661ac531-4309-58cc-b70e-2a79492c2488"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "6a236e01-853c-51d0-8915-2d09b45923b0"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "6c802ae7-59d1-55e7-9498-146c465bcab5"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "6fa77ad9-e4d7-5830-bf84-ab206eff613a"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "808b54e8-3d5a-5e03-a42e-d6c2a57cf6f3"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "85a18715-3ce0-57f9-8025-5634fe622a06"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "8e8d1a2b-beae-5624-8826-9235bd73a3a8"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "e9c5b57e-de50-509c-9f5a-0107ff233703"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "effca6e0-acf3-5c02-ba9a-d82c17a3f006"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "f45b4432-4ae2-5719-b4e8-a5e8baa1ccd2"
+                    }
+                },
+                {
+                    "link_uuid": {
+                        "uuid": "fd005f34-39f5-550e-b2c0-c6e6f8c16325"
+                    }
+                }
+            ],
+            "name": "admin",
+            "topology_id": {
+                "context_id": {
+                    "context_uuid": {
+                        "uuid": "admin"
+                    }
+                },
+                "topology_uuid": {
+                    "uuid": "admin"
+                }
+            }
+        }
+    ]
+}
\ No newline at end of file
diff --git a/src/ztp_server/tests/data/topology-real.json b/src/ztp_server/tests/data/topology-real.json
new file mode 100755
index 0000000000000000000000000000000000000000..bb158d920ecbd0bf3e9998f4bd856a349c9e91c7
--- /dev/null
+++ b/src/ztp_server/tests/data/topology-real.json
@@ -0,0 +1,259 @@
+{
+    "contexts": [
+        {"context_id": {"context_uuid": {"uuid": "admin"}}}
+    ],
+
+    "topologies": [
+        {"topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}}
+    ],
+
+    "devices": [
+        {"device_id": {"device_uuid": {"uuid": "nce-t"}}, "name": "nce-t", "device_type": "emu-open-line-system",
+         "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "mgmt", "name": "mgmt", "type": "mgmt"}
+            ]}}}
+        ]}},
+
+        {"device_id": {"device_uuid": {"uuid": "10.0.10.1"}}, "name": "10.0.10.1", "device_type": "emu-packet-router",
+         "controller_id": {"device_uuid": {"uuid": "nce-t"}},
+         "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "mgmt", "name": "mgmt", "type": "mgmt"   },
+                {"uuid": "200",  "name": "200",  "type": "copper" },
+                {"uuid": "500",  "name": "500",  "type": "optical"},
+                {"uuid": "501",  "name": "501",  "type": "optical"}
+            ]}}}
+        ]}},
+
+        {"device_id": {"device_uuid": {"uuid": "10.0.20.1"}}, "name": "10.0.20.1", "device_type": "emu-packet-router",
+         "controller_id": {"device_uuid": {"uuid": "nce-t"}},
+         "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "mgmt", "name": "mgmt", "type": "mgmt"   },
+                {"uuid": "500",  "name": "500",  "type": "optical"},
+                {"uuid": "501",  "name": "501",  "type": "optical"}
+            ]}}}
+        ]}},
+
+        {"device_id": {"device_uuid": {"uuid": "10.0.30.1"}}, "name": "10.0.30.1", "device_type": "emu-packet-router",
+         "controller_id": {"device_uuid": {"uuid": "nce-t"}},
+         "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "mgmt", "name": "mgmt", "type": "mgmt"   },
+                {"uuid": "200",  "name": "200",  "type": "copper" },
+                {"uuid": "500",  "name": "500",  "type": "optical"},
+                {"uuid": "501",  "name": "501",  "type": "optical"}
+            ]}}}
+        ]}},
+
+        {"device_id": {"device_uuid": {"uuid": "10.0.40.1"}}, "name": "10.0.40.1", "device_type": "emu-packet-router",
+         "controller_id": {"device_uuid": {"uuid": "nce-t"}},
+         "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "mgmt", "name": "mgmt", "type": "mgmt"   },
+                {"uuid": "500",  "name": "500",  "type": "optical"},
+                {"uuid": "501",  "name": "501",  "type": "optical"}
+            ]}}}
+        ]}},
+
+        {"device_id": {"device_uuid": {"uuid": "128.32.10.5"}}, "name": "128.32.10.5", "device_type": "emu-client",
+         "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "eth1", "name": "eth1", "type": "copper"}
+            ]}}}
+        ]}},
+
+        {"device_id": {"device_uuid": {"uuid": "128.32.10.1"}}, "name": "128.32.10.1", "device_type": "emu-packet-router",
+         "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "200", "name": "200", "type": "copper"},
+                {"uuid": "500", "name": "500", "type": "copper"}
+            ]}}}
+        ]}},
+
+        {"device_id": {"device_uuid": {"uuid": "128.32.20.5"}}, "name": "128.32.20.5", "device_type": "emu-client",
+         "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "eth1", "name": "eth1", "type": "copper"}
+            ]}}}
+        ]}},
+
+        {"device_id": {"device_uuid": {"uuid": "128.32.20.1"}}, "name": "128.32.20.1", "device_type": "emu-packet-router",
+         "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "200", "name": "200", "type": "copper"},
+                {"uuid": "500", "name": "500", "type": "copper"}
+            ]}}}
+        ]}},
+
+        {"device_id": {"device_uuid": {"uuid": "128.32.33.5"}}, "name": "128.32.33.5", "device_type": "emu-optical-transponder",
+         "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "200", "name": "200", "type": "copper"},
+                {"uuid": "201", "name": "201", "type": "copper"},
+                {"uuid": "500", "name": "500", "type": "copper"}
+            ]}}}
+        ]}},
+
+        {"device_id": {"device_uuid": {"uuid": "172.10.33.5"}}, "name": "172.10.33.5", "device_type": "emu-datacenter",
+         "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [
+            {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}},
+            {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}},
+            {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [
+                {"uuid": "200", "name": "200", "type": "copper"},
+                {"uuid": "201", "name": "201", "type": "copper"},
+                {"uuid": "500", "name": "500", "type": "copper"}
+            ]}}}
+       ]}}
+    ],
+
+    "links": [
+        {"link_id": {"link_uuid": {"uuid": "nce-t/mgmt==10.0.10.1/mgmt"}}, "name": "nce-t/mgmt==10.0.10.1/mgmt", "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "nce-t"    }}, "endpoint_uuid": {"uuid": "mgmt"}},
+            {"device_id": {"device_uuid": {"uuid": "10.0.10.1"}}, "endpoint_uuid": {"uuid": "mgmt"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "nce-t/mgmt==10.0.20.1/mgmt"}}, "name": "nce-t/mgmt==10.0.20.1/mgmt", "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "nce-t"    }}, "endpoint_uuid": {"uuid": "mgmt"}},
+            {"device_id": {"device_uuid": {"uuid": "10.0.20.1"}}, "endpoint_uuid": {"uuid": "mgmt"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "nce-t/mgmt==10.0.30.1/mgmt"}}, "name": "nce-t/mgmt==10.0.30.1/mgmt", "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "nce-t"    }}, "endpoint_uuid": {"uuid": "mgmt"}},
+            {"device_id": {"device_uuid": {"uuid": "10.0.30.1"}}, "endpoint_uuid": {"uuid": "mgmt"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "nce-t/mgmt==10.0.40.1/mgmt"}}, "name": "nce-t/mgmt==10.0.40.1/mgmt", "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "nce-t"    }}, "endpoint_uuid": {"uuid": "mgmt"}},
+            {"device_id": {"device_uuid": {"uuid": "10.0.40.1"}}, "endpoint_uuid": {"uuid": "mgmt"}}
+        ]},
+
+        {"link_id": {"link_uuid": {"uuid": "10.0.10.1-501"}}, "name": "10.0.10.1-501",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "10.0.10.1"}}, "endpoint_uuid": {"uuid": "501"}},
+            {"device_id": {"device_uuid": {"uuid": "10.0.20.1"}}, "endpoint_uuid": {"uuid": "501"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "10.0.20.1-501"}}, "name": "10.0.20.1-501",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "10.0.20.1"}}, "endpoint_uuid": {"uuid": "501"}},
+            {"device_id": {"device_uuid": {"uuid": "10.0.10.1"}}, "endpoint_uuid": {"uuid": "501"}}
+        ]},
+
+        {"link_id": {"link_uuid": {"uuid": "10.0.10.1-500"}}, "name": "10.0.10.1-500",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "10.0.10.1"}}, "endpoint_uuid": {"uuid": "500"}},
+            {"device_id": {"device_uuid": {"uuid": "10.0.40.1"}}, "endpoint_uuid": {"uuid": "500"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "10.0.40.1-500"}}, "name": "10.0.40.1-500",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "10.0.40.1"}}, "endpoint_uuid": {"uuid": "500"}},
+            {"device_id": {"device_uuid": {"uuid": "10.0.10.1"}}, "endpoint_uuid": {"uuid": "500"}}
+        ]},
+
+        {"link_id": {"link_uuid": {"uuid": "10.0.20.1-500"}}, "name": "10.0.20.1-500",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "10.0.20.1"}}, "endpoint_uuid": {"uuid": "500"}},
+            {"device_id": {"device_uuid": {"uuid": "10.0.30.1"}}, "endpoint_uuid": {"uuid": "500"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "10.0.30.1-500"}}, "name": "10.0.30.1-500",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "10.0.30.1"}}, "endpoint_uuid": {"uuid": "500"}},
+            {"device_id": {"device_uuid": {"uuid": "10.0.20.1"}}, "endpoint_uuid": {"uuid": "500"}}
+        ]},
+
+        {"link_id": {"link_uuid": {"uuid": "10.0.40.1-501"}}, "name": "10.0.40.1-501",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "10.0.40.1"}}, "endpoint_uuid": {"uuid": "501"}},
+            {"device_id": {"device_uuid": {"uuid": "10.0.30.1"}}, "endpoint_uuid": {"uuid": "501"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "10.0.30.1-501"}}, "name": "10.0.30.1-501",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "10.0.30.1"}}, "endpoint_uuid": {"uuid": "501"}},
+            {"device_id": {"device_uuid": {"uuid": "10.0.40.1"}}, "endpoint_uuid": {"uuid": "501"}}
+        ]},
+
+        {"link_id": {"link_uuid": {"uuid": "128.32.10.5-eth1"}}, "name": "128.32.10.5-eth1",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "128.32.10.5"}}, "endpoint_uuid": {"uuid": "eth1"}},
+            {"device_id": {"device_uuid": {"uuid": "128.32.10.1"}}, "endpoint_uuid": {"uuid": "200" }}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "128.32.10.1-200"}}, "name": "128.32.10.1-200",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "128.32.10.1"}}, "endpoint_uuid": {"uuid": "200" }},
+            {"device_id": {"device_uuid": {"uuid": "128.32.10.5"}}, "endpoint_uuid": {"uuid": "eth1"}}
+        ]},
+
+        {"link_id": {"link_uuid": {"uuid": "128.32.10.1-500"}}, "name": "128.32.10.1-500",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "128.32.10.1"}}, "endpoint_uuid": {"uuid": "500"}},
+            {"device_id": {"device_uuid": {"uuid": "128.32.33.5"}}, "endpoint_uuid": {"uuid": "200"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "128.32.33.5-200"}}, "name": "128.32.33.5-200",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "128.32.33.5"}}, "endpoint_uuid": {"uuid": "200"}},
+            {"device_id": {"device_uuid": {"uuid": "128.32.10.1"}}, "endpoint_uuid": {"uuid": "500"}}
+        ]},
+
+        {"link_id": {"link_uuid": {"uuid": "128.32.20.5-eth1"}}, "name": "128.32.20.5-eth1",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "128.32.20.5"}}, "endpoint_uuid": {"uuid": "eth1"}},
+            {"device_id": {"device_uuid": {"uuid": "128.32.20.1"}}, "endpoint_uuid": {"uuid": "200" }}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "128.32.20.1-200"}}, "name": "128.32.20.1-200",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "128.32.20.1"}}, "endpoint_uuid": {"uuid": "200" }},
+            {"device_id": {"device_uuid": {"uuid": "128.32.20.5"}}, "endpoint_uuid": {"uuid": "eth1"}}
+        ]},
+
+        {"link_id": {"link_uuid": {"uuid": "128.32.20.1-500"}}, "name": "128.32.20.1-500",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "128.32.20.1"}}, "endpoint_uuid": {"uuid": "500"}},
+            {"device_id": {"device_uuid": {"uuid": "128.32.33.5"}}, "endpoint_uuid": {"uuid": "201"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "128.32.33.5-201"}}, "name": "128.32.33.5-201",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "128.32.33.5"}}, "endpoint_uuid": {"uuid": "201"}},
+            {"device_id": {"device_uuid": {"uuid": "128.32.20.1"}}, "endpoint_uuid": {"uuid": "500"}}
+        ]},
+
+        {"link_id": {"link_uuid": {"uuid": "128.32.33.5-500"}}, "name": "128.32.33.5-500",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "128.32.33.5"}}, "endpoint_uuid": {"uuid": "500"}},
+            {"device_id": {"device_uuid": {"uuid": "10.0.10.1"}}, "endpoint_uuid": {"uuid": "200"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "10.0.10.1-200"}}, "name": "10.0.10.1-200",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "10.0.10.1"}}, "endpoint_uuid": {"uuid": "200"}},
+            {"device_id": {"device_uuid": {"uuid": "128.32.33.5"}}, "endpoint_uuid": {"uuid": "500"}}
+        ]},
+
+        {"link_id": {"link_uuid": {"uuid": "172.10.33.5-500"}}, "name": "172.10.33.5-500",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "172.10.33.5"}}, "endpoint_uuid": {"uuid": "500"}},
+            {"device_id": {"device_uuid": {"uuid": "10.0.30.1"}}, "endpoint_uuid": {"uuid": "200"}}
+        ]},
+        {"link_id": {"link_uuid": {"uuid": "10.0.30.1-200"}}, "name": "10.0.30.1-200",
+         "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [
+            {"device_id": {"device_uuid": {"uuid": "10.0.30.1"}}, "endpoint_uuid": {"uuid": "200"}},
+            {"device_id": {"device_uuid": {"uuid": "172.10.33.5"}}, "endpoint_uuid": {"uuid": "500"}}
+        ]}
+    ]
+}
diff --git a/src/ztp_server/tests/ietf_acl_client.py b/src/ztp_server/tests/ietf_acl_client.py
new file mode 100755
index 0000000000000000000000000000000000000000..20887f1a8ac037d700e3df4a5c1da91f2ae58899
--- /dev/null
+++ b/src/ztp_server/tests/ietf_acl_client.py
@@ -0,0 +1,89 @@
+# 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 requests, time
+from typing import Optional
+from requests.auth import HTTPBasicAuth
+
+BASE_URL = '{:s}://{:s}:{:d}/restconf/data'
+ACLS_URL = '{:s}/device={:s}/ietf-access-control-list:acls'
+ACL_URL  = '{:s}/device={:s}/ietf-access-control-list:acl={:s}'
+
+CSG1_DEVICE_UUID = '118295c8-318a-52ec-a394-529fc4b70f2f' # router: 128.32.10.1
+ACL_NAME         = 'sample-ipv4-acl'
+ACL_RULE         = {"ietf-access-control-list:acls": {
+    "acl": [{
+        "name": "sample-ipv4-acl", "type": "ipv4-acl-type",
+        "aces": {"ace": [{
+            "name": "rule1",
+            "matches": {
+                "ipv4": {
+                    "source-ipv4-network": "128.32.10.6/24",
+                    "destination-ipv4-network": "172.10.33.0/24",
+                    "dscp": 18
+                },
+                "tcp": {
+                    "source-port": {"operator": "eq", "port": 1444},
+                    "destination-port": {"operator": "eq", "port": 1333},
+                    "flags": "syn"
+                }
+            },
+            "actions": {"forwarding": "drop"}
+        }]}
+    }],
+    "attachment-points": {"interface": [{
+        "interface-id": "200",
+        "ingress": {"acl-sets": {"acl-set": [{"name": "sample-ipv4-acl"}]}}
+    }]
+}}}
+
+class TfsIetfAclClient:
+    def __init__(
+        self, host : str = 'localhost', port : int = 80, schema : str = 'http',
+        username : Optional[str] = 'admin', password : Optional[str] = 'admin',
+        timeout : int = 10, allow_redirects : bool = True, verify : bool = False
+    ) -> None:
+        self._base_url = BASE_URL.format(schema, host, port)
+        auth = HTTPBasicAuth(username, password) if username is not None and password is not None else None
+        self._settings = dict(auth=auth, timeout=timeout, allow_redirects=allow_redirects, verify=verify)
+
+    def post(self, device_uuid : str, ietf_acl_data : dict) -> str:
+        request_url = ACLS_URL.format(self._base_url, device_uuid)
+        reply = requests.post(request_url, json=ietf_acl_data, **(self._settings))
+        return reply.text
+
+    def get(self, device_uuid : str, acl_name : str) -> str:
+        request_url = ACL_URL.format(self._base_url, device_uuid, acl_name)
+        reply = requests.get(request_url, **(self._settings))
+        return reply.text
+
+    def delete(self, device_uuid : str, acl_name : str) -> str:
+        request_url = ACL_URL.format(self._base_url, device_uuid, acl_name)
+        reply = requests.delete(request_url, **(self._settings))
+        return reply.text
+
+def main():
+    client = TfsIetfAclClient()
+    print(f'ACL rule: {ACL_RULE}')
+    post_response = client.post(CSG1_DEVICE_UUID, ACL_RULE)
+    print(f'post response: {post_response}')
+    time.sleep(.5)
+    get_response = client.get(CSG1_DEVICE_UUID, ACL_NAME)
+    print(f'get response: {get_response}')
+    time.sleep(.5)
+    delete_response = client.delete(CSG1_DEVICE_UUID, ACL_NAME)
+    print(f'delete response: {delete_response}')
+
+if __name__ == '__main__':
+    main()
diff --git a/src/ztp_server/tests/test_etsi_bwm.py b/src/ztp_server/tests/test_etsi_bwm.py
new file mode 100755
index 0000000000000000000000000000000000000000..9400de00f95d7f1ec11c2fcf9af7e3b480c70ad2
--- /dev/null
+++ b/src/ztp_server/tests/test_etsi_bwm.py
@@ -0,0 +1,240 @@
+# 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 deepdiff, json, logging, pytest
+from typing import Dict
+from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME
+from common.proto.context_pb2 import ContextId, TopologyId
+from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results, validate_empty_scenario
+from common.tools.object_factory.Context import json_context_id
+from common.tools.object_factory.Topology import json_topology_id
+from context.client.ContextClient import ContextClient
+from nbi.service.rest_server import RestServer
+from .PrepareTestScenario import ( # pylint: disable=unused-import
+    # be careful, order of symbols is important here!
+    do_rest_delete_request, do_rest_get_request, do_rest_patch_request, do_rest_post_request, do_rest_put_request,
+    mock_service, nbi_service_rest, context_client
+)
+
+LOGGER = logging.getLogger(__name__)
+LOGGER.setLevel(logging.DEBUG)
+
+DESCRIPTOR_FILE  = 'nbi/tests/data/topology-dummy.json'
+
+JSON_ADMIN_CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_NAME)
+ADMIN_CONTEXT_ID = ContextId(**JSON_ADMIN_CONTEXT_ID)
+ADMIN_TOPOLOGY_ID = TopologyId(**json_topology_id(DEFAULT_TOPOLOGY_NAME, context_id=JSON_ADMIN_CONTEXT_ID))
+BASE_URL = '/restconf/bwm/v1'
+
+@pytest.fixture(scope='session')
+def storage() -> Dict:
+    yield dict()
+
+#def compare_dicts(dict1, dict2):
+#    # Function to recursively sort dictionaries
+#    def recursively_sort(d):
+#        if isinstance(d, dict):
+#            return {k: recursively_sort(v) for k, v in sorted(d.items())}
+#        if isinstance(d, list):
+#            return [recursively_sort(item) for item in d]
+#        return d
+#
+#    # Sort dictionaries to ignore the order of fields
+#    sorted_dict1 = recursively_sort(dict1)
+#    sorted_dict2 = recursively_sort(dict2)
+#
+#    if sorted_dict1 != sorted_dict2:
+#        LOGGER.error(sorted_dict1)
+#        LOGGER.error(sorted_dict2)
+#
+#    return sorted_dict1 != sorted_dict2
+
+def check_timestamps(bwm_service):
+    assert 'timeStamp' in bwm_service
+    assert 'seconds' in bwm_service['timeStamp']
+    assert 'nanoseconds' in bwm_service['timeStamp']
+
+def test_prepare_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name
+    validate_empty_scenario(context_client)
+    descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client)
+    results = descriptor_loader.process()
+    check_descriptor_load_results(results, descriptor_loader)
+    descriptor_loader.validate()
+
+    # Verify the scenario has no services/slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.topology_ids) == 1
+    assert len(response.service_ids ) == 0
+    assert len(response.slice_ids   ) == 0
+
+def test_get_allocations_empty(nbi_service_rest : RestServer, storage : Dict): # pylint: disable=redefined-outer-name, unused-argument
+    URL = BASE_URL + '/bw_allocations'
+    retrieved_data = do_rest_get_request(URL, logger=LOGGER, expected_status_codes={200})
+    LOGGER.debug('retrieved_data={:s}'.format(json.dumps(retrieved_data, sort_keys=True)))
+    assert len(retrieved_data) == 0
+
+def test_allocation(nbi_service_rest : RestServer, storage : Dict): # pylint: disable=redefined-outer-name, unused-argument
+    URL = BASE_URL + '/bw_allocations'
+    data = {
+        "appInsId"            : "service_uuid_01",
+        "allocationDirection" : "00",
+        "fixedAllocation"     : "123000.0",
+        "fixedBWPriority"     : "SEE_DESCRIPTION",
+        "requestType"         : 0,
+        "sessionFilter"       : [{
+            "sourceIp"   : "192.168.1.2",
+            "sourcePort" : ["a"],
+            "protocol"   : "string",
+            "dstAddress" : "192.168.3.2",
+            "dstPort"    : ["b"],
+        }]
+    }
+    retrieved_data = do_rest_post_request(URL, body=data, logger=LOGGER, expected_status_codes={200})
+    LOGGER.debug('retrieved_data={:s}'.format(json.dumps(retrieved_data, sort_keys=True)))
+    storage['service_uuid_01'] = 'service_uuid_01'
+
+
+def test_get_allocations(nbi_service_rest : RestServer, storage : Dict): # pylint: disable=redefined-outer-name, unused-argument
+    assert 'service_uuid_01' in storage
+    URL = BASE_URL + '/bw_allocations'
+    retrieved_data = do_rest_get_request(URL, logger=LOGGER, expected_status_codes={200})
+    LOGGER.debug('retrieved_data={:s}'.format(json.dumps(retrieved_data, sort_keys=True)))
+    assert len(retrieved_data) == 1
+    good_result = [
+        {
+            "appInsId"            : "service_uuid_01",
+            "fixedAllocation"     : "123000.0",
+            "allocationDirection" : "00",
+            "fixedBWPriority"     : "SEE_DESCRIPTION",
+            "requestType"         : "0",
+            "sessionFilter"       : [{
+                "sourceIp"   : "192.168.1.2",
+                "sourcePort" : ["a"],
+                "protocol"   : "string",
+                "dstAddress" : "192.168.3.2",
+                "dstPort"    : ["b"],
+            }],
+        }
+    ]
+    check_timestamps(retrieved_data[0])
+    del retrieved_data[0]['timeStamp']
+    diff_data = deepdiff.DeepDiff(good_result, retrieved_data)
+    LOGGER.error('Differences:\n{:s}'.format(str(diff_data.pretty())))
+    assert len(diff_data) == 0
+
+
+def test_get_allocation(nbi_service_rest : RestServer, storage : Dict): # pylint: disable=redefined-outer-name, unused-argument
+    assert 'service_uuid_01' in storage
+    URL = BASE_URL + '/bw_allocations/service_uuid_01'
+    retrieved_data = do_rest_get_request(URL, logger=LOGGER, expected_status_codes={200})
+    LOGGER.debug('retrieved_data={:s}'.format(json.dumps(retrieved_data, sort_keys=True)))
+    good_result = {
+        "appInsId"           : "service_uuid_01",
+        "fixedAllocation"    : "123000.0",
+        "allocationDirection": "00",
+        "fixedBWPriority"    : "SEE_DESCRIPTION",
+        "requestType"        : "0",
+        "sessionFilter"      : [{
+            "sourceIp"   : "192.168.1.2",
+            "sourcePort" : ["a"],
+            "protocol"   : "string",
+            "dstAddress" : "192.168.3.2",
+            "dstPort"    : ["b"],
+        }]
+    }
+    check_timestamps(retrieved_data)
+    del retrieved_data['timeStamp']
+    diff_data = deepdiff.DeepDiff(good_result, retrieved_data)
+    LOGGER.error('Differences:\n{:s}'.format(str(diff_data.pretty())))
+    assert len(diff_data) == 0
+
+
+def test_put_allocation(nbi_service_rest : RestServer, storage : Dict): # pylint: disable=redefined-outer-name, unused-argument
+    assert 'service_uuid_01' in storage
+    URL = BASE_URL + '/bw_allocations/service_uuid_01'
+    changed_allocation = {
+        "appInsId"           : "service_uuid_01",
+        "fixedAllocation"    : "200.0",
+        "allocationDirection": "00",
+        "fixedBWPriority"    : "NOPRIORITY",
+        "requestType"        : "0",
+        "sessionFilter"      : [{
+            "sourceIp"   : "192.168.1.2",
+            "sourcePort" : ["a"],
+            "protocol"   : "string",
+            "dstAddress" : "192.168.3.2",
+            "dstPort"    : ["b"],
+        }]
+    }
+    retrieved_data = do_rest_put_request(URL, body=json.dumps(changed_allocation), logger=LOGGER, expected_status_codes={200})
+    check_timestamps(retrieved_data)
+    del retrieved_data['timeStamp']
+    diff_data = deepdiff.DeepDiff(changed_allocation, retrieved_data)
+    LOGGER.error('Differences:\n{:s}'.format(str(diff_data.pretty())))
+    assert len(diff_data) == 0
+
+
+def test_patch_allocation(nbi_service_rest : RestServer, storage : Dict): # pylint: disable=redefined-outer-name, unused-argument
+    assert 'service_uuid_01' in storage
+    URL = BASE_URL + '/bw_allocations/service_uuid_01'
+    difference = {
+        "fixedBWPriority":"FULLPRIORITY",
+    }
+    changed_allocation = {
+        "appInsId"           : "service_uuid_01",
+        "fixedAllocation"    : "200.0",
+        "allocationDirection": "00",
+        "fixedBWPriority"    : "FULLPRIORITY",
+        "requestType"        : "0",
+        "sessionFilter"      : [{
+            "sourceIp"   : "192.168.1.2",
+            "sourcePort" : ["a"],
+            "protocol"   : "string",
+            "dstAddress" : "192.168.3.2",
+            "dstPort"    : ["b"],
+        }]
+    }
+    retrieved_data = do_rest_patch_request(URL, body=difference, logger=LOGGER, expected_status_codes={200})
+    check_timestamps(retrieved_data)
+    del retrieved_data['timeStamp']
+    diff_data = deepdiff.DeepDiff(changed_allocation, retrieved_data)
+    LOGGER.error('Differences:\n{:s}'.format(str(diff_data.pretty())))
+    assert len(diff_data) == 0
+
+
+def test_delete_allocation(nbi_service_rest : RestServer, storage : Dict): # pylint: disable=redefined-outer-name, unused-argument
+    assert 'service_uuid_01' in storage
+    URL = BASE_URL + '/bw_allocations/service_uuid_01'
+    do_rest_delete_request(URL, logger=LOGGER, expected_status_codes={200})
+
+
+def test_get_allocations_empty_final(nbi_service_rest : RestServer, storage : Dict): # pylint: disable=redefined-outer-name, unused-argument
+    URL = BASE_URL + '/bw_allocations'
+    retrieved_data = do_rest_get_request(URL, logger=LOGGER, expected_status_codes={200})
+    LOGGER.debug('retrieved_data={:s}'.format(json.dumps(retrieved_data, sort_keys=True)))
+    assert len(retrieved_data) == 0
+
+
+def test_cleanup_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name
+    # Verify the scenario has no services/slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.topology_ids) == 1
+    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)
+    descriptor_loader.validate()
+    descriptor_loader.unload()
+    validate_empty_scenario(context_client)
diff --git a/src/ztp_server/tests/test_ietf_l2vpn.py b/src/ztp_server/tests/test_ietf_l2vpn.py
new file mode 100755
index 0000000000000000000000000000000000000000..7bed8ff5db57a59e90f39dce1ba1bc9e43dd005b
--- /dev/null
+++ b/src/ztp_server/tests/test_ietf_l2vpn.py
@@ -0,0 +1,75 @@
+# 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
+from common.Constants import DEFAULT_CONTEXT_NAME
+from common.proto.context_pb2 import ContextId
+from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results, validate_empty_scenario
+from common.tools.object_factory.Context import json_context_id
+from context.client.ContextClient import ContextClient
+from tests.tools.mock_osm.MockOSM import MockOSM
+from .Constants import SERVICE_CONNECTION_POINTS_1, SERVICE_CONNECTION_POINTS_2, SERVICE_TYPE
+from .PrepareTestScenario import ( # pylint: disable=unused-import
+    # be careful, order of symbols is important here!
+    mock_service, nbi_service_rest, osm_wim, context_client
+)
+
+LOGGER = logging.getLogger(__name__)
+LOGGER.setLevel(logging.DEBUG)
+
+DESCRIPTOR_FILE = 'nbi/tests/data/topology-7router-emu-dummy.json'
+
+JSON_ADMIN_CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_NAME)
+ADMIN_CONTEXT_ID = ContextId(**JSON_ADMIN_CONTEXT_ID)
+
+def test_prepare_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name
+    validate_empty_scenario(context_client)
+    descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client)
+    results = descriptor_loader.process()
+    check_descriptor_load_results(results, descriptor_loader)
+    descriptor_loader.validate()
+
+    # Verify the scenario has no services/slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.topology_ids) == 1
+    assert len(response.service_ids ) == 0
+    assert len(response.slice_ids   ) == 0
+
+def test_create_service(osm_wim : MockOSM): # pylint: disable=redefined-outer-name
+    osm_wim.create_connectivity_service(SERVICE_TYPE, SERVICE_CONNECTION_POINTS_1)
+
+def test_get_service_status(osm_wim : MockOSM): # pylint: disable=redefined-outer-name
+    service_uuid = list(osm_wim.conn_info.keys())[0] # this test adds a single service
+    osm_wim.get_connectivity_service_status(service_uuid)
+
+def test_edit_service(osm_wim : MockOSM): # pylint: disable=redefined-outer-name
+    service_uuid = list(osm_wim.conn_info.keys())[0] # this test adds a single service
+    osm_wim.edit_connectivity_service(service_uuid, SERVICE_CONNECTION_POINTS_2)
+
+def test_delete_service(osm_wim : MockOSM): # pylint: disable=redefined-outer-name
+    service_uuid = list(osm_wim.conn_info.keys())[0] # this test adds a single service
+    osm_wim.delete_connectivity_service(service_uuid)
+
+def test_cleanup_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name
+    # Verify the scenario has no services/slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.topology_ids) == 1
+    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)
+    descriptor_loader.validate()
+    descriptor_loader.unload()
+    validate_empty_scenario(context_client)
diff --git a/src/ztp_server/tests/test_ietf_l3vpn.py b/src/ztp_server/tests/test_ietf_l3vpn.py
new file mode 100755
index 0000000000000000000000000000000000000000..0f214661f4451317520db5dc0fc115459ce8e015
--- /dev/null
+++ b/src/ztp_server/tests/test_ietf_l3vpn.py
@@ -0,0 +1,113 @@
+# 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, logging, pytest
+from typing import Dict
+from common.Constants import DEFAULT_CONTEXT_NAME
+from common.proto.context_pb2 import ContextId
+from common.tools.descriptor.Loader import (
+    DescriptorLoader, check_descriptor_load_results, validate_empty_scenario
+)
+from common.tools.object_factory.Context import json_context_id
+from context.client.ContextClient import ContextClient
+from nbi.service.rest_server.RestServer import RestServer
+from .PrepareTestScenario import ( # pylint: disable=unused-import
+    # be careful, order of symbols is important here!
+    do_rest_delete_request, do_rest_get_request, do_rest_post_request,
+    mock_service, nbi_service_rest, osm_wim, context_client
+)
+
+LOGGER = logging.getLogger(__name__)
+LOGGER.setLevel(logging.DEBUG)
+
+DESCRIPTOR_FILE = 'nbi/tests/data/topology-dummy.json'
+SVC1_DATA_FILE  = 'nbi/tests/data/ietf_l3vpn_req_svc1.json'
+SVC2_DATA_FILE  = 'nbi/tests/data/ietf_l3vpn_req_svc2.json'
+
+JSON_ADMIN_CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_NAME)
+ADMIN_CONTEXT_ID = ContextId(**JSON_ADMIN_CONTEXT_ID)
+
+@pytest.fixture(scope='session')
+def storage() -> Dict:
+    yield dict()
+
+def test_prepare_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name
+    validate_empty_scenario(context_client)
+    descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client)
+    results = descriptor_loader.process()
+    check_descriptor_load_results(results, descriptor_loader)
+    descriptor_loader.validate()
+
+    # Verify the scenario has no services/slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.topology_ids) == 1
+    assert len(response.service_ids ) == 0
+    assert len(response.slice_ids   ) == 0
+
+# pylint: disable=redefined-outer-name, unused-argument
+def test_create_svc1(nbi_service_rest : RestServer, storage : Dict):
+    with open(SVC1_DATA_FILE, 'r', encoding='UTF-8') as f:
+        svc1_data = json.load(f)
+    URL = '/restconf/data/ietf-l3vpn-svc:l3vpn-svc/vpn-services'
+    do_rest_post_request(URL, body=svc1_data, logger=LOGGER, expected_status_codes={201})
+    storage['svc1-uuid'] = svc1_data['ietf-l3vpn-svc:l3vpn-svc']['vpn-services']['vpn-service'][0]['vpn-id']
+
+# pylint: disable=redefined-outer-name, unused-argument
+def test_create_svc2(nbi_service_rest : RestServer, storage : Dict):
+    with open(SVC2_DATA_FILE, 'r', encoding='UTF-8') as f:
+        svc2_data = json.load(f)
+    URL = '/restconf/data/ietf-l3vpn-svc:l3vpn-svc/vpn-services'
+    do_rest_post_request(URL, body=svc2_data, logger=LOGGER, expected_status_codes={201})
+    storage['svc2-uuid'] = svc2_data['ietf-l3vpn-svc:l3vpn-svc']['vpn-services']['vpn-service'][0]['vpn-id']
+
+# pylint: disable=redefined-outer-name, unused-argument
+def test_get_state_svc1(nbi_service_rest : RestServer, storage : Dict):
+    assert 'svc1-uuid' in storage
+    service_uuid = storage['svc1-uuid']
+    URL = '/restconf/data/ietf-l3vpn-svc:l3vpn-svc/vpn-services/vpn-service={:s}/'.format(service_uuid)
+    do_rest_get_request(URL, logger=LOGGER, expected_status_codes={200})
+
+# pylint: disable=redefined-outer-name, unused-argument
+def test_get_state_svc2(nbi_service_rest : RestServer, storage : Dict):
+    assert 'svc2-uuid' in storage
+    service_uuid = storage['svc2-uuid']
+    URL = '/restconf/data/ietf-l3vpn-svc:l3vpn-svc/vpn-services/vpn-service={:s}/'.format(service_uuid)
+    do_rest_get_request(URL, logger=LOGGER, expected_status_codes={200})
+
+# pylint: disable=redefined-outer-name, unused-argument
+def test_delete_svc1(nbi_service_rest : RestServer, storage : Dict):
+    assert 'svc1-uuid' in storage
+    service_uuid = storage['svc1-uuid']
+    URL = '/restconf/data/ietf-l3vpn-svc:l3vpn-svc/vpn-services/vpn-service={:s}/'.format(service_uuid)
+    do_rest_delete_request(URL, logger=LOGGER, expected_status_codes={204})
+
+# pylint: disable=redefined-outer-name, unused-argument
+def test_delete_svc2(nbi_service_rest : RestServer, storage : Dict):
+    assert 'svc2-uuid' in storage
+    service_uuid = storage['svc2-uuid']
+    URL = '/restconf/data/ietf-l3vpn-svc:l3vpn-svc/vpn-services/vpn-service={:s}/'.format(service_uuid)
+    do_rest_delete_request(URL, logger=LOGGER, expected_status_codes={204})
+
+def test_cleanup_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name
+    # Verify the scenario has no services/slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.topology_ids) == 1
+    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)
+    descriptor_loader.validate()
+    descriptor_loader.unload()
+    validate_empty_scenario(context_client)
diff --git a/src/ztp_server/tests/test_ietf_network.py b/src/ztp_server/tests/test_ietf_network.py
new file mode 100755
index 0000000000000000000000000000000000000000..68337d0a8b3cf4b4942f9cba7c4ca9a60b338268
--- /dev/null
+++ b/src/ztp_server/tests/test_ietf_network.py
@@ -0,0 +1,105 @@
+# 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 deepdiff, json, logging, operator, os
+from typing import Dict
+from common.Constants import DEFAULT_CONTEXT_NAME
+from common.proto.context_pb2 import ContextId
+from common.tools.descriptor.Loader import (
+    DescriptorLoader, check_descriptor_load_results, validate_empty_scenario
+)
+from common.tools.object_factory.Context import json_context_id
+from context.client.ContextClient import ContextClient
+from nbi.service.rest_server import RestServer
+
+# Explicitly state NBI to use PyangBind Renderer for this test
+os.environ['IETF_NETWORK_RENDERER'] = 'PYANGBIND'
+
+from .PrepareTestScenario import ( # pylint: disable=unused-import
+    # be careful, order of symbols is important here!
+    do_rest_get_request, mock_service, nbi_service_rest, osm_wim, context_client
+)
+
+LOGGER = logging.getLogger(__name__)
+LOGGER.setLevel(logging.DEBUG)
+
+DESCRIPTOR_FILE  = 'nbi/tests/data/topology-dummy.json'
+TARGET_DATA_FILE = 'nbi/tests/data/test-ietf-network.json'
+
+JSON_ADMIN_CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_NAME)
+ADMIN_CONTEXT_ID = ContextId(**JSON_ADMIN_CONTEXT_ID)
+
+def test_prepare_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name
+    validate_empty_scenario(context_client)
+    descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client)
+    results = descriptor_loader.process()
+    check_descriptor_load_results(results, descriptor_loader)
+    descriptor_loader.validate()
+
+    # Verify the scenario has no services/slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.topology_ids) == 1
+    assert len(response.service_ids ) == 0
+    assert len(response.slice_ids   ) == 0
+
+def sort_data(data : Dict) -> None:
+    if 'ietf-network:networks' not in data: return
+    if 'network' not in data['ietf-network:networks']: return
+    data['ietf-network:networks']['network'] = sorted(
+        data['ietf-network:networks']['network'],
+        key=operator.itemgetter('network-id')
+    )
+    for network in data['ietf-network:networks']['network']:
+        if 'node' in network:
+            network['node'] = sorted(
+                network['node'],
+                key=operator.itemgetter('node-id')
+            )
+
+            for node in network['node']:
+                if 'ietf-network-topology:termination-point' in node:
+                    node['ietf-network-topology:termination-point'] = sorted(
+                        node['ietf-network-topology:termination-point'],
+                        key=operator.itemgetter('tp-id')
+                    )
+
+        if 'ietf-network-topology:link' in network:
+            network['ietf-network-topology:link'] = sorted(
+                network['ietf-network-topology:link'],
+                key=operator.itemgetter('link-id')
+            )
+
+def test_rest_get_networks(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    with open(TARGET_DATA_FILE, 'r', encoding='UTF-8') as f:
+        target_data = json.load(f)
+    URL = '/restconf/data/ietf-network:networks'
+    retrieved_data = do_rest_get_request(URL, logger=LOGGER, expected_status_codes={200})
+    sort_data(retrieved_data)
+    sort_data(target_data)
+    diff_data = deepdiff.DeepDiff(target_data, retrieved_data)
+    LOGGER.error('Differences:\n{:s}'.format(str(diff_data.pretty())))
+    assert len(diff_data) == 0
+
+def test_cleanup_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name
+    # Verify the scenario has no services/slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.topology_ids) == 1
+    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)
+    descriptor_loader.validate()
+    descriptor_loader.unload()
+    validate_empty_scenario(context_client)
diff --git a/src/ztp_server/tests/test_slice.py b/src/ztp_server/tests/test_slice.py
new file mode 100755
index 0000000000000000000000000000000000000000..fe112e6fc70c94caa1f5fc3824e56758c2ec442c
--- /dev/null
+++ b/src/ztp_server/tests/test_slice.py
@@ -0,0 +1,125 @@
+# 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, random, uuid
+from typing import Dict, Tuple
+from nbi.service.rest_server.nbi_plugins.ietf_network_slice.bindings.network_slice_services import (
+    NetworkSliceServices
+)
+
+# R1 emulated devices
+# Port 13-0 is Optical
+# Port 13-1 is Copper
+R1_UUID = "ed2388eb-5fb9-5888-a4f4-160267d3e19b"
+R1_PORT_13_0_UUID_OPTICAL = "20440915-1a6c-5e7b-a80f-b0e0e51f066d"
+R1_PORT_13_1_UUID_COPPER = "ff900d5d-2ac0-576c-9628-a2d016681f9d"
+
+# R2 emulated devices
+# Port 13-0 is Optical
+# Port 13-1 is Copper
+R2_UUID = "49ce0312-1274-523b-97b8-24d0eca2d72d"
+R2_PORT_13_0_UUID_OPTICAL = "214618cb-b63b-5e66-84c2-45c1c016e5f0"
+R2_PORT_13_1_UUID_COPPER = "4e0f7fb4-5d22-56ad-a00e-20bffb4860f9"
+
+# R3 emulated devices
+# Port 13-0 is Optical
+# Port 13-1 is Copper
+R3_UUID = "3bc8e994-a3b9-5f60-9c77-6608b1d08313"
+R3_PORT_13_0_UUID_OPTICAL = "da5196f5-d651-5def-ada6-50ed6430279d"
+R3_PORT_13_1_UUID_COPPER = "43d221fa-5701-5740-a129-502131f5bda2"
+
+# R4 emulated devices
+# Port 13-0 is Optical
+# Port 13-1 is Copper
+R4_UUID = "b43e6361-2573-509d-9a88-1793e751b10d"
+R4_PORT_13_0_UUID_OPTICAL = "241b74a7-8677-595c-ad65-cc9093c1e341"
+R4_PORT_13_1_UUID_COPPER = "c57abf46-caaf-5954-90cc-1fec0a69330e"
+
+node_dict = {R1_PORT_13_1_UUID_COPPER: R1_UUID,
+             R2_PORT_13_1_UUID_COPPER: R2_UUID,
+             R3_PORT_13_1_UUID_COPPER: R3_UUID,
+             R4_PORT_13_1_UUID_COPPER: R4_UUID}
+list_endpoints = [R1_PORT_13_1_UUID_COPPER,
+                  R2_PORT_13_1_UUID_COPPER,
+                  R3_PORT_13_1_UUID_COPPER,
+                  R4_PORT_13_1_UUID_COPPER]
+
+list_availability= [99, 99.9, 99.99, 99.999, 99.9999]
+list_bw = [10, 40, 50, 100, 150, 200, 400]
+list_owner = ["Telefonica", "CTTC", "Telenor", "ADVA", "Ubitech", "ATOS"]
+
+URL_POST = "/restconf/data/ietf-network-slice-service:ietf-nss/network-slice-services"
+URL_DELETE = "/restconf/data/ietf-network-slice-service:ietf-nss/network-slice-services/slice-service="
+
+def generate_request(seed: str) -> Tuple[Dict, str]:
+
+    ns = NetworkSliceServices()
+
+    # Slice 1
+    suuid = str(uuid.uuid5(uuid.NAMESPACE_DNS, str(seed)))
+    slice1 = ns.slice_service[suuid]
+    slice1.service_description = "Test slice for OFC 2023 demo"
+    slice1.status().admin_status().status = "Planned"  # TODO not yet mapped
+
+    # SDPS: R1 optical to R3 optical
+    sdps1 = slice1.sdps().sdp
+    while True:
+        ep1_uuid = random.choice(list_endpoints)
+        ep2_uuid = random.choice(list_endpoints)
+        if ep1_uuid != ep2_uuid:
+            break
+
+    sdps1[ep1_uuid].node_id = node_dict.get(ep1_uuid)
+    sdps1[ep2_uuid].node_id = node_dict.get(ep2_uuid)
+
+    # Connectivity group: Connection construct and 2 sla constrains:
+    #   - Bandwidth
+    #   - Availability
+    cg_uuid = str(uuid.uuid4())
+    cg = slice1.connection_groups().connection_group
+    cg1 = cg[cg_uuid]
+
+    cc1 = cg1.connectivity_construct[0]
+    cc1.cc_id = 5
+    p2p = cc1.connectivity_construct_type.p2p()
+    p2p.p2p_sender_sdp = ep1_uuid
+    p2p.p2p_receiver_sdp = ep2_uuid
+
+    slo_custom = cc1.slo_sle_policy.custom()
+    metric_bounds = slo_custom.service_slo_sle_policy().metric_bounds().metric_bound
+
+    # SLO Bandwidth
+    slo_bandwidth = metric_bounds["service-slo-two-way-bandwidth"]
+    slo_bandwidth.value_description = "Guaranteed bandwidth"
+    slo_bandwidth.bound = int(random.choice(list_bw))
+    slo_bandwidth.metric_unit = "Gbps"
+
+    # SLO Availability
+    slo_availability = metric_bounds["service-slo-availability"]
+    slo_availability.value_description = "Guaranteed availability"
+    slo_availability.metric_unit = "percentage"
+    slo_availability.bound = random.choice(list_availability)
+
+    json_request = {"data": ns.to_json()}
+
+    #Last, add name and owner manually
+    list_name_owner = [{"tag-type": "owner", "value": random.choice(list_owner)}]
+    json_request["data"]["ietf-network-slice-service:network-slice-services"]["slice-service"][0]["service-tags"] = list_name_owner
+
+    return (json_request, suuid)
+
+
+if __name__ == "__main__":
+    request = generate_request(123)
+    print(json.dumps(request[0], sort_keys=True, indent=4))
diff --git a/src/ztp_server/tests/test_tfs_api.py b/src/ztp_server/tests/test_tfs_api.py
new file mode 100755
index 0000000000000000000000000000000000000000..eab2f8d9ba6408491fb272cd59bc2f79a1c08a64
--- /dev/null
+++ b/src/ztp_server/tests/test_tfs_api.py
@@ -0,0 +1,217 @@
+# 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, urllib
+from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME
+from common.proto.context_pb2 import ContextId
+from common.tools.descriptor.Loader import (
+    DescriptorLoader, check_descriptor_load_results, validate_empty_scenario
+)
+from common.tools.object_factory.Context import json_context_id
+from common.type_checkers.Assertions import (
+    validate_connection, validate_connection_ids, validate_connections,
+    validate_context, validate_context_ids, validate_contexts,
+    validate_device, validate_device_ids, validate_devices,
+    validate_link, validate_link_ids, validate_links,
+    validate_service, validate_service_ids, validate_services,
+    validate_slice, validate_slice_ids, validate_slices,
+    validate_topologies, validate_topology, validate_topology_ids
+)
+from context.client.ContextClient import ContextClient
+from nbi.service.rest_server.RestServer import RestServer
+from .PrepareTestScenario import ( # pylint: disable=unused-import
+    # be careful, order of symbols is important here!
+    mock_service, nbi_service_rest, context_client,
+    do_rest_get_request
+)
+
+LOGGER = logging.getLogger(__name__)
+LOGGER.setLevel(logging.DEBUG)
+
+DESCRIPTOR_FILE = 'nbi/tests/data/tfs_api_dummy.json'
+
+JSON_ADMIN_CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_NAME)
+ADMIN_CONTEXT_ID = ContextId(**JSON_ADMIN_CONTEXT_ID)
+
+
+# ----- Prepare Environment --------------------------------------------------------------------------------------------
+
+def test_prepare_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name
+    validate_empty_scenario(context_client)
+    descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client)
+    results = descriptor_loader.process()
+    check_descriptor_load_results(results, descriptor_loader)
+    descriptor_loader.validate()
+
+    # Verify the scenario has no services/slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.topology_ids) == 1
+    assert len(response.service_ids ) == 3
+    assert len(response.slice_ids   ) == 1
+
+
+# ----- Context --------------------------------------------------------------------------------------------------------
+
+def test_rest_get_context_ids(nbi_service_rest: RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    reply = do_rest_get_request('/tfs-api/context_ids')
+    validate_context_ids(reply)
+
+def test_rest_get_contexts(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    reply = do_rest_get_request('/tfs-api/contexts')
+    validate_contexts(reply)
+
+def test_rest_get_context(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
+    reply = do_rest_get_request('/tfs-api/context/{:s}'.format(context_uuid))
+    validate_context(reply)
+
+
+# ----- Topology -------------------------------------------------------------------------------------------------------
+
+def test_rest_get_topology_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
+    reply = do_rest_get_request('/tfs-api/context/{:s}/topology_ids'.format(context_uuid))
+    validate_topology_ids(reply)
+
+def test_rest_get_topologies(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
+    reply = do_rest_get_request('/tfs-api/context/{:s}/topologies'.format(context_uuid))
+    validate_topologies(reply)
+
+def test_rest_get_topology(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
+    topology_uuid = urllib.parse.quote(DEFAULT_TOPOLOGY_NAME)
+    reply = do_rest_get_request('/tfs-api/context/{:s}/topology/{:s}'.format(context_uuid, topology_uuid))
+    validate_topology(reply, num_devices=3, num_links=6)
+
+
+# ----- Device ---------------------------------------------------------------------------------------------------------
+
+def test_rest_get_device_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    reply = do_rest_get_request('/tfs-api/device_ids')
+    validate_device_ids(reply)
+
+def test_rest_get_devices(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    reply = do_rest_get_request('/tfs-api/devices')
+    validate_devices(reply)
+
+def test_rest_get_device(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    device_uuid = urllib.parse.quote('R1', safe='')
+    reply = do_rest_get_request('/tfs-api/device/{:s}'.format(device_uuid))
+    validate_device(reply)
+
+
+# ----- Link -----------------------------------------------------------------------------------------------------------
+
+def test_rest_get_link_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    reply = do_rest_get_request('/tfs-api/link_ids')
+    validate_link_ids(reply)
+
+def test_rest_get_links(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    reply = do_rest_get_request('/tfs-api/links')
+    validate_links(reply)
+
+def test_rest_get_link(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    link_uuid = urllib.parse.quote('R1/502==R2/501', safe='')
+    reply = do_rest_get_request('/tfs-api/link/{:s}'.format(link_uuid))
+    validate_link(reply)
+
+
+# ----- Service --------------------------------------------------------------------------------------------------------
+
+def test_rest_get_service_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
+    reply = do_rest_get_request('/tfs-api/context/{:s}/service_ids'.format(context_uuid))
+    validate_service_ids(reply)
+
+def test_rest_get_services(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
+    reply = do_rest_get_request('/tfs-api/context/{:s}/services'.format(context_uuid))
+    validate_services(reply)
+
+def test_rest_get_service(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
+    service_uuid = urllib.parse.quote('SVC:R1/200==R2/200', safe='')
+    reply = do_rest_get_request('/tfs-api/context/{:s}/service/{:s}'.format(context_uuid, service_uuid))
+    validate_service(reply)
+
+
+# ----- Slice ----------------------------------------------------------------------------------------------------------
+
+def test_rest_get_slice_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
+    reply = do_rest_get_request('/tfs-api/context/{:s}/slice_ids'.format(context_uuid))
+    validate_slice_ids(reply)
+
+def test_rest_get_slices(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
+    reply = do_rest_get_request('/tfs-api/context/{:s}/slices'.format(context_uuid))
+    validate_slices(reply)
+
+def test_rest_get_slice(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
+    slice_uuid = urllib.parse.quote('SLC:R1-R2-R3', safe='')
+    reply = do_rest_get_request('/tfs-api/context/{:s}/slice/{:s}'.format(context_uuid, slice_uuid))
+    validate_slice(reply)
+
+
+# ----- Connection -----------------------------------------------------------------------------------------------------
+
+def test_rest_get_connection_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
+    service_uuid = urllib.parse.quote('SVC:R1/200==R2/200', safe='')
+    reply = do_rest_get_request('/tfs-api/context/{:s}/service/{:s}/connection_ids'.format(context_uuid, service_uuid))
+    validate_connection_ids(reply)
+
+def test_rest_get_connections(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME)
+    service_uuid = urllib.parse.quote('SVC:R1/200==R2/200', safe='')
+    reply = do_rest_get_request('/tfs-api/context/{:s}/service/{:s}/connections'.format(context_uuid, service_uuid))
+    validate_connections(reply)
+
+def test_rest_get_connection(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+    connection_uuid = urllib.parse.quote('CON:R1/200==R2/200:1', safe='')
+    reply = do_rest_get_request('/tfs-api/connection/{:s}'.format(connection_uuid))
+    validate_connection(reply)
+
+# ----- Policy ---------------------------------------------------------------------------------------------------------
+
+#def test_rest_get_policyrule_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+#    reply = do_rest_get_request('/tfs-api/policyrule_ids')
+#    validate_policyrule_ids(reply)
+
+#def test_rest_get_policyrules(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+#    reply = do_rest_get_request('/tfs-api/policyrules')
+#    validate_policyrules(reply)
+
+#def test_rest_get_policyrule(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument
+#    policyrule_uuid_quoted = urllib.parse.quote(policyrule_uuid, safe='')
+#    reply = do_rest_get_request('/tfs-api/policyrule/{:s}'.format(policyrule_uuid_quoted))
+#    validate_policyrule(reply)
+
+
+# ----- Cleanup Environment --------------------------------------------------------------------------------------------
+
+def test_cleanup_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name
+    # Verify the scenario has no services/slices
+    response = context_client.GetContext(ADMIN_CONTEXT_ID)
+    assert len(response.topology_ids) == 1
+    assert len(response.service_ids ) == 3
+    assert len(response.slice_ids   ) == 1
+
+    # Load descriptors and validate the base scenario
+    descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client)
+    descriptor_loader.validate()
+    descriptor_loader.unload()
+    validate_empty_scenario(context_client)
diff --git a/src/ztp_server/tests/test_yang_acl.py b/src/ztp_server/tests/test_yang_acl.py
new file mode 100755
index 0000000000000000000000000000000000000000..2f45c50bc4a140ca289aad03969f94148efa71d4
--- /dev/null
+++ b/src/ztp_server/tests/test_yang_acl.py
@@ -0,0 +1,104 @@
+# 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 copy, json, libyang, logging, os
+from typing import Dict, List, Optional
+
+LOGGER = logging.getLogger(__name__)
+
+YANG_DIR = os.path.join(os.path.dirname(__file__), 'yang')
+YANG_MODULES = [
+    'ietf-yang-types',
+    'ietf-interfaces',
+    'iana-if-type',
+    'ietf-access-control-list',
+]
+
+class YangValidator:
+    def __init__(self) -> None:
+        self._yang_context = libyang.Context(YANG_DIR)
+        for module_name in YANG_MODULES:
+            LOGGER.info('Loading module: {:s}'.format(str(module_name)))
+            yang_module = self._yang_context.load_module(module_name)
+            yang_module.feature_enable_all()
+            yang_module_prefix = yang_module.prefix()
+            LOGGER.info('  Prefix: {:s}'.format(str(yang_module_prefix)))
+
+    def parse_to_dict(self, message : Dict, interface_names : List[str]) -> Dict:
+        interfaces = self._yang_context.create_data_path('/ietf-interfaces:interfaces')
+        for if_index,interface_name in enumerate(interface_names):
+            if_path = 'interface[name="{:s}"]'.format(str(interface_name))
+            interface = interfaces.create_path(if_path)
+            interface.create_path('if-index', if_index + 1)
+            interface.create_path('type', 'iana-if-type:ethernetCsmacd')
+            interface.create_path('admin-status', 'up')
+            interface.create_path('oper-status', 'up')
+            statistics = interface.create_path('statistics')
+            statistics.create_path('discontinuity-time', '2024-07-11T10:00:00.000000Z')
+
+        message = copy.deepcopy(message)
+        message['ietf-interfaces:interfaces'] = interfaces.print_dict()['interfaces']
+
+        dnode : Optional[libyang.DNode] = self._yang_context.parse_data_mem(
+            json.dumps(message), 'json', validate_present=True, strict=True
+        )
+        if dnode is None: raise Exception('Unable to parse Message({:s})'.format(str(message)))
+        message = dnode.print_dict()
+        dnode.free()
+        interfaces.free()
+        return message
+
+    def destroy(self) -> None:
+        self._yang_context.destroy()
+        self._yang_context = None
+
+def main() -> None:
+    import uuid # pylint: disable=import-outside-toplevel
+    logging.basicConfig(level=logging.DEBUG)
+
+    interface_names = {'200', '500', str(uuid.uuid4()), str(uuid.uuid4())}
+    ACL_RULE = {"ietf-access-control-list:acls": {
+        "acl": [{
+            "name": "sample-ipv4-acl", "type": "ipv4-acl-type",
+            "aces": {"ace": [{
+                "name": "rule1",
+                "matches": {
+                    "ipv4": {
+                        "source-ipv4-network": "128.32.10.6/24",
+                        "destination-ipv4-network": "172.10.33.0/24",
+                        "dscp": 18
+                    },
+                    "tcp": {
+                        "source-port": {"operator": "eq", "port": 1444},
+                        "destination-port": {"operator": "eq", "port": 1333},
+                        "flags": "syn"
+                    }
+                },
+                "actions": {"forwarding": "drop"}
+            }]}
+        }],
+        "attachment-points": {"interface": [{
+            "interface-id": "200",
+            "ingress": {"acl-sets": {"acl-set": [{"name": "sample-ipv4-acl"}]}}
+        }]
+    }}}
+
+    yang_validator = YangValidator()
+    request_data = yang_validator.parse_to_dict(ACL_RULE, list(interface_names))
+    yang_validator.destroy()
+
+    LOGGER.info('request_data = {:s}'.format(str(request_data)))
+
+if __name__ == '__main__':
+    main()