From 493b257e618d8cc2450fcf8613a3575db33d88e2 Mon Sep 17 00:00:00 2001
From: Gilles Thouenon <gilles.thouenon@orange.com>
Date: Fri, 3 Jan 2025 17:57:27 +0100
Subject: [PATCH] Migrate InstanceIdentifier of networkmodel module

Use DataObjectIdentifier instead of InstanceIdentifier in
transportpce-networkmodel module except in few classes where a specific
treatment is done with the deprecated InstanceIdentifier
(NetworkModelProvider, PortMappingListener and DeviceListener).

JIRA:TRNSPRTPCE-842
Change-Id: I8af232bce1c9d8adfcc45eae4df64a40c5c68a82
Signed-off-by: Gilles Thouenon <gilles.thouenon@orange.com>
---
 .../networkmodel/NetworkUtilsImpl.java        | 12 ++++----
 .../transportpce/networkmodel/OrdLink.java    | 28 +++++++++++--------
 .../networkmodel/Rdm2XpdrLink.java            | 23 +++++++--------
 .../listeners/AlarmNotificationListener.java  |  5 ++--
 .../AlarmNotificationListener221.java         |  5 ++--
 .../AlarmNotificationListener710.java         |  5 ++--
 .../listeners/DeviceListener121.java          | 15 +++++-----
 .../listeners/DeviceListener221.java          | 16 +++++------
 .../listeners/DeviceListener710.java          | 22 +++++++--------
 .../service/FrequenciesServiceImpl.java       |  7 ++---
 .../networkmodel/util/OpenRoadmTopology.java  | 13 +++++----
 .../networkmodel/util/TpceNetworkTest.java    | 27 ++++++++++--------
 12 files changed, 93 insertions(+), 85 deletions(-)

diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/NetworkUtilsImpl.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/NetworkUtilsImpl.java
index e050e62ad4..7b5d655666 100644
--- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/NetworkUtilsImpl.java
+++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/NetworkUtilsImpl.java
@@ -44,8 +44,8 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.LinkKey;
+import org.opendaylight.yangtools.binding.DataObjectIdentifier;
 import org.opendaylight.yangtools.concepts.Registration;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.osgi.service.component.annotations.Activate;
@@ -85,16 +85,16 @@ public class NetworkUtilsImpl {
 
         LinkId linkId = new LinkId(input.getLinkId());
         // Building link instance identifier
-        InstanceIdentifier.Builder<Link> linkIID = InstanceIdentifier.builder(Networks.class)
+        DataObjectIdentifier<Link> linkIID = DataObjectIdentifier.builder(Networks.class)
             .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
-            .augmentation(Network1.class).child(Link.class, new LinkKey(linkId));
+            .augmentation(Network1.class).child(Link.class, new LinkKey(linkId))
+            .build();
 
 
         //Check if link exists
         try {
             ReadTransaction readOnlyTransaction = dataBroker.newReadOnlyTransaction();
-            Optional<Link> linkOptional = readOnlyTransaction.read(LogicalDatastoreType.CONFIGURATION, linkIID.build())
-                .get();
+            Optional<Link> linkOptional = readOnlyTransaction.read(LogicalDatastoreType.CONFIGURATION, linkIID).get();
             if (!linkOptional.isPresent()) {
                 LOG.info("Link not present");
                 return RpcResultBuilder
@@ -109,7 +109,7 @@ public class NetworkUtilsImpl {
         }
 
         WriteTransaction writeTransaction = dataBroker.newWriteOnlyTransaction();
-        writeTransaction.delete(LogicalDatastoreType.CONFIGURATION, linkIID.build());
+        writeTransaction.delete(LogicalDatastoreType.CONFIGURATION, linkIID);
         try {
             writeTransaction.commit().get();
             LOG.info("Link with linkId: {} deleted from {} layer.",
diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/OrdLink.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/OrdLink.java
index 8957d6b8d7..95fa237439 100644
--- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/OrdLink.java
+++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/OrdLink.java
@@ -44,7 +44,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.binding.DataObjectIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -86,12 +86,14 @@ final class OrdLink {
         LinkId linkId = LinkIdUtil.buildLinkId(srcNode, srcTp, destNode, destTp);
 
         // Building link instance identifier
-        InstanceIdentifier.Builder<Link> linkIID = InstanceIdentifier.builder(Networks.class)
+        DataObjectIdentifier<Link> linkIID = DataObjectIdentifier.builder(Networks.class)
             .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
-            .augmentation(Network1.class).child(Link.class, new LinkKey(linkId));
+            .augmentation(Network1.class)
+            .child(Link.class, new LinkKey(linkId))
+            .build();
 
         WriteTransaction writeTransaction = dataBroker.newWriteOnlyTransaction();
-        writeTransaction.merge(LogicalDatastoreType.CONFIGURATION, linkIID.build(), linkBuilder.build());
+        writeTransaction.merge(LogicalDatastoreType.CONFIGURATION, linkIID, linkBuilder.build());
         try {
             writeTransaction.commit().get();
             LOG.info("A new link with linkId: {} added into {} layer.",
@@ -182,12 +184,13 @@ final class OrdLink {
         linkBuilderBW.addAugmentation(tpceAugmLink11Bd.build());
 
         // Building link instance identifier
-        InstanceIdentifier.Builder<Link> linkIIDFW = InstanceIdentifier.builder(Networks.class)
+        DataObjectIdentifier<Link> linkIIDFW = DataObjectIdentifier.builder(Networks.class)
             .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
-            .augmentation(Network1.class).child(Link.class, new LinkKey(linkId));
+            .augmentation(Network1.class).child(Link.class, new LinkKey(linkId))
+            .build();
 
         WriteTransaction writeTransaction = dataBroker.newWriteOnlyTransaction();
-        writeTransaction.merge(LogicalDatastoreType.CONFIGURATION, linkIIDFW.build(), linkBuilderFW.build());
+        writeTransaction.merge(LogicalDatastoreType.CONFIGURATION, linkIIDFW, linkBuilderFW.build());
         try {
             writeTransaction.commit().get();
             LOG.info("A new link with linkId: {} added into {} layer.",
@@ -198,11 +201,12 @@ final class OrdLink {
             return false;
         }
 
-        InstanceIdentifier.Builder<Link> linkIIDBW = InstanceIdentifier.builder(Networks.class)
+        DataObjectIdentifier<Link> linkIIDBW = DataObjectIdentifier.builder(Networks.class)
             .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
-            .augmentation(Network1.class).child(Link.class, new LinkKey(oppLinkId));
+            .augmentation(Network1.class).child(Link.class, new LinkKey(oppLinkId))
+            .build();
         writeTransaction = dataBroker.newWriteOnlyTransaction();
-        writeTransaction.merge(LogicalDatastoreType.CONFIGURATION, linkIIDBW.build(), linkBuilderBW.build());
+        writeTransaction.merge(LogicalDatastoreType.CONFIGURATION, linkIIDBW, linkBuilderBW.build());
         try {
             writeTransaction.commit().get();
             LOG.info("A new link with linkId: {} added into {} layer.",
@@ -240,7 +244,7 @@ final class OrdLink {
             .setAdministrativeState(AdminStates.InService)
             .setOperationalState(State.InService).build());
 
-        InstanceIdentifier<TerminationPoint> tpIID = InstanceIdentifier.builder(Networks.class)
+        DataObjectIdentifier<TerminationPoint> tpIID = DataObjectIdentifier.builder(Networks.class)
             .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
             .child(Node.class, new NodeKey(new NodeId("TAPI-SBI-ABS-NODE")))
             .augmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
@@ -262,7 +266,7 @@ final class OrdLink {
     }
 
     private static TerminationPoint getTpofNode(String srcNode, String srcTp, DataBroker dataBroker) {
-        InstanceIdentifier<TerminationPoint> iiTp = InstanceIdentifier.builder(Networks.class)
+        DataObjectIdentifier<TerminationPoint> iiTp = DataObjectIdentifier.builder(Networks.class)
                 .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
                 .child(Node.class, new NodeKey(new NodeId(srcNode)))
                 .augmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/Rdm2XpdrLink.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/Rdm2XpdrLink.java
index f7aaf78e54..ce91592530 100644
--- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/Rdm2XpdrLink.java
+++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/Rdm2XpdrLink.java
@@ -49,7 +49,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.binding.DataObjectIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -90,10 +90,11 @@ final class Rdm2XpdrLink {
             return false;
         }
         Network network = networkBldr.build();
-        InstanceIdentifier.Builder<Network> nwIID = InstanceIdentifier.builder(Networks.class)
-            .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)));
+        DataObjectIdentifier<Network> nwIID = DataObjectIdentifier.builder(Networks.class)
+            .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
+            .build();
         WriteTransaction wrtx = dataBroker.newWriteOnlyTransaction();
-        wrtx.merge(LogicalDatastoreType.CONFIGURATION, nwIID.build(), network);
+        wrtx.merge(LogicalDatastoreType.CONFIGURATION, nwIID, network);
 
         FluentFuture<? extends @NonNull CommitInfo> commit = wrtx.commit();
 
@@ -138,11 +139,11 @@ final class Rdm2XpdrLink {
             return false;
         }
         Network network = networkBldr.build();
-        InstanceIdentifier.Builder<Network> nwIID =
-            InstanceIdentifier.builder(Networks.class).child(Network.class,
-                new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)));
+        DataObjectIdentifier<Network> nwIID = DataObjectIdentifier.builder(Networks.class)
+                .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
+                .build();
         WriteTransaction wrtx = dataBroker.newWriteOnlyTransaction();
-        wrtx.merge(LogicalDatastoreType.CONFIGURATION, nwIID.build(), network);
+        wrtx.merge(LogicalDatastoreType.CONFIGURATION, nwIID, network);
         FluentFuture<? extends @NonNull CommitInfo> commit = wrtx.commit();
         try {
             commit.get();
@@ -238,7 +239,7 @@ final class Rdm2XpdrLink {
     }
 
     private static TerminationPoint getTpofNode(String srcNode, String srcTp, DataBroker dataBroker) {
-        InstanceIdentifier<TerminationPoint> iiTp = InstanceIdentifier.builder(Networks.class)
+        DataObjectIdentifier<TerminationPoint> iiTp = DataObjectIdentifier.builder(Networks.class)
             .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
             .child(Node.class, new NodeKey(new NodeId(srcNode)))
             .augmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
@@ -265,9 +266,9 @@ final class Rdm2XpdrLink {
     }
 
     private static DataModelEnum getNodeModel(String srcNode, String srcTp, DataBroker dataBroker) {
-        InstanceIdentifier<
+        DataObjectIdentifier<
                 org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.or.network.augmentation.rev240923.Node1>
-            nodeIID = InstanceIdentifier.builder(Networks.class)
+            nodeIID = DataObjectIdentifier.builder(Networks.class)
                 .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
                 .child(Node.class, new NodeKey(new NodeId(srcNode)))
                 .augmentation(org.opendaylight.yang.gen.v1.http.org.opendaylight
diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener.java
index f0f57d62d0..280be27ea3 100644
--- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener.java
+++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener.java
@@ -34,7 +34,7 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resour
 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource.resource.resource.Service;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource.resource.resource.Shelf;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource.resource.resource.Srg;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.binding.DataObjectIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -60,7 +60,8 @@ public class AlarmNotificationListener {
      */
     private void onAlarmNotification(AlarmNotification notification) {
         List<Nodes> allNodeList = new ArrayList<>();
-        InstanceIdentifier<ServiceNodelist> serviceNodeListIID = InstanceIdentifier.create(ServiceNodelist.class);
+        DataObjectIdentifier<ServiceNodelist> serviceNodeListIID = DataObjectIdentifier.builder(ServiceNodelist.class)
+                .build();
         try (ReadTransaction rtx = dataBroker.newReadOnlyTransaction()) {
             Optional<ServiceNodelist> serviceListObject =
                     rtx.read(LogicalDatastoreType.OPERATIONAL, serviceNodeListIID).get();
diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener221.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener221.java
index d7336eb559..8119b08329 100644
--- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener221.java
+++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener221.java
@@ -34,7 +34,7 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev181019.resour
 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev181019.resource.resource.resource.Service;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev181019.resource.resource.resource.Shelf;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev181019.resource.resource.resource.Srg;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.binding.DataObjectIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -60,7 +60,8 @@ public class AlarmNotificationListener221 {
      */
     private void onAlarmNotification(AlarmNotification notification) {
         List<Nodes> allNodeList = new ArrayList<>();
-        InstanceIdentifier<ServiceNodelist> serviceNodeListIID = InstanceIdentifier.create(ServiceNodelist.class);
+        DataObjectIdentifier<ServiceNodelist> serviceNodeListIID = DataObjectIdentifier.builder(ServiceNodelist.class)
+                .build();
         try {
             ReadTransaction rtx = dataBroker.newReadOnlyTransaction();
             Optional<ServiceNodelist> serviceListObject =
diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener710.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener710.java
index e5328bd6e2..b2d49e14f2 100644
--- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener710.java
+++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/AlarmNotificationListener710.java
@@ -34,7 +34,7 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev200529.resour
 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev200529.resource.resource.resource.Service;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev200529.resource.resource.resource.Shelf;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev200529.resource.resource.resource.Srg;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.binding.DataObjectIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -61,7 +61,8 @@ public class AlarmNotificationListener710 {
      */
     private void onAlarmNotification(AlarmNotification notification) {
         List<Nodes> allNodeList = new ArrayList<>();
-        InstanceIdentifier<ServiceNodelist> serviceNodeListIID = InstanceIdentifier.create(ServiceNodelist.class);
+        DataObjectIdentifier<ServiceNodelist> serviceNodeListIID = DataObjectIdentifier.builder(ServiceNodelist.class)
+                .build();
         try {
             ReadTransaction rtx = dataBroker.newReadOnlyTransaction();
             Optional<ServiceNodelist> serviceListObject =
diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/DeviceListener121.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/DeviceListener121.java
index 4a7b253533..5edc92fb47 100644
--- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/DeviceListener121.java
+++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/DeviceListener121.java
@@ -8,8 +8,8 @@
 
 package org.opendaylight.transportpce.networkmodel.listeners;
 
-import java.util.List;
 import java.util.Set;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
 import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev240315.mapping.Mapping;
@@ -18,9 +18,8 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OtdrScan
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.change.notification.Edit;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.pack.Ports;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.packs.CircuitPacks;
-import org.opendaylight.yangtools.binding.DataObject;
-import org.opendaylight.yangtools.binding.DataObjectStep;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.binding.DataObjectIdentifier;
+import org.opendaylight.yangtools.binding.ExactDataObjectStep;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -59,13 +58,13 @@ public class DeviceListener121 {
                 continue;
             }
             // 1. Detect the org-openroadm-device object modified
-            InstanceIdentifier<DataObject> path = InstanceIdentifier.unsafeOf(
-                    (List<? extends DataObjectStep<?>>) edit.getTarget().steps());
+            DataObjectIdentifier<?> path = DataObjectIdentifier.ofUnsafeSteps(
+                    (Iterable<? extends @NonNull ExactDataObjectStep<?>>) edit.getTarget().steps());
             LOG.debug("Instance Identifier received = {} from node {}", path.toString(), nodeId);
             switch (path.lastStep().type().getSimpleName()) {
                 case "Ports":
-                    String portName = path.firstKeyOf(Ports.class).getPortName();
-                    String cpName = path.firstKeyOf(CircuitPacks.class).getCircuitPackName();
+                    String portName = path.toLegacy().firstKeyOf(Ports.class).getPortName();
+                    String cpName = path.toLegacy().firstKeyOf(CircuitPacks.class).getCircuitPackName();
                     LOG.info("port {} of circruit-pack {} modified on device {}", portName, cpName, this.nodeId);
                     Mapping oldMapping = portMapping.getMapping(nodeId, cpName, portName);
                     if (oldMapping == null) {
diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/DeviceListener221.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/DeviceListener221.java
index a77e5111eb..097e3c5e3b 100644
--- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/DeviceListener221.java
+++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/DeviceListener221.java
@@ -8,7 +8,6 @@
 
 package org.opendaylight.transportpce.networkmodel.listeners;
 
-import java.util.List;
 import java.util.Set;
 import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
 import org.opendaylight.transportpce.common.mapping.PortMapping;
@@ -20,9 +19,8 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.change.n
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.circuit.pack.Ports;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.circuit.packs.CircuitPacks;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.interfaces.grp.Interface;
-import org.opendaylight.yangtools.binding.DataObject;
-import org.opendaylight.yangtools.binding.DataObjectStep;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.binding.DataObjectIdentifier;
+import org.opendaylight.yangtools.binding.ExactDataObjectStep;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -63,13 +61,13 @@ public class DeviceListener221 {
                 continue;
             }
             // 1. Detect the org-openroadm-device object modified
-            InstanceIdentifier<DataObject> path = InstanceIdentifier.unsafeOf(
-                     (List<? extends DataObjectStep<?>>) edit.getTarget().steps());
+            DataObjectIdentifier<?> path = DataObjectIdentifier.ofUnsafeSteps(
+                     (Iterable<? extends ExactDataObjectStep<?>>) edit.getTarget().steps());
             LOG.debug("Instance Identifier received = {} from node {}", path.toString(), nodeId);
             switch (path.lastStep().type().getSimpleName()) {
                 case "Ports":
-                    String portName = path.firstKeyOf(Ports.class).getPortName();
-                    String cpName = path.firstKeyOf(CircuitPacks.class).getCircuitPackName();
+                    String portName = path.toLegacy().firstKeyOf(Ports.class).getPortName();
+                    String cpName = path.toLegacy().firstKeyOf(CircuitPacks.class).getCircuitPackName();
                     LOG.info("port {} of circruit-pack {} modified on device {}", portName, cpName, this.nodeId);
                     Mapping oldMapping = portMapping.getMapping(nodeId, cpName, portName);
                     if (oldMapping == null) {
@@ -87,7 +85,7 @@ public class DeviceListener221 {
                     thread.start();
                     break;
                 case "Interface":
-                    String interfaceName = path.firstKeyOf(Interface.class).getName();
+                    String interfaceName = path.toLegacy().firstKeyOf(Interface.class).getName();
                     LOG.info("interface {} modified on device {}", interfaceName, this.nodeId);
                     Mapping oldMapping2 = portMapping.getMappingFromOtsInterface(nodeId, interfaceName);
                     if (oldMapping2 == null) {
diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/DeviceListener710.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/DeviceListener710.java
index 96c8e797ab..4907018d82 100644
--- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/DeviceListener710.java
+++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/listeners/DeviceListener710.java
@@ -13,6 +13,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.api.NotificationService.CompositeListener;
 import org.opendaylight.transportpce.common.mapping.PortMapping;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev240315.mapping.Mapping;
@@ -25,10 +26,8 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.circuit.
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.org.openroadm.device.OduSwitchingPools;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.org.openroadm.device.odu.switching.pools.NonBlockingList;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.org.openroadm.device.container.org.openroadm.device.odu.switching.pools.non.blocking.list.PortList;
-import org.opendaylight.yangtools.binding.DataObject;
 import org.opendaylight.yangtools.binding.DataObjectIdentifier;
-import org.opendaylight.yangtools.binding.DataObjectStep;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.binding.ExactDataObjectStep;
 import org.opendaylight.yangtools.yang.common.Uint16;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -66,19 +65,19 @@ public class DeviceListener710 {
             return;
         }
         Map<Uint16, List<DataObjectIdentifier<PortList>>> nbliidMap = new HashMap<>();
-        InstanceIdentifier<OduSwitchingPools> ospIID = null;
+        DataObjectIdentifier<OduSwitchingPools> ospIID = null;
         for (Edit edit : notification.getEdit()) {
             if (edit.getTarget() == null) {
                 continue;
             }
             // 1. Detect the org-openroadm-device object modified
-            InstanceIdentifier<DataObject> path = InstanceIdentifier.unsafeOf(
-                    (List<? extends DataObjectStep<?>>) edit.getTarget().steps());
+            DataObjectIdentifier<?> path = DataObjectIdentifier.ofUnsafeSteps(
+                    (Iterable<? extends @NonNull ExactDataObjectStep<?>>) edit.getTarget().steps());
             LOG.debug("Instance Identifier received = {} from node {}", path.toString(), nodeId);
             switch (path.lastStep().type().getSimpleName()) {
                 case "Ports":
-                    String portName = path.firstKeyOf(Ports.class).getPortName();
-                    String cpName = path.firstKeyOf(CircuitPacks.class).getCircuitPackName();
+                    String portName = path.toLegacy().firstKeyOf(Ports.class).getPortName();
+                    String cpName = path.toLegacy().firstKeyOf(CircuitPacks.class).getCircuitPackName();
                     LOG.info("port {} of circruit-pack {} modified on device {}", portName, cpName, this.nodeId);
                     Mapping oldMapping = portMapping.getMapping(nodeId, cpName, portName);
                     if (oldMapping == null) {
@@ -97,14 +96,13 @@ public class DeviceListener710 {
                     break;
                 case "OduSwitchingPools":
                     LOG.info("odu-switching-pools modified on device {}", nodeId);
-                    ospIID = path.firstIdentifierOf(OduSwitchingPools.class);
+                    ospIID = path.toLegacy().firstIdentifierOf(OduSwitchingPools.class).toIdentifier();
                     break;
                 case "PortList":
-                    InstanceIdentifier<PortList> plIID = path.firstIdentifierOf(PortList.class);
-                    Uint16 nblNb = path.firstKeyOf(NonBlockingList.class).getNblNumber();
+                    Uint16 nblNb = path.toLegacy().firstKeyOf(NonBlockingList.class).getNblNumber();
                     List<DataObjectIdentifier<PortList>> iidList = nbliidMap.containsKey(nblNb)
                         ? nbliidMap.get(nblNb) : new ArrayList<>();
-                    iidList.add(plIID.toIdentifier());
+                    iidList.add(path.toLegacy().firstIdentifierOf(PortList.class).toIdentifier());
                     nbliidMap.put(nblNb, iidList);
                     break;
                 default:
diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/FrequenciesServiceImpl.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/FrequenciesServiceImpl.java
index e31331cd82..8aa148c9be 100644
--- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/FrequenciesServiceImpl.java
+++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/service/FrequenciesServiceImpl.java
@@ -60,7 +60,6 @@ import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdes
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ZToADirection;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.resource.resource.TerminationPoint;
 import org.opendaylight.yangtools.binding.DataObjectIdentifier;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.osgi.service.component.annotations.Activate;
@@ -177,7 +176,7 @@ public class FrequenciesServiceImpl implements FrequenciesService {
      */
     private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1
             getCommonNetworkNodeFromDatastore(String nodeId) {
-        InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1> nodeIID =
+        DataObjectIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1> nodeIID =
             OpenRoadmTopology.createCommonNetworkNodeIID(nodeId);
         try (ReadTransaction nodeReadTx = this.dataBroker.newReadOnlyTransaction()) {
             Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1> optionalNode =
@@ -249,8 +248,8 @@ public class FrequenciesServiceImpl implements FrequenciesService {
      */
     private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1
             getCommonNetworkTerminationPointFromDatastore(String nodeId, String tpId) {
-        InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1>
-            tpIID = OpenRoadmTopology.createCommonNetworkTerminationPointIIDBuilder(nodeId, tpId).build();
+        DataObjectIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1>
+            tpIID = OpenRoadmTopology.createCommonNetworkTerminationPointIIDBuilder(nodeId, tpId);
         try (ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction()) {
             Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1>
                 optionalTerminationPoint = readTx
diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology.java
index 4e67b4cbdf..ccdfa65cbd 100644
--- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology.java
+++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmTopology.java
@@ -71,7 +71,6 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointKey;
 import org.opendaylight.yangtools.binding.DataObjectIdentifier;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.common.Uint16;
 import org.slf4j.Logger;
@@ -590,9 +589,10 @@ public final class OpenRoadmTopology {
      * @param tpId String
      * @return InstanceIdentifierBuilder
      */
-    public static InstanceIdentifier.Builder<org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526
+    public static DataObjectIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526
             .TerminationPoint1> createCommonNetworkTerminationPointIIDBuilder(String nodeId, String tpId) {
-        return InstanceIdentifier.builder(Networks.class)
+        return DataObjectIdentifier
+                .builder(Networks.class)
                 .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
                 .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226
                         .networks.network.Node.class,
@@ -603,7 +603,8 @@ public final class OpenRoadmTopology {
                         .networks.network.node.TerminationPoint.class,
                     new TerminationPointKey(new TpId(tpId)))
                 .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526
-                        .TerminationPoint1.class);
+                        .TerminationPoint1.class)
+                .build();
     }
 
     /**
@@ -626,9 +627,9 @@ public final class OpenRoadmTopology {
      * @param nodeId String
      * @return InstanceIdentifier
      */
-    public static InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526
+    public static DataObjectIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526
             .Node1> createCommonNetworkNodeIID(String nodeId) {
-        return InstanceIdentifier.builder(Networks.class)
+        return DataObjectIdentifier.builder(Networks.class)
                 .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)))
                 .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226
                         .networks.network.Node.class,
diff --git a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/TpceNetworkTest.java b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/TpceNetworkTest.java
index 50ba2adba8..c97790ea02 100644
--- a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/TpceNetworkTest.java
+++ b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/TpceNetworkTest.java
@@ -27,7 +27,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.NetworkKey;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NetworkTypes;
 import org.opendaylight.yangtools.binding.Augmentation;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.binding.DataObjectIdentifier;
 
 public class TpceNetworkTest extends AbstractTest {
     TpceNetwork tpceNetwork = new TpceNetwork(new NetworkTransactionImpl(getDataBroker()));
@@ -35,8 +35,9 @@ public class TpceNetworkTest extends AbstractTest {
     @Test
     void createLayerClliTest() throws InterruptedException, ExecutionException {
         tpceNetwork.createLayer("clli-network");
-        InstanceIdentifier<Network> nwIID = InstanceIdentifier.create(Networks.class)
-            .child(Network.class, new NetworkKey(new NetworkId("clli-network")));
+        DataObjectIdentifier<Network> nwIID = DataObjectIdentifier.builder(Networks.class)
+            .child(Network.class, new NetworkKey(new NetworkId("clli-network")))
+            .build();
         Network createdClli = getDataBroker().newReadOnlyTransaction()
             .read(LogicalDatastoreType.CONFIGURATION, nwIID).get().orElseThrow();
         assertNotNull(createdClli, "Clli layer should be created and not null");
@@ -53,8 +54,9 @@ public class TpceNetworkTest extends AbstractTest {
     @Test
     void createLayerNetworkTest() throws InterruptedException, ExecutionException {
         tpceNetwork.createLayer("openroadm-network");
-        InstanceIdentifier<Network> nwIID = InstanceIdentifier.create(Networks.class)
-            .child(Network.class, new NetworkKey(new NetworkId("openroadm-network")));
+        DataObjectIdentifier<Network> nwIID = DataObjectIdentifier.builder(Networks.class)
+            .child(Network.class, new NetworkKey(new NetworkId("openroadm-network")))
+            .build();
         Network createdOrdNetwork = getDataBroker().newReadOnlyTransaction()
             .read(LogicalDatastoreType.CONFIGURATION, nwIID).get().orElseThrow();
         assertNotNull(createdOrdNetwork, "openroadm-network layer should be created and not null");
@@ -64,8 +66,9 @@ public class TpceNetworkTest extends AbstractTest {
     @Test
     void createLayerTopologyTest() throws InterruptedException, ExecutionException {
         tpceNetwork.createLayer("openroadm-topology");
-        InstanceIdentifier<Network> nwIID = InstanceIdentifier.create(Networks.class)
-            .child(Network.class, new NetworkKey(new NetworkId("openroadm-topology")));
+        DataObjectIdentifier<Network> nwIID = DataObjectIdentifier.builder(Networks.class)
+            .child(Network.class, new NetworkKey(new NetworkId("openroadm-topology")))
+            .build();
         Network createdOrdNetwork = getDataBroker().newReadOnlyTransaction()
             .read(LogicalDatastoreType.CONFIGURATION, nwIID).get().orElseThrow();
         assertNotNull(createdOrdNetwork, "openroadm-logpology layer should be created and not null");
@@ -75,8 +78,9 @@ public class TpceNetworkTest extends AbstractTest {
     @Test
     void createLayerOtnTest() throws InterruptedException, ExecutionException {
         tpceNetwork.createLayer("otn-topology");
-        InstanceIdentifier<Network> nwIID = InstanceIdentifier.create(Networks.class)
-            .child(Network.class, new NetworkKey(new NetworkId("otn-topology")));
+        DataObjectIdentifier<Network> nwIID = DataObjectIdentifier.builder(Networks.class)
+            .child(Network.class, new NetworkKey(new NetworkId("otn-topology")))
+            .build();
         Network createdOrdNetwork = getDataBroker().newReadOnlyTransaction()
             .read(LogicalDatastoreType.CONFIGURATION, nwIID).get().orElseThrow();
         assertNotNull(createdOrdNetwork, "otn-logpology layer should be created and not null");
@@ -86,8 +90,9 @@ public class TpceNetworkTest extends AbstractTest {
     @Test
     void createBadLayerTest() throws InterruptedException, ExecutionException {
         tpceNetwork.createLayer("toto");
-        InstanceIdentifier<Network> nwIID = InstanceIdentifier.create(Networks.class)
-            .child(Network.class, new NetworkKey(new NetworkId("toto")));
+        DataObjectIdentifier<Network> nwIID = DataObjectIdentifier.builder(Networks.class)
+            .child(Network.class, new NetworkKey(new NetworkId("toto")))
+            .build();
         Network createdOrdNetwork = getDataBroker().newReadOnlyTransaction()
             .read(LogicalDatastoreType.CONFIGURATION, nwIID).get().orElseThrow();
         assertNotNull(createdOrdNetwork, "toto layer should be created and not null");
-- 
2.36.6