Update TAPI YANG files to v2.1(v20181016)

* Replaced TAPI yang files with latest master(v2.1)
* Updated ModelRegistrator
* Updated library path for auto generated library
* Updated ODTN Phase1.0 impl
* Added TAPI XML conversion test for ODTN Phase1.0
* Added sample JSON for ODTN Phase1.0

Change-Id: I11eeab2423a1468df3ee515d40f31b82ed96aa3c
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/DcsBasedTapiObjectRefFactory.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/DcsBasedTapiObjectRefFactory.java
index e1d1889..166e8e3 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/DcsBasedTapiObjectRefFactory.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/DcsBasedTapiObjectRefFactory.java
@@ -16,10 +16,10 @@
 
 package org.onosproject.odtn.utils.tapi;
 
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connection.ConnectionEndPoint;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.node.OwnedNodeEdgePoint;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topology.Node;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.Topology;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connection.ConnectionEndPoint;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.node.OwnedNodeEdgePoint;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topology.Node;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topologycontext.Topology;
 
 /**
  * Util class to create TapiXXXRef class instances using classes auto-generated by onos-yang-tool compiler.
@@ -59,8 +59,8 @@
      * @return cep reference instance
      */
     public static TapiCepRef create(ConnectionEndPoint cep) {
-        return TapiCepRef.create(cep.topologyId().toString(), cep.nodeId().toString(),
-                cep.ownedNodeEdgePointId().toString(), cep.connectionEndPointId().toString());
+        return TapiCepRef.create(cep.topologyUuid().toString(), cep.nodeUuid().toString(),
+                                 cep.nodeEdgePointUuid().toString(), cep.connectionEndPointUuid().toString());
     }
 
 }
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiCepHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiCepHandler.java
index b49de0c..9bc872f 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiCepHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiCepHandler.java
@@ -16,16 +16,17 @@
 
 package org.onosproject.odtn.utils.tapi;
 
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.ceplist.DefaultConnectionEndPoint;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectionendpoint.DefaultParentNodeEdgePoint;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.node.DefaultOwnedNodeEdgePoint;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.node.OwnedNodeEdgePointKeys;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topology.DefaultNode;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topology.NodeKeys;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.DefaultTopology;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.TopologyKeys;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.ceplist.DefaultConnectionEndPoint;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectionendpoint.DefaultParentNodeEdgePoint;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.context.augmentedtapicommoncontext.DefaultTopologyContext;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.node.DefaultOwnedNodeEdgePoint;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.node.OwnedNodeEdgePointKeys;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topology.DefaultNode;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topology.NodeKeys;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topologycontext.DefaultTopology;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topologycontext.TopologyKeys;
 import org.onosproject.yang.model.ModelObjectId;
 
 import static com.google.common.base.Preconditions.checkNotNull;
@@ -77,6 +78,7 @@
 
         return ModelObjectId.builder()
                 .addChild(DefaultContext.class)
+                .addChild(DefaultTopologyContext.class)
                 .addChild(DefaultTopology.class, topologyKey)
                 .addChild(DefaultNode.class, nodeKey)
                 .addChild(DefaultOwnedNodeEdgePoint.class, nepKey)
@@ -104,10 +106,10 @@
         checkNotNull(nepUuid);
 
         DefaultParentNodeEdgePoint parentNep = new DefaultParentNodeEdgePoint();
-        parentNep.topologyId(topologyUuid);
-        parentNep.nodeId(nodeUuid);
-        parentNep.ownedNodeEdgePointId(nepUuid);
-        obj.addToParentNodeEdgePoint(parentNep);
+        parentNep.topologyUuid(topologyUuid);
+        parentNep.nodeUuid(nodeUuid);
+        parentNep.nodeEdgePointUuid(nepUuid);
+        obj.parentNodeEdgePoint(parentNep);
 
         return this;
     }
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiCepRefHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiCepRefHandler.java
index 38acd75..266ea1a 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiCepRefHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiCepRefHandler.java
@@ -16,10 +16,10 @@
 
 package org.onosproject.odtn.utils.tapi;
 
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.ceplist.ConnectionEndPoint;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connection.DefaultConnectionEndPoint;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectionendpoint.ParentNodeEdgePoint;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.ceplist.ConnectionEndPoint;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connection.DefaultConnectionEndPoint;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectionendpoint.ParentNodeEdgePoint;
 import org.onosproject.yang.model.ModelObjectId;
 
 /**
@@ -37,7 +37,7 @@
 
     @Override
     protected Uuid getIdDetail() {
-        return (Uuid) obj.connectionEndPointId();
+        return (Uuid) obj.connectionEndPointUuid();
     }
 
     @Override
@@ -49,19 +49,19 @@
     }
 
     public TapiCepRefHandler setCep(TapiCepRef cepRef) {
-        obj.topologyId(cepRef.getTopologyId());
-        obj.nodeId(cepRef.getNodeId());
-        obj.ownedNodeEdgePointId(cepRef.getNepId());
-        obj.connectionEndPointId(cepRef.getCepId());
+        obj.topologyUuid(cepRef.getTopologyId());
+        obj.nodeUuid(cepRef.getNodeId());
+        obj.nodeEdgePointUuid(cepRef.getNepId());
+        obj.connectionEndPointUuid(cepRef.getCepId());
         return this;
     }
 
     public TapiCepRefHandler setCep(ConnectionEndPoint cep) {
-        obj.connectionEndPointId(cep.uuid());
-        ParentNodeEdgePoint parentNep = cep.parentNodeEdgePoint().get(0);
-        obj.topologyId(parentNep.topologyId());
-        obj.nodeId(parentNep.nodeId());
-        obj.ownedNodeEdgePointId(parentNep.ownedNodeEdgePointId());
+        obj.connectionEndPointUuid(cep.uuid());
+        ParentNodeEdgePoint parentNep = cep.parentNodeEdgePoint();
+        obj.topologyUuid(parentNep.topologyUuid());
+        obj.nodeUuid(parentNep.nodeUuid());
+        obj.nodeEdgePointUuid(parentNep.nodeEdgePointUuid());
         return this;
     }
 }
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiConnectionHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiConnectionHandler.java
index 6e3b729..044e2c7 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiConnectionHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiConnectionHandler.java
@@ -19,15 +19,16 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connection.ConnectionEndPoint;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connection.DefaultConnectionEndPoint;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connection.DefaultLowerConnection;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connection.DefaultRoute;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connection.LowerConnection;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectivitycontext.ConnectionKeys;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectivitycontext.DefaultConnection;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connection.ConnectionEndPoint;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connection.DefaultConnectionEndPoint;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connection.DefaultLowerConnection;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connection.DefaultRoute;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connection.LowerConnection;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.ConnectionKeys;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.DefaultConnection;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.context.augmentedtapicommoncontext.DefaultConnectivityContext;
 import org.onosproject.yang.model.DefaultModelObjectData;
 import org.onosproject.yang.model.ModelObjectData;
 import org.onosproject.yang.model.ModelObjectId;
@@ -61,7 +62,10 @@
 
     @Override
     public ModelObjectId getParentModelObjectId() {
-        return ModelObjectId.builder().addChild(DefaultContext.class).build();
+        return ModelObjectId.builder()
+                .addChild(DefaultContext.class)
+                .addChild(DefaultConnectivityContext.class)
+                .build();
     }
 
     @Override
@@ -74,6 +78,7 @@
 
         ModelObjectId mId = ModelObjectId.builder()
                 .addChild(DefaultContext.class)
+                .addChild(DefaultConnectivityContext.class)
                 .addChild(DefaultConnection.class, key)
                 .build();
 
@@ -90,7 +95,7 @@
 
     public TapiConnectionHandler addLowerConnection(DefaultConnection connection) {
         DefaultLowerConnection lowerConnection = new DefaultLowerConnection();
-        lowerConnection.connectionId(connection.uuid());
+        lowerConnection.connectionUuid(connection.uuid());
         obj.addToLowerConnection(lowerConnection);
         return this;
     }
@@ -108,7 +113,7 @@
 
         try {
             return obj.lowerConnection().stream()
-                    .map(LowerConnection::connectionId)
+                    .map(LowerConnection::connectionUuid)
                     .map(id -> {
                         TapiConnectionHandler handler = new TapiConnectionHandler();
                         handler.setId(Uuid.fromString(id.toString()));
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiConnectivityContextHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiConnectivityContextHandler.java
new file mode 100644
index 0000000..a1084e9
--- /dev/null
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiConnectivityContextHandler.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * 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.
+ */
+
+package org.onosproject.odtn.utils.tapi;
+
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.context.DefaultAugmentedTapiCommonContext;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.context.augmentedtapicommoncontext.DefaultConnectivityContext;
+import org.onosproject.yang.model.ModelObjectId;
+
+/**
+ * Utility class to deal with TAPI Augmented Connectivity Context with DCS.
+ */
+public final class TapiConnectivityContextHandler extends TapiObjectHandler<DefaultConnectivityContext> {
+
+    private TapiConnectivityContextHandler() {
+        obj = new DefaultConnectivityContext();
+    }
+
+    public static TapiConnectivityContextHandler create() {
+        return new TapiConnectivityContextHandler();
+    }
+
+    @Override
+    protected Uuid getIdDetail() {
+        // The target yang object of this class is container, so no need to handle Id.
+        return null;
+    }
+
+    @Override
+    protected void setIdDetail(Uuid uuid) {
+        // The target yang object of this class is container, so no need to handle Id.
+    }
+
+    @Override
+    public ModelObjectId getParentModelObjectId() {
+        DefaultAugmentedTapiCommonContext context = new DefaultAugmentedTapiCommonContext();
+        context.connectivityContext(obj);
+
+        return ModelObjectId.builder()
+                .addChild(DefaultContext.class).build();
+    }
+}
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiConnectivityServiceHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiConnectivityServiceHandler.java
index 89ac48e..c32558c 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiConnectivityServiceHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiConnectivityServiceHandler.java
@@ -16,12 +16,13 @@
 
 package org.onosproject.odtn.utils.tapi;
 
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectivitycontext.ConnectivityServiceKeys;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectivitycontext.DefaultConnectivityService;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectivityservice.DefaultConnection;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectivityservice.EndPoint;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.ConnectivityServiceKeys;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.DefaultConnectivityService;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivityservice.DefaultConnection;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivityservice.EndPoint;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.context.augmentedtapicommoncontext.DefaultConnectivityContext;
 import org.onosproject.yang.model.DefaultModelObjectData;
 import org.onosproject.yang.model.ModelObjectData;
 import org.onosproject.yang.model.ModelObjectId;
@@ -55,7 +56,10 @@
 
     @Override
     public ModelObjectId getParentModelObjectId() {
-        return ModelObjectId.builder().addChild(DefaultContext.class).build();
+        return ModelObjectId.builder()
+                .addChild(DefaultContext.class)
+                .addChild(DefaultConnectivityContext.class)
+                .build();
     }
 
     @Override
@@ -68,6 +72,7 @@
 
         ModelObjectId mId = ModelObjectId.builder()
                 .addChild(DefaultContext.class)
+                .addChild(DefaultConnectivityContext.class)
                 .addChild(DefaultConnectivityService.class, key)
                 .build();
 
@@ -84,7 +89,7 @@
 
     public TapiConnectivityServiceHandler addConnection(Uuid connectionUuid) {
         DefaultConnection connection = new DefaultConnection();
-        connection.connectionId(connectionUuid.toString());
+        connection.connectionUuid(connectionUuid.toString());
         obj.addToConnection(connection);
         return this;
     }
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiContextHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiContextHandler.java
index ff8e24d..68e3978 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiContextHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiContextHandler.java
@@ -19,11 +19,11 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectivitycontext.DefaultConnectivityService;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.context.DefaultAugmentedTapiCommonContext;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.DefaultTopology;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.DefaultConnectivityService;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.context.DefaultAugmentedTapiCommonContext;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topologycontext.DefaultTopology;
 import org.onosproject.yang.model.DefaultModelObjectData;
 import org.onosproject.yang.model.ModelObjectData;
 import org.onosproject.yang.model.ModelObjectId;
@@ -43,11 +43,13 @@
 
     @Override
     protected Uuid getIdDetail() {
+        // The target yang object of this class is container, so no need to handle Id.
         return null;
     }
 
     @Override
     protected void setIdDetail(Uuid uuid) {
+        // The target yang object of this class is container, so no need to handle Id.
     }
 
     @Override
@@ -74,7 +76,7 @@
 
         DefaultAugmentedTapiCommonContext augmentedContext = obj.augmentation(DefaultAugmentedTapiCommonContext.class);
         try {
-            return augmentedContext.connectivityService().stream()
+            return augmentedContext.connectivityContext().connectivityService().stream()
                     .map(connectivityService -> {
                         TapiConnectivityServiceHandler handler = TapiConnectivityServiceHandler.create();
                         handler.setModelObject((DefaultConnectivityService) connectivityService);
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiCreateConnectivityInputHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiCreateConnectivityInputHandler.java
index 1a182b8..e58de7d 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiCreateConnectivityInputHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiCreateConnectivityInputHandler.java
@@ -19,9 +19,9 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.createconnectivityservice.CreateConnectivityServiceInput;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.createconnectivityservice.DefaultCreateConnectivityServiceInput;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.createconnectivityservice.createconnectivityserviceinput.EndPoint;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.createconnectivityservice.CreateConnectivityServiceInput;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.createconnectivityservice.DefaultCreateConnectivityServiceInput;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.createconnectivityservice.createconnectivityserviceinput.EndPoint;
 
 /**
  * Utility class to deal with TAPI RPC input with DCS.
@@ -39,7 +39,7 @@
 
     public List<String> getSips() {
         return getEndPoints().stream()
-                .map(ep -> ep.serviceInterfacePoint().serviceInterfacePointId().toString())
+                .map(ep -> ep.serviceInterfacePoint().serviceInterfacePointUuid().toString())
                 .collect(Collectors.toList());
     }
 
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiCreateConnectivityOutputHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiCreateConnectivityOutputHandler.java
index f503072..beb92b2 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiCreateConnectivityOutputHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiCreateConnectivityOutputHandler.java
@@ -16,9 +16,9 @@
 
 package org.onosproject.odtn.utils.tapi;
 
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectivitycontext.ConnectivityService;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.createconnectivityservice.DefaultCreateConnectivityServiceOutput;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.createconnectivityservice.createconnectivityserviceoutput.DefaultService;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.ConnectivityService;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.createconnectivityservice.DefaultCreateConnectivityServiceOutput;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.createconnectivityservice.createconnectivityserviceoutput.DefaultService;
 
 /**
  * Utility class to deal with TAPI RPC output with DCS.
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiDeleteConnectivityInputHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiDeleteConnectivityInputHandler.java
index 75d854e..256dea0 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiDeleteConnectivityInputHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiDeleteConnectivityInputHandler.java
@@ -17,8 +17,8 @@
 package org.onosproject.odtn.utils.tapi;
 
 import java.util.UUID;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.deleteconnectivityservice.DefaultDeleteConnectivityServiceInput;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.deleteconnectivityservice.DefaultDeleteConnectivityServiceInput;
 
 /**
  * Utility class to deal with TAPI RPC input with DCS.
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiDeleteConnectivityOutputHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiDeleteConnectivityOutputHandler.java
deleted file mode 100644
index 34186a4..0000000
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiDeleteConnectivityOutputHandler.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2018-present Open Networking Foundation
- *
- * 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.
- */
-
-package org.onosproject.odtn.utils.tapi;
-
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectivitycontext.ConnectivityService;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.deleteconnectivityservice.DefaultDeleteConnectivityServiceOutput;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.deleteconnectivityservice.deleteconnectivityserviceoutput.DefaultService;
-
-/**
- * Utility class to deal with TAPI RPC output with DCS.
- */
-public final class TapiDeleteConnectivityOutputHandler
-        extends TapiRpcOutputHandler<DefaultDeleteConnectivityServiceOutput> {
-
-    private TapiDeleteConnectivityOutputHandler() {
-        obj = new DefaultDeleteConnectivityServiceOutput();
-    }
-
-    public static TapiDeleteConnectivityOutputHandler create() {
-        return new TapiDeleteConnectivityOutputHandler();
-    }
-
-    public TapiDeleteConnectivityOutputHandler addService(ConnectivityService res) {
-        log.info("Output service: {}", res);
-        DefaultService rpcOutputService = new DefaultService();
-        rpcOutputService.uuid(res.uuid());
-        obj.service(rpcOutputService);
-        return this;
-    }
-
-}
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGetConnectivityDetailsInputHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGetConnectivityDetailsInputHandler.java
index ca01812..3af0594 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGetConnectivityDetailsInputHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGetConnectivityDetailsInputHandler.java
@@ -17,8 +17,8 @@
 package org.onosproject.odtn.utils.tapi;
 
 import java.util.UUID;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.getconnectivityservicedetails.DefaultGetConnectivityServiceDetailsInput;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.getconnectivityservicedetails.DefaultGetConnectivityServiceDetailsInput;
 
 /**
  * Utility class to deal with TAPI RPC input with DCS.
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGetConnectivityDetailsOutputHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGetConnectivityDetailsOutputHandler.java
index 1d7b02d..1495b41 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGetConnectivityDetailsOutputHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGetConnectivityDetailsOutputHandler.java
@@ -16,9 +16,9 @@
 
 package org.onosproject.odtn.utils.tapi;
 
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectivitycontext.ConnectivityService;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.getconnectivityservicedetails.DefaultGetConnectivityServiceDetailsOutput;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.getconnectivityservicedetails.getconnectivityservicedetailsoutput.DefaultService;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.ConnectivityService;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.getconnectivityservicedetails.DefaultGetConnectivityServiceDetailsOutput;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.getconnectivityservicedetails.getconnectivityservicedetailsoutput.DefaultService;
 
 /**
  * Utility class to deal with TAPI RPC output with DCS.
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGetConnectivityListOutputHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGetConnectivityListOutputHandler.java
index 99bc678..19b8a33 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGetConnectivityListOutputHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGetConnectivityListOutputHandler.java
@@ -16,9 +16,9 @@
 
 package org.onosproject.odtn.utils.tapi;
 
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectivitycontext.ConnectivityService;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.getconnectivityservicelist.DefaultGetConnectivityServiceListOutput;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.getconnectivityservicelist.getconnectivityservicelistoutput.DefaultService;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.ConnectivityService;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.getconnectivityservicelist.DefaultGetConnectivityServiceListOutput;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.getconnectivityservicelist.getconnectivityservicelistoutput.DefaultService;
 
 /**
  * Utility class to deal with TAPI RPC output with DCS.
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGetSipListOutputHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGetSipListOutputHandler.java
index 95143d6..8c9f8e5 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGetSipListOutputHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGetSipListOutputHandler.java
@@ -16,10 +16,10 @@
 
 package org.onosproject.odtn.utils.tapi;
 
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.getserviceinterfacepointlist.DefaultGetServiceInterfacePointListOutput;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.getserviceinterfacepointlist.getserviceinterfacepointlistoutput.DefaultSip;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.getserviceinterfacepointlist.getserviceinterfacepointlistoutput.Sip;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.getserviceinterfacepointlist.DefaultGetServiceInterfacePointListOutput;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.getserviceinterfacepointlist.getserviceinterfacepointlistoutput.DefaultSip;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.getserviceinterfacepointlist.getserviceinterfacepointlistoutput.Sip;
 
 /**
  * Utility class to deal with TAPI RPC output with DCS.
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGlobalClassUtil.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGlobalClassUtil.java
index 016ea2c..ce5e7b5 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGlobalClassUtil.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiGlobalClassUtil.java
@@ -16,9 +16,9 @@
 
 package org.onosproject.odtn.utils.tapi;
 
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.globalclass.DefaultName;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.globalclass.Name;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.globalclass.DefaultName;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.globalclass.Name;
 import org.onosproject.yang.model.ModelObject;
 
 import java.lang.reflect.InvocationTargetException;
@@ -128,4 +128,4 @@
             log.error("Exception thrown", e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiLinkHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiLinkHandler.java
index 2af1cb1..88cb480 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiLinkHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiLinkHandler.java
@@ -16,12 +16,13 @@
 
 package org.onosproject.odtn.utils.tapi;
 
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.link.DefaultNodeEdgePoint;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topology.DefaultLink;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.DefaultTopology;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.TopologyKeys;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.context.augmentedtapicommoncontext.DefaultTopologyContext;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.link.DefaultNodeEdgePoint;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topology.DefaultLink;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topologycontext.DefaultTopology;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topologycontext.TopologyKeys;
 import org.onosproject.yang.model.ModelObjectId;
 
 import static com.google.common.base.Preconditions.checkNotNull;
@@ -62,6 +63,7 @@
         topologyKey.uuid(topologyUuid);
         return ModelObjectId.builder()
                 .addChild(DefaultContext.class)
+                .addChild(DefaultTopologyContext.class)
                 .addChild(DefaultTopology.class, topologyKey)
                 .build();
     }
@@ -73,9 +75,9 @@
 
     public TapiLinkHandler addNep(TapiNepRef nepRef) {
         DefaultNodeEdgePoint nep = new DefaultNodeEdgePoint();
-        nep.topologyId(nepRef.getTopologyId());
-        nep.nodeId(nepRef.getNodeId());
-        nep.ownedNodeEdgePointId(nepRef.getNepId());
+        nep.topologyUuid(nepRef.getTopologyId());
+        nep.nodeUuid(nepRef.getNodeId());
+        nep.nodeEdgePointUuid(nepRef.getNepId());
         obj.addToNodeEdgePoint(nep);
         return this;
     }
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiLocalClassUtil.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiLocalClassUtil.java
index 7ff0a2b..4a95eeb 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiLocalClassUtil.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiLocalClassUtil.java
@@ -20,8 +20,8 @@
 import java.lang.reflect.Method;
 import java.util.Map;
 import java.util.Map.Entry;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.globalclass.DefaultName;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.globalclass.Name;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.globalclass.DefaultName;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.globalclass.Name;
 import org.onosproject.yang.model.ModelObject;
 import org.slf4j.Logger;
 
@@ -125,4 +125,4 @@
             log.error("Exception thrown", e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiNepHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiNepHandler.java
index 2934b3e..32f7091 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiNepHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiNepHandler.java
@@ -26,18 +26,20 @@
 import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setUuid;
 
 import org.onosproject.net.Port;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
 
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.ceplist.DefaultConnectionEndPoint;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.ceplist.DefaultConnectionEndPoint;
 
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.context.topology.node.ownednodeedgepoint.DefaultAugmentedTapiTopologyOwnedNodeEdgePoint;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.node.DefaultOwnedNodeEdgePoint;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.nodeedgepoint.DefaultMappedServiceInterfacePoint;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topology.DefaultNode;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topology.NodeKeys;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.DefaultTopology;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.TopologyKeys;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.context.topologycontext.topology.node.ownednodeedgepoint.DefaultAugmentedTapiTopologyOwnedNodeEdgePoint;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.context.topologycontext.topology.node.ownednodeedgepoint.augmentedtapitopologyownednodeedgepoint.DefaultCepList;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.context.augmentedtapicommoncontext.DefaultTopologyContext;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.node.DefaultOwnedNodeEdgePoint;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.nodeedgepoint.DefaultMappedServiceInterfacePoint;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topology.DefaultNode;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topology.NodeKeys;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topologycontext.DefaultTopology;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topologycontext.TopologyKeys;
 import org.onosproject.yang.model.ModelObjectId;
 
 /**
@@ -80,6 +82,7 @@
 
         return ModelObjectId.builder()
                 .addChild(DefaultContext.class)
+                .addChild(DefaultTopologyContext.class)
                 .addChild(DefaultTopology.class, topologyKey)
                 .addChild(DefaultNode.class, nodeKey)
                 .build();
@@ -111,16 +114,21 @@
 
     public TapiNepHandler addSip(Uuid sipUuid) {
         DefaultMappedServiceInterfacePoint mappedSip = new DefaultMappedServiceInterfacePoint();
-        mappedSip.serviceInterfacePointId(sipUuid);
+        mappedSip.serviceInterfacePointUuid(sipUuid);
         obj.addToMappedServiceInterfacePoint(mappedSip);
         return this;
     }
 
     public TapiNepHandler addCep(DefaultConnectionEndPoint cep) {
+
+        DefaultCepList cepList = new DefaultCepList();
+        cepList.addToConnectionEndPoint(cep);
+
         DefaultAugmentedTapiTopologyOwnedNodeEdgePoint augmentNep =
                 new DefaultAugmentedTapiTopologyOwnedNodeEdgePoint();
-        augmentNep.addToConnectionEndPoint(cep);
+        augmentNep.cepList(cepList);
         obj.addAugmentation(augmentNep);
+
         return this;
     }
 
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiNodeHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiNodeHandler.java
index 1d897ad..9928f14 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiNodeHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiNodeHandler.java
@@ -25,12 +25,13 @@
 import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setUuid;
 
 import org.onosproject.net.DeviceId;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.node.OwnedNodeEdgePoint;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topology.DefaultNode;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.DefaultTopology;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.TopologyKeys;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.context.augmentedtapicommoncontext.DefaultTopologyContext;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.node.OwnedNodeEdgePoint;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topology.DefaultNode;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topologycontext.DefaultTopology;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topologycontext.TopologyKeys;
 import org.onosproject.yang.model.ModelObjectId;
 
 /**
@@ -67,6 +68,7 @@
         topologyKey.uuid(topologyUuid);
         return ModelObjectId.builder()
                 .addChild(DefaultContext.class)
+                .addChild(DefaultTopologyContext.class)
                 .addChild(DefaultTopology.class, topologyKey)
                 .build();
     }
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiNodeRef.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiNodeRef.java
index 71cd256..465cd34 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiNodeRef.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiNodeRef.java
@@ -112,4 +112,4 @@
     }
 
 
-}
\ No newline at end of file
+}
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiObjectHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiObjectHandler.java
index 4acaf47..040982f 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiObjectHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiObjectHandler.java
@@ -23,7 +23,7 @@
 import org.onosproject.config.DynamicConfigService;
 import org.onosproject.config.FailedException;
 import org.onosproject.config.Filter;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
 import org.onosproject.yang.model.DataNode;
 import org.onosproject.yang.model.DefaultModelObjectData;
 import org.onosproject.yang.model.DefaultResourceData;
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiRouteHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiRouteHandler.java
index 7482979..3d7c964 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiRouteHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiRouteHandler.java
@@ -16,13 +16,14 @@
 
 package org.onosproject.odtn.utils.tapi;
 
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connection.DefaultRoute;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectivitycontext.ConnectionKeys;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectivitycontext.DefaultConnection;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.route.ConnectionEndPoint;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.route.DefaultConnectionEndPoint;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connection.DefaultRoute;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.ConnectionKeys;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.DefaultConnection;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.context.augmentedtapicommoncontext.DefaultConnectivityContext;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.route.ConnectionEndPoint;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.route.DefaultConnectionEndPoint;
 import org.onosproject.yang.model.ModelObjectId;
 
 import static org.onosproject.odtn.utils.tapi.TapiLocalClassUtil.getLocalId;
@@ -61,16 +62,17 @@
 
         return ModelObjectId.builder()
                 .addChild(DefaultContext.class)
+                .addChild(DefaultConnectivityContext.class)
                 .addChild(DefaultConnection.class, connectionKeys)
                 .build();
     }
 
     public TapiRouteHandler addCep(TapiCepRef cepRef) {
         DefaultConnectionEndPoint cep = new DefaultConnectionEndPoint();
-        cep.topologyId(cepRef.getTopologyId());
-        cep.nodeId(cepRef.getNodeId());
-        cep.ownedNodeEdgePointId(cepRef.getNepId());
-        cep.connectionEndPointId(cepRef.getCepId());
+        cep.topologyUuid(cepRef.getTopologyId());
+        cep.nodeUuid(cepRef.getNodeId());
+        cep.nodeEdgePointUuid(cepRef.getNepId());
+        cep.connectionEndPointUuid(cepRef.getCepId());
 
         obj.addToConnectionEndPoint(cep);
         return this;
@@ -78,14 +80,14 @@
 
     public TapiCepRef getRouteStart() {
         ConnectionEndPoint cep = obj.connectionEndPoint().get(0);
-        return TapiCepRef.create(cep.topologyId().toString(), cep.nodeId().toString(),
-                cep.ownedNodeEdgePointId().toString(), cep.connectionEndPointId().toString());
+        return TapiCepRef.create(cep.topologyUuid().toString(), cep.nodeUuid().toString(),
+                cep.nodeEdgePointUuid().toString(), cep.connectionEndPointUuid().toString());
     }
 
     public TapiCepRef getRouteEnd() {
         ConnectionEndPoint cep = obj.connectionEndPoint().get(obj.connectionEndPoint().size() - 1);
-        return TapiCepRef.create(cep.topologyId().toString(), cep.nodeId().toString(),
-                cep.ownedNodeEdgePointId().toString(), cep.connectionEndPointId().toString());
+        return TapiCepRef.create(cep.topologyUuid().toString(), cep.nodeUuid().toString(),
+                cep.nodeEdgePointUuid().toString(), cep.connectionEndPointUuid().toString());
     }
 
     public TapiRouteHandler setConnectionId(Uuid connectionId) {
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiRpcInputHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiRpcInputHandler.java
index 9112f34..d034f3e 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiRpcInputHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiRpcInputHandler.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.odtn.utils.tapi;
 
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
 import org.onosproject.yang.model.ModelObject;
 import org.onosproject.yang.model.ModelObjectId;
 import org.onosproject.yang.model.RpcInput;
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiRpcOutputHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiRpcOutputHandler.java
index aa2c890..aaf48aa 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiRpcOutputHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiRpcOutputHandler.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.odtn.utils.tapi;
 
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
 import org.onosproject.yang.model.ModelObject;
 import org.onosproject.yang.model.ModelObjectId;
 
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiSepHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiSepHandler.java
index 35e01e0..ef80b82 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiSepHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiSepHandler.java
@@ -16,9 +16,9 @@
 
 package org.onosproject.odtn.utils.tapi;
 
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectivityservice.DefaultEndPoint;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectivityserviceendpoint.DefaultServiceInterfacePoint;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivityservice.DefaultEndPoint;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivityserviceendpoint.DefaultServiceInterfacePoint;
 import org.onosproject.yang.model.ModelObjectId;
 
 import static org.onosproject.odtn.utils.tapi.TapiLocalClassUtil.getLocalId;
@@ -55,7 +55,7 @@
 
     public TapiSepHandler setSip(String sipId) {
         DefaultServiceInterfacePoint sip = new DefaultServiceInterfacePoint();
-        sip.serviceInterfacePointId(sipId);
+        sip.serviceInterfacePointUuid(sipId);
         obj.serviceInterfacePoint(sip);
         return this;
     }
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiSipHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiSipHandler.java
index 34b3896..367122e 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiSipHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiSipHandler.java
@@ -22,16 +22,16 @@
 
 import org.onosproject.net.Port;
 import org.onosproject.odtn.behaviour.OdtnDeviceDescriptionDiscovery;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.LayerProtocolName;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.LayerProtocolName;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
 
 import static org.onosproject.odtn.behaviour.OdtnDeviceDescriptionDiscovery.PORT_TYPE;
 import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.addNameList;
 import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.getUuid;
 import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setUuid;
-import static org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.layerprotocolname.LayerProtocolNameEnum.DSR;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.tapicontext.DefaultServiceInterfacePoint;
+import static org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.layerprotocolname.LayerProtocolNameEnum.DSR;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.tapicontext.DefaultServiceInterfacePoint;
 import org.onosproject.yang.model.ModelObjectId;
 
 /**
@@ -90,7 +90,7 @@
         Map<String, String> kvs = new HashMap<>();
         kvs.put(ONOS_CP, cp.toString());
         addNameList(obj, kvs);
-        obj.addToLayerProtocolName(LayerProtocolName.of(DSR));
+        obj.layerProtocolName(LayerProtocolName.of(DSR));
         return this;
     }
 
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiTopologyContextHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiTopologyContextHandler.java
new file mode 100644
index 0000000..30d7e09
--- /dev/null
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiTopologyContextHandler.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * 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.
+ */
+
+package org.onosproject.odtn.utils.tapi;
+
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.context.DefaultAugmentedTapiCommonContext;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.context.augmentedtapicommoncontext.DefaultTopologyContext;
+import org.onosproject.yang.model.ModelObjectId;
+
+/**
+ * Utility class to deal with TAPI Augmented Topology Context with DCS.
+ */
+public final class TapiTopologyContextHandler extends TapiObjectHandler<DefaultTopologyContext> {
+
+    private TapiTopologyContextHandler() {
+        obj = new DefaultTopologyContext();
+    }
+
+    public static TapiTopologyContextHandler create() {
+        return new TapiTopologyContextHandler();
+    }
+
+    @Override
+    protected Uuid getIdDetail() {
+        // The target yang object of this class is container, so no need to handle Id.
+        return null;
+    }
+
+    @Override
+    protected void setIdDetail(Uuid uuid) {
+        // The target yang object of this class is container, so no need to handle Id.
+    }
+
+    @Override
+    public ModelObjectId getParentModelObjectId() {
+        DefaultAugmentedTapiCommonContext context = new DefaultAugmentedTapiCommonContext();
+        context.topologyContext(obj);
+
+        return ModelObjectId.builder()
+                .addChild(DefaultContext.class).build();
+    }
+}
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiTopologyHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiTopologyHandler.java
index 2d81e80..6ef0417 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiTopologyHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiTopologyHandler.java
@@ -19,10 +19,10 @@
 import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.getUuid;
 import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setUuid;
 
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.context.DefaultAugmentedTapiCommonContext;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.DefaultTopology;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.context.augmentedtapicommoncontext.DefaultTopologyContext;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topologycontext.DefaultTopology;
 import org.onosproject.yang.model.ModelObjectId;
 
 /**
@@ -51,9 +51,10 @@
 
     @Override
     public ModelObjectId getParentModelObjectId() {
-        DefaultAugmentedTapiCommonContext topologyContext = new DefaultAugmentedTapiCommonContext();
-        topologyContext.addToTopology(obj);
 
-        return ModelObjectId.builder().addChild(DefaultContext.class).build();
+        return ModelObjectId.builder()
+                .addChild(DefaultContext.class)
+                .addChild(DefaultTopologyContext.class)
+                .build();
     }
 }
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/package-info.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/package-info.java
index 8d71ec1..fcb1c29 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/package-info.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/package-info.java
@@ -17,4 +17,4 @@
 /**
  * Utilities to deal with onos-yang-tools TAPI objects.
  */
-package org.onosproject.odtn.utils.tapi;
\ No newline at end of file
+package org.onosproject.odtn.utils.tapi;
diff --git a/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnDcsModelCheckCommand.java b/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnDcsModelCheckCommand.java
index e1636c7..b7d08e2 100644
--- a/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnDcsModelCheckCommand.java
+++ b/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnDcsModelCheckCommand.java
@@ -26,7 +26,7 @@
 import static org.onosproject.odtn.utils.YangToolUtil.toCompositeData;
 import static org.onosproject.odtn.utils.YangToolUtil.toResourceData;
 import static org.onosproject.odtn.utils.YangToolUtil.toXmlCompositeStream;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
 import org.onosproject.yang.model.DataNode;
 import org.onosproject.yang.model.DefaultModelObjectData;
 import org.onosproject.yang.model.InnerModelObject;
@@ -75,4 +75,4 @@
         CharSequence strNode = toCharSequence(toXmlCompositeStream(toCompositeData(toResourceData(empty, all))));
         printlog("XML:\n{}", XmlString.prettifyXml(strNode));
     }
-}
\ No newline at end of file
+}
diff --git a/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnTapiHandlersTestCommand.java b/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnTapiHandlersTestCommand.java
new file mode 100644
index 0000000..6131360
--- /dev/null
+++ b/apps/odtn/service/src/main/java/org/onosproject/odtn/cli/impl/OdtnTapiHandlersTestCommand.java
@@ -0,0 +1,287 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * 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.
+ */
+
+package org.onosproject.odtn.cli.impl;
+
+import org.apache.karaf.shell.commands.Command;
+import org.onlab.util.XmlString;
+import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.config.DynamicConfigService;
+import org.onosproject.net.ConnectPoint;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.PortNumber;
+import org.onosproject.odtn.utils.tapi.TapiCepHandler;
+import org.onosproject.odtn.utils.tapi.TapiCepRefHandler;
+import org.onosproject.odtn.utils.tapi.TapiConnectionHandler;
+import org.onosproject.odtn.utils.tapi.TapiConnectivityContextHandler;
+import org.onosproject.odtn.utils.tapi.TapiConnectivityServiceHandler;
+import org.onosproject.odtn.utils.tapi.TapiContextHandler;
+import org.onosproject.odtn.utils.tapi.TapiNepHandler;
+import org.onosproject.odtn.utils.tapi.TapiNodeHandler;
+import org.onosproject.odtn.utils.tapi.TapiSepHandler;
+import org.onosproject.odtn.utils.tapi.TapiSipHandler;
+import org.onosproject.odtn.utils.tapi.TapiTopologyContextHandler;
+import org.onosproject.odtn.utils.tapi.TapiTopologyHandler;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.tapicontext.DefaultServiceInterfacePoint;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.DefaultConnection;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.DefaultConnectivityService;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivityservice.DefaultEndPoint;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.context.augmentedtapicommoncontext.DefaultConnectivityContext;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.context.augmentedtapicommoncontext.DefaultTopologyContext;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.node.DefaultOwnedNodeEdgePoint;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topology.DefaultNode;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topologycontext.DefaultTopology;
+import org.onosproject.yang.model.Augmentable;
+import org.onosproject.yang.model.DataNode;
+import org.onosproject.yang.model.ModelConverter;
+import org.onosproject.yang.model.ResourceId;
+import org.slf4j.Logger;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.regex.Pattern;
+
+import static org.onosproject.odtn.utils.YangToolUtil.*;
+import static org.slf4j.LoggerFactory.getLogger;
+
+@Command(scope = "onos", name = "odtn-tapi-handlers-test")
+public class OdtnTapiHandlersTestCommand extends AbstractShellCommand {
+
+    private static final Logger log = getLogger(OdtnDcsModelCheckCommand.class);
+    private DynamicConfigService dcs;
+    private ModelConverter modelConverter;
+    private TapiContextHandler contextHandler;
+
+    @Override
+    public void execute() {
+        dcs = get(DynamicConfigService.class);
+        modelConverter = get(ModelConverter.class);
+
+        setupTapiContext();
+        DataNode data = contextHandler.getDataNode();
+
+        ResourceId empty = ResourceId.builder().build();
+        CharSequence strNode = toCharSequence(toXmlCompositeStream(toCompositeData(toResourceData(empty, data))));
+        StringBuilder exp = loadXml("/test-tapi-context.xml");
+
+        if (XmlString.prettifyXml(strNode).toString().contentEquals(exp)) {
+            log.info("result: ok");
+        } else {
+            log.info("result: failed");
+        }
+    }
+
+    private void printlog(String format, Object... objs) {
+        print(format.replaceAll(Pattern.quote("{}"), "%s"), objs);
+        log.info(format, objs);
+    }
+
+    private static StringBuilder loadXml(final String fileName) {
+
+        InputStream inputStream = OdtnTapiHandlersTestCommand.class.getResourceAsStream(fileName);
+        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
+        StringBuilder result = new StringBuilder();
+        try {
+            String line;
+            while ((line = reader.readLine()) != null) {
+                result.append(line).append("\n");
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
+
+    private void setupTapiContext() {
+
+        DeviceId did1 = DeviceId.deviceId("netconf:127.0.0.1:11001");
+        DeviceId did2 = DeviceId.deviceId("netconf:127.0.0.1:11002");
+
+        ConnectPoint cp11 = new ConnectPoint(did1, PortNumber.portNumber(1, "TRANSCEIVER"));
+        ConnectPoint cp12 = new ConnectPoint(did1, PortNumber.portNumber(2, "TRANSCEIVER"));
+        ConnectPoint cp21 = new ConnectPoint(did2, PortNumber.portNumber(1, "TRANSCEIVER"));
+        ConnectPoint cp22 = new ConnectPoint(did2, PortNumber.portNumber(2, "TRANSCEIVER"));
+
+        // context
+        contextHandler = TapiContextHandler.create();
+        DefaultContext context = contextHandler.getModelObject();
+
+        // context augmentation
+        Augmentable augmentableContext = context;
+
+        // context augmentation with topologyContext
+        org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.context
+                .DefaultAugmentedTapiCommonContext augmentedTopologyContext
+                = new org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology
+                .context.DefaultAugmentedTapiCommonContext();
+        augmentableContext.addAugmentation(augmentedTopologyContext);
+
+        // context augmentation with connectivityServiceContext
+        org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.context
+                .DefaultAugmentedTapiCommonContext augmentedConnectivityContext
+                = new org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity
+                .context.DefaultAugmentedTapiCommonContext();
+        augmentableContext.addAugmentation(augmentedConnectivityContext);
+
+        // topology context
+        DefaultTopologyContext topologyContext = TapiTopologyContextHandler.create().getModelObject();
+        augmentedTopologyContext.topologyContext(topologyContext);
+
+        // topology
+        TapiTopologyHandler topologyHandler = TapiTopologyHandler.create();
+        topologyHandler.setId(Uuid.of("00000000-0000-0000-0000-000000000001"));
+        DefaultTopology topology = topologyHandler.getModelObject();
+        topologyContext.addToTopology(topology);
+
+        // nodes
+        TapiNodeHandler nodeHandler1 = TapiNodeHandler.create();
+        nodeHandler1.setId(Uuid.of("00000000-0000-0000-0001-000000000001"));
+        DefaultNode node1 = nodeHandler1.setTopologyUuid(topology.uuid())
+                .setDeviceId(did1)
+                .getModelObject();
+        topology.addToNode(node1);
+
+        TapiNodeHandler nodeHandler2 = TapiNodeHandler.create();
+        nodeHandler2.setId(Uuid.of("00000000-0000-0000-0001-000000000002"));
+        DefaultNode node2 = nodeHandler2.setTopologyUuid(topology.uuid())
+                .setDeviceId(did2)
+                .getModelObject();
+        topology.addToNode(node2);
+
+        // sips
+        TapiSipHandler sipHandler1 = TapiSipHandler.create();
+        sipHandler1.setId(Uuid.of("00000000-0000-0000-0002-000000000001"));
+        DefaultServiceInterfacePoint sip1 = sipHandler1.setConnectPoint(cp11)
+                .getModelObject();
+        context.addToServiceInterfacePoint(sip1);
+
+        TapiSipHandler sipHandler2 = TapiSipHandler.create();
+        sipHandler2.setId(Uuid.of("00000000-0000-0000-0002-000000000002"));
+        DefaultServiceInterfacePoint sip2 = sipHandler2.setConnectPoint(cp21)
+                .getModelObject();
+        context.addToServiceInterfacePoint(sip2);
+
+        // neps
+        TapiNepHandler nepHandler11 = TapiNepHandler.create();
+        nepHandler11.setId(Uuid.of("00000000-0000-0000-0003-000000000011"));
+        DefaultOwnedNodeEdgePoint nep11 = nepHandler11
+                .setTopologyUuid(topology.uuid())
+                .setNodeUuid(node1.uuid())
+                .setConnectPoint(cp11)
+                .addSip(sip1.uuid())
+                .getModelObject();
+        nodeHandler1.addNep(nep11);
+
+        TapiNepHandler nepHandler12 = TapiNepHandler.create();
+        nepHandler12.setId(Uuid.of("00000000-0000-0000-0003-000000000012"));
+        DefaultOwnedNodeEdgePoint nep12 = nepHandler12
+                .setTopologyUuid(topology.uuid())
+                .setNodeUuid(node1.uuid())
+                .setConnectPoint(cp12)
+                .getModelObject();
+        nodeHandler1.addNep(nep12);
+
+        TapiNepHandler nepHandler21 = TapiNepHandler.create();
+        nepHandler21.setId(Uuid.of("00000000-0000-0000-0003-000000000021"));
+        DefaultOwnedNodeEdgePoint nep21 = nepHandler21
+                .setTopologyUuid(topology.uuid())
+                .setNodeUuid(node2.uuid())
+                .setConnectPoint(cp21)
+                .addSip(sip2.uuid())
+                .getModelObject();
+        nodeHandler2.addNep(nep21);
+
+        TapiNepHandler nepHandler22 = TapiNepHandler.create();
+        nepHandler22.setId(Uuid.of("00000000-0000-0000-0003-000000000022"));
+        DefaultOwnedNodeEdgePoint nep22 = nepHandler22
+                .setTopologyUuid(topology.uuid())
+                .setNodeUuid(node2.uuid())
+                .setConnectPoint(cp22)
+                .getModelObject();
+        nodeHandler2.addNep(nep22);
+
+        // connectivity context
+        DefaultConnectivityContext connectivityContext = TapiConnectivityContextHandler.create().getModelObject();
+        augmentedConnectivityContext.connectivityContext(connectivityContext);
+
+        // connectivityService
+        TapiConnectivityServiceHandler connectivityServiceHandler = TapiConnectivityServiceHandler.create();
+        connectivityServiceHandler.setId(Uuid.of("00000000-0000-0000-0004-000000000001"));
+        DefaultConnectivityService connectivityService = connectivityServiceHandler.getModelObject();
+        connectivityContext.addToConnectivityService(connectivityService);
+
+        // connection
+        TapiConnectionHandler connectionHandler = TapiConnectionHandler.create();
+        connectionHandler.setId(Uuid.of("00000000-0000-0000-0005-000000000001"));
+        DefaultConnection connection1 = connectionHandler.getModelObject();
+        connectivityServiceHandler.addConnection(connection1.uuid());
+        connectivityContext.addToConnection(connection1);
+
+
+        // seps
+        TapiSepHandler sepHandler1 = TapiSepHandler.create();
+        sepHandler1.setId(Uuid.of("00000000-0000-0000-0006-000000000001"));
+        DefaultEndPoint sep1 = sepHandler1.getModelObject();
+        connectivityServiceHandler.addSep(sep1);
+
+        TapiSepHandler sepHandler2 = TapiSepHandler.create();
+        sepHandler2.setId(Uuid.of("00000000-0000-0000-0006-000000000002"));
+        DefaultEndPoint sep2 = sepHandler2.getModelObject();
+        connectivityServiceHandler.addSep(sep2);
+
+        // ceps
+        TapiCepHandler cepHandler11 = TapiCepHandler.create();
+        cepHandler11.setId(Uuid.of("00000000-0000-0000-0007-000000000011"));
+        org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity
+                .ceplist.DefaultConnectionEndPoint
+                cep11 = cepHandler11
+                .setTopologyUuid(topology.uuid())
+                .setNodeUuid(node1.uuid())
+                .setNepUuid(nep11.uuid())
+                .setParentNep()
+                .getModelObject();
+        nepHandler11.addCep(cep11);
+        org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity
+                .connection.DefaultConnectionEndPoint
+                cepRef11 = TapiCepRefHandler.create()
+                .setCep(cep11)
+                .getModelObject();
+        connectionHandler.addCep(cepRef11);
+
+        TapiCepHandler cepHandler21 = TapiCepHandler.create();
+        cepHandler21.setId(Uuid.of("00000000-0000-0000-0007-000000000021"));
+        org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity
+                .ceplist.DefaultConnectionEndPoint
+                cep21 = cepHandler21
+                .setTopologyUuid(topology.uuid())
+                .setNodeUuid(node1.uuid())
+                .setNepUuid(nep21.uuid())
+                .setParentNep()
+                .getModelObject();
+        nepHandler21.addCep(cep21);
+        org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity
+                .connection.DefaultConnectionEndPoint
+                cepRef21 = TapiCepRefHandler.create()
+                .setCep(cep21)
+                .getModelObject();
+        connectionHandler.addCep(cepRef21);
+
+    }
+}
diff --git a/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiCommonRpc.java b/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiCommonRpc.java
index 315e10c..0d42ca0 100644
--- a/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiCommonRpc.java
+++ b/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiCommonRpc.java
@@ -19,8 +19,8 @@
 import org.onosproject.config.DynamicConfigService;
 import org.onosproject.odtn.TapiResolver;
 import org.onosproject.odtn.utils.tapi.TapiGetSipListOutputHandler;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.TapiCommonService;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.TapiCommonService;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
 import org.onosproject.yang.model.ModelConverter;
 import org.onosproject.yang.model.RpcInput;
 import org.onosproject.yang.model.RpcOutput;
diff --git a/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiConnectivityRpc.java b/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiConnectivityRpc.java
index 2598781..a55c16b 100644
--- a/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiConnectivityRpc.java
+++ b/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiConnectivityRpc.java
@@ -27,16 +27,15 @@
 import org.onosproject.odtn.utils.tapi.TapiCreateConnectivityInputHandler;
 import org.onosproject.odtn.utils.tapi.TapiCreateConnectivityOutputHandler;
 import org.onosproject.odtn.utils.tapi.TapiDeleteConnectivityInputHandler;
-import org.onosproject.odtn.utils.tapi.TapiDeleteConnectivityOutputHandler;
 import org.onosproject.odtn.utils.tapi.TapiGetConnectivityDetailsInputHandler;
 import org.onosproject.odtn.utils.tapi.TapiGetConnectivityDetailsOutputHandler;
 import org.onosproject.odtn.utils.tapi.TapiGetConnectivityListOutputHandler;
 import org.onosproject.odtn.utils.tapi.TapiNepRef;
 import org.onosproject.odtn.utils.tapi.TapiObjectHandler;
 import org.onosproject.odtn.utils.tapi.TapiSepHandler;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.TapiConnectivityService;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.connectivitycontext.DefaultConnectivityService;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.TapiConnectivityService;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.DefaultConnectivityService;
 import org.onosproject.yang.model.ModelConverter;
 import org.onosproject.yang.model.RpcInput;
 import org.onosproject.yang.model.RpcOutput;
@@ -139,17 +138,14 @@
 
             service.connection().stream().forEach(connection -> {
                 TapiConnectionHandler connectionHandler = TapiConnectionHandler.create();
-                connectionHandler.setId(Uuid.fromString(connection.connectionId().toString()));
+                connectionHandler.setId(Uuid.fromString(connection.connectionUuid().toString()));
                 DcsBasedTapiConnectionManager manager = DcsBasedTapiConnectionManager.create();
                 manager.deleteConnection(connectionHandler);
                 manager.apply();
             });
             serviceHandler.remove();
 
-            TapiDeleteConnectivityOutputHandler output = TapiDeleteConnectivityOutputHandler.create()
-                    .addService(serviceHandler.getModelObject());
-
-            return new RpcOutput(RpcOutput.Status.RPC_SUCCESS, output.getDataNode());
+            return new RpcOutput(RpcOutput.Status.RPC_SUCCESS, null);
         } catch (Throwable e) {
             log.error("Error:", e);
             return new RpcOutput(RpcOutput.Status.RPC_FAILURE, null);
diff --git a/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiDataProducer.java b/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiDataProducer.java
index 4adc3d2..40e606a 100644
--- a/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiDataProducer.java
+++ b/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiDataProducer.java
@@ -30,11 +30,11 @@
 import org.onosproject.odtn.utils.tapi.DcsBasedTapiObjectRefFactory;
 import org.onosproject.odtn.utils.tapi.TapiNepRef;
 import org.onosproject.odtn.utils.tapi.TapiNodeRef;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.globalclass.Name;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.tapiconnectivity.context.topology.node.ownednodeedgepoint.DefaultAugmentedTapiTopologyOwnedNodeEdgePoint;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.context.DefaultAugmentedTapiCommonContext;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.Topology;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.globalclass.Name;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.context.topologycontext.topology.node.ownednodeedgepoint.DefaultAugmentedTapiTopologyOwnedNodeEdgePoint;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.context.DefaultAugmentedTapiCommonContext;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topologycontext.Topology;
 import org.onosproject.yang.model.DataNode;
 import org.onosproject.yang.model.DefaultModelObjectData;
 import org.onosproject.yang.model.DefaultResourceData;
@@ -114,7 +114,7 @@
     private List<TapiNodeRef> getNodes(DefaultContext context) {
         DefaultAugmentedTapiCommonContext topologyContext
                 = context.augmentation(DefaultAugmentedTapiCommonContext.class);
-        Topology topology = topologyContext.topology().get(0);
+        Topology topology = topologyContext.topologyContext().topology().get(0);
 
         if (topology.node() == null) {
             return Collections.emptyList();
@@ -142,7 +142,7 @@
     private List<TapiNepRef> getNeps(DefaultContext context) {
         DefaultAugmentedTapiCommonContext topologyContext
                 = context.augmentation(DefaultAugmentedTapiCommonContext.class);
-        Topology topology = topologyContext.topology().get(0);
+        Topology topology = topologyContext.topologyContext().topology().get(0);
 
         if (topology.node() == null) {
             return Collections.emptyList();
@@ -169,15 +169,15 @@
                                         if (nep.mappedServiceInterfacePoint() != null) {
                                             nep.mappedServiceInterfacePoint().stream()
                                                     .forEach(sip -> {
-                                                        nepRef.setSipId(sip.serviceInterfacePointId().toString());
+                                                        nepRef.setSipId(sip.serviceInterfacePointUuid().toString());
                                                     });
                                         }
 
                                         DefaultAugmentedTapiTopologyOwnedNodeEdgePoint augmentNep =
                                                 nep.augmentation(DefaultAugmentedTapiTopologyOwnedNodeEdgePoint.class);
                                         try {
-                                            if (augmentNep.connectionEndPoint() != null) {
-                                                List<String> cepIds = augmentNep.connectionEndPoint().stream()
+                                            if (augmentNep.cepList().connectionEndPoint() != null) {
+                                                List<String> cepIds = augmentNep.cepList().connectionEndPoint().stream()
                                                         .map(cep -> cep.uuid().toString()).collect(Collectors.toList());
                                                 nepRef.setCepIds(cepIds);
                                             }
diff --git a/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiTopologyManager.java b/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiTopologyManager.java
index 659e984..b528f23 100644
--- a/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiTopologyManager.java
+++ b/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiTopologyManager.java
@@ -32,6 +32,7 @@
 
 import org.onosproject.odtn.TapiResolver;
 import org.onosproject.odtn.TapiTopologyManager;
+import org.onosproject.odtn.utils.tapi.TapiConnectivityContextHandler;
 import org.onosproject.odtn.utils.tapi.TapiLinkHandler;
 import org.onosproject.odtn.utils.tapi.TapiCepHandler;
 import org.onosproject.odtn.utils.tapi.TapiNepRef;
@@ -40,10 +41,11 @@
 import org.onosproject.odtn.utils.tapi.TapiNepHandler;
 import org.onosproject.odtn.utils.tapi.TapiNodeHandler;
 import org.onosproject.odtn.utils.tapi.TapiSipHandler;
+import org.onosproject.odtn.utils.tapi.TapiTopologyContextHandler;
 import org.onosproject.odtn.utils.tapi.TapiTopologyHandler;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.DefaultTopology;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topologycontext.DefaultTopology;
 import org.onosproject.yang.model.ModelConverter;
 import org.slf4j.Logger;
 
@@ -74,6 +76,7 @@
     public void activate() {
         initDcsTapiContext();
         initDcsTapiTopology();
+        initDcsTapiConnectivityContext();
         log.info("Started");
     }
 
@@ -171,13 +174,26 @@
     }
 
     /**
-     * Add Tapi Topology to Dcs store.
+     * Add Tapi TopologyContext and Topology to Dcs store.
      *
      * Assumed there is only one topology for ODTN Phase 1.0
      */
     private void initDcsTapiTopology() {
+        TapiTopologyContextHandler topologyContextHandler = TapiTopologyContextHandler.create();
+        topologyContextHandler.add();
         TapiTopologyHandler topologyHandler = TapiTopologyHandler.create();
-        topology = topologyHandler.getModelObject();
         topologyHandler.add();
+        topology = topologyHandler.getModelObject();
     }
+
+    /**
+     * Add Tapi ConnectivityContext to Dcs store.
+     *
+     * Assumed there is only one topology for ODTN Phase 1.0
+     */
+    private void initDcsTapiConnectivityContext() {
+        TapiConnectivityContextHandler connectivityContextHandler = TapiConnectivityContextHandler.create();
+        connectivityContextHandler.add();
+    }
+
 }
diff --git a/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/package-info.java b/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/package-info.java
index b75ad48..9dc4dad 100644
--- a/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/package-info.java
+++ b/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/package-info.java
@@ -17,4 +17,4 @@
 /**
  * Package to place ODTN internal implementations.
  */
-package org.onosproject.odtn.internal;
\ No newline at end of file
+package org.onosproject.odtn.internal;
diff --git a/apps/odtn/service/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/apps/odtn/service/src/main/resources/OSGI-INF/blueprint/shell-config.xml
index a2c2c6e..953a71e 100644
--- a/apps/odtn/service/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ b/apps/odtn/service/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -34,6 +34,10 @@
             <action class="org.onosproject.odtn.cli.impl.OdtnDcsModelCheckCommand"/>
         </command>
 
+        <command>
+            <action class="org.onosproject.odtn.cli.impl.OdtnTapiHandlersTestCommand"/>
+        </command>
+
     </command-bundle>
 
     <bean id="deviceIdCompleter" class="org.onosproject.cli.net.DeviceIdCompleter"/>
diff --git a/apps/odtn/service/src/main/resources/test-tapi-context.xml b/apps/odtn/service/src/main/resources/test-tapi-context.xml
new file mode 100644
index 0000000..b56f488
--- /dev/null
+++ b/apps/odtn/service/src/main/resources/test-tapi-context.xml
@@ -0,0 +1,120 @@
+<context xmlns="urn:onf:otcc:yang:tapi-common">
+  <topology-context xmlns="urn:onf:otcc:yang:tapi-topology">
+    <topology>
+      <uuid>00000000-0000-0000-0000-000000000001</uuid>
+      <node>
+        <uuid>00000000-0000-0000-0001-000000000001</uuid>
+        <owned-node-edge-point>
+          <uuid>00000000-0000-0000-0003-000000000011</uuid>
+          <cep-list xmlns="urn:onf:otcc:yang:tapi-connectivity">
+            <connection-end-point>
+              <uuid>00000000-0000-0000-0007-000000000011</uuid>
+              <parent-node-edge-point>
+                <node-edge-point-uuid>00000000-0000-0000-0003-000000000011</node-edge-point-uuid>
+                <node-uuid>00000000-0000-0000-0001-000000000001</node-uuid>
+                <topology-uuid>00000000-0000-0000-0000-000000000001</topology-uuid>
+              </parent-node-edge-point>
+            </connection-end-point>
+          </cep-list>
+          <mapped-service-interface-point>
+            <service-interface-point-uuid>00000000-0000-0000-0002-000000000001</service-interface-point-uuid>
+          </mapped-service-interface-point>
+          <name>
+            <value-name>onos-cp</value-name>
+            <value>netconf:127.0.0.1:11001/[TRANSCEIVER](1)</value>
+          </name>
+        </owned-node-edge-point>
+        <owned-node-edge-point>
+          <uuid>00000000-0000-0000-0003-000000000012</uuid>
+          <name>
+            <value-name>onos-cp</value-name>
+            <value>netconf:127.0.0.1:11001/[TRANSCEIVER](2)</value>
+          </name>
+        </owned-node-edge-point>
+        <name>
+          <value-name>device-id</value-name>
+          <value>netconf:127.0.0.1:11001</value>
+        </name>
+      </node>
+      <node>
+        <uuid>00000000-0000-0000-0001-000000000002</uuid>
+        <owned-node-edge-point>
+          <uuid>00000000-0000-0000-0003-000000000021</uuid>
+          <cep-list xmlns="urn:onf:otcc:yang:tapi-connectivity">
+            <connection-end-point>
+              <uuid>00000000-0000-0000-0007-000000000021</uuid>
+              <parent-node-edge-point>
+                <node-edge-point-uuid>00000000-0000-0000-0003-000000000021</node-edge-point-uuid>
+                <node-uuid>00000000-0000-0000-0001-000000000001</node-uuid>
+                <topology-uuid>00000000-0000-0000-0000-000000000001</topology-uuid>
+              </parent-node-edge-point>
+            </connection-end-point>
+          </cep-list>
+          <mapped-service-interface-point>
+            <service-interface-point-uuid>00000000-0000-0000-0002-000000000002</service-interface-point-uuid>
+          </mapped-service-interface-point>
+          <name>
+            <value-name>onos-cp</value-name>
+            <value>netconf:127.0.0.1:11002/[TRANSCEIVER](1)</value>
+          </name>
+        </owned-node-edge-point>
+        <owned-node-edge-point>
+          <uuid>00000000-0000-0000-0003-000000000022</uuid>
+          <name>
+            <value-name>onos-cp</value-name>
+            <value>netconf:127.0.0.1:11002/[TRANSCEIVER](2)</value>
+          </name>
+        </owned-node-edge-point>
+        <name>
+          <value-name>device-id</value-name>
+          <value>netconf:127.0.0.1:11002</value>
+        </name>
+      </node>
+    </topology>
+  </topology-context>
+  <connectivity-context xmlns="urn:onf:otcc:yang:tapi-connectivity">
+    <connectivity-service>
+      <uuid>00000000-0000-0000-0004-000000000001</uuid>
+      <end-point>
+        <local-id>00000000-0000-0000-0006-000000000001</local-id>
+      </end-point>
+      <end-point>
+        <local-id>00000000-0000-0000-0006-000000000002</local-id>
+      </end-point>
+      <connection>
+        <connection-uuid>00000000-0000-0000-0005-000000000001</connection-uuid>
+      </connection>
+    </connectivity-service>
+    <connection>
+      <uuid>00000000-0000-0000-0005-000000000001</uuid>
+      <connection-end-point>
+        <connection-end-point-uuid>00000000-0000-0000-0007-000000000011</connection-end-point-uuid>
+        <node-edge-point-uuid>00000000-0000-0000-0003-000000000011</node-edge-point-uuid>
+        <node-uuid>00000000-0000-0000-0001-000000000001</node-uuid>
+        <topology-uuid>00000000-0000-0000-0000-000000000001</topology-uuid>
+      </connection-end-point>
+      <connection-end-point>
+        <connection-end-point-uuid>00000000-0000-0000-0007-000000000021</connection-end-point-uuid>
+        <node-edge-point-uuid>00000000-0000-0000-0003-000000000021</node-edge-point-uuid>
+        <node-uuid>00000000-0000-0000-0001-000000000001</node-uuid>
+        <topology-uuid>00000000-0000-0000-0000-000000000001</topology-uuid>
+      </connection-end-point>
+    </connection>
+  </connectivity-context>
+  <service-interface-point>
+    <layer-protocol-name>DSR</layer-protocol-name>
+    <uuid>00000000-0000-0000-0002-000000000001</uuid>
+    <name>
+      <value-name>onos-cp</value-name>
+      <value>netconf:127.0.0.1:11001/[TRANSCEIVER](1)</value>
+    </name>
+  </service-interface-point>
+  <service-interface-point>
+    <layer-protocol-name>DSR</layer-protocol-name>
+    <uuid>00000000-0000-0000-0002-000000000002</uuid>
+    <name>
+      <value-name>onos-cp</value-name>
+      <value>netconf:127.0.0.1:11002/[TRANSCEIVER](1)</value>
+    </name>
+  </service-interface-point>
+</context>
\ No newline at end of file
diff --git a/apps/odtn/service/src/test/java/org/onosproject/odtn/internal/DcsBasedTapiDataProducerTest.java b/apps/odtn/service/src/test/java/org/onosproject/odtn/internal/DcsBasedTapiDataProducerTest.java
index bfc45c7..64278fe 100644
--- a/apps/odtn/service/src/test/java/org/onosproject/odtn/internal/DcsBasedTapiDataProducerTest.java
+++ b/apps/odtn/service/src/test/java/org/onosproject/odtn/internal/DcsBasedTapiDataProducerTest.java
@@ -31,13 +31,15 @@
 import org.onosproject.odtn.utils.tapi.TapiNodeHandler;
 import org.onosproject.odtn.utils.tapi.TapiNodeRef;
 import org.onosproject.odtn.utils.tapi.TapiSipHandler;
+import org.onosproject.odtn.utils.tapi.TapiTopologyContextHandler;
 import org.onosproject.odtn.utils.tapi.TapiTopologyHandler;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.tapicontext.DefaultServiceInterfacePoint;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.context.DefaultAugmentedTapiCommonContext;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.node.DefaultOwnedNodeEdgePoint;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topology.DefaultNode;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.DefaultTopology;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.tapicontext.DefaultServiceInterfacePoint;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.context.DefaultAugmentedTapiCommonContext;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.context.augmentedtapicommoncontext.DefaultTopologyContext;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.node.DefaultOwnedNodeEdgePoint;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topology.DefaultNode;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.tapitopology.topologycontext.DefaultTopology;
 import org.onosproject.yang.model.Augmentable;
 
 import static org.easymock.EasyMock.expectLastCall;
@@ -73,10 +75,14 @@
         context = new DefaultContext();
 
         topology = TapiTopologyHandler.create().getModelObject();
-        DefaultAugmentedTapiCommonContext topologyContext = new DefaultAugmentedTapiCommonContext();
-        topologyContext.addToTopology(topology);
+        DefaultTopologyContext topologyContext = TapiTopologyContextHandler.create().getModelObject();
+
+        DefaultAugmentedTapiCommonContext augmentedTopologyContext = new DefaultAugmentedTapiCommonContext();
         Augmentable augmentableContext = context;
-        augmentableContext.addAugmentation(topologyContext);
+        augmentableContext.addAugmentation(augmentedTopologyContext);
+
+        augmentedTopologyContext.topologyContext(topologyContext);
+        topologyContext.addToTopology(topology);
 
         node1 = TapiNodeHandler.create()
                 .setTopologyUuid(topology.uuid())
@@ -236,4 +242,4 @@
         verify(mockResolver);
     }
 
-}
\ No newline at end of file
+}
diff --git a/apps/odtn/service/src/test/java/org/onosproject/odtn/internal/DefaultTapiResolverTest.java b/apps/odtn/service/src/test/java/org/onosproject/odtn/internal/DefaultTapiResolverTest.java
index 5fcad14..6e4dd3a 100644
--- a/apps/odtn/service/src/test/java/org/onosproject/odtn/internal/DefaultTapiResolverTest.java
+++ b/apps/odtn/service/src/test/java/org/onosproject/odtn/internal/DefaultTapiResolverTest.java
@@ -192,4 +192,4 @@
         assertThat(tapiResolver.getNepRefs(filter), is(exp));
     }
 
-}
\ No newline at end of file
+}
diff --git a/apps/odtn/service/src/test/resources/create-connectivity.json b/apps/odtn/service/src/test/resources/create-connectivity.json
index 283de56..35798f4 100644
--- a/apps/odtn/service/src/test/resources/create-connectivity.json
+++ b/apps/odtn/service/src/test/resources/create-connectivity.json
@@ -5,79 +5,30 @@
             {
                 "layer-protocol-name" : "DSR",
                 "service-interface-point": {
-                    "service-interface-point-id" : "00000000-0000-4200-0001-110000000000"
+                    "service-interface-point-uuid" : "00000001-0000-0000-0000-000000000001"
                 },
                 "capacity" : {
                 },
                 "direction" : "BIDIRECTIONAL",
                 "role" : "UNKNOWN",
-                "protection-role" : "WORK",
-                "local-id": "00000000-0000-4100-0001-110000000000",
-                "name" : [
-                        {
-                            "value-name" : "port",
-                            "value" : "1"
-                        },
-                        {
-                            "value-name" : "transponder",
-                            "value" : "TRNP_A"
-                        },
-                        {
-                            "value-name" : "onos-index",
-                            "value" : "1"
-                        },
-                        {
-                            "value-name" : "test-driver",
-                            "value" : "driver"
-                        }
-                ],
-                "administrative-state" : "UNLOCKED",
-                "operational-state" : "ENABLED",
-                "lifecycle-state" : "INSTALLED"
+                "protection-role" : "WORK"
             }
             ,
             {
                 "layer-protocol-name" : "DSR",
                 "service-interface-point": {
-                    "service-interface-point-id" : "00000000-0000-4200-0001-210000000000"
+                    "service-interface-point-uuid" : "00000001-0000-0000-0000-000000000002"
                 },
                 "capacity" : {
                 },
                 "direction" : "BIDIRECTIONAL",
                 "role" : "UNKNOWN",
-                "protection-role" : "WORK",
-                "local-id": "00000000-0000-4100-0001-210000000000",
-                "name" : [
-                        {
-                            "value-name" : "port",
-                            "value" : "1"
-                        },
-                        {
-                            "value-name" : "transponder",
-                            "value" : "TRNP_B"
-                        },
-                        {
-                            "value-name" : "onos-index",
-                            "value" : "1"
-                        },
-                        {
-                            "value-name" : "test-driver",
-                            "value" : "driver"
-                        }
-                ],
-                "administrative-state" : "UNLOCKED",
-                "operational-state" : "ENABLED",
-                "lifecycle-state" : "INSTALLED"
+                "protection-role" : "WORK"
             }
         ],
-
         "conn-constraint" : {},
-
         "topo-constraint" : {},
-
-        "resilience-constraint" : [ ],
-
-        "state" : "operational-state"
+        "resilience-constraint" : [ ]
     }
 }
 
diff --git a/apps/odtn/service/src/test/resources/delete-connectivity.json b/apps/odtn/service/src/test/resources/delete-connectivity.json
new file mode 100644
index 0000000..850c18f
--- /dev/null
+++ b/apps/odtn/service/src/test/resources/delete-connectivity.json
@@ -0,0 +1,6 @@
+{
+  "tapi-connectivity:input":
+  {
+    "service-id-or-name" : "00000002-0000-0000-0000-000000000001"
+  }
+}
\ No newline at end of file
diff --git a/apps/odtn/service/src/test/resources/nbi-tapi-sample.json b/apps/odtn/service/src/test/resources/nbi-tapi-sample.json
deleted file mode 100644
index 4578336..0000000
--- a/apps/odtn/service/src/test/resources/nbi-tapi-sample.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "tapi-common:context": {
-    "service-interface-point": [
-      {
-        "uuid": "9F759964-2410-44AF-8522-4FCE2C3ED464",
-        "layer-protocol-name": ["DSR"],
-        "name": [
-          {
-            "value-name": "port",
-            "value": "1"
-          },
-          {
-            "value-name": "transponder",
-            "value": "TRPN_A"
-          }
-        ]
-      },
-      {
-        "uuid": "FBDDC006-8913-4509-BA71-485CFAC89567",
-        "layer-protocol-name": ["DSR"],
-        "name": [
-          {
-            "value-name": "port",
-            "value": "1"
-          },
-          {
-            "value-name": "transponder",
-            "value": "TRPN_B"
-          }
-        ]
-      }
-    ],
-
-    "tapi-connectivity:connectivity-service": [
-      {
-        "uuid" : "D0BF25C8-B20C-49C3-9030-1C5AEC993E44",
-        "end-point": [
-          {
-            "local-id" : "TRPN_A-1",
-            "layer-protocol-name": "DSR",
-            "service-interface-point": {
-                "service-interface-point-id" : "9F759964-2410-44AF-8522-4FCE2C3ED464"
-            }
-          },
-          {
-            "local-id" : "TRPN_B-1",
-            "layer-protocol-name": "DSR",
-            "service-interface-point": {
-                "service-interface-point-id" : "FBDDC006-8913-4509-BA71-485CFAC89567"
-            }
-          }
-        ]
-      }
-    ]
-  }
-}
diff --git a/apps/odtn/service/src/test/resources/post-nbi-tapi-rpc b/apps/odtn/service/src/test/resources/post-nbi-tapi-rpc
deleted file mode 100644
index 45bdb17..0000000
--- a/apps/odtn/service/src/test/resources/post-nbi-tapi-rpc
+++ /dev/null
@@ -1 +0,0 @@
-curl -X POST http://localhost:8181/onos/restconf/operations/tapi-connectivity:create-connectivity-service -H 'cache-control: no-cache' -H 'content-type: application/json' -d @create-connectivity.json
diff --git a/apps/odtn/service/src/test/resources/post-nbi-tapi-sample b/apps/odtn/service/src/test/resources/post-nbi-tapi-sample
deleted file mode 100644
index ffdd3d9..0000000
--- a/apps/odtn/service/src/test/resources/post-nbi-tapi-sample
+++ /dev/null
@@ -1,2 +0,0 @@
-curl -X POST http://localhost:8181/onos/restconf/data -H 'cache-control: no-cache' -H 'content-type: application/json' -d @nbi-tapi-sample.json
-
diff --git a/apps/odtn/service/src/test/resources/post-tapi-rpc-create-connectivity-service b/apps/odtn/service/src/test/resources/post-tapi-rpc-create-connectivity-service
new file mode 100644
index 0000000..8f3409d
--- /dev/null
+++ b/apps/odtn/service/src/test/resources/post-tapi-rpc-create-connectivity-service
@@ -0,0 +1 @@
+curl -X POST http://localhost:8181/onos/restconf/operations/tapi-connectivity:create-connectivity-service -H 'cache-control: no-cache' -H 'content-type: application/json' -H 'Basic a2FyYWY6a2FyYWY=' -d @create-connectivity.json
diff --git a/apps/odtn/service/src/test/resources/post-tapi-rpc-delete-connectivity-service b/apps/odtn/service/src/test/resources/post-tapi-rpc-delete-connectivity-service
new file mode 100644
index 0000000..b45296e
--- /dev/null
+++ b/apps/odtn/service/src/test/resources/post-tapi-rpc-delete-connectivity-service
@@ -0,0 +1 @@
+curl -X POST http://localhost:8181/onos/restconf/operations/tapi-connectivity:delete-connectivity-service -H 'cache-control: no-cache' -H 'content-type: application/json' -H 'Basic a2FyYWY6a2FyYWY=' -d @delete-connectivity.json
diff --git a/models/tapi/src/main/java/org/onosproject/models/tapi/TapiModelRegistrator.java b/models/tapi/src/main/java/org/onosproject/models/tapi/TapiModelRegistrator.java
index 2fc3e34..b5ec202 100644
--- a/models/tapi/src/main/java/org/onosproject/models/tapi/TapiModelRegistrator.java
+++ b/models/tapi/src/main/java/org/onosproject/models/tapi/TapiModelRegistrator.java
@@ -22,10 +22,11 @@
 import com.google.common.collect.ImmutableMap;
 import org.apache.felix.scr.annotations.Component;
 import org.onosproject.yang.AbstractYangModelRegistrator;
-import org.onosproject.yang.gen.v1.tapicommon.rev20180307.TapiCommon;
-import org.onosproject.yang.gen.v1.tapiconnectivity.rev20180307.TapiConnectivity;
-import org.onosproject.yang.gen.v1.tapipathcomputation.rev20180307.TapiPathComputation;
-import org.onosproject.yang.gen.v1.tapitopology.rev20180307.TapiTopology;
+import org.onosproject.yang.gen.v1.tapicommon.rev20181016.TapiCommon;
+import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.TapiConnectivity;
+import org.onosproject.yang.gen.v1.tapipathcomputation.rev20181016.TapiPathComputation;
+import org.onosproject.yang.gen.v1.tapiphotonicmedia.rev20181016.TapiPhotonicMedia;
+import org.onosproject.yang.gen.v1.tapitopology.rev20181016.TapiTopology;
 import org.onosproject.yang.model.DefaultYangModuleId;
 import org.onosproject.yang.model.YangModuleId;
 import org.onosproject.yang.runtime.AppModuleInfo;
@@ -48,16 +49,19 @@
     private static Map<YangModuleId, AppModuleInfo> getAppInfo() {
         Map<YangModuleId, AppModuleInfo> appInfo = new HashMap<>();
 
-        appInfo.put(new DefaultYangModuleId("tapi-connectivity", "2018-03-07"),
+        appInfo.put(new DefaultYangModuleId("tapi-connectivity", "2018-10-16"),
                     new DefaultAppModuleInfo(TapiConnectivity.class, null));
 
-        appInfo.put(new DefaultYangModuleId("tapi-common", "2018-03-07"),
+        appInfo.put(new DefaultYangModuleId("tapi-common", "2018-10-16"),
                     new DefaultAppModuleInfo(TapiCommon.class, null));
 
-        appInfo.put(new DefaultYangModuleId("tapi-topology", "2018-03-07"),
+        appInfo.put(new DefaultYangModuleId("tapi-topology", "2018-10-16"),
                     new DefaultAppModuleInfo(TapiTopology.class, null));
 
-        appInfo.put(new DefaultYangModuleId("tapi-path-computation", "2018-03-07"),
+        appInfo.put(new DefaultYangModuleId("tapi-photonic-media", "2018-10-16"),
+                    new DefaultAppModuleInfo(TapiPhotonicMedia.class, null));
+
+        appInfo.put(new DefaultYangModuleId("tapi-path-computation", "2018-10-16"),
                     new DefaultAppModuleInfo(TapiPathComputation.class, null));
 
         return ImmutableMap.copyOf(appInfo);
diff --git a/models/tapi/src/main/yang/tapi-common@2018-03-07.yang b/models/tapi/src/main/yang/tapi-common@2018-10-16.yang
similarity index 83%
rename from models/tapi/src/main/yang/tapi-common@2018-03-07.yang
rename to models/tapi/src/main/yang/tapi-common@2018-10-16.yang
index 9569c14..0d68ca6 100644
--- a/models/tapi/src/main/yang/tapi-common@2018-03-07.yang
+++ b/models/tapi/src/main/yang/tapi-common@2018-10-16.yang
@@ -2,36 +2,53 @@
     namespace "urn:onf:otcc:yang:tapi-common";

     prefix tapi-common;

     organization "ONF OTCC (Open Transport Configuration & Control) Project";

-    contact "
-        Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
-        Project List: <mailto:transport-api@opennetworking.org>
-        Editor: Karthik Sethuraman
-                <mailto:karthik.sethuraman@necam.com>";

+    contact "

+         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>

+         Project List: <mailto:transport-api@opennetworking.org>

+         Editor: Karthik Sethuraman

+                 <mailto:karthik.sethuraman@necam.com>";

     description "

         This module contains TAPI Common Model definitions.

         Source: TapiCommon.uml

         Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

         License: This module is distributed under the Apache License 2.0

         ";

+    revision 2018-10-16 {

+        description "ONF Transport API version 2.1.0.

+          - The TAPI YANG models included in this TAPI release (v2.1.0) are a *normative* part of the TAPI SDK.

+          - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]

+            <https://github.com/OpenNetworkingFoundation/EagleUmlYang>

+            and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]

+            <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>

+          - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.

+            As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.

+          - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.

+            The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.

+            YANG models included in this release are not backward compatible with previous TAPI releases.

+          - Changes included in this TAPI release (v2.1.0) are listed in

+            <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";

+    }

     revision 2018-03-07 {

-        description "ONF Transport API version 2.0.2

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.2
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";

     }

     revision 2018-02-16 {

-        description "ONF Transport API version 2.0.1

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.1
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";

     }

     revision 2018-01-02 {

-        description "ONF Transport API version 2.0.0

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.0
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";

     }

 

@@ -39,7 +56,7 @@
     * definitions of refrences

     *************************/

     grouping service-interface-point-ref {

-        leaf service-interface-point-id {

+        leaf service-interface-point-uuid {

             type leafref {

                 path '/tapi-common:context/tapi-common:service-interface-point/tapi-common:uuid';

             }

@@ -124,7 +141,6 @@
         grouping tapi-context {

             list service-interface-point {

                 key 'uuid';

-                min-elements 2;

                 uses service-interface-point;

                 description "none";

             }

@@ -140,12 +156,17 @@
             description "none";

         }

         grouping service-interface-point {

-            leaf-list layer-protocol-name {

+            leaf layer-protocol-name {

                 type layer-protocol-name;

                 config false;

-                min-elements 1;

                 description "Usage of layerProtocolName [>1]  in the ServiceInterfacePoint should be considered experimental";

             }

+            leaf-list supported-layer-protocol-qualifier {

+                type layer-protocol-qualifier;

+                config false;

+                min-elements 1;

+                description "none";

+            }

             uses resource-spec;

             uses admin-state-pac;

             uses capacity-pac;

@@ -192,6 +213,9 @@
     /***********************

     * package type-definitions

     **********************/ 

+        identity LAYER_PROTOCOL_QUALIFIER {

+            description "none";

+        }

         typedef administrative-state {

             type enumeration {

                 enum LOCKED {

@@ -255,27 +279,18 @@
         }

         typedef layer-protocol-name {

             type enumeration {

-                enum OTSiA {

-                    description "Models the OTSiA layer as per ITU-T G.872 (2017) version 4";

-                }

-                enum OCH {

-                    description "Models the legacy OCH layer as per ITU-T G.872";

-                }

-                enum OTU {

-                    description "Models the OTU layer as per ITU-T G.872";

-                }

                 enum ODU {

                     description "Models the ODU layer as per ITU-T G.872";

                 }

                 enum ETH {

                     description "Models the ETH layer as per ITU-T G.8010";

                 }

-                enum ETY {

-                    description "Models the ETY layer as per ITU-T G.8010";

-                }

                 enum DSR {

                     description "Models a Digital Signal of an unspecified rate. This value can be used when the intent is to respresent an generic digital layer signal without making any statement on its format or overhead (processing) capabilities.";

                 }

+                enum PHOTONIC_MEDIA {

+                    description "Models the OCH, OTSi, OTSiA, OTSiG, OMS, OTS and Media channels as per ITU-T G.872 (2017) version 4";

+                }

             }

             description "Provides a controlled list of layer protocol names and indicates the naming authority.

                 Note that it is expected that attributes will be added to this structure to convey the naming authority name, the name of the layer protocol using a human readable string and any particular standard reference.

@@ -509,6 +524,12 @@
                 enum KBPS {

                     description "Indicates that the integer CapacityValue is in Kilobit-per-second";

                 }

+                enum GHz {

+                    description "none";

+                }

+                enum MHz {

+                    description "none";

+                }

             }

             description "none";

         }

@@ -540,6 +561,76 @@
             }

             description "none";

         }

+        grouping time-period {

+            leaf value {

+                type uint64;

+                description "none";

+            }

+            leaf unit {

+                type time-unit;

+                description "none";

+            }

+            description "none";

+        }

+        typedef time-unit {

+            type enumeration {

+                enum YEARS {

+                    description "none";

+                }

+                enum MONTHS {

+                    description "none";

+                }

+                enum DAYS {

+                    description "none";

+                }

+                enum HOURS {

+                    description "none";

+                }

+                enum MINUTES {

+                    description "none";

+                }

+                enum SECONDS {

+                    description "none";

+                }

+                enum MILLISECONDS {

+                    description "none";

+                }

+                enum MICROSECONDS {

+                    description "none";

+                }

+                enum NANOSECONDS {

+                    description "none";

+                }

+                enum PICOSECONDS {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+        grouping time-interval {

+            list period {

+                min-elements 1;

+                max-elements 5;

+                uses time-period;

+                description "none";

+            }

+            description "none";

+        }

+        typedef layer-protocol-qualifier {

+            type identityref {

+                base LAYER_PROTOCOL_QUALIFIER;

+            }

+            description "This enumeration is used to qualify the sub-layers (if applicable) for a specific LayerProtocol.

+                This extensible enumeration is intentionally empty in the common module and will be augmented with layer-specific values in the respective technology-specific modules.

+                Examples:

+                - LayerProtocolName := OPTICAL_DATA_UNIT

+                LayerProtocolQualifier := 'ODU_FLEX', 'ODU_0', 'ODU_1', 'ODU_2', 'ODU_2E', 'ODU_3', 'ODU_4'', 'ODU_CBR'', 'ODU_GFP'', 'ODU_GFP_HAO', etc

+                - LayerProtocolName := DIGITAL_SIGNAL_RATE

+                LayerProtocolQualifier := 'GBE', '10_GBE_WAN', '10_GBE_LAN', '100_GBE', 'FC_100', 'FC_200', 'FC_400', 'FC_800', 'FC_1200', 'FC_1600', 'FC_3200', 'STM_1', 'STM_4', 'STM_16', 'STM_64', 'STM_256', 'OC_3', 'OC_12', 'OC_48', 'OC_192', 'OC_768', 'OTU_1', 'OTU_2', 'OTU_2E', 'OTU_3', 'OTU_4', 'GPON', 'XGPON', 'IB_SDR', 'IB_DDR', 'IB_QDR', 'SBCON_ESCON', 'DVB_ASI', 'SDI', 'SDI_1G5', 'SDI_3G', etc

+                - LayerProtocolName := PHOTONIC_MEDIA

+                LayerProtocolQualifier := OCH, OTSi, OTSiA, NMC, NMCA, SMC, SMCA, OMS, OTS

+                ";

+        }

 

     /***********************

     * package interfaces

diff --git a/models/tapi/src/main/yang/tapi-connectivity@2018-03-07.yang b/models/tapi/src/main/yang/tapi-connectivity@2018-10-16.yang
similarity index 79%
rename from models/tapi/src/main/yang/tapi-connectivity@2018-03-07.yang
rename to models/tapi/src/main/yang/tapi-connectivity@2018-10-16.yang
index 75c0231..f4c0606 100644
--- a/models/tapi/src/main/yang/tapi-connectivity@2018-03-07.yang
+++ b/models/tapi/src/main/yang/tapi-connectivity@2018-10-16.yang
@@ -11,43 +11,66 @@
         prefix tapi-path-computation;

     }

     organization "ONF OTCC (Open Transport Configuration & Control) Project";

-    contact "
-        Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
-        Project List: <mailto:transport-api@opennetworking.org>
-        Editor: Karthik Sethuraman
-                <mailto:karthik.sethuraman@necam.com>";

+    contact "

+         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>

+         Project List: <mailto:transport-api@opennetworking.org>

+         Editor: Karthik Sethuraman

+                 <mailto:karthik.sethuraman@necam.com>";

     description "

         This module contains TAPI Connectivity Model definitions.

         Source: TapiConnectivity.uml

         Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

         License: This module is distributed under the Apache License 2.0";

+    revision 2018-10-16 {

+        description "ONF Transport API version 2.1.0.

+          - The TAPI YANG models included in this TAPI release (v2.1.0) are a *normative* part of the TAPI SDK.

+          - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]

+            <https://github.com/OpenNetworkingFoundation/EagleUmlYang>

+            and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]

+            <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>

+          - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.

+            As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.

+          - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.

+            The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.

+            YANG models included in this release are not backward compatible with previous TAPI releases.

+          - Changes included in this TAPI release (v2.1.0) are listed in

+            <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";

+    }

     revision 2018-03-07 {

-        description "ONF Transport API version 2.0.2

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.2
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";

     }

     revision 2018-02-16 {

-        description "ONF Transport API version 2.0.1

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.1
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";

     }

     revision 2018-01-02 {

-        description "ONF Transport API version 2.0.0

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.0
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";

     }

     augment "/tapi-common:context" {

-        uses connectivity-context;

+        container connectivity-context {

+            uses connectivity-context;

+            description "Augments the base TAPI Context with ConnectivityService information";

+        }

         description "Augments the base TAPI Context with ConnectivityService information";

     }

-    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {

-        uses cep-list;

+    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {

+    	container cep-list {

+            uses cep-list;

+            description "none";

+        }

         description "none";

     }

 

@@ -55,9 +78,9 @@
     * definitions of references

     *************************/

     grouping connectivity-service-ref {

-        leaf connectivity-service-id {

+        leaf connectivity-service-uuid {

             type leafref {

-                path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';

+                path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';

             }

             description "none";

         }

@@ -66,19 +89,19 @@
 

     grouping connectivity-service-end-point-ref {

     	uses connectivity-service-ref;

-    	leaf connectivity-service-end-point-id {

+    	leaf connectivity-service-end-point-local-id {

 	    	type leafref {

-	            path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point/tapi-connectivity:local-id';

+	            path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point/tapi-connectivity:local-id';

 	        }

 	    	description "none";

     	}

     	description "none";

     }

     grouping connection-end-point-ref {

-        uses tapi-topology:owned-node-edge-point-ref;

-        leaf connection-end-point-id {

+        uses tapi-topology:node-edge-point-ref;

+        leaf connection-end-point-uuid {

             type leafref {

-                path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';

+                path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';

             }

             description "none";

         }

@@ -86,9 +109,9 @@
     }

 

     grouping connection-ref {

-        leaf connection-id {

+        leaf connection-uuid {

             type leafref {

-                path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:uuid';

+                path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:uuid';

             }

             description "none";

         }

@@ -97,9 +120,9 @@
 

     grouping switch-control-ref {

         uses connection-ref;

-        leaf switch-control-id {

+        leaf switch-control-uuid {

             type leafref {

-                path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:switch-control/tapi-connectivity:uuid';

+                path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:switch-control/tapi-connectivity:uuid';

             }

             description "none";

         }

@@ -108,9 +131,9 @@
     

     grouping route-ref {

     	uses connection-ref;

-        leaf route-id {

+        leaf route-local-id {

             type leafref {

-                path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:route/tapi-connectivity:local-id';

+                path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:route/tapi-connectivity:local-id';

             }

             description "none";

         }

@@ -123,19 +146,26 @@
         grouping connection {

             list connection-end-point {

                 uses connection-end-point-ref;

-                key 'topology-id node-id owned-node-edge-point-id connection-end-point-id';

+                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';

                 config false;

                 min-elements 2;

                 description "none";

             }

             list lower-connection {

                 uses connection-ref;

-                key 'connection-id';

+                key 'connection-uuid';

+                config false;

                 description "An Connection object supports a recursive aggregation relationship such that the internal construction of an Connection can be exposed as multiple lower level Connection objects (partitioning).

                     Aggregation is used as for the Node/Topology  to allow changes in hierarchy. 

                     Connection aggregation reflects Node/Topology aggregation. 

                     The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning.";

             }

+            list supported-client-link {

+            	uses tapi-topology:link-ref;

+                key 'topology-uuid link-uuid';

+                config false;

+                description "none";

+            }

             list route {

                 key 'local-id';

                 config false;

@@ -169,20 +199,25 @@
                 config false;

                 description "none";

             }

-            container connectivity-service-end-point {

-                uses connectivity-service-end-point-ref;

+            leaf layer-protocol-qualifier {

+                type tapi-common:layer-protocol-qualifier;

+                config false;

                 description "none";

             }

-            list parent-node-edge-point {

-                uses tapi-topology:owned-node-edge-point-ref;

-                key 'topology-id node-id owned-node-edge-point-id';

+            container parent-node-edge-point {

+            	uses tapi-topology:node-edge-point-ref;

                 config false;

-                min-elements 1;

                 description "none";

             }

             list client-node-edge-point {

-                uses tapi-topology:owned-node-edge-point-ref;

-                key 'topology-id node-id owned-node-edge-point-id';

+                uses tapi-topology:node-edge-point-ref;

+                key 'topology-uuid node-uuid node-edge-point-uuid';

+                config false;

+                description "none";

+            }

+            list aggregated-connection-end-point {

+                uses connection-end-point-ref;

+                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';

                 config false;

                 description "none";

             }

@@ -203,6 +238,10 @@
                 The structure of LTP supports all transport protocols including circuit and packet forms.";

         }

         grouping connectivity-constraint {

+            leaf service-layer {

+                type tapi-common:layer-protocol-name;

+                description "none";

+            }

             leaf service-type {

                 type service-type;

                 description "none";

@@ -211,39 +250,27 @@
                 type string;

                 description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";

             }

-            leaf is-exclusive {

-                type boolean;

-                default "true";

-                description "To distinguish if the resources are exclusive to the service  - for example between EPL(isExclusive=true) and EVPL (isExclusive=false), or between EPLAN (isExclusive=true) and EVPLAN (isExclusive=false)";

-            }

             container requested-capacity {

                 uses tapi-common:capacity;

                 description "none";

             }

+            leaf connectivity-direction {

+                type tapi-common:forwarding-direction;

+                description "none";

+            }

             container schedule {

                 uses tapi-common:time-range;

                 description "none";

             }

-            list cost-characteristic {

-                key 'cost-name';

-                uses tapi-topology:cost-characteristic;

-                description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";

-            }

-            list latency-characteristic {

-                key 'traffic-property-name';

-                uses tapi-topology:latency-characteristic;

-                description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";

-            }

             container coroute-inclusion {

-                uses connectivity-service-ref;

+            	uses connectivity-service-ref;

                 description "none";

             }

             list diversity-exclusion {

-                uses connectivity-service-ref;

-                key 'connectivity-service-id';

+            	uses connectivity-service-ref;

+                key 'connectivity-service-uuid';

                 description "none";

             }

-            uses route-compute-policy;

             description "none";

         }

         grouping connectivity-service {

@@ -255,23 +282,16 @@
             }

             list connection {

                 uses connection-ref;

-                key 'connection-id';

+                key 'connection-uuid';

                 config false;

                 description "none";

             }

-            leaf direction {

-                type tapi-common:forwarding-direction;

-                description "none";

-            }

-            leaf layer-protocol-name {

-                type tapi-common:layer-protocol-name;

-                description "none";

-            }

             uses tapi-common:service-spec;

             uses connectivity-constraint;

-            uses topology-constraint;

-            uses tapi-common:admin-state-pac;

+            uses tapi-path-computation:routing-constraint;

+            uses tapi-path-computation:topology-constraint;

             uses resilience-constraint;

+            uses tapi-common:admin-state-pac;

             description "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs and like the LTP supports any transport protocol including all circuit and packet forms.

                 At the lowest level of recursion, a FC represents a cross-connection within an NE.";

         }

@@ -280,10 +300,20 @@
                 type tapi-common:layer-protocol-name;

                 description "none";

             }

+            leaf layer-protocol-qualifier {

+                type tapi-common:layer-protocol-qualifier;

+                description "none";

+            }

             container service-interface-point {

                 uses tapi-common:service-interface-point-ref;

                 description "none";

             }

+            list connection-end-point {

+            	uses connection-end-point-ref;

+                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';

+                config false;

+                description "none";

+            }

             container capacity {

                 uses tapi-common:capacity;

                 description "none";

@@ -313,7 +343,7 @@
         grouping route {

             list connection-end-point {

                 uses connection-end-point-ref;

-                key 'topology-id node-id owned-node-edge-point-id connection-end-point-id';

+                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';

                 config false;

                 min-elements 2;

                 description "none";

@@ -340,13 +370,13 @@
         grouping switch {

             list selected-connection-end-point {

                 uses connection-end-point-ref;

-                key 'topology-id node-id owned-node-edge-point-id connection-end-point-id';

+                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';

                 min-elements 1;

                 description "none";

             }

             list selected-route {

                 uses route-ref;

-                key 'connection-id route-id';

+                key 'connection-uuid route-local-id';

                 min-elements 1;

                 description "none";

             }

@@ -380,7 +410,7 @@
         grouping switch-control {

             list sub-switch-control {

                 uses switch-control-ref;

-                key 'connection-id switch-control-id';

+                key 'connection-uuid switch-control-uuid';

                 description "none";

             }

             list switch {

@@ -439,68 +469,12 @@
                 type uint64;

                 description "Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset.";

             }

-            leaf layer-protocol {

+            leaf-list preferred-restoration-layer {

                 type tapi-common:layer-protocol-name;

                 description "Indicate which layer this resilience parameters package configured for.";

             }

             description "A list of control parameters to apply to a switch.";

         }

-        grouping topology-constraint {

-            list include-topology {

-                uses tapi-topology:topology-ref;

-                key 'topology-id';

-                config false;

-                description "none";

-            }

-            list avoid-topology {

-                uses tapi-topology:topology-ref;

-                key 'topology-id';

-                config false;

-                description "none";

-            }

-            list include-path {

-                uses tapi-path-computation:path-ref;

-                key 'path-id';

-                config false;

-                description "none";

-            }

-            list exclude-path {

-                uses tapi-path-computation:path-ref;

-                key 'path-id';

-                config false;

-                description "none";

-            }

-            list include-link {

-                uses tapi-topology:link-ref;

-                key 'topology-id link-id';

-                config false;

-                description "This is a loose constraint - that is it is unordered and could be a partial list ";

-            }

-            list exclude-link {

-                uses tapi-topology:link-ref;

-                key 'topology-id link-id';

-                config false;

-                description "none";

-            }

-            list include-node {

-                uses tapi-topology:node-ref;

-                key 'topology-id node-id';

-                config false;

-                description "This is a loose constraint - that is it is unordered and could be a partial list";

-            }

-            list exclude-node {

-                uses tapi-topology:node-ref;

-                key 'topology-id node-id';

-                config false;

-                description "none";

-            }

-            leaf-list preferred-transport-layer {

-                type tapi-common:layer-protocol-name;

-                config false;

-                description "soft constraint requested by client to indicate the layer(s) of transport connection that it prefers to carry the service. This could be same as the service layer or one of the supported server layers";

-            }

-            description "none";

-        }

         grouping cep-list {

             list connection-end-point {

                 key 'uuid';

@@ -509,17 +483,6 @@
             }

             description "none";

         }

-        grouping route-compute-policy {

-            leaf route-objective-function {

-                type route-objective-function;

-                description "none";

-            }

-            leaf diversity-policy {

-                type diversity-policy;

-                description "none";

-            }

-            description "none";

-        }

 

     /***********************

     * package type-definitions

@@ -612,52 +575,6 @@
             }

             description "none";

         }

-        typedef route-objective-function {

-            type enumeration {

-                enum MIN_WORK_ROUTE_HOP {

-                    description "none";

-                }

-                enum MIN_WORK_ROUTE_COST {

-                    description "none";

-                }

-                enum MIN_WORK_ROUTE_LATENCY {

-                    description "none";

-                }

-                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_HOP {

-                    description "none";

-                }

-                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_COST {

-                    description "none";

-                }

-                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_LATENCY {

-                    description "none";

-                }

-                enum LOAD_BALANCE_MAX_UNUSED_CAPACITY {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef diversity-policy {

-            type enumeration {

-                enum SRLG {

-                    description "none";

-                }

-                enum SRNG {

-                    description "none";

-                }

-                enum SNG {

-                    description "none";

-                }

-                enum NODE {

-                    description "none";

-                }

-                enum LINK {

-                    description "none";

-                }

-            }

-            description "none";

-        }

         typedef protection-role {

             type enumeration {

                 enum WORK {

@@ -737,12 +654,16 @@
                     uses connectivity-service-end-point;

                     description "none";

                 }

-                container conn-constraint {

+                container connectivity-constraint {

                     uses connectivity-constraint;

                     description "none";

                 }

-                container topo-constraint {

-                    uses topology-constraint;

+                container routing-constraint {

+                    uses tapi-path-computation:routing-constraint;

+                    description "none";

+                }

+                container topology-constraint {

+                    uses tapi-path-computation:topology-constraint;

                     description "none";

                 }

                 list resilience-constraint {

@@ -772,12 +693,16 @@
                     uses connectivity-service-end-point;

                     description "none";

                 }

-                container conn-constraint {

+                container connectivity-constraint {

                     uses connectivity-constraint;

                     description "none";

                 }

-                container topo-constraint {

-                    uses topology-constraint;

+                container routing-constraint {

+                    uses tapi-path-computation:routing-constraint;

+                    description "none";

+                }

+                container topology-constraint {

+                    uses tapi-path-computation:topology-constraint;

                     description "none";

                 }

                 list resilience-constraint {

@@ -804,12 +729,6 @@
                     description "none";

                 }

             }

-            output {

-                container service {

-                    uses connectivity-service;

-                    description "none";

-                }

-            }

         }

 

 }

diff --git a/models/tapi/src/main/yang/tapi-dsr@2018-10-16.yang b/models/tapi/src/main/yang/tapi-dsr@2018-10-16.yang
new file mode 100644
index 0000000..362ab4e
--- /dev/null
+++ b/models/tapi/src/main/yang/tapi-dsr@2018-10-16.yang
@@ -0,0 +1,214 @@
+module tapi-dsr {

+    namespace "urn:onf:otcc:yang:tapi-dsr";

+    prefix tapi-dsr;

+    import tapi-common {

+        prefix tapi-common;

+    }

+    organization "ONF OTCC (Open Transport Configuration & Control) Project";

+    contact "

+         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>

+         Project List: <mailto:transport-api@opennetworking.org>

+         Editor: Karthik Sethuraman

+                 <mailto:karthik.sethuraman@necam.com>";

+    description "none";

+    revision 2018-10-16 {

+        description "ONF Transport API version 2.1.0.

+          - The TAPI YANG models included in this TAPI release (v2.1.0) are a *normative* part of the TAPI SDK.

+          - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]

+            <https://github.com/OpenNetworkingFoundation/EagleUmlYang>

+            and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]

+            <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>

+          - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.

+            As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.

+          - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.

+            The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.

+            YANG models included in this release are not backward compatible with previous TAPI releases.

+          - Changes included in this TAPI release (v2.1.0) are listed in

+            <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";

+    }

+    revision 2018-03-07 {

+        description "ONF Transport API version 2.0.2
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";

+    }

+    revision 2018-02-16 {

+        description "ONF Transport API version 2.0.1
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";

+    }

+    revision 2018-01-02 {

+        description "ONF Transport API version 2.0.0
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";

+    }

+    /***********************

+    * package type-definitions

+    **********************/ 

+        identity DIGITAL_SIGNAL_TYPE {

+        	base tapi-common:LAYER_PROTOCOL_QUALIFIER;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_GigE {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_10_GigE_LAN {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_10_GigE_WAN {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_40_GigE {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_100_GigE {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_FC_100 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_FC_200 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_FC_400 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_FC_800 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_FC_1200 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_FC_1600 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_FC_3200 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_STM_1 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_STM_4 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_STM_16 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_STM_64 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_STM_256 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_OC_3 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_OC_12 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_OC_48 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_OC_192 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_OC_768 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_OTU_1 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_OTU_2 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_OTU_2E {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_OTU_3 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_OTU_4 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_GPON {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_XGPON {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_IB_SDR {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_IB_DDR {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_IB_QDR {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_SBCON_ESCON {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_DVB_ASI {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_SDI {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_SDI_1G5 {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        identity DIGITAL_SIGNAL_TYPE_SDI_3G {

+            base DIGITAL_SIGNAL_TYPE;

+            description "none";

+        }

+        typedef digital-signal-type {

+            type identityref {

+                base DIGITAL_SIGNAL_TYPE;

+            }

+            description "none";

+        }

+

+}

diff --git a/models/tapi/src/main/yang/tapi-eth@2018-03-07.yang b/models/tapi/src/main/yang/tapi-eth@2018-03-07.yang
deleted file mode 100644
index 0de1f8d..0000000
--- a/models/tapi/src/main/yang/tapi-eth@2018-03-07.yang
+++ /dev/null
@@ -1,802 +0,0 @@
-module tapi-eth {

-    namespace "urn:onf:otcc:yang:tapi-eth";

-    prefix tapi-eth;

-    import tapi-common {

-        prefix tapi-common;

-    }

-    import tapi-topology {

-        prefix tapi-topology;

-    }

-    import tapi-connectivity {

-        prefix tapi-connectivity;

-    }

-    organization "ONF OTCC (Open Transport Configuration & Control) Project";

-    contact "
-        Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
-        Project List: <mailto:transport-api@opennetworking.org>
-        Editor: Karthik Sethuraman
-                <mailto:karthik.sethuraman@necam.com>";

-    description "

-        This module contains TAPI ETH Model definitions.

-        Source: TapiEth.uml

-        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

-        License: This module is distributed under the Apache License 2.0";

-    revision 2018-03-07 {

-        description "ONF Transport API version 2.0.2

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

-        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

-                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";

-    }

-    revision 2018-02-16 {

-        description "ONF Transport API version 2.0.1

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

-        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

-                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";

-    }

-    revision 2018-01-02 {

-        description "ONF Transport API version 2.0.0

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

-        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

-                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";

-    }

-    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {

-        uses eth-node-edge-point-spec;

-        description "Augments the base LayerProtocol information in NodeEndPoint with ETH-specific information";

-    }

-    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point" {

-        uses eth-connection-end-point-spec;

-        description "Augments the base LayerProtocol information in ConnectionEndPoint with ETH-specific information";

-    }

-    /***********************

-    * package object-classes

-    **********************/ 

-        grouping eth-ctp-pac {

-            leaf-list auxiliary-function-position-sequence {

-                type uint64;

-                description "This attribute indicates the positions (i.e., the relative order) of all the MEP, MIP, and TCS objects which are associated with the CTP.";

-            }

-            leaf vlan-config {

-                type uint64;

-                description "This attribute models the ETHx/ETH-m_A_So_MI_Vlan_Config information defined in G.8021.

-                    range of type : -1, 0, 1..4094";

-            }

-            leaf csf-rdi-fdi-enable {

-                type boolean;

-                description "This attribute models the MI_CSFrdifdiEnable information defined in G.8021.";

-            }

-            leaf csf-report {

-                type boolean;

-                description "This attribute models the MI_CSF_Reported information defined in G.8021.

-                    range of type : true, false";

-            }

-            leaf-list filter-config-snk {

-                type mac-address;

-                description "This attribute models the FilteConfig MI defined in 8.3/G.8021. It indicates the configured filter action for each of the 33 group MAC addresses for control frames. The 33 MAC addresses are:

-                    01-80-C2-00-00-10, 

-                    01-80-C2-00-00-00 to 01-80-C2-00-00-0F, and 

-                    01-80-C2-00-00-20 to 01-80-C2-00-00-2F.

-                    The filter action is Pass or Block. 

-                    If the destination address of the incoming ETH_CI_D matches one of the above addresses, the filter process shall perform the corresponding configured filter action. 

-                    If none of the above addresses match, the ETH_CI_D is passed.";

-            }

-            leaf mac-length {

-                type uint64;

-                default "2000";

-                description "This attribute models the MAC_Lenght MI defined in 8.6/G.8021 for the MAC Length Check process. It indicates the allowed maximum frame length in bytes.

-                    range of type : 1518, 1522, 2000";

-            }

-            container filter-config {

-                uses control-frame-filter;

-                description "This attribute models the FilterConfig MI defined in section 8.3/G.8021. It indicates the configured filter action for each of the 33 group MAC addresses for control frames. The 33 MAC addresses are:

-                    - All bridges address: 01-80-C2-00-00-10,

-                    - Reserved addresses: 01-80-C2-00-00-00 to 01-80-C2-00-00-0F,

-                    - GARP Application addresses: 01-80-C2-00-00-20 to 01-80-C2-00-00-2F.

-                    The filter action is Pass or Block. 

-                    If the destination address of the incoming ETH_CI_D matches one of the above addresses, the filter process shall perform the corresponding configured filter action. 

-                    If none of the above addresses match, the ETH_CI_D is passed.";

-            }

-            leaf is-ssf-reported {

-                type boolean;

-                description "This attribute provisions whether the SSF defect should be reported as fault cause or not.

-                    It models the ETH-LAG_FT_Sk_MI_SSF_Reported defined in G.8021.";

-            }

-            leaf pll-thr {

-                type uint64;

-                description "This attribute provisions the threshold for the number of active ports. If the number of active ports is more than zero but less than the provisioned threshold, a cPLL (Partial Link Loss) is raised. See section 9.7.1.2 of G.8021.

-                    range of type : 0..number of ports";

-            }

-            leaf actor-oper-key {

-                type uint64;

-                config false;

-                description "See 802.1AX:

-                    The current operational value of the Key for the Aggregator. The administrative Key value may differ from the operational Key value for the reasons discussed in 5.6.2.

-                    The meaning of particular Key values is of local significance.

-                    range of type : 16 bit";

-            }

-            leaf actor-system-id {

-                type mac-address;

-                description "See 802.1AX:

-                    A MAC address used as a unique identifier for the System that contains this Aggregator.";

-            }

-            leaf actor-system-priority {

-                type uint64;

-                description "See 802.1AX:

-                    Indicating the priority associated with the Actor’s System ID.

-                    range of type : 2-octet";

-            }

-            leaf collector-max-delay {

-                type uint64;

-                description "See 802.1AX:

-                    The value of this attribute defines the maximum delay, in tens of microseconds, that may be imposed by the Frame Collector between receiving a frame from an Aggregator Parser, and either delivering the frame to its MAC Client or discarding the frame (see IEEE 802.1AX clause 5.2.3.1.1).

-                    range of type : 16-bit";

-            }

-            leaf data-rate {

-                type uint64;

-                config false;

-                description "See 802.1AX:

-                    The current data rate, in bits per second, of the aggregate link. The value is calculated as N times the data rate of a single link in the aggregation, where N is the number of active links.";

-            }

-            leaf partner-oper-key {

-                type uint64;

-                config false;

-                description "See 802.1AX:

-                    The current operational value of the Key for the Aggregator’s current protocol Partner. If the aggregation is manually configured, this Key value will be a value assigned by the local System.

-                    range of type : 16-bit";

-            }

-            leaf partner-system-id {

-                type mac-address;

-                config false;

-                description "See 802.1AX:

-                    A MAC address consisting of the unique identifier for the current protocol Partner of this Aggregator. A value of zero indicates that there is no known Partner. If the aggregation is manually configured, this System ID value will be a value assigned by the local System.";

-            }

-            leaf partner-system-priority {

-                type uint64;

-                config false;

-                description "See 802.1AX:

-                    Indicates the priority associated with the Partner’s System ID. If the aggregation is manually configured, this System Priority value will be a value assigned by the local System.

-                    range of type : 2-octet";

-            }

-            leaf csf-config {

-                type csf-config;

-                description "This attribute models the combination of all CSF related MI signals (MI_CSF_Enable, MI_CSFrdifdi_Enable, MI_CSFdci_Enable) as defined in G.8021.

-                    range of type : true, false";

-            }

-            container traffic-shaping {

-                uses traffic-shaping-pac;

-                description "none";

-            }

-            container traffic-conditioning {

-                uses traffic-conditioning-pac;

-                description "none";

-            }

-            description "none";

-        }

-        grouping eth-connection-end-point-spec {

-            container eth-term {

-                uses eth-termination-pac;

-                description "none";

-            }

-            container eth-ctp {

-                uses eth-ctp-pac;

-                description "none";

-            }

-            description "none";

-        }

-        grouping eth-termination-pac {

-            container priority-regenerate {

-                uses priority-mapping;

-                description "This attribute models the ETHx/ETH-m _A_Sk_MI_P_Regenerate information defined in G.8021.";

-            }

-            leaf ether-type {

-                type vlan-type;

-                description "This attribute models the ETHx/ETH-m _A_Sk_MI_Etype information defined in G.8021.";

-            }

-            leaf-list filter-config-1 {

-                type mac-address;

-                description "This attribute models the ETHx/ETH-m_A_Sk_MI_Filter_Config information defined in G.8021.

-                    It indicates the configured filter action for each of the 33 group MAC addresses for control frames.

-                    The 33 MAC addresses are:

-                    01-80-C2-00-00-10, 

-                    01-80-C2-00-00-00 to 01-80-C2-00-00-0F, and 

-                    01-80-C2-00-00-20 to 01-80-C2-00-00-2F.

-                    The filter action is Pass or Block. 

-                    If the destination address of the incoming ETH_CI_D matches one of the above addresses, the filter process shall perform the corresponding configured filter action. 

-                    If none of the above addresses match, the ETH_CI_D is passed.

-                    range of type : MacAddress: 

-                    01-80-C2-00-00-10, 

-                    01-80-C2-00-00-00 to 

-                    01-80-C2-00-00-0F, and 

-                    01-80-C2-00-00-20 to 

-                    01-80-C2-00-00-2F;

-                    ActionEnum:

-                    PASS, BLOCK";

-            }

-            leaf frametype-config {

-                type frame-type;

-                description "This attribute models the ETHx/ETH-m_A_Sk_MI_Frametype_Config information defined in G.8021.

-                    range of type : see Enumeration";

-            }

-            leaf port-vid {

-                type vid;

-                default "1";

-                description "This attribute models the ETHx/ETH-m _A_Sk_MI_PVID information defined in G.8021.";

-            }

-            leaf priority-code-point-config {

-                type pcp-coding;

-                description "This attribute models the ETHx/ETH-m _A_Sk_MI_PCP_Config information defined in G.8021.

-                    range of type : see Enumeration";

-            }

-            description "This object class models the Ethernet Flow Termination function located at a layer boundary.";

-        }

-        grouping ety-termination-pac {

-            leaf is-fts-enabled {

-                type boolean;

-                description "This attribute indicates whether Forced Transmitter Shutdown (FTS) is enabled or not. It models the ETYn_TT_So_MI_FTSEnable information.";

-            }

-            leaf is-tx-pause-enabled {

-                type boolean;

-                description "This attribute identifies whether the Transmit Pause process is enabled or not. It models the MI_TxPauseEnable defined in G.8021.";

-            }

-            leaf phy-type {

-                type ety-phy-type;

-                config false;

-                description "This attribute identifies the PHY type of the ETY trail termination. See IEEE 802.3 clause 30.3.2.1.2.";

-            }

-            leaf-list phy-type-list {

-                type ety-phy-type;

-                config false;

-                description "This attribute identifies the possible PHY types that could be supported at the ETY trail termination. See IEEE 802.3 clause 30.3.2.1.3.";

-            }

-            description "none";

-        }

-        grouping traffic-conditioning-pac {

-            list prio-config-list {

-                config false;

-                uses priority-configuration;

-                description "This attribute indicates the Priority Splitter function for the mapping of the Ethernet frame priority (ETH_CI_P) values to the output queue.";

-            }

-            list cond-config-list {

-                config false;

-                uses traffic-conditioning-configuration;

-                description "This attribute indicates for the conditioner process the conditioning parameters:

-                    - Queue ID: Indicates the Queue ID

-                    - Committed Information Rate (CIR): number of bits per second

-                    - Committed Burst Size (CBS): number of bytes

-                    - Excess Information Rate (EIR): number of bits per second

-                    - Excess Burst Size (EBS): number of bytes

-                    - Coupling flag (CF): 0 or 1

-                    - Color mode (CM): color-blind and color-aware.";

-            }

-            leaf codirectional {

-                type boolean;

-                config false;

-                description "This attribute indicates the direction of the conditioner. The value of true means that the conditioner (modeled as a TCS Sink according to G.8021) is associated with the sink part of the containing CTP. The value of false means that the conditioner (modeled as a TCS Sink according to G.8021) is associated with the source part of the containing CTP.";

-            }

-            description "This object class models the ETH traffic conditioning function as defined in G.8021.

-                Basic attributes: codirectional, condConfigList, prioConfigList";

-        }

-        grouping traffic-shaping-pac {

-            list prio-config-list {

-                config false;

-                uses priority-configuration;

-                description "This attribute configures the Priority Splitter function for the mapping of the Ethernet frame priority (ETH_CI_P) values to the output queue.";

-            }

-            list queue-config-list {

-                config false;

-                uses queue-configuration;

-                description "This attribute configures the Queue depth and Dropping threshold parameters of the Queue process. The Queue depth sets the maximum size of the queue in bytes. An incoming ETH_CI traffic unit is dropped if there is insufficient space in the queue to hold the whole unit. The Dropping threshold sets the threshold of the queue. If the queue is filled beyond this threshold, incoming ETH_CI traffic units accompanied by the ETH_CI_DE signal set are dropped.";

-            }

-            leaf sched-config {

-                type scheduling-configuration;

-                config false;

-                description "This attribute configures the scheduler process. The value of this attribute is for further study because it is for further study in G.8021.

-                    Scheduler is a pointer to a Scheduler object, which is to be defined in the future (because in G.8021, this is FFS).

-                    Note that the only significance of the GTCS function defined in G.8021 is the use of a common scheduler for shaping. Given that, G.8052 models the common scheduler feature by having a common value for this attribute.";

-            }

-            leaf codirectional {

-                type boolean;

-                config false;

-                description "This attribute indicates the direction of the shaping function. The value of true means that the shaping (modeled as a TCS Source according to G.8021) is associated with the source part of the containing CTP. The value of false means that the shaping (modeled as a TCS Source according to G.8021) is associated with the sink part of the containing CTP.";

-            }

-            description "This object class models the ETH traffic shaping function as defined in G.8021.

-                Basic attribute: codirectional, prioConfigList, queueConfigList, schedConfig";

-        }

-        grouping eth-node-edge-point-spec {

-            container ety-term {

-                uses ety-termination-pac;

-                description "none";

-            }

-            description "none";

-        }

-

-    /***********************

-    * package type-definitions

-    **********************/ 

-        grouping priority-configuration {

-            leaf priority {

-                type uint64 {

-                    range "0..7";

-                }

-                description "none";

-            }

-            leaf queue-id {

-                type uint64 {

-                    range "1..8";

-                }

-                description "none";

-            }

-            description "none";

-        }

-        grouping queue-configuration {

-            leaf queue-id {

-                type uint64;

-                description "This attribute indicates the queue id.";

-            }

-            leaf queue-depth {

-                type uint64;

-                description "This attribute defines the depth of the queue in bytes.";

-            }

-            leaf queue-threshold {

-                type uint64;

-                description "This attribute defines the threshold of the queue in bytes.";

-            }

-            description "none";

-        }

-        grouping traffic-conditioning-configuration {

-            leaf cir {

-                type uint64;

-                description "This attribute indicates the Committed Information Rate in bits/s.";

-            }

-            leaf cbs {

-                type uint64;

-                description "This attribute indicates the Committed Burst Size in bytes.";

-            }

-            leaf eir {

-                type uint64;

-                description "This attribute indicates the Excess Information Rate in bits/s.";

-            }

-            leaf ebs {

-                type uint64;

-                description "This attribute indicates the Excess Burst Size in bytes.";

-            }

-            leaf coupling-flag {

-                type boolean;

-                description "This attribute indicates the coupling flag.";

-            }

-            leaf colour-mode {

-                type colour-mode;

-                description "This attribute indicates the colour mode.";

-            }

-            leaf queue-id {

-                type uint64 {

-                    range "1..8";

-                }

-                description "This attribute indicates the queue id.";

-            }

-            description "none";

-        }

-        typedef mac-address {

-            type string;

-            description "This primitive data type contains an Ethernet MAC address defined by IEEE 802a. The format of the address consists of 12 hexadecimal characters, grouped in pairs and separated by '-' (e.g., 03-27-AC-75-3E-1D).";

-        }

-        grouping priority-mapping {

-            leaf priority-0 {

-                type uint64 {

-                    range "0..7";

-                }

-                description "This attribute defines the new priority value for the old priority value 0.";

-            }

-            leaf priority-1 {

-                type uint64 {

-                    range "0..7";

-                }

-                default "1";

-                description "This attribute defines the new priority value for the old priority value 1.";

-            }

-            leaf priority-2 {

-                type uint64 {

-                    range "0..7";

-                }

-                default "2";

-                description "This attribute defines the new priority value for the old priority value 2.";

-            }

-            leaf priority-3 {

-                type uint64 {

-                    range "0..7";

-                }

-                default "3";

-                description "This attribute defines the new priority value for the old priority value 3.";

-            }

-            leaf priority-4 {

-                type uint64 {

-                    range "0..7";

-                }

-                default "4";

-                description "This attribute defines the new priority value for the old priority value 4.";

-            }

-            leaf priority-5 {

-                type uint64 {

-                    range "0..7";

-                }

-                default "5";

-                description "This attribute defines the new priority value for the old priority value 5.";

-            }

-            leaf priority-6 {

-                type uint64 {

-                    range "0..7";

-                }

-                default "6";

-                description "This attribute defines the new priority value for the old priority value 6.";

-            }

-            leaf priority-7 {

-                type uint64 {

-                    range "0..7";

-                }

-                default "7";

-                description "This attribute defines the new priority value for the old priority value 7.";

-            }

-            description "This data type provides the priority mapping done in the 'P Regenerate' process defined in G.8021.";

-        }

-        typedef vid {

-            type string;

-            description "This primitive type models the 12 Bit VLAN identifier of a VLAN tag.";

-        }

-        typedef modify-cross-connection-data {

-            type string;

-            description "none";

-        }

-        grouping address-tuple {

-            leaf address {

-                type mac-address;

-                description "This attribute contains the MAC address of the address tuple.";

-            }

-            leaf-list port-list {

-                type mac-address;

-                description "This attribute contains the ports associated to the MAC address in the address tuple.";

-            }

-            description "This data type contains an address tuple consisting of a MAC address and a corresponding port list.";

-        }

-        typedef scheduling-configuration {

-            type string;

-            description "The syntax of this dataType is pending on the specification in G.8021, which is for further study.";

-        }

-        grouping control-frame-filter {

-            leaf c-2-00-00-10 {

-                type boolean;

-                description "This attribute identifies the 'All LANs Bridge Management Group Address'.";

-            }

-            leaf c-2-00-00-00 {

-                type boolean;

-                description "This attribute identifies the STP/RSTP/MSTP protocol address.";

-            }

-            leaf c-2-00-00-01 {

-                type boolean;

-                description "This attribute identifies the IEEE MAC-specific Control Protocols group address (PAUSE protocol).";

-            }

-            leaf c-2-00-00-02 {

-                type boolean;

-                description "This attribute identifies the IEEE 802.3 Slow_Protocols_Multicast address (LACP/LAMP or Link OAM protocols).";

-            }

-            leaf c-2-00-00-03 {

-                type boolean;

-                description "This attribute identifies the Nearest non-TPMR Bridge group address (Port Authentication protocol).";

-            }

-            leaf c-2-00-00-04 {

-                type boolean;

-                description "This attribute identifies the IEEE MAC-specific Control Protocols group address.";

-            }

-            leaf c-2-00-00-05 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-06 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-07 {

-                type boolean;

-                description "This attribute identifies the Metro Ethernet Forum E-LMI protocol group address.";

-            }

-            leaf c-2-00-00-08 {

-                type boolean;

-                description "This attribute identifies the Provider Bridge Group address.";

-            }

-            leaf c-2-00-00-09 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-0-a {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-0-b {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-0-c {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-0-d {

-                type boolean;

-                description "This attribute identifies the Provider Bridge MVRP address.";

-            }

-            leaf c-2-00-00-0-e {

-                type boolean;

-                description "This attribute identifies the Individual LAN Scope group address, Nearest Bridge group address (LLDP protocol).";

-            }

-            leaf c-2-00-00-0-f {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-20 {

-                type boolean;

-                description "This attribute identifies the Customer and Provider Bridge MMRP address.";

-            }

-            leaf c-2-00-00-21 {

-                type boolean;

-                description "This attribute identifies the Customer Bridge MVRP address.";

-            }

-            leaf c-2-00-00-22 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-23 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-24 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-25 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-26 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-27 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-28 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-29 {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-2-a {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-2-b {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-2-c {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-2-d {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-2-e {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            leaf c-2-00-00-2-f {

-                type boolean;

-                description "Reserved for future standardization.";

-            }

-            description "This data type identifies the filter action for each of the 33 group MAC addresses (control frames).

-                Value 'false' means block: The frame is discarded by the filter process.

-                Value 'true' means pass: The frame is passed unchanged through the filter process.";

-        }

-        grouping bandwidth-report {

-            leaf source-mac-address {

-                type mac-address;

-                description "The sourceMacAddress is the address from the far end.";

-            }

-            leaf port-id {

-                type uint64;

-                description "This attribute returns the far end port identifier.";

-            }

-            leaf nominal-bandwidth {

-                type uint64;

-                description "This attribute returns the configured bandwidth";

-            }

-            leaf current-bandwidth {

-                type uint64;

-                description "This attribute returns the current bandwidth.";

-            }

-            description "Data type for the bandwidth report.";

-        }

-        typedef admin-state {

-            type enumeration {

-                enum LOCK {

-                    description "none";

-                }

-                enum NORMAL {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef colour-mode {

-            type enumeration {

-                enum COLOUR_BLIND {

-                    description "none";

-                }

-                enum COLOUR_AWARE {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef csf-config {

-            type enumeration {

-                enum DISABLED {

-                    description "This literal covers the following states of the CSF related MI informations:

-                        - MI_CSF_Enable is false

-                        - MI_CSFrdifdi_Enable is false

-                        - MI_CSFdci_Enable is false.";

-                }

-                enum ENABLED {

-                    description "This literal covers the following states of the CSF related MI informations:

-                        - MI_CSF_Enable is true

-                        - MI_CSFrdifdi_Enable is false

-                        - MI_CSFdci_Enable is false.";

-                }

-                enum ENABLED_WITH_RDI_FDI {

-                    description "This literal covers the following states of the CSF related MI informations:

-                        - MI_CSF_Enable is true

-                        - MI_CSFrdifdi_Enable is true

-                        - MI_CSFdci_Enable is false.";

-                }

-                enum ENABLED_WITH_RDI_FDI_DCI {

-                    description "This literal covers the following states of the CSF related MI informations:

-                        - MI_CSF_Enable is true

-                        - MI_CSFrdifdi_Enable is true

-                        - MI_CSFdci_Enable is true.";

-                }

-                enum ENABLED_WITH_DCI {

-                    description "This literal covers the following states of the CSF related MI informations:

-                        - MI_CSF_Enable is true

-                        - MI_CSFrdifdi_Enable is false

-                        - MI_CSFdci_Enable is true.";

-                }

-            }

-            description "none";

-        }

-        typedef ety-phy-type {

-            type enumeration {

-                enum OTHER {

-                    description "none";

-                }

-                enum UNKNOWN {

-                    description "none";

-                }

-                enum NONE {

-                    description "none";

-                }

-                enum 2BASE_TL {

-                    description "none";

-                }

-                enum 10MBIT_S {

-                    description "none";

-                }

-                enum 10PASS_TS {

-                    description "none";

-                }

-                enum 100BASE_T4 {

-                    description "none";

-                }

-                enum 100BASE_X {

-                    description "none";

-                }

-                enum 100BASE_T2 {

-                    description "none";

-                }

-                enum 1000BASE_X {

-                    description "none";

-                }

-                enum 1000BASE_T {

-                    description "none";

-                }

-                enum 10GBASE-X {

-                    description "none";

-                }

-                enum 10GBASE_R {

-                    description "none";

-                }

-                enum 10GBASE_W {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef frame-type {

-            type enumeration {

-                enum ADMIT_ONLY_VLAN_TAGGED_FRAMES {

-                    description "none";

-                }

-                enum ADMIT_ONLY_UNTAGGED_AND_PRIORITY_TAGGED_FRAMES {

-                    description "none";

-                }

-                enum ADMIT_ALL_FRAMES {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef oam-period {

-            type enumeration {

-                enum 3_33MS {

-                    description "Default for protection.";

-                }

-                enum 10MS {

-                    description "none";

-                }

-                enum 100MS {

-                    description "none";

-                }

-                enum 1S {

-                    description "none";

-                }

-                enum 10S {

-                    description "none";

-                }

-                enum 1MIN {

-                    description "none";

-                }

-                enum 10MIN {

-                    description "none";

-                }

-            }

-            description "Provides the frequency for the OAM PDU insertion.";

-        }

-        typedef pcp-coding {

-            type enumeration {

-                enum 8P0D {

-                    description "none";

-                }

-                enum 7P1D {

-                    description "none";

-                }

-                enum 6P2D {

-                    description "none";

-                }

-                enum 5P3D {

-                    description "none";

-                }

-                enum DEI {

-                    description "This enumeration value means that all priorities should be drop eligible.

-                        DEI = Drop Eligibility Indicator";

-                }

-            }

-            description "This enum models the coding of the Priority Code Point as defined in section 'Priority Code Point encoding' of IEEE 802.1Q.";

-        }

-        typedef vlan-type {

-            type enumeration {

-                enum C_Tag {

-                    description "0x8100";

-                }

-                enum S_Tag {

-                    description "0x88a8";

-                }

-                enum I_Tag {

-                    description "88-e7";

-                }

-            }

-            description "This enumeration contains the Ethertypes defined in IEEE 802.1Q.";

-        }

-

-}

diff --git a/models/tapi/src/main/yang/tapi-eth@2018-10-16.yang b/models/tapi/src/main/yang/tapi-eth@2018-10-16.yang
new file mode 100644
index 0000000..e4cd3f3
--- /dev/null
+++ b/models/tapi/src/main/yang/tapi-eth@2018-10-16.yang
@@ -0,0 +1,1892 @@
+module tapi-eth {

+    namespace "urn:onf:otcc:yang:tapi-eth";

+    prefix tapi-eth;

+    import tapi-common {

+        prefix tapi-common;

+    }

+    import tapi-topology {

+        prefix tapi-topology;

+    }

+    import tapi-connectivity {

+        prefix tapi-connectivity;

+    }

+    import tapi-oam {

+        prefix tapi-oam;

+    }

+    organization "ONF OTCC (Open Transport Configuration & Control) Project";

+    contact "

+         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>

+         Project List: <mailto:transport-api@opennetworking.org>

+         Editor: Karthik Sethuraman

+                 <mailto:karthik.sethuraman@necam.com>";

+    description "This module contains TAPI ETH Model definitions.

+        Source: TapiEth.uml

+        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

+        License: This module is distributed under the Apache License 2.0";

+    revision 2018-10-16 {

+        description "ONF Transport API version 2.1.0.

+          - The TAPI YANG models included in this TAPI release (v2.1.0) are a *normative* part of the TAPI SDK.

+          - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]

+            <https://github.com/OpenNetworkingFoundation/EagleUmlYang>

+            and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]

+            <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>

+          - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.

+            As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.

+          - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.

+            The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.

+            YANG models included in this release are not backward compatible with previous TAPI releases.

+          - Changes included in this TAPI release (v2.1.0) are listed in

+            <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";

+    }

+    revision 2018-03-07 {

+        description "ONF Transport API version 2.0.2
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";

+    }

+    revision 2018-02-16 {

+        description "ONF Transport API version 2.0.1
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";

+    }

+    revision 2018-01-02 {

+        description "ONF Transport API version 2.0.0
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";

+    }

+    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point" {

+        container eth-connection-end-point-spec {

+            uses eth-connection-end-point-spec;

+            description "Augments the base LayerProtocol information in ConnectionEndPoint with ETH-specific information";

+        }

+        description "Augments the base LayerProtocol information in ConnectionEndPoint with ETH-specific information";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job" {

+        container eth-loopback-job {

+            uses eth-loopback-job;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg" {

+        container eth-meg-spec {

+            uses eth-meg-spec;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:mep" {

+        container eth-mep-spec {

+            uses eth-mep-spec;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:mip" {

+        container eth-mip-spec {

+            uses eth-mip-spec;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job" {

+        container eth-pro-active-2way-measurement-job {

+            uses eth-pro-active-2way-measurement-job;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job" {

+        container eth-link-trace-job {

+            uses eth-link-trace-job;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job" {

+        container eth-test-job {

+            uses eth-test-job;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job" {

+        container eth-pro-active-1way-measurement-job {

+            uses eth-pro-active-1way-measurement-job;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {

+        container eth-pro-active-dm-performance-data {

+            uses eth-pro-active-dm-performance-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data" {

+        container eth-pro-active-dm-performance-data {

+            uses eth-pro-active-dm-performance-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {

+        container eth-pro-active-lm-performance-data {

+            uses eth-pro-active-lm-performance-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data" {

+        container eth-pro-active-lm-performance-data {

+            uses eth-pro-active-lm-performance-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {

+        container eth-on-demand-dm-performance-data {

+            uses eth-on-demand-dm-performance-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {

+        container eth-on-demand-1-lm-performance-data {

+            uses eth-on-demand-1-lm-performance-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {

+        container eth-on-demand-1-dm-performance-data {

+            uses eth-on-demand-1-dm-performance-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {

+        container eth-pro-active-1-dm-performance-data {

+            uses eth-pro-active-1-dm-performance-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data" {

+        container eth-pro-active-1-dm-performance-data {

+            uses eth-pro-active-1-dm-performance-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {

+        container eth-pro-active-1-lm-performance-data {

+            uses eth-pro-active-1-lm-performance-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data" {

+        container eth-pro-active-1-lm-performance-data {

+            uses eth-pro-active-1-lm-performance-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job" {

+        container eth-on-demand-1way-measurement-job {

+            uses eth-on-demand-1way-measurement-job;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job" {

+        container eth-on-demand-2way-measurement-job {

+            uses eth-on-demand-2way-measurement-job;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data" {

+        container eth-on-demand-1-dm-performance-data {

+            uses eth-on-demand-1-dm-performance-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data" {

+        container eth-on-demand-1-lm-performance-data {

+            uses eth-on-demand-1-lm-performance-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data" {

+        container eth-on-demand-dm-performance-data {

+            uses eth-on-demand-dm-performance-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {

+        container eth-on-demand-lm-performance-data {

+            uses eth-on-demand-lm-performance-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data" {

+        container eth-on-demand-lm-performance-data {

+            uses eth-on-demand-lm-performance-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:pm-threshold-data" {

+        container eth-1-dm-threshold-data {

+            uses eth-1-dm-threshold-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:pm-threshold-data" {

+        container eth-1-lm-threshold-data {

+            uses eth-1-lm-threshold-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:pm-threshold-data" {

+        container eth-dm-threshold-data {

+            uses eth-dm-threshold-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:pm-threshold-data" {

+        container eth-lm-threshold-data {

+            uses eth-lm-threshold-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {

+        container eth-link-trace-result-data {

+            uses eth-link-trace-result-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {

+        container eth-test-result-data {

+            uses eth-test-result-data;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {

+        container eth-loopback-result-data {

+            uses eth-loopback-result-data;

+            description "none";

+        }

+        description "none";

+    }

+    /***********************

+    * package object-classes

+    **********************/ 

+        grouping eth-ctp-pac {

+            leaf-list auxiliary-function-position-sequence {

+                type uint64;

+                description "This attribute indicates the positions (i.e., the relative order) of all the MEP, MIP, and TCS objects which are associated with the CTP.";

+            }

+            leaf vlan-config {

+                type uint64;

+                description "This attribute models the ETHx/ETH-m_A_So_MI_Vlan_Config information defined in G.8021.

+                    range of type : -1, 0, 1..4094";

+            }

+            leaf csf-rdi-fdi-enable {

+                type boolean;

+                description "This attribute models the MI_CSFrdifdiEnable information defined in G.8021.";

+            }

+            leaf csf-report {

+                type boolean;

+                description "This attribute models the MI_CSF_Reported information defined in G.8021.

+                    range of type : true, false";

+            }

+            leaf-list filter-config-snk {

+                type mac-address;

+                description "This attribute models the FilteConfig MI defined in 8.3/G.8021. It indicates the configured filter action for each of the 33 group MAC addresses for control frames. The 33 MAC addresses are:

+                    01-80-C2-00-00-10, 

+                    01-80-C2-00-00-00 to 01-80-C2-00-00-0F, and 

+                    01-80-C2-00-00-20 to 01-80-C2-00-00-2F.

+                    The filter action is Pass or Block. 

+                    If the destination address of the incoming ETH_CI_D matches one of the above addresses, the filter process shall perform the corresponding configured filter action. 

+                    If none of the above addresses match, the ETH_CI_D is passed.";

+            }

+            leaf mac-length {

+                type uint64;

+                default "2000";

+                description "This attribute models the MAC_Lenght MI defined in 8.6/G.8021 for the MAC Length Check process. It indicates the allowed maximum frame length in bytes.

+                    range of type : 1518, 1522, 2000";

+            }

+            container filter-config {

+                uses control-frame-filter;

+                description "This attribute models the FilterConfig MI defined in section 8.3/G.8021. It indicates the configured filter action for each of the 33 group MAC addresses for control frames. The 33 MAC addresses are:

+                    - All bridges address: 01-80-C2-00-00-10,

+                    - Reserved addresses: 01-80-C2-00-00-00 to 01-80-C2-00-00-0F,

+                    - GARP Application addresses: 01-80-C2-00-00-20 to 01-80-C2-00-00-2F.

+                    The filter action is Pass or Block. 

+                    If the destination address of the incoming ETH_CI_D matches one of the above addresses, the filter process shall perform the corresponding configured filter action. 

+                    If none of the above addresses match, the ETH_CI_D is passed.";

+            }

+            leaf is-ssf-reported {

+                type boolean;

+                description "This attribute provisions whether the SSF defect should be reported as fault cause or not.

+                    It models the ETH-LAG_FT_Sk_MI_SSF_Reported defined in G.8021.";

+            }

+            leaf pll-thr {

+                type uint64;

+                description "This attribute provisions the threshold for the number of active ports. If the number of active ports is more than zero but less than the provisioned threshold, a cPLL (Partial Link Loss) is raised. See section 9.7.1.2 of G.8021.

+                    range of type : 0..number of ports";

+            }

+            leaf actor-oper-key {

+                type uint64;

+                config false;

+                description "See 802.1AX:

+                    The current operational value of the Key for the Aggregator. The administrative Key value may differ from the operational Key value for the reasons discussed in 5.6.2.

+                    The meaning of particular Key values is of local significance.

+                    range of type : 16 bit";

+            }

+            leaf actor-system-id {

+                type mac-address;

+                description "See 802.1AX:

+                    A MAC address used as a unique identifier for the System that contains this Aggregator.";

+            }

+            leaf actor-system-priority {

+                type uint64;

+                description "See 802.1AX:

+                    Indicating the priority associated with the Actors System ID.

+                    range of type : 2-octet";

+            }

+            leaf collector-max-delay {

+                type uint64;

+                description "See 802.1AX:

+                    The value of this attribute defines the maximum delay, in tens of microseconds, that may be imposed by the Frame Collector between receiving a frame from an Aggregator Parser, and either delivering the frame to its MAC Client or discarding the frame (see IEEE 802.1AX clause 5.2.3.1.1).

+                    range of type : 16-bit";

+            }

+            leaf data-rate {

+                type uint64;

+                config false;

+                description "See 802.1AX:

+                    The current data rate, in bits per second, of the aggregate link. The value is calculated as N times the data rate of a single link in the aggregation, where N is the number of active links.";

+            }

+            leaf partner-oper-key {

+                type uint64;

+                config false;

+                description "See 802.1AX:

+                    The current operational value of the Key for the Aggregators current protocol Partner. If the aggregation is manually configured, this Key value will be a value assigned by the local System.

+                    range of type : 16-bit";

+            }

+            leaf partner-system-id {

+                type mac-address;

+                config false;

+                description "See 802.1AX:

+                    A MAC address consisting of the unique identifier for the current protocol Partner of this Aggregator. A value of zero indicates that there is no known Partner. If the aggregation is manually configured, this System ID value will be a value assigned by the local System.";

+            }

+            leaf partner-system-priority {

+                type uint64;

+                config false;

+                description "See 802.1AX:

+                    Indicates the priority associated with the Partners System ID. If the aggregation is manually configured, this System Priority value will be a value assigned by the local System.

+                    range of type : 2-octet";

+            }

+            leaf csf-config {

+                type csf-config;

+                description "This attribute models the combination of all CSF related MI signals (MI_CSF_Enable, MI_CSFrdifdi_Enable, MI_CSFdci_Enable) as defined in G.8021.

+                    range of type : true, false";

+            }

+            container traffic-shaping {

+                uses traffic-shaping-pac;

+                description "none";

+            }

+            container traffic-conditioning {

+                uses traffic-conditioning-pac;

+                description "none";

+            }

+            description "none";

+        }

+        grouping eth-connection-end-point-spec {

+            container ety-term {

+                uses ety-termination-pac;

+                description "none";

+            }

+            container eth-term {

+                uses eth-termination-pac;

+                description "none";

+            }

+            container eth-ctp {

+                uses eth-ctp-pac;

+                description "none";

+            }

+            description "none";

+        }

+        grouping eth-termination-pac {

+            container priority-regenerate {

+                uses priority-mapping;

+                description "This attribute models the ETHx/ETH-m _A_Sk_MI_P_Regenerate information defined in G.8021.";

+            }

+            leaf ether-type {

+                type vlan-type;

+                description "This attribute models the ETHx/ETH-m _A_Sk_MI_Etype information defined in G.8021.";

+            }

+            leaf-list filter-config-1 {

+                type mac-address;

+                description "This attribute models the ETHx/ETH-m_A_Sk_MI_Filter_Config information defined in G.8021.

+                    It indicates the configured filter action for each of the 33 group MAC addresses for control frames.

+                    The 33 MAC addresses are:

+                    01-80-C2-00-00-10, 

+                    01-80-C2-00-00-00 to 01-80-C2-00-00-0F, and 

+                    01-80-C2-00-00-20 to 01-80-C2-00-00-2F.

+                    The filter action is Pass or Block. 

+                    If the destination address of the incoming ETH_CI_D matches one of the above addresses, the filter process shall perform the corresponding configured filter action. 

+                    If none of the above addresses match, the ETH_CI_D is passed.

+                    range of type : MacAddress: 

+                    01-80-C2-00-00-10, 

+                    01-80-C2-00-00-00 to 

+                    01-80-C2-00-00-0F, and 

+                    01-80-C2-00-00-20 to 

+                    01-80-C2-00-00-2F;

+                    ActionEnum:

+                    PASS, BLOCK";

+            }

+            leaf frametype-config {

+                type frame-type;

+                description "This attribute models the ETHx/ETH-m_A_Sk_MI_Frametype_Config information defined in G.8021.

+                    range of type : see Enumeration";

+            }

+            leaf port-vid {

+                type vid;

+                default "1";

+                description "This attribute models the ETHx/ETH-m _A_Sk_MI_PVID information defined in G.8021.";

+            }

+            leaf priority-code-point-config {

+                type pcp-coding;

+                description "This attribute models the ETHx/ETH-m _A_Sk_MI_PCP_Config information defined in G.8021.

+                    range of type : see Enumeration";

+            }

+            description "This object class models the Ethernet Flow Termination function located at a layer boundary.";

+        }

+        grouping ety-termination-pac {

+            leaf is-fts-enabled {

+                type boolean;

+                description "This attribute indicates whether Forced Transmitter Shutdown (FTS) is enabled or not. It models the ETYn_TT_So_MI_FTSEnable information.";

+            }

+            leaf is-tx-pause-enabled {

+                type boolean;

+                description "This attribute identifies whether the Transmit Pause process is enabled or not. It models the MI_TxPauseEnable defined in G.8021.";

+            }

+            leaf phy-type {

+                type ety-phy-type;

+                config false;

+                description "This attribute identifies the PHY type of the ETY trail termination. See IEEE 802.3 clause 30.3.2.1.2.";

+            }

+            leaf-list phy-type-list {

+                type ety-phy-type;

+                config false;

+                description "This attribute identifies the possible PHY types that could be supported at the ETY trail termination. See IEEE 802.3 clause 30.3.2.1.3.";

+            }

+            description "none";

+        }

+        grouping traffic-conditioning-pac {

+            list prio-config-list {

+                config false;

+                uses priority-configuration;

+                description "This attribute indicates the Priority Splitter function for the mapping of the Ethernet frame priority (ETH_CI_P) values to the output queue.";

+            }

+            list cond-config-list {

+                config false;

+                uses traffic-conditioning-configuration;

+                description "This attribute indicates for the conditioner process the conditioning parameters:

+                    - Queue ID: Indicates the Queue ID

+                    - Committed Information Rate (CIR): number of bits per second

+                    - Committed Burst Size (CBS): number of bytes

+                    - Excess Information Rate (EIR): number of bits per second

+                    - Excess Burst Size (EBS): number of bytes

+                    - Coupling flag (CF): 0 or 1

+                    - Color mode (CM): color-blind and color-aware.";

+            }

+            leaf codirectional {

+                type boolean;

+                config false;

+                description "This attribute indicates the direction of the conditioner. The value of true means that the conditioner (modeled as a TCS Sink according to G.8021) is associated with the sink part of the containing CTP. The value of false means that the conditioner (modeled as a TCS Sink according to G.8021) is associated with the source part of the containing CTP.";

+            }

+            description "This object class models the ETH traffic conditioning function as defined in G.8021.

+                Basic attributes: codirectional, condConfigList, prioConfigList";

+        }

+        grouping traffic-shaping-pac {

+            list prio-config-list {

+                config false;

+                uses priority-configuration;

+                description "This attribute configures the Priority Splitter function for the mapping of the Ethernet frame priority (ETH_CI_P) values to the output queue.";

+            }

+            list queue-config-list {

+                config false;

+                uses queue-configuration;

+                description "This attribute configures the Queue depth and Dropping threshold parameters of the Queue process. The Queue depth sets the maximum size of the queue in bytes. An incoming ETH_CI traffic unit is dropped if there is insufficient space in the queue to hold the whole unit. The Dropping threshold sets the threshold of the queue. If the queue is filled beyond this threshold, incoming ETH_CI traffic units accompanied by the ETH_CI_DE signal set are dropped.";

+            }

+            leaf sched-config {

+                type scheduling-configuration;

+                config false;

+                description "This attribute configures the scheduler process. The value of this attribute is for further study because it is for further study in G.8021.

+                    Scheduler is a pointer to a Scheduler object, which is to be defined in the future (because in G.8021, this is FFS).

+                    Note that the only significance of the GTCS function defined in G.8021 is the use of a common scheduler for shaping. Given that, G.8052 models the common scheduler feature by having a common value for this attribute.";

+            }

+            leaf codirectional {

+                type boolean;

+                config false;

+                description "This attribute indicates the direction of the shaping function. The value of true means that the shaping (modeled as a TCS Source according to G.8021) is associated with the source part of the containing CTP. The value of false means that the shaping (modeled as a TCS Source according to G.8021) is associated with the sink part of the containing CTP.";

+            }

+            description "This object class models the ETH traffic shaping function as defined in G.8021.

+                Basic attribute: codirectional, prioConfigList, queueConfigList, schedConfig";

+        }

+        grouping eth-meg-spec {

+            leaf client-mel {

+                type uint64;

+                description "none";

+            }

+            description "none";

+        }

+        grouping eth-mep-spec {

+            container eth-mep-common {

+                uses eth-mep-common;

+                description "none";

+            }

+            container eth-mep-source-pac {

+                uses eth-mep-source;

+                description "none";

+            }

+            container eth-mep-sink {

+                uses eth-mep-sink;

+                description "none";

+            }

+            description "none";

+        }

+        grouping eth-mip-spec {

+            leaf mip-mac {

+                type mac-address;

+                config false;

+                description "This attribute contains the MAC address of the MIP instance.";

+            }

+            leaf is-full-mip {

+                type boolean;

+                config false;

+                description "This attribute indicates whether the MIP is a full MIP (true) or a down-half MIP (false).";

+            }

+            description "none";

+        }

+        grouping eth-loopback-job {

+            container eth-lb-msg {

+                uses eth-oam-msg-common-pac;

+                description "none";

+            }

+            leaf number {

+                type uint64;

+                description "G.8052: This parameter specifies how many LB messages to be sent for the LB_Series process.";

+            }

+            description "This class represents the Loopback (LB) process (send a series of LB messages carrying a test pattern to a particular MEP). The termination occurs at specified stop time (schedule attribute of OamJob).

+                This class models also the 'loopback discover' process, when destinationAddress is multicast.

+                When number is greater than 1, then the process is to perform a Loopback (LB) Series process (send a series of N LB messages to a particular MEP/MIP. ";

+        }

+        grouping eth-mep-common {

+            leaf mep-mac {

+                type mac-address;

+                config false;

+                description "This attribute contains the MAC Address of the MEP.";

+            }

+            leaf is-cc-enabled {

+                type boolean;

+                description "This attribute models the MI_CC_Enable signal defined in G.8021 and configured as specified in G8051.";

+            }

+            leaf cc-period {

+                type oam-period;

+                description "This attribute models the MI_CC_Period signal defined in G.8021 and configured as specified in G8051. 

+                    It is the period at which the CCM message should be sent. 

+                    Default values are: 3.33 ms for PS, 100 ms for PM, 1 s for FM.";

+            }

+            leaf cc-priority {

+                type uint64 {

+                    range "0..7";

+                }

+                default "7";

+                description "This attribute models the MI_CC_Pri signal defined in G.8021 and configured as specified in G8051. It is the priority at which the CCM message should be sent.";

+            }

+            leaf lck-period {

+                type oam-period;

+                description "This attribute models the MI_LCK_Period signal defined in G.8021 and configured as specified in G8051. It is the frequency at which the LCK messages should be sent.

+                    range of type : 1s, 1min";

+            }

+            leaf lck-priority {

+                type uint64 {

+                    range "0..7";

+                }

+                default "7";

+                description "This attribute models the MI_LCK_Pri signal defined in G.8021 and configured as specified in G8051. It is the priority at which the LCK messages should be sent.";

+            }

+            description "Basic attributes: adminState, clientMel, megIdentifier, mepMac

+                Continuity Check Process related attributes: ccPeriod, ccPriority, isCcEnabled

+                Lock Process related attributes: lckPeriod, lckPriority

+                This object class models the MEP functions that are common to MEP Sink and MEP Source.";

+        }

+        grouping eth-mep-sink {

+            leaf-list dm-1-priority {

+                type uint64;

+                description "This attribute indicates the list of 1DM priorities for the MepSink.";

+            }

+            leaf ais-priority {

+                type uint64 {

+                    range "0..7";

+                }

+                default "7";

+                description "This attribute models the MI_AIS_Pri signal defined in G.8021 and configured as specified in G8051. It is the priority at which the AIS messages should be sent.";

+            }

+            leaf ais-period {

+                type oam-period;

+                description "This attribute models the MI_AIS_Period signal defined in G.8021 and configured as specified in G8051. It is the frequency at which the AIS messages should be sent.

+                    range of type : 1s, 1min";

+            }

+            leaf is-csf-reported {

+                type boolean;

+                default "true";

+                description "This attribute models the MI_CSF_Reported signal defined in G.8021 and configured as specified in G8051. It configures whether the secondary failure CSF should be reported or not.";

+            }

+            leaf is-csf-rdi-fdi-enabled {

+                type boolean;

+                default "true";

+                description "This attribute models the MI_CSFrdifdiEnable signal defined in G.8021 and configured as specified in G8051.";

+            }

+            container bandwidth-report {

+                config false;

+                uses bandwidth-report;

+                description "This attribute models the content of the bandwidth report received by the MEP Sink from the peer MEP Source.";

+            }

+            leaf lm-degm {

+                type uint64;

+                default "10";

+                description "This attribute defines the number of consecutive bad seconds necessary for the 'degraded' detection. See also section 'Degraded signal defect (dDEG)' in G.8021.";

+            }

+            leaf lm-deg-thr {

+                type uint64;

+                default "30";

+                description "This attribute defines the threshold for declaring a 'bad second'. See also section 'Degraded signal defect (dDEG)' in G.8021.";

+            }

+            leaf lm-m {

+                type uint64 {

+                    range "2..10";

+                }

+                default "10";

+                description "This attribute defines the number of consecutive good seconds necessary for the clearing of 'degraded'. See also section 'Degraded signal defect (dDEG)' in G.8021.";

+            }

+            leaf lm-tf-min {

+                type uint64;

+                description "This attribute defines the necessary number of transmitted frames to enable the detection of 'bad seconds'. See also section 'Degraded signal defect (dDEG)' in G.8021.";

+            }

+            description "1DM related attribute: 1DmPriority

+                AIS Process related attributes: aisPeriod, aisPriority

+                Bandwidth notification Process related attribute: bandwidthReport

+                Basic attribute: peerMepRefList

+                CSF Process related attributes: isCsfRdiFdiEnabled, isCsfReported

+                Defect correlation Process related attribute: currentProblemList

+                This object class models the MEP sink function. Instance of this object class can be created and contained by ETH CTP or TTP objects.

+                It also provides the management of the dual-ended maintenance job, such as test.

+                This object contains the configuration parameters for detecting 'degraded signal' (DEG).";

+        }

+        grouping eth-mep-source {

+            leaf aps-priority {

+                type uint64 {

+                    range "0..7";

+                }

+                default "7";

+                description "This attribute specifies the priority of the APS messages.

+                    See section 8.1.5    APS insert process in G.8021.";

+            }

+            leaf csf-priority {

+                type uint64 {

+                    range "0..7";

+                }

+                default "7";

+                description "This attribute models the MI_CSF_Pri signal defined in G.8021 and configured as specified in G8051. It is the priority at which the CSF messages should be sent";

+            }

+            leaf csf-period {

+                type oam-period;

+                description "This attribute models the MI_CSF_Period signal defined in G.8021 and configured as specified in G8051. It is the period at which the CSF messages should be sent.

+                    range of type : 1s, 1min";

+            }

+            leaf csf-config {

+                type csf-config;

+                description "This attribute models the combination of all CSF related MI signals (MI_CSF_Enable, MI_CSFrdifdi_Enable, MI_CSFdci_Enable) as defined in G.8021.";

+            }

+            description "APS Process related attribute: apsPriority

+                Basic attribute: mepIdentifier

+                CSF Process related attributes: csfConfig, csfPeriod, csfPriority

+                Link trace related operation: linkTrace

+                Loopback related operations: loopbackDiscover, loopbackSeries, loopbackTest, loopbackTestTerminate

+                On demand measurement job control related operation: establishOnDemandDualEndedMeasurementJobSource

+                Proactive measurement job control related operation: establishProActiveDualEndedMeasurementJobSource

+                Test related operations: testInitiatorStart, testInitiatorTerminate

+                This object class models the MEP source function. Instance of this object class can be created and contained by ETH CTP or TTP objects.

+                It also provides the management of single-ended maintenance jobs, such as loopback test, loopback discover, loopback series, link trace, and dual-ended maintenance job, such as test.";

+        }

+        grouping eth-link-trace-job {

+            container eth-lt-msg {

+                uses eth-oam-operation-common-pac;

+                description "none";

+            }

+            leaf time-to-live {

+                type uint64;

+                description "G.8052: This parameter provides the Time To Live (TTL) parameter of the Link Track protocol.

+                    The TTL parameter allows the receiver (MIP or MEP) of the LTM frame to determine if the frame can be terminated. TTL is decremented every time the LTM frame is relayed. LTM frame with TTL<=1 is terminated and not relayed.";

+            }

+            description "This class represents the Link Trace (LT) process for fault localization or for discovering the intermediate MIPs along the link from the MEP Source to a target MEP or MIP. An LTM frame will be sent from the MEP source to the target MEP/MIP.

+                The termination occurs at specified stop time (schedule attribute of OamJob).";

+        }

+        grouping eth-test-job {

+            container eth-test-msg {

+                uses eth-oam-msg-common-pac;

+                description "none";

+            }

+            description "This class represents the 1-way on-demand in-service or out-of-service diagnostic test. The diagnostic test includes verifying bandwidth throughput, frame loss, bit errors, etc. TST frames are transmitted.

+                The termination occurs at specified stop time (schedule attribute of OamJob).";

+        }

+        grouping eth-on-demand-measurement-job-control-sink {

+            leaf responder-mep-id {

+                type string;

+                description "none";

+            }

+            leaf source-address {

+                type mac-address;

+                description "This attribute contains the MAC address of the peer MEP. See G.8013 for details.";

+            }

+            leaf priority {

+                type uint64;

+                default "7";

+                description "This attribute contains the priority of the OAM PDU frames.

+                    range of type : 0, 1, 2, 3, 4, 5, 6, 7";

+            }

+            leaf test-identifier {

+                type uint64;

+                description "This attribute is used to distinguish each measurement session if multiple measurement sessions are simultaneously activated towards a peer MEP including concurrent on-demand and proactive tests. It must be unique at least within the context of any measurement type for the MEG and initiating MEP.

+                    range of type : 0..(2^32) - 1";

+            }

+            description "This object class represents an on-demand measurement job controller sink for 1-way measurements. It is created as a result of an establishOnDemandDualEndedMeasurementJobSink() operation. It is deleted either automatically after the measurement job has completed (stop time reached) and the performance data AVC notification has been sent, or by an explicit abortOnDemandMeasurementJob() operation when the measurement job is running.";

+        }

+        grouping eth-on-demand-measurement-job-control-source {

+            leaf controller-mep-id {

+                type string;

+                description "none";

+            }

+            leaf oam-pdu-generation-type {

+                type oam-pdu-generation-type;

+                description "This attribute contains the pattern that is used for the generation of OAM PDUs.";

+            }

+            leaf destination-address {

+                type mac-address;

+                description "This attribute contains the MAC address of the peer MEP. See G.8013 for details.";

+            }

+            leaf priority {

+                type uint64;

+                default "7";

+                description "This attribute contains the priority of the OAM PDU frames.

+                    range of type : 0, 1, 2, 3, 4, 5, 6, 7";

+            }

+            leaf message-period {

+                type message-period;

+                description "This attribute contains the frequency of the OAM message (PDU) generation within a series. 

+                    Note that the value 0 means that only one OAM message per measurement interval is generated.

+                    range of type : See corresponding Enum.";

+            }

+            leaf repetition-period {

+                type repetition-period;

+                description "This attribute contains the time between the start of two measurement intervals. This IS applicable for the repetitive instance type and MAY be applicable for the repetitive series type. 

+                    Note that a value of 0 means not applicable (NA), which is for the cases of single instance, single series, or repetitive series without extra gap in between the measurement intervals (i.e., also as known as continuous series).";

+            }

+            leaf measurement-interval {

+                type uint64;

+                description "This attribute contains the discrete non overlapping periods of time (in seconds) during which measurements are performed (i.e., OAM messages are generated) and reports are gathered at the end of the measurement intervals. Note that the value 0 means a degenerated measurement interval with a single OAM message and the report is sent as immediately as possible.

+                    range of type : Non-negative";

+            }

+            leaf test-identifier {

+                type uint64;

+                description "This attribute is used to distinguish each measurement session if multiple measurement sessions are simultaneously activated towards a peer MEP including concurrent on-demand and proactive tests. It must be unique at least within the context of any measurement type for the MEG and initiating MEP.

+                    Note: The attribute is not used in case of LMM/LMR measurement.

+                    range of type : 0..(2^32) - 1";

+            }

+            leaf data-tlv-length {

+                type uint64;

+                description "This parameter provides the size of the optional data TLV.

+                    Non-negative integer represents the number of bytes for the length of the padding TLV.

+                    Notes:

+                    When configuring this parameter one should be aware of the maximum allowed total frame size limitation.

+                    The attribute is not used in case of 2-way loss measurement.

+                    range of type : Depends on the allowed MTU size.";

+            }

+            description "Basic attributes: destinationAddress, priority

+                Measurement configuration related attributes: oamPduGenerationType, startTime, stopTime, messagePeriod, repetitionPeriod, measurementInterval

+                Optional attributes: dataTlvLength, testIdentifier

+                This object class represents an on-demand measurement job controller source for 1-way measurements. It is created as a result of an establishOnDemandDualEndedMeasurementJobSource() operation. It is deleted either automatically after the measurement job has completed (stop time reached), or by an explicit abortOnDemandMeasurementJob() operation while the measurement job is running.";

+        }

+        grouping eth-pro-active-measurement-job-control-sink {

+            leaf responder-mep-id {

+                type string;

+                description "none";

+            }

+            leaf is-enabled {

+                type boolean;

+                default "true";

+                description "This attribute identifies the state of the measurement job. If set to TRUE, the MEP performs proactive Performance Measurement.";

+            }

+            leaf source-address {

+                type mac-address;

+                description "This attribute contains the MAC address of the peer MEP. See G.8013 for details.";

+            }

+            leaf test-identifier {

+                type uint64;

+                description "This attribute is used to distinguish each measurement session if multiple measurement sessions are simultaneously activated towards a peer MEP including concurrent on-demand and proactive tests. It must be unique at least within the context of any measurement type for the MEG and initiating MEP.

+                    range of type : 0..(2^32) - 1";

+            }

+            description "This object class allows the control of the proactive 1-way measurement. It is created as a part of an establishProActiveDualEndedMeasurementJobSink() operation. Lifecycle: A pre-condition of deleting the object is that the Enable attribute should have the value FALSE.";

+        }

+        grouping eth-pro-active-measurement-job-control-source {

+            leaf controller-mep-id {

+                type string;

+                description "none";

+            }

+            leaf is-enabled {

+                type boolean;

+                default "true";

+                description "This attribute identifies the state of the measurement job. If set to TRUE, the MEP performs proactive Performance Measurement.";

+            }

+            leaf destination-address {

+                type mac-address;

+                description "This attribute provides the Unicast MAC address of the intented destination.";

+            }

+            leaf priority {

+                type uint64 {

+                    range "0..7";

+                }

+                default "7";

+                description "This attribute contains the priority value on which the MEP performs the measurement. When the measurement is enabled, the MEP should use this value to encode the priority of generated measurement frames. The EMF usese this value to assign the P parameter of the measurement operation.";

+            }

+            leaf period {

+                type oam-period;

+                description "This attribute indicates the period (frequency) of the measurement frame transmission.

+                    range of type : 100ms, 1s, 10s";

+            }

+            leaf test-identifier {

+                type uint64;

+                description "This attribute is used to distinguish each measurement session if multiple measurement sessions are simultaneously activated towards a peer MEP including concurrent on-demand and proactive tests. It must be unique at least within the context of any measurement type for the MEG and initiating MEP.

+                    Note: The attribute is not used in case of 2-way loss measurement. 

+                    range of type : 0..(2^32) - 1";

+            }

+            leaf data-tlv-length {

+                type uint64;

+                description "This parameter provides the size of the optional data TLV.

+                    Non-negative integer represents the number of bytes for the length of the padding TLV.

+                    Notes:

+                    When configuring this parameter one should be aware of the maximum allowed total frame size limitation.

+                    The attribute is not used in case of 2-way loss measurement.

+                    range of type : Depends on the allowed MTU size.";

+            }

+            description "This object class represents a proactive measurement job controller source for 1way measurements. It is created as a part of an establishProactiveDualEndedMeasurementJobSource() operation.";

+        }

+        grouping eth-pro-active-1-dm-performance-data {

+            container pro-active-near-end-1-dm-parameters {

+                uses statistical-dm-performance-parameters;

+                description "This attribute contains the statistical near end performnace parameters.";

+            }

+            description "This object class represents the PM current data collected in a pro-active delay measurement job (using 1DM).";

+        }

+        grouping eth-pro-active-1-lm-performance-data {

+            container pro-active-near-end-1-lm-parameters {

+                uses statistical-lm-performance-parameters;

+                description "This attribute contains the statistical near end performnace parameters.";

+            }

+            description "This object class represents the PM current data collected in a pro-active loss measurement job (using 1SL).";

+        }

+        grouping eth-pro-active-dm-performance-data {

+            container pro-active-bi-dir-dm-parameters {

+                uses statistical-dm-performance-parameters;

+                description "This attribute contains the statistical bidirectional performnace parameters.";

+            }

+            container pro-active-far-end-dm-parameters {

+                uses statistical-dm-performance-parameters;

+                description "This attribute contains the statistical far end performnace parameters.";

+            }

+            container pro-active-near-end-dm-parameters {

+                uses statistical-dm-performance-parameters;

+                description "This attribute contains the statistical near end performnace parameters.";

+            }

+            description "This object class represents the PM current data collected in a pro-active delay measurement job (using DMM/DMR).";

+        }

+        grouping eth-pro-active-lm-performance-data {

+            container pro-active-far-end-lm-parameters {

+                uses statistical-lm-performance-parameters;

+                description "This attribute contains the statistical far end performnace parameters.";

+            }

+            container pro-active-near-end-lm-parameters {

+                uses statistical-lm-performance-parameters;

+                description "This attribute contains the statistical near end performnace parameters.";

+            }

+            leaf bidirectional-uas {

+                type uint64;

+                description "This attribute contains the bidirectional UAS (unavailable seconds) detected in the monitoring interval.

+                    range of type : 0..900 for 15min interval or 0..86400 for 24 hr interval.";

+            }

+            description "This object class represents the PM current data collected in a pro-active loss measurement job (using LMM/LMR or SLM/SLR).";

+        }

+        grouping eth-on-demand-1-dm-performance-data {

+            container on-demand-near-end-1-dm-parameters {

+                uses on-demand-dm-performance-parameters;

+                description "This attribute contains the results of an on-demand frame delay measurement job in the ingress direction.";

+            }

+            description "none";

+        }

+        grouping eth-on-demand-1-lm-performance-data {

+            container on-demand-near-end-1-lm-parameters {

+                uses on-demand-lm-performance-parameters;

+                description "This attribute contains the results of an on-demand synthetic loss measurement job in the ingress direction.";

+            }

+            description "none";

+        }

+        grouping eth-on-demand-dm-performance-data {

+            container on-demand-far-end-dm-parameters {

+                uses on-demand-dm-performance-parameters;

+                description "This attribute contains the results of an on-demand frame delay measurement job in the ingress direction.";

+            }

+            container on-demand-near-end-dm-parameters {

+                uses on-demand-dm-performance-parameters;

+                description "This attribute contains the results of an on-demand frame delay measurement job in the ingress direction.";

+            }

+            description "none";

+        }

+        grouping eth-on-demand-lm-performance-data {

+            container on-demand-far-end-lm-parameters {

+                uses on-demand-lm-performance-parameters;

+                description "This attribute contains the results of an on-demand synthetic loss measurement job in the egress direction.";

+            }

+            container on-demand-near-end-lm-parameters {

+                uses on-demand-lm-performance-parameters;

+                description "This attribute contains the results of an on-demand synthetic loss measurement job in the ingress direction.";

+            }

+            description "none";

+        }

+        grouping eth-pro-active-1way-measurement-job {

+            container pro-active-control-1way-source {

+                uses eth-pro-active-measurement-job-control-source;

+                description "none";

+            }

+            container pro-active-control-1way-sink {

+                uses eth-pro-active-measurement-job-control-sink;

+                description "none";

+            }

+            description "none";

+        }

+        grouping eth-pro-active-2way-measurement-job {

+            container pro-active-control-2way-source {

+                uses eth-pro-active-measurement-job-control-source;

+                description "none";

+            }

+            description "none";

+        }

+        grouping eth-on-demand-2way-measurement-job {

+            container on-demand-control-2way-source {

+                uses eth-on-demand-measurement-job-control-source;

+                description "none";

+            }

+            description "none";

+        }

+        grouping eth-on-demand-1way-measurement-job {

+            container on-demand-control-1way-source {

+                uses eth-on-demand-measurement-job-control-source;

+                description "none";

+            }

+            container on-demand-control-1way-sink {

+                uses eth-on-demand-measurement-job-control-sink;

+                description "none";

+            }

+            description "none";

+        }

+        grouping eth-1-dm-threshold-data {

+            container near-end-1-dm-cross-threshold {

+                uses statistical-dm-performance-parameters;

+                description "This attribute contains the near end cross threshold values of the delay measurements.";

+            }

+            container near-end-1-dm-clear-threshold {

+                uses statistical-dm-performance-parameters;

+                description "This attribute contains the near end clear threshold values of the delay measurements.";

+            }

+            description "This data type contains the threshold values for frame delay related 1-way measurements.";

+        }

+        grouping eth-1-lm-threshold-data {

+            container near-end-1-lm-cross-threshold {

+                uses statistical-lm-performance-parameters;

+                description "This attribute contains the near end cross threshold values of the loss measurements.";

+            }

+            container near-end-1-lm-clear-threshold {

+                uses statistical-lm-performance-parameters;

+                description "This attribute is only valid for frame loss ratio parameters and counter type parameters working in the 'standing condition method' (see G.7710, section 10.1.7.2: Threshold reporting) and contains the near end clear threshold values of the loss measurements.";

+            }

+            description "This data type contains the threshold values for frame loss related 1-way measurements.";

+        }

+        grouping eth-dm-threshold-data {

+            container near-end-dm-cross-threshold {

+                uses statistical-dm-performance-parameters;

+                description "This attribute contains the near end cross threshold values of the delay measurements.";

+            }

+            container near-end-dm-clear-threshold {

+                uses statistical-dm-performance-parameters;

+                description "This attribute contains the near end clear threshold values of the delay measurements.";

+            }

+            container far-end-dm-cross-threshold {

+                uses statistical-dm-performance-parameters;

+                description "This attribute contains the far end cross threshold values of the delay measurements.";

+            }

+            container far-end-dm-clear-threshold {

+                uses statistical-dm-performance-parameters;

+                description "This attribute contains the far end clear threshold values of the delay measurements.";

+            }

+            container bi-dir-dm-cross-threshold {

+                uses statistical-dm-performance-parameters;

+                description "This attribute contains the bidirectional cross threshold values of the delay measurements.";

+            }

+            container bi-dir-dm-clear-threshold {

+                uses statistical-dm-performance-parameters;

+                description "This attribute contains the bidirectional clear threshold values of the delay measurements.";

+            }

+            description "This data type contains the threshold values for frame delay related 2-way measurements.";

+        }

+        grouping eth-lm-threshold-data {

+            container near-end-lm-cross-threshold {

+                uses statistical-lm-performance-parameters;

+                description "This attribute contains the near end cross threshold values of the loss measurements.";

+            }

+            container near-end-lm-clear-threshold {

+                uses statistical-lm-performance-parameters;

+                description "This attribute is only valid for frame loss ratio parameters and counter type parameters working in the 'standing condition method' (see G.7710, section 10.1.7.2: Threshold reporting) and contains the near end clear threshold values of the loss measurements.";

+            }

+            container far-end-lm-cross-threshold {

+                uses statistical-lm-performance-parameters;

+                description "This attribute contains the far end cross threshold values of the loss measurements.";

+            }

+            container far-end-lm-clear-threshold {

+                uses statistical-lm-performance-parameters;

+                description "This attribute is only valid for frame loss ratio parameters and counter type parameters working in the 'standing condition method' (see G.7710, section 10.1.7.2: Threshold reporting) and contains the far end clear threshold values of the loss measurements.";

+            }

+            leaf bi-dir-lm-uas-cross-threshold {

+                type uint64;

+                description "This attribute contains the bidirectional cross threshold value of the UAS loss measurement.";

+            }

+            leaf bi-dir-lm-uas-clear-threshold {

+                type uint64;

+                description "This attribute is only valid for the UAS parameter working in the 'standing condition method' (see G.7710, section 10.1.7.2: Threshold reporting) and contains the bidirectional clear threshold value of the UAS loss measurement.";

+            }

+            description "This data type contains the threshold values for frame loss related 2-way measurements.";

+        }

+        grouping eth-loopback-result-data {

+            leaf rec-lbr-frames {

+                type uint64;

+                config false;

+                description "G.8052: This parameter returns the total number of received LBR messages, including the out of order LBR frames.";

+            }

+            leaf out-of-order-lbr-frames {

+                type uint64;

+                config false;

+                description "G.8052: This parameter returns the number of LBR traffic unites (messages) that were received out of order (OO).";

+            }

+            leaf sent-lbm-frames {

+                type uint64;

+                config false;

+                description "G.8052: This parameter returns the total number of sent LBM frames.";

+            }

+            leaf crc-lbr-frames {

+                type uint64;

+                config false;

+                description "G.8052: This parameter returns the number of LBR frames where the CRC in the pattern failed.";

+            }

+            leaf ber-lbr-frames {

+                type uint64;

+                config false;

+                description "G.8052: This parameter returns the number of LBR frames where there was a bit error in the pattern.";

+            }

+            leaf-list detected-peer-mep {

+                type mac-address;

+                config false;

+                description "G.8052: This parameter returns the MAC addresses of the discovered peer MEPs of the subject MEP.";

+            }

+            description "none";

+        }

+        grouping eth-link-trace-result-data {

+            list result-list {

+                config false;

+                uses link-trace-result;

+                description "G.8052: This parameter returns the results of the LT process. It contains a list of the result received from the individual LTR frames.

+                    The result from the individual LTR frame include the Source Mac Address, the TTL, and TLV.";

+            }

+            description "none";

+        }

+        grouping eth-test-result-data {

+            leaf sent-tst-frames {

+                type uint64;

+                config false;

+                description "G.8052: This parameter returns the total number of sent TST frames.";

+            }

+            description "none";

+        }

+        grouping eth-oam-operation-common-pac {

+            leaf destination-address {

+                type mac-address;

+                description "G.8052: This parameter provides the destination address, i.e., the MAC Address of the target MEP or MIP.";

+            }

+            leaf priority {

+                type uint64;

+                default "7";

+                description "G.8052: This parameter provides the priority to be used in the LBM frame.";

+            }

+            description "none";

+        }

+        grouping eth-oam-msg-common-pac {

+            leaf period {

+                type oam-period;

+                description "G.8052: This parameter provides the periodicity of the TST OAM messages.";

+            }

+            leaf drop-eligibility {

+                type boolean;

+                description "G.8052: This parameter provides the eligibility of frames with unicast ETH-TST information to be discarded when congestion conditions are encountered.";

+            }

+            leaf data-tlv-length {

+                type uint64;

+                description "G.8052: This parameter provides the length (in number of octet) of the optional Data TLV to be included in the TST frame.";

+            }

+            leaf test-pattern {

+                type uint64;

+                description "G.8052: This parameter provides the test pattern to be used in the optional Data TLV.

+                    Examples of test patterns include pseudo-random bit sequence (PRBS) 2^31-1 as specified in clause 5.8 of [ITU-T O.150], all '0' pattern, etc.

+                    The following values of pattern types are defined:

+                    0: 'Null signal without CRC-32'

+                    1: 'Null signal with CRC-32'

+                    2: 'PRBS 2^31-1 without CRC-32'

+                    3: 'PRBS 2^31-1 with CRC-32'.";

+            }

+            uses eth-oam-operation-common-pac;

+            description "none";

+        }

+

+    /***********************

+    * package type-definitions

+    **********************/ 

+        identity ETH_OAM_JOB_TYPE {

+        	base tapi-oam:OAM_JOB_TYPE;

+            description "none";

+        }

+        identity ETH_OAM_JOB_TYPE_ETH_1DM {

+            base ETH_OAM_JOB_TYPE;

+            description "none";

+        }

+        identity ETH_OAM_JOB_TYPE_ETH_1SLM {

+            base ETH_OAM_JOB_TYPE;

+            description "none";

+        }

+        identity ETH_OAM_JOB_TYPE_ETH_LM_CCM {

+            base ETH_OAM_JOB_TYPE;

+            description "none";

+        }

+        identity ETH_OAM_JOB_TYPE_ETH_LM_LMM {

+            base ETH_OAM_JOB_TYPE;

+            description "none";

+        }

+        identity ETH_OAM_JOB_TYPE_ETH_SLM {

+            base ETH_OAM_JOB_TYPE;

+            description "none";

+        }

+        identity ETH_OAM_JOB_TYPE_ETH_DM {

+            base ETH_OAM_JOB_TYPE;

+            description "none";

+        }

+        identity ETH_OAM_JOB_TYPE_ETH_LTC {

+            base ETH_OAM_JOB_TYPE;

+            description "none";

+        }

+        identity ETH_OAM_JOB_TYPE_ETH_LBK {

+            base ETH_OAM_JOB_TYPE;

+            description "none";

+        }

+        identity ETH_OAM_JOB_TYPE_ETH_TEST {

+            base ETH_OAM_JOB_TYPE;

+            description "none";

+        }

+        grouping priority-configuration {

+            leaf priority {

+                type uint64 {

+                    range "0..7";

+                }

+                description "none";

+            }

+            leaf queue-id {

+                type uint64 {

+                    range "1..8";

+                }

+                description "none";

+            }

+            description "none";

+        }

+        grouping queue-configuration {

+            leaf queue-id {

+                type uint64;

+                description "This attribute indicates the queue id.";

+            }

+            leaf queue-depth {

+                type uint64;

+                description "This attribute defines the depth of the queue in bytes.";

+            }

+            leaf queue-threshold {

+                type uint64;

+                description "This attribute defines the threshold of the queue in bytes.";

+            }

+            description "none";

+        }

+        grouping traffic-conditioning-configuration {

+            leaf cir {

+                type uint64;

+                description "This attribute indicates the Committed Information Rate in bits/s.";

+            }

+            leaf cbs {

+                type uint64;

+                description "This attribute indicates the Committed Burst Size in bytes.";

+            }

+            leaf eir {

+                type uint64;

+                description "This attribute indicates the Excess Information Rate in bits/s.";

+            }

+            leaf ebs {

+                type uint64;

+                description "This attribute indicates the Excess Burst Size in bytes.";

+            }

+            leaf coupling-flag {

+                type boolean;

+                description "This attribute indicates the coupling flag.";

+            }

+            leaf colour-mode {

+                type colour-mode;

+                description "This attribute indicates the colour mode.";

+            }

+            leaf queue-id {

+                type uint64 {

+                    range "1..8";

+                }

+                description "This attribute indicates the queue id.";

+            }

+            description "none";

+        }

+        typedef mac-address {

+            type string;

+            description "This primitive data type contains an Ethernet MAC address defined by IEEE 802a. The format of the address consists of 12 hexadecimal characters, grouped in pairs and separated by '-' (e.g., 03-27-AC-75-3E-1D).";

+        }

+        grouping priority-mapping {

+            leaf priority-0 {

+                type uint64 {

+                    range "0..7";

+                }

+                description "This attribute defines the new priority value for the old priority value 0.";

+            }

+            leaf priority-1 {

+                type uint64 {

+                    range "0..7";

+                }

+                default "1";

+                description "This attribute defines the new priority value for the old priority value 1.";

+            }

+            leaf priority-2 {

+                type uint64 {

+                    range "0..7";

+                }

+                default "2";

+                description "This attribute defines the new priority value for the old priority value 2.";

+            }

+            leaf priority-3 {

+                type uint64 {

+                    range "0..7";

+                }

+                default "3";

+                description "This attribute defines the new priority value for the old priority value 3.";

+            }

+            leaf priority-4 {

+                type uint64 {

+                    range "0..7";

+                }

+                default "4";

+                description "This attribute defines the new priority value for the old priority value 4.";

+            }

+            leaf priority-5 {

+                type uint64 {

+                    range "0..7";

+                }

+                default "5";

+                description "This attribute defines the new priority value for the old priority value 5.";

+            }

+            leaf priority-6 {

+                type uint64 {

+                    range "0..7";

+                }

+                default "6";

+                description "This attribute defines the new priority value for the old priority value 6.";

+            }

+            leaf priority-7 {

+                type uint64 {

+                    range "0..7";

+                }

+                default "7";

+                description "This attribute defines the new priority value for the old priority value 7.";

+            }

+            description "This data type provides the priority mapping done in the 'P Regenerate' process defined in G.8021.";

+        }

+        typedef vid {

+            type string;

+            description "This primitive type models the 12 Bit VLAN identifier of a VLAN tag.";

+        }

+        typedef modify-cross-connection-data {

+            type string;

+            description "none";

+        }

+        grouping address-tuple {

+            leaf address {

+                type mac-address;

+                description "This attribute contains the MAC address of the address tuple.";

+            }

+            leaf-list port-list {

+                type mac-address;

+                description "This attribute contains the ports associated to the MAC address in the address tuple.";

+            }

+            description "This data type contains an address tuple consisting of a MAC address and a corresponding port list.";

+        }

+        typedef scheduling-configuration {

+            type string;

+            description "The syntax of this dataType is pending on the specification in G.8021, which is for further study.";

+        }

+        grouping control-frame-filter {

+            leaf c-2-00-00-10 {

+                type boolean;

+                description "This attribute identifies the 'All LANs Bridge Management Group Address'.";

+            }

+            leaf c-2-00-00-00 {

+                type boolean;

+                description "This attribute identifies the STP/RSTP/MSTP protocol address.";

+            }

+            leaf c-2-00-00-01 {

+                type boolean;

+                description "This attribute identifies the IEEE MAC-specific Control Protocols group address (PAUSE protocol).";

+            }

+            leaf c-2-00-00-02 {

+                type boolean;

+                description "This attribute identifies the IEEE 802.3 Slow_Protocols_Multicast address (LACP/LAMP or Link OAM protocols).";

+            }

+            leaf c-2-00-00-03 {

+                type boolean;

+                description "This attribute identifies the Nearest non-TPMR Bridge group address (Port Authentication protocol).";

+            }

+            leaf c-2-00-00-04 {

+                type boolean;

+                description "This attribute identifies the IEEE MAC-specific Control Protocols group address.";

+            }

+            leaf c-2-00-00-05 {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-06 {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-07 {

+                type boolean;

+                description "This attribute identifies the Metro Ethernet Forum E-LMI protocol group address.";

+            }

+            leaf c-2-00-00-08 {

+                type boolean;

+                description "This attribute identifies the Provider Bridge Group address.";

+            }

+            leaf c-2-00-00-09 {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-0-a {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-0-b {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-0-c {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-0-d {

+                type boolean;

+                description "This attribute identifies the Provider Bridge MVRP address.";

+            }

+            leaf c-2-00-00-0-e {

+                type boolean;

+                description "This attribute identifies the Individual LAN Scope group address, Nearest Bridge group address (LLDP protocol).";

+            }

+            leaf c-2-00-00-0-f {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-20 {

+                type boolean;

+                description "This attribute identifies the Customer and Provider Bridge MMRP address.";

+            }

+            leaf c-2-00-00-21 {

+                type boolean;

+                description "This attribute identifies the Customer Bridge MVRP address.";

+            }

+            leaf c-2-00-00-22 {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-23 {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-24 {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-25 {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-26 {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-27 {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-28 {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-29 {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-2-a {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-2-b {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-2-c {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-2-d {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-2-e {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            leaf c-2-00-00-2-f {

+                type boolean;

+                description "Reserved for future standardization.";

+            }

+            description "This data type identifies the filter action for each of the 33 group MAC addresses (control frames).

+                Value 'false' means block: The frame is discarded by the filter process.

+                Value 'true' means pass: The frame is passed unchanged through the filter process.";

+        }

+        grouping bandwidth-report {

+            leaf source-mac-address {

+                type mac-address;

+                description "The sourceMacAddress is the address from the far end.";

+            }

+            leaf port-id {

+                type uint64;

+                description "This attribute returns the far end port identifier.";

+            }

+            leaf nominal-bandwidth {

+                type uint64;

+                description "This attribute returns the configured bandwidth";

+            }

+            leaf current-bandwidth {

+                type uint64;

+                description "This attribute returns the current bandwidth.";

+            }

+            description "Data type for the bandwidth report.";

+        }

+        typedef admin-state {

+            type enumeration {

+                enum LOCK {

+                    description "none";

+                }

+                enum NORMAL {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+        typedef colour-mode {

+            type enumeration {

+                enum COLOUR_BLIND {

+                    description "none";

+                }

+                enum COLOUR_AWARE {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+        typedef csf-config {

+            type enumeration {

+                enum DISABLED {

+                    description "This literal covers the following states of the CSF related MI informations:

+                        - MI_CSF_Enable is false

+                        - MI_CSFrdifdi_Enable is false

+                        - MI_CSFdci_Enable is false.";

+                }

+                enum ENABLED {

+                    description "This literal covers the following states of the CSF related MI informations:

+                        - MI_CSF_Enable is true

+                        - MI_CSFrdifdi_Enable is false

+                        - MI_CSFdci_Enable is false.";

+                }

+                enum ENABLED_WITH_RDI_FDI {

+                    description "This literal covers the following states of the CSF related MI informations:

+                        - MI_CSF_Enable is true

+                        - MI_CSFrdifdi_Enable is true

+                        - MI_CSFdci_Enable is false.";

+                }

+                enum ENABLED_WITH_RDI_FDI_DCI {

+                    description "This literal covers the following states of the CSF related MI informations:

+                        - MI_CSF_Enable is true

+                        - MI_CSFrdifdi_Enable is true

+                        - MI_CSFdci_Enable is true.";

+                }

+                enum ENABLED_WITH_DCI {

+                    description "This literal covers the following states of the CSF related MI informations:

+                        - MI_CSF_Enable is true

+                        - MI_CSFrdifdi_Enable is false

+                        - MI_CSFdci_Enable is true.";

+                }

+            }

+            description "none";

+        }

+        typedef ety-phy-type {

+            type enumeration {

+                enum OTHER {

+                    description "none";

+                }

+                enum UNKNOWN {

+                    description "none";

+                }

+                enum NONE {

+                    description "none";

+                }

+                enum 2BASE_TL {

+                    description "none";

+                }

+                enum 10MBIT_S {

+                    description "none";

+                }

+                enum 10PASS_TS {

+                    description "none";

+                }

+                enum 100BASE_T4 {

+                    description "none";

+                }

+                enum 100BASE_X {

+                    description "none";

+                }

+                enum 100BASE_T2 {

+                    description "none";

+                }

+                enum 1000BASE_X {

+                    description "none";

+                }

+                enum 1000BASE_T {

+                    description "none";

+                }

+                enum 10GBASE-X {

+                    description "none";

+                }

+                enum 10GBASE_R {

+                    description "none";

+                }

+                enum 10GBASE_W {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+        typedef frame-type {

+            type enumeration {

+                enum ADMIT_ONLY_VLAN_TAGGED_FRAMES {

+                    description "none";

+                }

+                enum ADMIT_ONLY_UNTAGGED_AND_PRIORITY_TAGGED_FRAMES {

+                    description "none";

+                }

+                enum ADMIT_ALL_FRAMES {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+        typedef oam-period {

+            type enumeration {

+                enum 3_33MS {

+                    description "Default for protection.";

+                }

+                enum 10MS {

+                    description "none";

+                }

+                enum 100MS {

+                    description "none";

+                }

+                enum 1S {

+                    description "none";

+                }

+                enum 10S {

+                    description "none";

+                }

+                enum 1MIN {

+                    description "none";

+                }

+                enum 10MIN {

+                    description "none";

+                }

+            }

+            description "Provides the frequency for the OAM PDU insertion.";

+        }

+        typedef pcp-coding {

+            type enumeration {

+                enum 8P0D {

+                    description "none";

+                }

+                enum 7P1D {

+                    description "none";

+                }

+                enum 6P2D {

+                    description "none";

+                }

+                enum 5P3D {

+                    description "none";

+                }

+                enum DEI {

+                    description "This enumeration value means that all priorities should be drop eligible.

+                        DEI = Drop Eligibility Indicator";

+                }

+            }

+            description "This enum models the coding of the Priority Code Point as defined in section 'Priority Code Point encoding' of IEEE 802.1Q.";

+        }

+        typedef vlan-type {

+            type enumeration {

+                enum C_Tag {

+                    description "0x8100";

+                }

+                enum S_Tag {

+                    description "0x88a8";

+                }

+                enum I_Tag {

+                    description "88-e7";

+                }

+            }

+            description "This enumeration contains the Ethertypes defined in IEEE 802.1Q.";

+        }

+        typedef repetition-period {

+            type enumeration {

+                enum 1MIN {

+                    description "none";

+                }

+                enum 1S {

+                    description "none";

+                }

+                enum 10S {

+                    description "none";

+                }

+                enum 0 {

+                    description "none";

+                }

+            }

+            description "This enumeration defines the allowed values for the repetition period in on-demand measurements.

+                Note: The value 0 means that the value is not relevant.";

+        }

+        typedef message-period {

+            type enumeration {

+                enum 10MS {

+                    description "none";

+                }

+                enum 100MS {

+                    description "none";

+                }

+                enum 1S {

+                    description "none";

+                }

+                enum 10S {

+                    description "none";

+                }

+                enum 0 {

+                    description "none";

+                }

+            }

+            description "This enumeration defines the allowed values for the message period in on-demand measurements.

+                Notes:

+                The value 10ms is only used in synthetic loss measurements.

+                The value 0 means that the value is not relevant.";

+        }

+        typedef oam-pdu-generation-type {

+            type enumeration {

+                enum SINGLE_INSTANCE {

+                    description "none";

+                }

+                enum REPETITIVE_INSTANCE {

+                    description "none";

+                }

+                enum SINGLE_SERIES {

+                    description "none";

+                }

+                enum REPETITIVE_SERIES {

+                    description "none";

+                }

+            }

+            description "This enumeration defines the generation pattern of the on-demand OAM PDUs (messages). ";

+        }

+        grouping on-demand-dm-performance-parameters {

+            leaf number-of-samples {

+                type uint64;

+                description "This attribute contains the number of received DM frames (successful samples) used for this frame delay measurement.

+                    range of type : non-negative";

+            }

+            leaf-list frame-delay-list {

+                type uint64;

+                description "This attribute contains the frame delays measured in ns (nano second, 1x10e-9 seconds). The multiplicity is defined by the numberOfSamples attribute.";

+            }

+            leaf-list frame-delay-variation-list {

+                type uint64;

+                description "This attribute contains the frame delay variations measured in ns (nano second).  The multiplicity is defined by (numberOfSamples - 1, for numberOfSamples > 0).";

+            }

+            description "This data type contains the results of an on-demand delay measurement job.";

+        }

+        grouping on-demand-lm-performance-parameters {

+            leaf total-transmitted-frames {

+                type uint64;

+                description "This attribute contains the total number of frames transmitted.";

+            }

+            leaf total-lost-frames {

+                type uint64;

+                description "This attribute contains the total number of frames lost.";

+            }

+            leaf total-frame-loss-ratio {

+                type decimal64 {

+                    fraction-digits 7;

+                }

+                description "This attribute contains the frame loss ratio (number of lost frames divided by the number of total frames (N_LF / N_TF)).

+                    The accuracy of the value is for further study.";

+            }

+            description "This data type contains the results of an on-demand loss measurement job.";

+        }

+        grouping statistical-dm-performance-parameters {

+            leaf minimum-frame-delay {

+                type uint64;

+                description "This attribute contains the minimum frame delay observed over the monitored period. It is measured in units of ns (nano second, 1x10e-9 seconds).";

+            }

+            leaf average-frame-delay {

+                type uint64;

+                description "This attribute contains the average frame delay observed over the monitored period. It is measured in units of ns (nano second, 1x10e-9 seconds).";

+            }

+            leaf maximum-frame-delay {

+                type uint64;

+                description "This attribute contains the maximum frame delay observed over the monitored period. It is measured in units of ns (nano second, 1x10e-9 seconds).";

+            }

+            leaf minimum-frame-delay-variation {

+                type uint64;

+                description "This attribute contains the minimum frame delay variation measured in units of ns (nano second, 1x10e-9 seconds).";

+            }

+            leaf average-frame-delay-variation {

+                type uint64;

+                description "This attribute contains the average frame delay variation measured in units of ns (nano second, 1x10e-9 seconds).";

+            }

+            leaf maximum-frame-delay-variation {

+                type uint64;

+                description "This attribute contains the maximum frame delay variation measured in units of ns (nano second, 1x10e-9 seconds).";

+            }

+            description "This data type contains the statistical delay measurement performance parameters.";

+        }

+        grouping statistical-lm-performance-parameters {

+            leaf minimum-frame-loss-ratio {

+                type decimal64 {

+                    fraction-digits 7;

+                }

+                description "This attribute contains the minimum frame loss ratio calculated over a period of time.

+                    The accuracy of the value is for further study.";

+            }

+            leaf average-frame-loss-ratio {

+                type decimal64 {

+                    fraction-digits 7;

+                }

+                description "This attribute contains the average frame loss ratio calculated over a period of time.

+                    The accuracy of the value is for further study.";

+            }

+            leaf maximum-frame-loss-ratio {

+                type decimal64 {

+                    fraction-digits 7;

+                }

+                description "This attribute contains the maximum frame loss ratio calculated over a period of time.

+                    The accuracy of the value is for further study.";

+            }

+            leaf ses {

+                type uint64;

+                description "This attribute contains the SES detected in the monitoring interval.

+                    range of type : 0..900 for 15min interval or 0..86400 for 24 hr interval.";

+            }

+            leaf uas {

+                type uint64;

+                description "This attribute contains UAS (unavailable seconds) detected in the monitoring interval.

+                    range of type : 0..900 for 15min interval or 0..86400 for 24 hr interval.";

+            }

+            description "This data type contains the statistical loss measurement performance parameters.";

+        }

+        typedef eth-oam-job-type {

+            type identityref {

+                base ETH_OAM_JOB_TYPE;

+            }

+            description "none";

+        }

+        grouping link-trace-result {

+            leaf source-address {

+                type mac-address;

+                description "G.8052: This attribute contains the source MAC Address of an individual LTR frame result.";

+            }

+            leaf time-to-live {

+                type uint64;

+                description "G.8052: This attribute contains the Time To Live (TTL) value of an individual LTR frame result.";

+            }

+            leaf data-tlv-length {

+                type uint64;

+                description "G.8052: This attribute contains the length (in number of octets) of the Data TLV of an individual LTR frame result.";

+            }

+            description "G.8052: This data type contains the result from an individual LTR frame.";

+        }

+

+}

diff --git a/models/tapi/src/main/yang/tapi-notification@2018-03-07.yang b/models/tapi/src/main/yang/tapi-notification@2018-10-16.yang
similarity index 86%
rename from models/tapi/src/main/yang/tapi-notification@2018-03-07.yang
rename to models/tapi/src/main/yang/tapi-notification@2018-10-16.yang
index 4447e29..b4a5bc7 100644
--- a/models/tapi/src/main/yang/tapi-notification@2018-03-07.yang
+++ b/models/tapi/src/main/yang/tapi-notification@2018-10-16.yang
@@ -5,39 +5,59 @@
         prefix tapi-common;

     }

     organization "ONF OTCC (Open Transport Configuration & Control) Project";

-    contact "
-        Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
-        Project List: <mailto:transport-api@opennetworking.org>
-        Editor: Karthik Sethuraman
-                <mailto:karthik.sethuraman@necam.com>";

+    contact "

+         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>

+         Project List: <mailto:transport-api@opennetworking.org>

+         Editor: Karthik Sethuraman

+                 <mailto:karthik.sethuraman@necam.com>";

     description "

         This module contains TAPI Notification Model definitions.

         Source: TapiNotification.uml

         Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

         License: This module is distributed under the Apache License 2.0";

+    revision 2018-10-16 {

+        description "ONF Transport API version 2.1.0.

+          - The TAPI YANG models included in this TAPI release (v2.1.0) are a *normative* part of the TAPI SDK.

+          - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]

+            <https://github.com/OpenNetworkingFoundation/EagleUmlYang>

+            and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]

+            <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>

+          - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.

+            As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.

+          - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.

+            The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.

+            YANG models included in this release are not backward compatible with previous TAPI releases.

+          - Changes included in this TAPI release (v2.1.0) are listed in

+            <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";

+    }

     revision 2018-03-07 {

-        description "ONF Transport API version 2.0.2

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.2
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";

     }

     revision 2018-02-16 {

-        description "ONF Transport API version 2.0.1

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.1
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";

     }

     revision 2018-01-02 {

-        description "ONF Transport API version 2.0.0

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.0
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";

     }

     augment "/tapi-common:context" {

-        uses notification-context;

+        container notification-context {

+            uses notification-context;

+            description "Augments the base TAPI Context with NotificationService information";

+        }

         description "Augments the base TAPI Context with NotificationService information";

     }

     /***********************

@@ -207,8 +227,8 @@
                 config false;

                 description "none";

             }

-            leaf pervceived-severity {

-                type perceived-serverity-type;

+            leaf perceived-severity {

+                type perceived-severity-type;

                 config false;

                 description "none";

             }

@@ -243,6 +263,18 @@
                 config false;

                 description "none";

             }

+            leaf perceived-severity {

+                type perceived-tca-severity;

+                description "none";

+            }

+            leaf measurement-interval {

+                type tapi-common:date-and-time;

+                description "none";

+            }

+            leaf suspect-interval-flag {

+                type boolean;

+                description "none";

+            }

             description "none";

         }

 

@@ -349,6 +381,9 @@
                 enum RULE {

                     description "none";

                 }

+                enum OAM_JOB {

+                    description "none";

+                }

             }

             description "The list of TAPI Global Object Class types on which Notifications can be raised.";

         }

@@ -377,7 +412,7 @@
             }

             description "none";

         }

-        typedef perceived-serverity-type {

+        typedef perceived-severity-type {

             type enumeration {

                 enum CRITICAL {

                     description "none";

@@ -425,6 +460,17 @@
             }

             description "none";

         }

+        typedef perceived-tca-severity {

+            type enumeration {

+                enum WARNING {

+                    description "none";

+                }

+                enum CLEAR {

+                    description "none";

+                }

+            }

+            description "none";

+        }

 

     /***********************

     * package interfaces

diff --git a/models/tapi/src/main/yang/tapi-oam@2018-03-07.yang b/models/tapi/src/main/yang/tapi-oam@2018-03-07.yang
deleted file mode 100644
index 261f5f0..0000000
--- a/models/tapi/src/main/yang/tapi-oam@2018-03-07.yang
+++ /dev/null
@@ -1,341 +0,0 @@
-module tapi-oam {

-    namespace "urn:onf:otcc:yang:tapi-oam";

-    prefix tapi-oam;

-    import tapi-common {

-        prefix tapi-common;

-    }

-    import tapi-connectivity {

-        prefix tapi-connectivity;

-    }

-    import tapi-topology {

-        prefix tapi-topology;

-    }

-    organization "ONF OTCC (Open Transport Configuration & Control) Project";

-    contact "
-        Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
-        Project List: <mailto:transport-api@opennetworking.org>
-        Editor: Karthik Sethuraman
-                <mailto:karthik.sethuraman@necam.com>";

-    description "

-        This module contains TAPI OAM Model definitions.

-        Source: TapiOam.uml

-        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

-        License: This module is distributed under the Apache License 2.0";

-    revision 2018-03-07 {

-        description "ONF Transport API version 2.0.2

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

-        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

-                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";

-    }

-    revision 2018-02-16 {

-        description "ONF Transport API version 2.0.1

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

-        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

-                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";

-    }

-    revision 2018-01-02 {

-        description "ONF Transport API version 2.0.0

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

-        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

-                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";

-    }

-    augment "/tapi-common:context" {

-        uses oam-context;

-        description "Augments the base TAPI Context with OamService information";

-    }

-    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {

-        uses mep-mip-list;

-        description "none";

-    }

-    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point" {

-        uses mep-mip-list;

-        description "none";

-    }

-    

-    /*************************

-    * definitions of references

-    *************************/

-    grouping oam-service-ref {

-        leaf oam-service-id {

-            type leafref {

-                path '/tapi-common:context/tapi-oam:oam-service/tapi-oam:uuid';

-            }

-            description "none";

-        }

-        description "none";

-    }

-

-    grouping oam-service-end-point-ref {

-    	uses oam-service-ref;

-    	leaf oam-service-end-point-id {

-	    	type leafref {

-	            path '/tapi-common:context/tapi-oam:oam-service/tapi-oam:end-point/tapi-oam:local-id';

-	        }

-	    	description "none";

-    	}

-    	description "none";

-    }

-    grouping meg-ref {

-        leaf meg-id {

-            type leafref {

-            	path '/tapi-common:context/tapi-oam:meg/tapi-oam:uuid';

-            }

-            description "none";

-        }

-        description "none";

-    }

-

-    grouping mep-ref {

-    	uses meg-ref;

-        leaf mep-id {

-            type leafref {

-            	path '/tapi-common:context/tapi-oam:meg/tapi-oam:mep/tapi-oam:local-id';

-            }

-            description "none";

-        }

-        description "none";

-    }

-    

-    grouping mip-ref {

-    	uses meg-ref;

-        leaf mip-id {

-            type leafref {

-            	path '/tapi-common:context/tapi-oam:meg/tapi-oam:mip/tapi-oam:local-id';

-            }

-            description "none";

-        }

-        description "none";

-    }

-    

-    grouping me-ref {

-    	uses meg-ref;

-        leaf me-id {

-            type leafref {

-            	path '/tapi-common:context/tapi-oam:meg/tapi-oam:me/tapi-oam:local-id';

-            }

-            description "none";

-        }

-        description "none";

-    }

-    

-    /***********************

-    * package object-classes

-    **********************/ 

-        grouping mep {

-            leaf-list on-demand-measurement-job {

-                type leafref {

-                    path '/tapi-common:context/tapi-oam:oam-service/tapi-oam:end-point/tapi-oam:on-demand-measurement-job/tapi-oam:local-id';

-                }

-                config false;

-                description "none";

-            }

-            leaf-list pro-active-measurement-job {

-                type leafref {

-                    path '/tapi-common:context/tapi-oam:oam-service/tapi-oam:end-point/tapi-oam:pro-active-measurement-job/tapi-oam:local-id';

-                }

-                config false;

-                description "none";

-            }

-            leaf layer-protocol-name {

-                type tapi-common:layer-protocol-name;

-                config false;

-                description "none";

-            }

-            leaf meg-identifier {

-                type string;

-                config false;

-                description "none";

-            }

-            leaf mep-identifier {

-                type string;

-                config false;

-                description "none";

-            }

-            leaf-list peer-mep-identifier {

-                type string;

-                config false;

-                min-elements 1;

-                description "none";

-            }

-            leaf monitored-direction {

-                type tapi-common:termination-direction;

-                description "none";

-            }

-            uses tapi-common:local-class;

-            description "none";

-        }

-        grouping on-demand-measurement-job {

-            uses tapi-common:local-class;

-            uses tapi-common:admin-state-pac;

-            description "none";

-        }

-        grouping pro-active-measurement-job {

-            uses tapi-common:local-class;

-            uses tapi-common:admin-state-pac;

-            description "none";

-        }

-        grouping meg {

-            list me {

-                key 'local-id';

-                config false;

-                min-elements 1;

-                uses me;

-                description "none";

-            }

-            list mep {

-                key 'local-id';

-                config false;

-                uses mep;

-                description "1. ME may have 0 MEPs (case of transit domains where at least 1 MIP is present)

-                    2. ME may have 1 MEP (case of edge domaind, where the peer MEP is ouside the managed domain)

-                    3. ME may have 2 MEPs";

-            }

-            list mip {

-                key 'local-id';

-                config false;

-                uses mip;

-                description "ME may 0, 1, or more MIPs";

-            }

-            leaf meg-level {

-                type uint64;

-                config false;

-                description "none";

-            }

-            uses tapi-common:resource-spec;

-            description "none";

-        }

-        grouping me {

-            list mep {

-                uses mep-ref;

-                key 'meg-id mep-id';

-                config false;

-                max-elements 2;

-                description "none";

-            }

-            list mip {

-            	uses mip-ref;

-                key 'meg-id mip-id';

-                config false;

-                description "none";

-            }

-            container connection-route {

-            	uses tapi-connectivity:route-ref;

-                config false;

-                description "none";

-            }

-            uses tapi-common:local-class;

-            description "none";

-        }

-        grouping mip {

-            leaf layer-protocol-name {

-                type tapi-common:layer-protocol-name;

-                config false;

-                description "none";

-            }

-            uses tapi-common:local-class;

-            description "none";

-        }

-        grouping oam-service {

-            container meg {

-            	uses meg-ref;

-                config false;

-                description "none";

-            }

-            list end-point {

-                key 'local-id';

-                min-elements 1;

-                uses oam-service-end-point;

-                description "none";

-            }

-            uses tapi-common:service-spec;

-            description "none";

-        }

-        grouping oam-context {

-            list oam-service {

-                key 'uuid';

-                uses oam-service;

-                description "none";

-            }

-            list meg {

-                key 'uuid';

-                config false;

-                uses meg;

-                description "none";

-            }

-            description "none";

-        }

-        grouping oam-service-end-point {

-        	container service-interface-point {

-                uses tapi-common:service-interface-point-ref;

-                description "none";

-            }

-        	container connectivity-service-end-point {

-                uses tapi-connectivity:connectivity-service-end-point-ref;

-                description "none";

-            }

-            list pro-active-measurement-job {

-                key 'local-id';

-                uses pro-active-measurement-job;

-                description "none";

-            }

-            list on-demand-measurement-job {

-                key 'local-id';

-                uses on-demand-measurement-job;

-                description "none";

-            }

-            container associated-mep {

-                uses mep-ref;

-                config false;

-                description "none";

-            }

-            leaf direction {

-                type tapi-common:port-direction;

-                config false;

-                description "none";

-            }

-            uses tapi-common:local-class;

-            description "none";

-        }

-        grouping mep-mip-list {

-            list mip {

-            	uses mip-ref;

-                key 'meg-id mip-id';

-                description "none";

-            }

-            list mep {

-            	uses mep-ref;

-                key 'meg-id mep-id';

-                description "none";

-            }

-            description "none";

-        }

-

-    /***********************

-    * package interfaces

-    **********************/ 

-        rpc abort-measurement-job {

-            description "none";

-        }

-        rpc disable-pro-active-measurement-job {

-            description "none";

-        }

-        rpc enable-pro-active-measurement-job {

-            description "none";

-        }

-        rpc establish-measurement-job {

-            description "none";

-        }

-        rpc get-contained-measurement-jobs {

-            description "none";

-        }

-        rpc terminate-measurement-job {

-            description "none";

-        }

-        rpc get-all-contained-meg {

-            description "none";

-        }

-

-}

diff --git a/models/tapi/src/main/yang/tapi-oam@2018-10-16.yang b/models/tapi/src/main/yang/tapi-oam@2018-10-16.yang
new file mode 100644
index 0000000..baadabf
--- /dev/null
+++ b/models/tapi/src/main/yang/tapi-oam@2018-10-16.yang
@@ -0,0 +1,826 @@
+module tapi-oam {

+    namespace "urn:onf:otcc:yang:tapi-oam";

+    prefix tapi-oam;

+    import tapi-common {

+        prefix tapi-common;

+    }

+    import tapi-connectivity {

+        prefix tapi-connectivity;

+    }

+    import tapi-topology {

+        prefix tapi-topology;

+    }

+    organization "ONF OTCC (Open Transport Configuration & Control) Project";

+    contact "

+         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>

+         Project List: <mailto:transport-api@opennetworking.org>

+         Editor: Karthik Sethuraman

+                 <mailto:karthik.sethuraman@necam.com>";

+    description "

+        This module contains TAPI OAM Model definitions.

+        Source: TapiOam.uml

+        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

+        License: This module is distributed under the Apache License 2.0";

+    revision 2018-10-16 {

+        description "ONF Transport API version 2.1.0.

+          - The TAPI YANG models included in this TAPI release (v2.1.0) are a *normative* part of the TAPI SDK.

+          - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]

+            <https://github.com/OpenNetworkingFoundation/EagleUmlYang>

+            and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]

+            <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>

+          - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.

+            As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.

+          - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.

+            The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.

+            YANG models included in this release are not backward compatible with previous TAPI releases.

+          - Changes included in this TAPI release (v2.1.0) are listed in

+            <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";

+    }

+    revision 2018-03-07 {

+        description "ONF Transport API version 2.0.2
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";

+    }

+    revision 2018-02-16 {

+        description "ONF Transport API version 2.0.1
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";

+    }

+    revision 2018-01-02 {

+        description "ONF Transport API version 2.0.0
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";

+    }

+    augment "/tapi-common:context" {

+        container oam-context {

+            uses oam-context;

+            description "Augments the base TAPI Context with OamService information";

+        }

+        description "Augments the base TAPI Context with OamService information";

+    }

+    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point" {

+    	container mep-mip-list {

+            uses mep-mip-list;

+            description "none";

+        }

+        description "none";

+    }

+    

+    /*************************

+    * definitions of references

+    *************************/

+    grouping oam-service-ref {

+        leaf oam-service-uuid {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-service/tapi-oam:uuid';

+            }

+            description "none";

+        }

+        description "none";

+    }

+

+    grouping oam-service-end-point-ref {

+    	uses oam-service-ref;

+    	leaf oam-service-end-point-local-id {

+	    	type leafref {

+	            path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-service/tapi-oam:end-point/tapi-oam:local-id';

+	        }

+	    	description "none";

+    	}

+    	description "none";

+    }

+    

+    grouping meg-ref {

+        leaf meg-uuid {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:uuid';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    

+    grouping maintenance-entity-ref {

+    	uses meg-ref;

+    	leaf maintenance-entity-local-id {

+	    	type leafref {

+	            path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:me/tapi-oam:local-id';

+	        }

+	    	description "none";

+    	}

+    	description "none";

+    }

+    

+    grouping mep-ref {

+    	uses meg-ref;

+    	leaf mep-local-id {

+	    	type leafref {

+	            path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:mep/tapi-oam:local-id';

+	        }

+	    	description "none";

+    	}

+    	description "none";

+    }

+    

+    grouping mip-ref {

+    	uses meg-ref;

+    	leaf mip-local-id {

+	    	type leafref {

+	            path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:mip/tapi-oam:local-id';

+	        }

+	    	description "none";

+    	}

+    	description "none";

+    }

+    

+    grouping oam-job-ref {

+        leaf oam-job-uuid {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:uuid';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    

+    grouping pm-current-data-ref {

+    	uses oam-job-ref;

+    	leaf pm-current-data-local-id {

+	    	type leafref {

+	            path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:local-id';

+	        }

+	    	description "none";

+    	}

+    	description "none";

+    }

+    

+    grouping pm-history-data-ref {

+    	uses pm-current-data-ref;

+    	leaf pm-history-data-local-id {

+	    	type leafref {

+	            path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data/tapi-oam:local-id';

+	        }

+	    	description "none";

+    	}

+    	description "none";

+    }

+    

+    grouping oam-profile-ref {

+        leaf oam-profile-uuid {

+            type leafref {

+                path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:uuid';

+            }

+            description "none";

+        }

+        description "none";

+    }

+    

+    grouping pm-threshold-data-ref {

+    	uses oam-profile-ref;

+    	leaf pm-threshold-data-local-id {

+	    	type leafref {

+	            path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:pm-threshold-data/tapi-oam:local-id';

+	        }

+	    	description "none";

+    	}

+    	description "none";

+    }

+    

+    grouping pm-bin-data-ref {

+    	uses oam-profile-ref;

+    	leaf pm-bin-data-local-id {

+	    	type leafref {

+	            path '/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:pm-bin-data/tapi-oam:local-id';

+	        }

+	    	description "none";

+    	}

+    	description "none";

+    }

+    

+    /***********************

+    * package object-classes

+    **********************/ 

+        grouping mep {

+            leaf layer-protocol-name {

+                type tapi-common:layer-protocol-name;

+                config false;

+                description "none";

+            }

+            leaf direction {

+                type tapi-common:termination-direction;

+                config false;

+                description "none";

+            }

+            leaf mep-identifier {

+                type string;

+                config false;

+                description "none";

+            }

+            leaf-list peer-mep-identifier {

+                type string;

+                config false;

+                min-elements 1;

+                description "none";

+            }

+            uses tapi-common:local-class;

+            uses tapi-common:operational-state-pac;

+            description "none";

+        }

+        grouping oam-job {

+            list oam-service-end-point {

+            	uses oam-service-end-point-ref;

+            	key 'oam-service-uuid oam-service-end-point-local-id';

+            	min-elements 1;

+                description "none";

+            }

+            container oam-profile {

+                uses oam-profile-ref;

+                description "none";

+            }

+            list pm-current-data {

+                key 'local-id';

+                config false;

+                uses pm-current-data;

+                description "Granularity period of the CurrentData identifies the specific CurrentData instance in the scope of this OamJob.

+                    For example, typically at least

+                    one 15min and

+                    one 24hr;

+                    optionally one additional configurable (< 15min)";

+            }

+            leaf oam-job-type {

+                type oam-job-type;

+                description "none";

+            }

+            container schedule {

+                uses tapi-common:time-range;

+                description "none";

+            }

+            leaf creation-time {

+                type tapi-common:date-and-time;

+                config false;

+                description "none";

+            }

+            uses tapi-common:global-class;

+            uses tapi-common:admin-state-pac;

+            description "none";

+        }

+        grouping meg {

+            list mep {

+                key 'local-id';

+                config false;

+                uses mep;

+                description "1. ME may have 0 MEPs (case of transit domains where at least 1 MIP is present)

+                    2. ME may have 1 MEP (case of edge domaind, where the peer MEP is ouside the managed domain)

+                    3. ME may have 2 MEPs";

+            }

+            list mip {

+                key 'local-id';

+                config false;

+                uses mip;

+                description "ME may 0, 1, or more MIPs";

+            }

+            leaf layer-protocol-name {

+                type tapi-common:layer-protocol-name;

+                config false;

+                description "none";

+            }

+            leaf direction {

+                type tapi-common:forwarding-direction;

+                config false;

+                description "none";

+            }

+            leaf meg-level {

+                type uint64;

+                config false;

+                description "none";

+            }

+            leaf meg-identifier {

+                type string;

+                config false;

+                description "none";

+            }

+            uses tapi-common:resource-spec;

+            uses tapi-common:operational-state-pac;

+            description "none";

+        }

+        grouping mip {

+            leaf layer-protocol-name {

+                type tapi-common:layer-protocol-name;

+                config false;

+                description "none";

+            }

+            uses tapi-common:local-class;

+            description "none";

+        }

+        grouping oam-service {

+            list end-point {

+                key 'local-id';

+                min-elements 2;

+                uses oam-service-end-point;

+                description "none";

+            }

+            container meg {

+                uses meg-ref;

+                config false;

+                description "none";

+            }

+            container oam-profile {

+                uses oam-profile-ref;

+                description "none";

+            }

+            uses tapi-common:service-spec;

+            uses tapi-common:admin-state-pac;

+            uses oam-constraint;

+            description "none";

+        }

+        grouping oam-context {

+            list oam-service {

+                key 'uuid';

+                uses oam-service;

+                description "none";

+            }

+            list meg {

+                key 'uuid';

+                config false;

+                uses meg;

+                description "none";

+            }

+            list oam-job {

+                key 'uuid';

+                uses oam-job;

+                description "none";

+            }

+            list oam-profile {

+                key 'uuid';

+                uses oam-profile;

+                description "none";

+            }

+            description "none";

+        }

+        grouping oam-service-end-point {

+            container service-interface-point {

+                uses tapi-common:service-interface-point-ref;

+                description "none";

+            }

+            container connectivity-service-end-point {

+                uses tapi-connectivity:connectivity-service-end-point-ref;

+                description "none";

+            }

+            container mep {

+                uses mep-ref;

+                config false;

+                description "none";

+            }

+            container mip {

+                uses mip-ref;

+                config false;

+                description "none";

+            }

+            leaf layer-protocol-name {

+                type tapi-common:layer-protocol-name;

+                description "none";

+            }

+            leaf direction {

+                type tapi-common:port-direction;

+                description "none";

+            }

+            leaf mep-identifier {

+                type string;

+                description "This attribute contains the identifier of the MEP.

+                    This attribute is empty in case the OSEP relates to the provisioing of an MIP.

+                    ";

+            }

+            leaf-list peer-mep-identifier {

+                type string;

+                description "This attribute models the MI_PeerMEP_ID[i] defined in G.8021 and configured as specified in G.8051. It provides the identifiers of the MEPs which are peer to the subject MEP.

+                    This attribute is not specified in case the OSEP relates to the provisioing of an MIP.

+                    In case of P2P, there is only one peer";

+            }

+            uses tapi-common:local-class;

+            uses tapi-common:admin-state-pac;

+            description "none";

+        }

+        grouping mep-mip-list {

+            list mip {

+                uses mip-ref;

+                key 'meg-uuid mip-local-id';

+                description "none";

+            }

+            list mep {

+                uses mep-ref;

+                key 'meg-uuid mep-local-id';

+                description "none";

+            }

+            description "none";

+        }

+        grouping oam-constraint {

+            leaf layer-protocol-name {

+                type tapi-common:layer-protocol-name;

+                description "none";

+            }

+            leaf direction {

+                type tapi-common:forwarding-direction;

+                description "none";

+            }

+            leaf meg-level {

+                type uint64;

+                description "none";

+            }

+            description "none";

+        }

+        grouping pm-current-data {

+            list pm-history-data {

+                key 'local-id';

+                config false;

+                uses pm-history-data;

+                description "in case of 24hr Current Data, at least 1 History Data.

+                    In case of 15min Current Data, at least 16 History Data.

+                    In case of <15min, the number of History Data shall be able to cover a span of 4 hours.";

+            }

+            container granularity-period {

+                uses tapi-common:time-period;

+                description "none";

+            }

+            leaf timestamp {

+                type tapi-common:date-and-time;

+                config false;

+                description "This attribute indicates the start of the current monitoring interval.

+                    The value is bound to the quarter of an hour in case of a 15 minute interval and bound to the hour in case of a 24 hour interval.";

+            }

+            container elapsed-time {

+                uses tapi-common:time-interval;

+                description "none";

+            }

+            leaf suspect-interval-flag {

+                type boolean;

+                description "This attribute is used to indicate that the performance data for the current period may not be reliable. Some reasons for this to occur are:

+                    – Suspect data were detected by the actual resource doing data collection.

+                    – Transition of the administrativeState attribute to/from the 'lock' state.

+                    – Transition of the operationalState to/from the 'disabled' state.

+                    – Scheduler setting that inhibits the collection function.

+                    – The performance counters were reset during the interval.

+                    – The currentData (or subclass) object instance was created during the monitoring period.";

+            }

+            uses tapi-common:local-class;

+            description "none";

+        }

+        grouping pm-history-data {

+            container granularity-period {

+                uses tapi-common:time-period;

+                description "none";

+            }

+            leaf period-end-time {

+                type tapi-common:date-and-time;

+                description "none";

+            }

+            leaf suspect-interval-flag {

+                type boolean;

+                config false;

+                description "This attribute indicates that the performance data may not be reliable.";

+            }

+            uses tapi-common:local-class;

+            description "none";

+        }

+        grouping oam-profile {

+            list pm-threshold-data {

+                key 'local-id';

+                min-elements 1;

+                uses pm-threshold-data;

+                description "none";

+            }

+            list pm-bin-data {

+                key 'local-id';

+                min-elements 1;

+                uses pm-bin-data;

+                description "none";

+            }

+            uses tapi-common:global-class;

+            description "none";

+        }

+        grouping pm-threshold-data {

+            container granularity-period {

+                uses tapi-common:time-period;

+                description "none";

+            }

+            leaf is-transient {

+                type boolean;

+                description "none";

+            }

+            uses tapi-common:local-class;

+            description "none";

+        }

+        grouping pm-bin-data {

+            container granularity-period {

+                uses tapi-common:time-period;

+                description "none";

+            }

+            uses tapi-common:local-class;

+            description "none";

+        }

+

+    /***********************

+    * package type-definitions

+    **********************/ 

+        identity OAM_JOB_TYPE {

+            description "none";

+        }

+        typedef oam-job-type {

+            type identityref {

+                base OAM_JOB_TYPE;

+            }

+            description "none";

+        }

+

+    /***********************

+    * package interfaces

+    **********************/ 

+        rpc create-oam-service {

+            description "none";

+            input {

+                list end-point {

+                    min-elements 2;

+                    uses oam-service-end-point;

+                    description "none";

+                }

+                container oam-constraint {

+                    uses oam-constraint;

+                    description "none";

+                }

+                leaf state {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container service {

+                    uses oam-service;

+                    description "none";

+                }

+            }

+        }

+        rpc delete-oam-service {

+            description "none";

+            input {

+                leaf service-id {

+                    type string;

+                    description "none";

+                }

+            }

+        }

+        rpc get-oam-service {

+            description "none";

+            input {

+                leaf service-id {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container service {

+                    uses oam-service;

+                    description "none";

+                }

+            }

+        }

+        rpc create-oam-job {

+            description "none";

+            input {

+                leaf oam-job-type {

+                    type oam-job-type;

+                    description "none";

+                }

+                list oam-service-end-point {

+                    min-elements 2;

+                    uses oam-service-end-point;

+                    description "none";

+                }

+                container oam-profile {

+                    uses oam-profile;

+                    description "none";

+                }

+                leaf state {

+                    type string;

+                    description "none";

+                }

+                leaf schedule {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container oam-job {

+                    uses oam-job;

+                    description "none";

+                }

+            }

+        }

+        rpc get-oam-job {

+            description "none";

+            input {

+                leaf job-id {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container oam-job {

+                    uses oam-job;

+                    description "none";

+                }

+            }

+        }

+        rpc get-oam-service-list {

+            description "none";

+            output {

+                list service {

+                    uses oam-service;

+                    description "none";

+                }

+            }

+        }

+        rpc get-meg {

+            description "none";

+            input {

+                leaf service-id {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container meg {

+                    uses meg;

+                    description "none";

+                }

+            }

+        }

+        rpc update-oam-service {

+            description "none";

+            input {

+                leaf service-id {

+                    type string;

+                    description "none";

+                }

+                list end-point {

+                    uses oam-service-end-point;

+                    description "none";

+                }

+                container oam-constraint {

+                    uses oam-constraint;

+                    description "none";

+                }

+                leaf state {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container service {

+                    uses oam-service;

+                    description "none";

+                }

+            }

+        }

+        rpc delete-oam-job {

+            description "none";

+            input {

+                leaf job-id {

+                    type string;

+                    description "none";

+                }

+            }

+        }

+        rpc update-oam-job {

+            description "none";

+            input {

+                leaf job-id {

+                    type string;

+                    description "none";

+                }

+                container oam-profile {

+                    uses oam-profile;

+                    description "none";

+                }

+                leaf state {

+                    type string;

+                    description "none";

+                }

+                leaf schedule {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container oam-job {

+                    uses oam-job;

+                    description "none";

+                }

+            }

+        }

+        rpc create-oam-service-end-point {

+            description "none";

+            input {

+                leaf service-id {

+                    type string;

+                    description "none";

+                }

+                leaf sip-id {

+                    type string;

+                    description "none";

+                }

+                leaf c-sep-id {

+                    type string;

+                    description "none";

+                }

+                leaf layer {

+                    type string;

+                    description "none";

+                }

+                leaf direction {

+                    type string;

+                    description "none";

+                }

+                leaf state {

+                    type string;

+                    description "none";

+                }

+                leaf mep-identifier {

+                    type string;

+                    description "none";

+                }

+                leaf-list peer-mep-identifier {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container end-point {

+                    uses oam-service-end-point;

+                    description "none";

+                }

+            }

+        }

+        rpc delete-oam-service-end-point {

+            description "none";

+            input {

+                leaf service-id {

+                    type string;

+                    description "none";

+                }

+                leaf o-sep-id {

+                    type string;

+                    description "none";

+                }

+            }

+        }

+        rpc update-oam-service-end-point {

+            description "none";

+            input {

+                leaf service-id {

+                    type string;

+                    description "none";

+                }

+                leaf o-sep-id {

+                    type string;

+                    description "none";

+                }

+                leaf state {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container end-point {

+                    uses oam-service-end-point;

+                    description "none";

+                }

+            }

+        }

+        rpc get-oam-service-end-point {

+            description "none";

+            input {

+                leaf service-id {

+                    type string;

+                    description "none";

+                }

+                leaf o-sep-id {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container end-point {

+                    uses oam-service-end-point;

+                    description "none";

+                }

+            }

+        }

+

+}

diff --git a/models/tapi/src/main/yang/tapi-odu@2018-03-07.yang b/models/tapi/src/main/yang/tapi-odu@2018-10-16.yang
similarity index 87%
rename from models/tapi/src/main/yang/tapi-odu@2018-03-07.yang
rename to models/tapi/src/main/yang/tapi-odu@2018-10-16.yang
index dfde5d4..68d5dea 100644
--- a/models/tapi/src/main/yang/tapi-odu@2018-03-07.yang
+++ b/models/tapi/src/main/yang/tapi-odu@2018-10-16.yang
@@ -13,52 +13,84 @@
     import tapi-oam {

         prefix tapi-oam;

     }

+    import tapi-dsr {

+        prefix tapi-dsr;

+    }

     organization "ONF OTCC (Open Transport Configuration & Control) Project";

-    contact "
-        Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
-        Project List: <mailto:transport-api@opennetworking.org>
-        Editor: Karthik Sethuraman
-                <mailto:karthik.sethuraman@necam.com>";

+    contact "

+         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>

+         Project List: <mailto:transport-api@opennetworking.org>

+         Editor: Karthik Sethuraman

+                 <mailto:karthik.sethuraman@necam.com>";

     description "

         This module contains TAPI Odu Model definitions.

         Source: TapiOdu.uml

         Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

         License: This module is distributed under the Apache License 2.0";

+    revision 2018-10-16 {

+        description "ONF Transport API version 2.1.0.

+          - The TAPI YANG models included in this TAPI release (v2.1.0) are a *normative* part of the TAPI SDK.

+          - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]

+            <https://github.com/OpenNetworkingFoundation/EagleUmlYang>

+            and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]

+            <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>

+          - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.

+            As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.

+          - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.

+            The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.

+            YANG models included in this release are not backward compatible with previous TAPI releases.

+          - Changes included in this TAPI release (v2.1.0) are listed in

+            <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";

+    }

     revision 2018-03-07 {

-        description "ONF Transport API version 2.0.2

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.2
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";

     }

     revision 2018-02-16 {

-        description "ONF Transport API version 2.0.1

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.1
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";

     }

     revision 2018-01-02 {

-        description "ONF Transport API version 2.0.0

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.0
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";

     }

-    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {

-        uses odu-node-edge-point-spec;

+    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {

+        container odu-node-edge-point-spec {

+            uses odu-node-edge-point-spec;

+            description "Augments the base LayerProtocol information in NodeEdgePoint with ODU-specific information";

+        }

         description "Augments the base LayerProtocol information in NodeEdgePoint with ODU-specific information";

     }

-    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point" {

-        uses odu-connection-end-point-spec;

+    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point" {

+        container odu-connection-end-point-spec {

+            uses odu-connection-end-point-spec;

+            description "none";

+        }

         description "none";

     }

-    augment "/tapi-common:context/tapi-oam:meg/tapi-oam:mep" {

-        uses odu-connection-end-point-spec;

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:mep" {

+        container odu-connection-end-point-spec {

+            uses odu-connection-end-point-spec;

+            description "none";

+        }

         description "none";

     }

-    augment "/tapi-common:context/tapi-oam:meg/tapi-oam:mip" {

-        uses odu-mip-spec;

+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:mip" {

+        container odu-mip-spec {

+            uses odu-mip-spec;

+            description "none";

+        }

         description "none";

     }

     /***********************

@@ -76,7 +108,7 @@
                 description "This attribute is applicable when the ODU CTP object instance represents a lower order ODU CTP Source at the client layer of the ODUP/ODUj-21 adaptation function. The value of true of this attribute configures that the adaptation source function shall fall back to the payload type PT=20 if the conditions specified in 14.3.10.1/G.798 are satisfied. ";

             }

             leaf configured-client-type {

-                type string;

+                type tapi-dsr:digital-signal-type;

                 config false;

                 description "This attribute configures the type of the client CTP of the server ODU TTP.";

             }

@@ -421,32 +453,45 @@
     /***********************

     * package type-definitions

     **********************/ 

+        identity ODU_TYPE {

+        	base tapi-common:LAYER_PROTOCOL_QUALIFIER;

+            description "none";

+        }

+        identity ODU_TYPE_ODU0 {

+            base ODU_TYPE;

+            description "none";

+        }

+        identity ODU_TYPE_ODU1 {

+            base ODU_TYPE;

+            description "none";

+        }

+        identity ODU_TYPE_ODU2 {

+            base ODU_TYPE;

+            description "none";

+        }

+        identity ODU_TYPE_ODU2E {

+            base ODU_TYPE;

+            description "none";

+        }

+        identity ODU_TYPE_ODU3 {

+            base ODU_TYPE;

+            description "none";

+        }

+        identity ODU_TYPE_ODU4 {

+            base ODU_TYPE;

+            description "none";

+        }

+        identity ODU_TYPE_ODU_FLEX {

+            base ODU_TYPE;

+            description "none";

+        }

+        identity ODU_TYPE_ODU_CN {

+            base ODU_TYPE;

+            description "none";

+        }

         typedef odu-type {

-            type enumeration {

-                enum ODU0 {

-                    description "none";

-                }

-                enum ODU1 {

-                    description "none";

-                }

-                enum ODU2 {

-                    description "none";

-                }

-                enum ODU2E {

-                    description "none";

-                }

-                enum ODU3 {

-                    description "none";

-                }

-                enum ODU4 {

-                    description "none";

-                }

-                enum ODU_FLEX {

-                    description "none";

-                }

-                enum ODU_CN {

-                    description "none";

-                }

+            type identityref {

+                base ODU_TYPE;

             }

             description "none";

         }

diff --git a/models/tapi/src/main/yang/tapi-otsi@2018-03-07.yang b/models/tapi/src/main/yang/tapi-otsi@2018-03-07.yang
deleted file mode 100644
index a4b7355..0000000
--- a/models/tapi/src/main/yang/tapi-otsi@2018-03-07.yang
+++ /dev/null
@@ -1,278 +0,0 @@
-module tapi-otsi {

-    namespace "urn:onf:otcc:yang:tapi-otsi";

-    prefix tapi-otsi;

-    import tapi-common {

-        prefix tapi-common;

-    }

-    import tapi-connectivity {

-        prefix tapi-connectivity;

-    }

-    import tapi-topology {

-        prefix tapi-topology;

-    }

-    organization "ONF OTCC (Open Transport Configuration & Control) Project";

-    contact "
-        Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
-        Project List: <mailto:transport-api@opennetworking.org>
-        Editor: Karthik Sethuraman
-                <mailto:karthik.sethuraman@necam.com>";

-    description "

-        This module contains TAPI OTSi Model definitions.

-        Source: TapiOtsi.uml

-        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

-        License: This module is distributed under the Apache License 2.0";

-    revision 2018-03-07 {

-        description "ONF Transport API version 2.0.2

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

-        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

-                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";

-    }

-    revision 2018-02-16 {

-        description "ONF Transport API version 2.0.1

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

-        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

-                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";

-    }

-    revision 2018-01-02 {

-        description "ONF Transport API version 2.0.0

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

-        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

-                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";

-    }

-    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point" {

-        uses otsi-connection-end-point-spec;

-        description "Augments the base LayerProtocol information in ConnectionEndPoint with OCH-specific information";

-    }

-    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {

-        uses otsi-node-edge-point-spec;

-        description "Augments the base LayerProtocol information in NodeEdgePoint with OCH-specific information";

-    }

-    /***********************

-    * package object-classes

-    **********************/ 

-        grouping otsi-client-adaptation-pac {

-            description "none";

-        }

-        grouping otsi-connection-end-point-spec {

-            container otsi-adapter {

-                config false;

-                uses otsi-client-adaptation-pac;

-                description "none";

-            }

-            container otsi-termination {

-                config false;

-                uses otsi-termination-pac;

-                description "none";

-            }

-            container otsi-ctp {

-                config false;

-                uses otsi-ctp-pac;

-                description "none";

-            }

-            description "none";

-        }

-        grouping otsi-termination-pac {

-            list selected-nominal-central-frequency {

-                config false;

-                uses nominal-central-frequency-or-wavelength;

-                description "This attribute indicates the nominal central frequency or wavelength of the optical channel associated with the OCh Trail Termination function. The value of this attribute is a pair {LinkType, Integer}, in which LinkType is DWDM, or CWDM, or NO_WDM. When LinkType is DWDM, the integer represents the nominal central frequency in unit of MHz. When LinkType is CWDM, the integer represents the nominal central wavelength in unit of pm (picometer). When LinkType is NO_WDM, the Integer field is null. For frequency and wavelength, the value shall be within the range of the maximum and minimum central frequencies or wavelengths specified for the corresponding application code used at the OCh Trail Termination.

-                    This attribute is required for the OCh Trial Termination Point Source at the transmitter.  For the OCh Trail Termination Point Sink at the receiver, this attribute may not be needed since the receiver is required to operate at any frequency/wavelength between the maximum and minimum range for the standard application code.

-                    ";

-            }

-            list supportable-lower-nominal-central-frequency {

-                config false;

-                uses nominal-central-frequency-or-wavelength;

-                description "none";

-            }

-            list supportable-upper-nominal-central-frequency {

-                config false;

-                uses nominal-central-frequency-or-wavelength;

-                description "none";

-            }

-            list selected-application-identifier {

-                config false;

-                uses application-identifier;

-                description "This attribute indicates the selected Application Identifier that is used by the OCh trail termination function. The syntax of ApplicationIdentifier is a pair {ApplicationIdentifierType, PrintableString}. The value of ApplicationIdentifierType is either STANDARD or PROPRIETARY. The value of PrintableString represents the standard application code as defined in the ITU-T Recommendations or a vendor-specific proprietary code. If the ApplicationIdentifierType is STANDARD the value of PrintableString represents a standard application code as defined in the ITU-T Recommendations. If the ApplicationIdentifierType is PROPRIETARY, the first six characters of the PrintableString must contain the Hexadecimal representation of an OUI assigned to the vendor whose implementation generated the Application Identifier; the remaining octets of the PrintableString are unspecified. The value of this attribute of an object instance has to be one of the values identified in the attribute SupportableApplicationIdentifierList of the same object instance. The values and value ranges of the optical interface parameters of a standard application code must be consistent with those values specified in the ITU-T Recommendation for that application code.";

-            }

-            list supportable-application-identifier {

-                config false;

-                uses application-identifier;

-                description "none";

-            }

-            description "none";

-        }

-        grouping otsi-pool-pac {

-            list available-frequency-slot {

-                config false;

-                uses frequency-slot;

-                description "none";

-            }

-            list occupied-frequency-slot {

-                config false;

-                uses frequency-slot;

-                description "none";

-            }

-            description "none";

-        }

-        grouping otsi-node-edge-point-spec {

-            container otsi-pool {

-                config false;

-                uses otsi-pool-pac;

-                description "none";

-            }

-            description "none";

-        }

-        grouping otsi-routing-spec {

-            leaf optical-routing-strategy {

-                type optical-routing-strategy;

-                description "none";

-            }

-            description "none";

-        }

-        grouping otsi-ctp-pac {

-            list selected-frequency-slot {

-                config false;

-                uses frequency-slot;

-                description "none";

-            }

-            description "none";

-        }

-

-    /***********************

-    * package type-definitions

-    **********************/ 

-        grouping application-identifier {

-            leaf application-identifier-type {

-                type application-identifier-type;

-                description "none";

-            }

-            leaf application-identifier-value {

-                type string;

-                description "none";

-            }

-            description "none";

-        }

-        grouping nominal-central-frequency-or-wavelength {

-            leaf grid-type {

-                type grid-type;

-                description "Specifies the frequency grid standard used to determine the nominal central frequency and frequency slot width";

-            }

-            leaf adjustment-granularity {

-                type adjustment-granularity;

-                description "Adjustment granularity in Gigahertz. As per ITU-T G.694.1, it is used to calculate nominal central frequency (in THz)";

-            }

-            leaf channel-number {

-                type uint64;

-                description "As per ITU-T G.694.1, this attribute is denoted as 'n' and is used to calculate the nominal central frequency (in THz) as follows:

-                    193.1 + <channelNumber> × <adjustmentGranularity> where channelNumber is a positive or negative integer including 0 and adjustment_granularity is the nominal central frequency granularity in THz";

-            }

-            description "This data-type holds the information to determine the nominal central frequency of a FIXED grid (DWDM or CWDM) and FLEX grid type systems.

-                As per ITU-T G.694.1, the nominal central frequency (in THz) is calculated as follows:

-                193.1 + <channelNumber> × <adjustmentGranularity> where channelNumber is a positive or negative integer including 0 and <adjustment_granularity> is the nominal central frequency granularity in THz

-                For FIXED grid types, the adjustmentGranularity is one of (0.1/0.05/0.025/0.0125) THz corresponding to channel spacing of one of (100/50/25/12.5) GHz

-                For FLEX grid type, the adjusmentGranularity is 0.00625 THz and the slot width is variable in increments of 12.5 GHz";

-        }

-        typedef optical-routing-strategy {

-            type enumeration {

-                enum OPTIMAL_OSNR {

-                    description "none";

-                }

-                enum NO_RELAY {

-                    description "none";

-                }

-                enum MIN_RELAY {

-                    description "none";

-                }

-                enum PREFERRED_NO_CHANGE_WAVELENGTH_AS_RESTORE {

-                    description "none";

-                }

-                enum PREFERRED_NO_SKIPPING_WAVELENGTH {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef application-identifier-type {

-            type enumeration {

-                enum PROPRIETARY {

-                    description "none";

-                }

-                enum ITUT_G959_1 {

-                    description "none";

-                }

-                enum ITUT_G698_1 {

-                    description "none";

-                }

-                enum ITUT_G698_2 {

-                    description "none";

-                }

-                enum ITUT_G696_1 {

-                    description "none";

-                }

-                enum ITUT_G695 {

-                    description "none";

-                }

-            }

-            description "none";

-        }

-        typedef grid-type {

-            type enumeration {

-                enum DWDM {

-                    description "Fixed frequency grid in C & L bands as specified in ITU-T G.694.1

-                        ";

-                }

-                enum CWDM {

-                    description "Fixed frequency grid as specified in ITU-T G.694.2";

-                }

-                enum FLEX {

-                    description "Flexible frequency grid as specified in ITU-T G.694.1. In this case,

-                        - the allowed frequency slots have a nominal central frequency (in THz) defined by:

-                        193.1 + n × 0.00625 where n is a positive or negative integer including 0 and 0.00625 is the nominal central frequency granularity in THz

-                        - and a slot width defined by:

-                        12.5 × m where m is a positive integer and 12.5 is the slot width granularity in GHz.

-                        Any combination of frequency slots is allowed as long as no two frequency slots overlap.";

-                }

-                enum UNSPECIFIED {

-                    description "Unspecified/proprietary frequency grid";

-                }

-            }

-            description "The frequency grid standard that specify reference set of frequencies used to denote allowed nominal central frequencies that may be used for defining applications.";

-        }

-        typedef adjustment-granularity {

-            type enumeration {

-                enum G_100GHZ {

-                    description "0.1 THz";

-                }

-                enum G_50GHZ {

-                    description "0.05 THz";

-                }

-                enum G_25GHZ {

-                    description "0.025 THz";

-                }

-                enum G_12_5GHZ {

-                    description "0.0125 THz";

-                }

-                enum G_6_25GHZ {

-                    description "0.00625 THz";

-                }

-            }

-            description "Adjustment granularity in Gigahertz. As per ITU-T G.694.1, it is used to calculate nominal central frequency (in THz)";

-        }

-        grouping frequency-slot {

-            container nominal-central-frequency {

-                uses nominal-central-frequency-or-wavelength;

-                description "none";

-            }

-            leaf slot-width-number {

-                type uint64;

-                description "As per ITU-T G.694.1, this attribute is denoted as 'm' and is used to calculate the slot width (in GHz) as follows:

-                    12.5 × m where m is a positive integer and 12.5 is the slot width granularity in GHz.";

-            }

-            description "The frequency range allocated to a slot and unavailable to other slots within a flexible grid. A frequency slot is defined by its nominal central frequency. As per ITU-T G.694.1  the slot width is calculated as follows:

-                12.5 × <slotWidthNumber> where slotWidthNumber is a positive integer and 12.5 is the slot width granularity in GHz";

-        }

-

-}

diff --git a/models/tapi/src/main/yang/tapi-path-computation@2018-03-07.yang b/models/tapi/src/main/yang/tapi-path-computation@2018-10-16.yang
similarity index 61%
rename from models/tapi/src/main/yang/tapi-path-computation@2018-03-07.yang
rename to models/tapi/src/main/yang/tapi-path-computation@2018-10-16.yang
index ad933c5..d85aff5 100644
--- a/models/tapi/src/main/yang/tapi-path-computation@2018-03-07.yang
+++ b/models/tapi/src/main/yang/tapi-path-computation@2018-10-16.yang
@@ -8,39 +8,59 @@
         prefix tapi-common;

     }

     organization "ONF OTCC (Open Transport Configuration & Control) Project";

-    contact "
-        Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
-        Project List: <mailto:transport-api@opennetworking.org>
-        Editor: Karthik Sethuraman
-                <mailto:karthik.sethuraman@necam.com>";

+    contact "

+         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>

+         Project List: <mailto:transport-api@opennetworking.org>

+         Editor: Karthik Sethuraman

+                 <mailto:karthik.sethuraman@necam.com>";

     description "

         This module contains TAPI Path Computation Model definitions.

         Source: TapiPathComputation.uml

         Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

         License: This module is distributed under the Apache License 2.0";

+    revision 2018-10-16 {

+        description "ONF Transport API version 2.1.0.

+          - The TAPI YANG models included in this TAPI release (v2.1.0) are a *normative* part of the TAPI SDK.

+          - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]

+            <https://github.com/OpenNetworkingFoundation/EagleUmlYang>

+            and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]

+            <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>

+          - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.

+            As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.

+          - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.

+            The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.

+            YANG models included in this release are not backward compatible with previous TAPI releases.

+          - Changes included in this TAPI release (v2.1.0) are listed in

+            <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";

+    }

     revision 2018-03-07 {

-        description "ONF Transport API version 2.0.2

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.2
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";

     }

     revision 2018-02-16 {

-        description "ONF Transport API version 2.0.1

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.1
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";

     }

     revision 2018-01-02 {

-        description "ONF Transport API version 2.0.0

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.0
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";

     }

     augment "/tapi-common:context" {

-        uses path-computation-context;

+        container path-computation-context {

+            uses path-computation-context;

+            description "Augments the base TAPI Context with PathComputationService information";

+        }

         description "Augments the base TAPI Context with PathComputationService information";

     }

 

@@ -48,9 +68,9 @@
     * definitions of refrences

     *************************/

     grouping path-ref {

-        leaf path-id {

+        leaf path-uuid {

             type leafref {

-                path '/tapi-common:context/tapi-path-computation:path/tapi-path-computation:uuid';

+                path '/tapi-common:context/tapi-path-computation:path-computation-context/tapi-path-computation:path/tapi-path-computation:uuid';

             }

             description "none";

         }

@@ -63,7 +83,7 @@
         grouping path {

             list link {

                 uses tapi-topology:link-ref;

-                key 'topology-id link-id';

+                key 'topology-uuid link-uuid';

                 config false;

                 min-elements 1;

                 description "none";

@@ -73,6 +93,15 @@
                 uses routing-constraint;

                 description "none";

             }

+            leaf direction {

+                type tapi-common:forwarding-direction;

+                description "none";

+            }

+            leaf layer-protocol-name {

+                type tapi-common:layer-protocol-name;

+                config false;

+                description "none";

+            }

             uses tapi-common:resource-spec;

             description "Path is described by an ordered list of TE Links. A TE Link is defined by a pair of Node/NodeEdgePoint IDs. A Connection is realized by concatenating link resources (associated with a Link) and the lower-level connections (cross-connections) in the different nodes";

         }

@@ -82,6 +111,19 @@
                 config false;

                 description "none";

             }

+            leaf layer-protocol-name {

+                type tapi-common:layer-protocol-name;

+                config false;

+                description "none";

+            }

+            leaf layer-protocol-qualifier {

+                type tapi-common:layer-protocol-qualifier;

+                description "none";

+            }

+            container capacity {

+                uses tapi-common:capacity;

+                description "none";

+            }

             leaf role {

                 type tapi-common:port-role;

                 config false;

@@ -92,11 +134,6 @@
                 config false;

                 description "The orientation of defined flow at the EndPoint.";

             }

-            leaf service-layer {

-                type tapi-common:layer-protocol-name;

-                config false;

-                description "none";

-            }

             uses tapi-common:local-class;

             description "The association of the FC to LTPs is made via EndPoints.

                 The EndPoint (EP) object class models the access to the FC function. 

@@ -109,7 +146,7 @@
         grouping path-computation-service {

             list path {

                 uses path-ref;

-                key 'path-id';

+                key 'path-uuid';

                 config false;

                 min-elements 1;

                 description "none";

@@ -125,6 +162,10 @@
                 uses routing-constraint;

                 description "none";

             }

+            container topology-constraint {

+                uses topology-constraint;

+                description "none";

+            }

             container objective-function {

                 uses path-objective-function;

                 description "none";

@@ -175,46 +216,38 @@
             description "none";

         }

         grouping routing-constraint {

-            container requested-capacity {

-                config false;

-                uses tapi-common:capacity;

-                description "none";

-            }

-            leaf service-level {

-                type string;

-                config false;

-                description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";

-            }

-            leaf-list path-layer {

-                type tapi-common:layer-protocol-name;

-                config false;

-                description "none";

-            }

             list cost-characteristic {

                 key 'cost-name';

-                config false;

                 uses tapi-topology:cost-characteristic;

                 description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";

             }

             list latency-characteristic {

                 key 'traffic-property-name';

-                config false;

                 uses tapi-topology:latency-characteristic;

                 description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";

             }

-            list include-topology {

-                uses tapi-topology:topology-ref;

-                key 'topology-id';

-                config false;

+            list risk-diversity-characteristic {

+                key 'risk-characteristic-name';

+                uses tapi-topology:risk-characteristic;

                 description "none";

             }

-            list avoid-topology {

-                uses tapi-topology:topology-ref;

-                key 'topology-id';

-                config false;

+            leaf diversity-policy {

+                type diversity-policy;

                 description "none";

             }

-            uses tapi-common:local-class;

+            leaf route-objective-function {

+                type route-objective-function;

+                description "none";

+            }

+            leaf route-direction {

+                type tapi-common:forwarding-direction;

+                description "none";

+            }

+            leaf is-exclusive {

+                type boolean;

+                default "true";

+                description "To distinguish if the resources are to be exclusive to the service";

+            }

             description "none";

         }

         grouping path-computation-context {

@@ -231,6 +264,112 @@
             }

             description "none";

         }

+        grouping topology-constraint {

+            list include-topology {

+                uses tapi-topology:topology-ref;

+                key 'topology-uuid';

+                config false;

+                description "none";

+            }

+            list avoid-topology {

+                uses tapi-topology:topology-ref;

+                key 'topology-uuid';

+                config false;

+                description "none";

+            }

+            list include-path {

+                uses tapi-path-computation:path-ref;

+                key 'path-uuid';

+                config false;

+                description "none";

+            }

+            list exclude-path {

+                uses tapi-path-computation:path-ref;

+                key 'path-uuid';

+                config false;

+                description "none";

+            }

+            list include-link {

+                uses tapi-topology:link-ref;

+                key 'topology-uuid link-uuid';

+                config false;

+                description "This is a loose constraint - that is it is unordered and could be a partial list ";

+            }

+            list exclude-link {

+                uses tapi-topology:link-ref;

+                key 'topology-uuid link-uuid';

+                config false;

+                description "none";

+            }

+            list include-node {

+                uses tapi-topology:node-ref;

+                key 'topology-uuid node-uuid';

+                config false;

+                description "This is a loose constraint - that is it is unordered and could be a partial list";

+            }

+            list exclude-node {

+                uses tapi-topology:node-ref;

+                key 'topology-uuid node-uuid';

+                config false;

+                description "none";

+            }

+            leaf-list preferred-transport-layer {

+                type tapi-common:layer-protocol-name;

+                config false;

+                description "soft constraint requested by client to indicate the layer(s) of transport connection that it prefers to carry the service. This could be same as the service layer or one of the supported server layers";

+            }

+            description "none";

+        }

+

+    /***********************

+    * package type-definitions

+    **********************/ 

+        typedef route-objective-function {

+            type enumeration {

+                enum MIN_WORK_ROUTE_HOP {

+                    description "none";

+                }

+                enum MIN_WORK_ROUTE_COST {

+                    description "none";

+                }

+                enum MIN_WORK_ROUTE_LATENCY {

+                    description "none";

+                }

+                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_HOP {

+                    description "none";

+                }

+                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_COST {

+                    description "none";

+                }

+                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_LATENCY {

+                    description "none";

+                }

+                enum LOAD_BALANCE_MAX_UNUSED_CAPACITY {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+        typedef diversity-policy {

+            type enumeration {

+                enum SRLG {

+                    description "none";

+                }

+                enum SRNG {

+                    description "none";

+                }

+                enum SNG {

+                    description "none";

+                }

+                enum NODE {

+                    description "none";

+                }

+                enum LINK {

+                    description "none";

+                }

+            }

+            description "none";

+        }

 

     /***********************

     * package interfaces

@@ -248,6 +387,10 @@
                     uses routing-constraint;

                     description "none";

                 }

+                container topology-constraint {

+                    uses topology-constraint;

+                    description "none";

+                }

                 container objective-function {

                     uses path-objective-function;

                     description "none";

diff --git a/models/tapi/src/main/yang/tapi-photonic-media@2018-10-16.yang b/models/tapi/src/main/yang/tapi-photonic-media@2018-10-16.yang
new file mode 100644
index 0000000..3ac2932
--- /dev/null
+++ b/models/tapi/src/main/yang/tapi-photonic-media@2018-10-16.yang
@@ -0,0 +1,771 @@
+module tapi-photonic-media {

+    namespace "urn:onf:otcc:yang:tapi-photonic-media";

+    prefix tapi-photonic-media;

+    import tapi-common {

+        prefix tapi-common;

+    }

+    import tapi-connectivity {

+        prefix tapi-connectivity;

+    }

+    import tapi-topology {

+        prefix tapi-topology;

+    }

+    organization "ONF OTCC (Open Transport Configuration & Control) Project";

+    contact "

+         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>

+         Project List: <mailto:transport-api@opennetworking.org>

+         Editor: Karthik Sethuraman

+                 <mailto:karthik.sethuraman@necam.com>";

+    description "

+        This module contains TAPI PhotonicMedia Model definitions.

+        Source: TapiPhotonicMedia.uml

+        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

+        License: This module is distributed under the Apache License 2.0";

+    revision 2018-10-16 {

+        description "ONF Transport API version 2.1.0.

+          - The TAPI YANG models included in this TAPI release (v2.1.0) are a *normative* part of the TAPI SDK.

+          - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]

+            <https://github.com/OpenNetworkingFoundation/EagleUmlYang>

+            and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]

+            <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>

+          - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.

+            As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.

+          - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.

+            The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.

+            YANG models included in this release are not backward compatible with previous TAPI releases.

+          - Changes included in this TAPI release (v2.1.0) are listed in

+            <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";

+    }

+    revision 2018-03-07 {

+        description "ONF Transport API version 2.0.2
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";

+    }

+    revision 2018-02-16 {

+        description "ONF Transport API version 2.0.1
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";

+    }

+    revision 2018-01-02 {

+        description "ONF Transport API version 2.0.0
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";

+    }

+    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point" {

+        container otsi-connection-end-point-spec {

+            uses otsi-connection-end-point-spec;

+            description "Augments the base LayerProtocol information in ConnectionEndPoint with OCH-specific information";

+        }

+        description "Augments the base LayerProtocol information in ConnectionEndPoint with OCH-specific information";

+    }

+    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {

+        container media-channel-node-edge-point-spec {

+            uses media-channel-node-edge-point-spec;

+            description "Augments the base LayerProtocol information in NodeEdgePoint with OCH-specific information";

+        }

+        description "Augments the base LayerProtocol information in NodeEdgePoint with OCH-specific information";

+    }

+    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point" {

+        container otsi-assembly-connection-end-point-spec {

+            uses otsi-assembly-connection-end-point-spec;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-common:service-interface-point" {

+        container otsi-service-interface-point-spec {

+            uses otsi-service-interface-point-spec;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point" {

+        container otsi-connectivity-service-end-point-spec {

+            uses otsi-connectivity-service-end-point-spec;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-common:service-interface-point" {

+        container media-channel-service-interface-point-spec {

+            uses media-channel-service-interface-point-spec;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point" {

+        container media-channel-service-interface-point-spec {

+            uses media-channel-service-interface-point-spec;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point" {

+        container media-channel-connection-end-point-spec {

+            uses media-channel-connection-end-point-spec;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point" {

+        container ots-connection-end-point-spec {

+            uses ots-connection-end-point-spec;

+            description "none";

+        }

+        description "none";

+    }

+    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point" {

+        container media-channel-assembly-spec {

+            uses media-channel-assembly-spec;

+            description "none";

+        }

+        description "none";

+    }

+    /***********************

+    * package object-classes

+    **********************/ 

+        grouping otsi-gserver-adaptation-pac {

+            leaf number-of-otsi {

+                type uint64;

+                config false;

+                description "none";

+            }

+            description "none";

+        }

+        grouping otsi-connection-end-point-spec {

+            container otsi-termination {

+                config false;

+                uses otsi-termination-pac;

+                description "none";

+            }

+            description "none";

+        }

+        grouping otsi-termination-pac {

+            container selected-central-frequency {

+                config false;

+                uses central-frequency;

+                description "none";

+            }

+            container selected-application-identifier {

+                config false;

+                uses application-identifier;

+                description "This attribute indicates the selected Application Identifier that is used by the OCh trail termination function. The syntax of ApplicationIdentifier is a pair {ApplicationIdentifierType, PrintableString}. The value of ApplicationIdentifierType is either STANDARD or PROPRIETARY. The value of PrintableString represents the standard application code as defined in the ITU-T Recommendations or a vendor-specific proprietary code. If the ApplicationIdentifierType is STANDARD the value of PrintableString represents a standard application code as defined in the ITU-T Recommendations. If the ApplicationIdentifierType is PROPRIETARY, the first six characters of the PrintableString must contain the Hexadecimal representation of an OUI assigned to the vendor whose implementation generated the Application Identifier; the remaining octets of the PrintableString are unspecified. The value of this attribute of an object instance has to be one of the values identified in the attribute SupportableApplicationIdentifierList of the same object instance. The values and value ranges of the optical interface parameters of a standard application code must be consistent with those values specified in the ITU-T Recommendation for that application code.";

+            }

+            leaf selected-modulation {

+                type modulation-technique;

+                default "UNDEFINED";

+                config false;

+                description "This parameter defines the modulation used at the source";

+            }

+            container selected-spectrum {

+                config false;

+                uses spectrum-band;

+                description "none";

+            }

+            container transmited-power {

+                config false;

+                uses power-properties-pac;

+                description "Measured power at the Transmitter.";

+            }

+            container received-power {

+                uses power-properties-pac;

+                description "none";

+            }

+            container laser-properties {

+                config false;

+                uses laser-properties-pac;

+                description "Laser properties.";

+            }

+            description "Provides status information only.";

+        }

+        grouping media-channel-pool-capability-pac {

+            list supportable-spectrum {

+                config false;

+                uses spectrum-band;

+                description "none";

+            }

+            list available-spectrum {

+                config false;

+                uses spectrum-band;

+                description "none";

+            }

+            list occupied-spectrum {

+                config false;

+                uses spectrum-band;

+                description "none";

+            }

+            description "none";

+        }

+        grouping media-channel-node-edge-point-spec {

+            container mc-pool {

+                config false;

+                uses media-channel-pool-capability-pac;

+                description "none";

+            }

+            description "none";

+        }

+        grouping otsi-routing-spec {

+            leaf optical-routing-strategy {

+                type optical-routing-strategy;

+                description "none";

+            }

+            description "none";

+        }

+        grouping media-channel-properties-pac {

+            container occupied-spectrum {

+                config false;

+                uses spectrum-band;

+                description "none";

+            }

+            container measured-power-ingress {

+                config false;

+                uses power-properties-pac;

+                description "none";

+            }

+            container measured-power-egress {

+                uses power-properties-pac;

+                description "none";

+            }

+            description "none";

+        }

+        grouping otsi-assembly-connection-end-point-spec {

+            container otsi-adapter {

+                config false;

+                uses otsi-gserver-adaptation-pac;

+                description "none";

+            }

+            container fec-parameters {

+                config false;

+                uses fec-properties-pac;

+                description "none";

+            }

+            description "none";

+        }

+        grouping otsi-capability-pac {

+            list supportable-lower-central-frequency {

+                config false;

+                uses central-frequency;

+                description "The lower frequency of the channel spectrum";

+            }

+            list supportable-upper-central-frequency {

+                config false;

+                uses central-frequency;

+                description "The Upper frequency of the channel spectrum";

+            }

+            list supportable-application-identifier {

+                config false;

+                uses application-identifier;

+                description "The list of supportable ApplicationIdentifiers.";

+            }

+            leaf-list supportable-modulation {

+                type modulation-technique;

+                config false;

+                description "This parameter defines the modulation used at the source";

+            }

+            container total-power-warn-threshold {

+                config false;

+                uses total-power-threshold-pac;

+                description "none";

+            }

+            description "Can read the status of the warning for the upper value that the power can reach.";

+        }

+        grouping otsi-service-interface-point-spec {

+            container otsi-capability {

+                config false;

+                uses otsi-capability-pac;

+                description "none";

+            }

+            description "none";

+        }

+        grouping otsi-connectivity-service-end-point-spec {

+            container otsi-config {

+                uses otsi-termination-config-pac;

+                description "none";

+            }

+            description "none";

+        }

+        grouping otsi-termination-config-pac {

+            container central-frequency {

+                uses central-frequency;

+                description "The central frequency of the laser. It is the oscillation frequency of the corresponding electromagnetic wave";

+            }

+            container spectrum {

+                uses spectrum-band;

+                description "none";

+            }

+            container application-identifier {

+                uses application-identifier;

+                description "This attribute indicates the selected Application Identifier.";

+            }

+            leaf modulation {

+                type modulation-technique;

+                description "The modulation techniqu selected at the source.";

+            }

+            leaf laser-control {

+                type laser-control-type;

+                description "Laser control can be FORCED-ON, FORCED-OFF or LASER-SHUTDOWN";

+            }

+            container transmit-power {

+                uses power-properties-pac;

+                description "Transmit power as requested.";

+            }

+            leaf total-power-warn-threshold-upper {

+                type decimal64 {

+                    fraction-digits 7;

+                }

+                description "Allows to configure the Upper power threshold which is expected to be different from Default, but within the Min and Max values specified as OTSi SIP capability.";

+            }

+            leaf total-power-warn-threshold-lower {

+                type decimal64 {

+                    fraction-digits 7;

+                }

+                description "Allows to configure the Lowerpower threshold which is expected to be different from Default, but within the Min and Max values specified as OTSi SIP capability.";

+            }

+            description "none";

+        }

+        grouping fec-properties-pac {

+            leaf pre-fec-ber {

+                type uint64;

+                config false;

+                description "counter: bit error rate before correction by FEC";

+            }

+            leaf post-fec-ber {

+                type uint64;

+                config false;

+                description "counter: bit error rate after correction by FEC";

+            }

+            leaf corrected-bytes {

+                type uint64;

+                config false;

+                description "Bytes corrected between those that were received corrupted";

+            }

+            leaf corrected-bits {

+                type uint64;

+                config false;

+                description "Bits corrected between those that were received corrupted";

+            }

+            leaf uncorrectable-bytes {

+                type uint64;

+                config false;

+                description "Bytes that could not be corrected by FEC";

+            }

+            leaf uncorrectable-bits {

+                type uint64;

+                config false;

+                description "Bits that could not be corrected by FEC";

+            }

+            description "none";

+        }

+        grouping media-channel-service-interface-point-spec {

+            container mc-pool {

+                config false;

+                uses media-channel-pool-capability-pac;

+                description "none";

+            }

+            description "none";

+        }

+        grouping media-channel-connectivity-service-end-point-spec {

+            container mc-config {

+                uses media-channel-config-pac;

+                description "none";

+            }

+            description "none";

+        }

+        grouping media-channel-config-pac {

+            container spectrum {

+                uses spectrum-band;

+                description "none";

+            }

+            description "none";

+        }

+        grouping media-channel-connection-end-point-spec {

+            container media-channel {

+                config false;

+                uses media-channel-properties-pac;

+                description "none";

+            }

+            description "none";

+        }

+        grouping ots-connection-end-point-spec {

+            container ots-media-channel {

+                config false;

+                uses media-channel-properties-pac;

+                description "none";

+            }

+            description "none";

+        }

+        grouping media-channel-assembly-spec {

+            description "none";

+        }

+        grouping laser-properties-pac {

+            leaf laser-status {

+                type laser-control-status-type;

+                config false;

+                description "none";

+            }

+            leaf laser-application-type {

+                type laser-type;

+                config false;

+                description "The type of laser, its operational wavelengths, and its applications. String size 255.";

+            }

+            leaf laser-bias-current {

+                type decimal64 {

+                    fraction-digits 7;

+                }

+                config false;

+                description "The Bias current of the laser that is the medium polarization current of the laser.";

+            }

+            leaf laser-temperature {

+                type decimal64 {

+                    fraction-digits 7;

+                }

+                config false;

+                description "The temperature of the laser";

+            }

+            description "none";

+        }

+        grouping power-properties-pac {

+            leaf total-power {

+                type decimal64 {

+                    fraction-digits 7;

+                }

+                description "The total power at any point in a channel specified in dBm.";

+            }

+            leaf power-spectral-density {

+                type decimal64 {

+                    fraction-digits 7;

+                }

+                config false;

+                description "This describes how power of a signal  is distributed over frequency specified in nW/MHz";

+            }

+            description "Indication with severity warning raised when a total power value measured is above the threshold.";

+        }

+        grouping total-power-threshold-pac {

+            leaf total-power-upper-warn-threshold-default {

+                type decimal64 {

+                    fraction-digits 7;

+                }

+                description "Can read the value of the default  threshold that was set";

+            }

+            leaf total-power-upper-warn-threshold-min {

+                type decimal64 {

+                    fraction-digits 7;

+                }

+                description "Can read the value of the lower threshold that was set";

+            }

+            leaf total-power-upper-warn-threshold-max {

+                type decimal64 {

+                    fraction-digits 7;

+                }

+                description "Can  read the value of the upper threshold that was set";

+            }

+            leaf total-power-lower-warn-threshold-default {

+                type decimal64 {

+                    fraction-digits 7;

+                }

+                description "Can read the value of the default  threshold that was set";

+            }

+            leaf total-power-lower-warn-threshold-max {

+                type decimal64 {

+                    fraction-digits 7;

+                }

+                description "Can  read the value of the upper threshold that was set";

+            }

+            leaf total-power-lower-warn-threshold-min {

+                type decimal64 {

+                    fraction-digits 7;

+                }

+                description "Can read the value of the lower threshold that was set";

+            }

+            description "none";

+        }

+

+    /***********************

+    * package type-definitions

+    **********************/ 

+        identity PHOTONIC_LAYER_QUALIFIER {

+        	base tapi-common:LAYER_PROTOCOL_QUALIFIER;

+            description "none";

+        }

+        identity PHOTONIC_LAYER_QUALIFIER_OTSi {

+            base PHOTONIC_LAYER_QUALIFIER;

+            description "none";

+        }

+        identity PHOTONIC_LAYER_QUALIFIER_OTSiA {

+            base PHOTONIC_LAYER_QUALIFIER;

+            description "none";

+        }

+        identity PHOTONIC_LAYER_QUALIFIER_OTSiG {

+            base PHOTONIC_LAYER_QUALIFIER;

+            description "none";

+        }

+        identity PHOTONIC_LAYER_QUALIFIER_NMC {

+            base PHOTONIC_LAYER_QUALIFIER;

+            description "none";

+        }

+        identity PHOTONIC_LAYER_QUALIFIER_NMCA {

+            base PHOTONIC_LAYER_QUALIFIER;

+            description "none";

+        }

+        identity PHOTONIC_LAYER_QUALIFIER_SMC {

+            base PHOTONIC_LAYER_QUALIFIER;

+            description "none";

+        }

+        identity PHOTONIC_LAYER_QUALIFIER_SMCA {

+            base PHOTONIC_LAYER_QUALIFIER;

+            description "none";

+        }

+        identity PHOTONIC_LAYER_QUALIFIER_OCH {

+            base PHOTONIC_LAYER_QUALIFIER;

+            description "none";

+        }

+        identity PHOTONIC_LAYER_QUALIFIER_OMS {

+            base PHOTONIC_LAYER_QUALIFIER;

+            description "none";

+        }

+        identity PHOTONIC_LAYER_QUALIFIER_OTS {

+            base PHOTONIC_LAYER_QUALIFIER;

+            description "none";

+        }

+        grouping application-identifier {

+            leaf application-identifier-type {

+                type application-identifier-type;

+                description "The ITU-T recommendation which defines the application code format.";

+            }

+            leaf application-code {

+                type string;

+                description "none";

+            }

+            description "The syntax of ApplicationIdentifier is a pair {ApplicationIdentifierType, PrintableString}. The value of ApplicationIdentifierType is either STANDARD or PROPRIETARY. The value of PrintableString represents the standard application code as defined in the ITU-T Recommendations or a vendor-specific proprietary code. If the ApplicationIdentifierType is STANDARD the value of PrintableString represents a standard application code as defined in the ITU-T Recommendations. If the ApplicationIdentifierType is PROPRIETARY, the first six characters of the PrintableString must contain the Hexadecimal representation of an OUI assigned to the vendor whose implementation generated the Application Identifier; the remaining octets of the PrintableString are unspecified. The value of this attribute of an object instance has to be one of the values identified in the attribute SupportableApplicationIdentifierList of the same object instance. The values and value ranges of the optical interface parameters of a standard application code must be consistent with those values specified in the ITU-T Recommendation for that application code.";

+        }

+        grouping central-frequency {

+            container frequency-constraint {

+                uses frequency-constraint;

+                description "none";

+            }

+            leaf central-frequency {

+                type uint64;

+                description "The central frequency of the laser specified in MHz. It is the oscillation frequency of the corresponding electromagnetic wave. ";

+            }

+            description "This data-type holds the central frequency information as well frequency constraints in terms of GridType ( FIXED grid (DWDM or CWDM) or FLEX grid) and AdjustmentGranularity.";

+        }

+        typedef optical-routing-strategy {

+            type enumeration {

+                enum OPTIMAL_OSNR {

+                    description "none";

+                }

+                enum NO_RELAY {

+                    description "none";

+                }

+                enum MIN_RELAY {

+                    description "none";

+                }

+                enum PREFERRED_NO_CHANGE_WAVELENGTH_AS_RESTORE {

+                    description "none";

+                }

+                enum PREFERRED_NO_SKIPPING_WAVELENGTH {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+        typedef application-identifier-type {

+            type enumeration {

+                enum PROPRIETARY {

+                    description "none";

+                }

+                enum ITUT_G959_1 {

+                    description "none";

+                }

+                enum ITUT_G698_1 {

+                    description "none";

+                }

+                enum ITUT_G698_2 {

+                    description "none";

+                }

+                enum ITUT_G696_1 {

+                    description "none";

+                }

+                enum ITUT_G695 {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+        typedef grid-type {

+            type enumeration {

+                enum DWDM {

+                    description "Fixed frequency grid in C & L bands as specified in ITU-T G.694.1

+                        ";

+                }

+                enum CWDM {

+                    description "Fixed frequency grid as specified in ITU-T G.694.2";

+                }

+                enum FLEX {

+                    description "Flexible frequency grid as specified in ITU-T G.694.1. In this case,

+                        - the allowed frequency slots have a nominal central frequency (in THz) defined by:

+                        193.1 + n × 0.00625 where n is a positive or negative integer including 0 and 0.00625 is the nominal central frequency granularity in THz

+                        - and a slot width defined by:

+                        12.5 × m where m is a positive integer and 12.5 is the slot width granularity in GHz.

+                        Any combination of frequency slots is allowed as long as no two frequency slots overlap.";

+                }

+                enum GRIDLESS {

+                    description "none";

+                }

+                enum UNSPECIFIED {

+                    description "Unspecified/proprietary frequency grid";

+                }

+            }

+            description "The frequency grid standard that specify reference set of frequencies used to denote allowed nominal central frequencies that may be used for defining applications.";

+        }

+        typedef adjustment-granularity {

+            type enumeration {

+                enum G_100GHZ {

+                    description "100000 MHz";

+                }

+                enum G_50GHZ {

+                    description "50000 MHz";

+                }

+                enum G_25GHZ {

+                    description "25000 MHz";

+                }

+                enum G_12_5GHZ {

+                    description "12500 MHz";

+                }

+                enum G_6_25GHZ {

+                    description "6250 MHz";

+                }

+                enum G_3_125GHZ {

+                    description "3125 MHz";

+                }

+                enum UNCONSTRAINED {

+                    description "none";

+                }

+            }

+            description "Adjustment granularity in Gigahertz. As per ITU-T G.694.1, it is used to calculate nominal central frequency";

+        }

+        grouping spectrum-band {

+            leaf upper-frequency {

+                type uint64;

+                description "The upper frequency bound of the media channel spectrum specified in MHz";

+            }

+            leaf lower-frequency {

+                type uint64;

+                description "The lower frequency bound of the media channel spectrum specified in MHz";

+            }

+            container frequency-constraint {

+                uses frequency-constraint;

+                description "none";

+            }

+            description "This data-type holds the spectrum information in termsof upper/lower frequency directly or optionally the information to determin this in terms of the nominal central frequency and spectral width for a FIXED grid (DWDM or CWDM) and FLEX grid type systems.";

+        }

+        typedef modulation-technique {

+            type enumeration {

+                enum RZ {

+                    description "none";

+                }

+                enum NRZ {

+                    description "none";

+                }

+                enum BPSK {

+                    description "none";

+                }

+                enum DPSK {

+                    description "none";

+                }

+                enum QPSK {

+                    description "none";

+                }

+                enum 8QAM {

+                    description "none";

+                }

+                enum 16QAM {

+                    description "none";

+                }

+                enum PAM4 {

+                    description "none";

+                }

+                enum PAM8 {

+                    description "none";

+                }

+                enum UNDEFINED {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+        typedef laser-type {

+            type enumeration {

+                enum PUMP {

+                    description "none";

+                }

+                enum MODULATED {

+                    description "none";

+                }

+                enum PULSE {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+        typedef photonic-layer-qualifier {

+            type identityref {

+                base PHOTONIC_LAYER_QUALIFIER;

+            }

+            description "none";

+        }

+        typedef laser-control-type {

+            type enumeration {

+                enum FORCED-ON {

+                    description "none";

+                }

+                enum FORCED-OFF {

+                    description "none";

+                }

+                enum AUTOMATIC-LASER-SHUTDOWN {

+                    description "none";

+                }

+                enum UNDEFINED {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+        typedef laser-control-status-type {

+            type enumeration {

+                enum ON {

+                    description "none";

+                }

+                enum OFF {

+                    description "none";

+                }

+                enum PULSING {

+                    description "none";

+                }

+                enum UNDEFINED {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+        grouping frequency-constraint {

+            leaf adjustment-granularity {

+                type adjustment-granularity;

+                description "Adjustment granularity in Gigahertz. As per ITU-T G.694.1, it is used to calculate nominal central frequency (in THz)";

+            }

+            leaf grid-type {

+                type grid-type;

+                description "Specifies the frequency grid standard used to determine the nominal central frequency and frequency slot width";

+            }

+            description "This data-type holds the frequency constraint information in terms of GridType ( FIXED grid (DWDM or CWDM) or FLEX grid) and AdjustmentGranularity.";

+        }

+

+}

diff --git a/models/tapi/src/main/yang/tapi-topology@2018-03-07.yang b/models/tapi/src/main/yang/tapi-topology@2018-10-16.yang
similarity index 89%
rename from models/tapi/src/main/yang/tapi-topology@2018-03-07.yang
rename to models/tapi/src/main/yang/tapi-topology@2018-10-16.yang
index 3a21d94..4b7c9f2 100644
--- a/models/tapi/src/main/yang/tapi-topology@2018-03-07.yang
+++ b/models/tapi/src/main/yang/tapi-topology@2018-10-16.yang
@@ -5,39 +5,59 @@
         prefix tapi-common;

     }

     organization "ONF OTCC (Open Transport Configuration & Control) Project";

-    contact "
-        Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
-        Project List: <mailto:transport-api@opennetworking.org>
-        Editor: Karthik Sethuraman
-                <mailto:karthik.sethuraman@necam.com>";

+    contact "

+         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>

+         Project List: <mailto:transport-api@opennetworking.org>

+         Editor: Karthik Sethuraman

+                 <mailto:karthik.sethuraman@necam.com>";

     description "

         This module contains TAPI Topology Model definitions.

         Source: TapiTopology.uml

         Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

         License: This module is distributed under the Apache License 2.0";

+    revision 2018-10-16 {

+        description "ONF Transport API version 2.1.0.

+          - The TAPI YANG models included in this TAPI release (v2.1.0) are a *normative* part of the TAPI SDK.

+          - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]

+            <https://github.com/OpenNetworkingFoundation/EagleUmlYang>

+            and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]

+            <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>

+          - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.

+            As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.

+          - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.

+            The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.

+            YANG models included in this release are not backward compatible with previous TAPI releases.

+          - Changes included in this TAPI release (v2.1.0) are listed in

+            <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";

+    }

     revision 2018-03-07 {

-        description "ONF Transport API version 2.0.2

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.2
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";

     }

     revision 2018-02-16 {

-        description "ONF Transport API version 2.0.1

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.1
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";

     }

     revision 2018-01-02 {

-        description "ONF Transport API version 2.0.0

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.0
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";

     }

     augment "/tapi-common:context" {

-        uses topology-context;

+        container topology-context {

+            uses topology-context;

+            description "Augments the base TAPI Context with TopologyService information";

+        }

         description "Augments the base TAPI Context with TopologyService information";

     }

 

@@ -46,9 +66,9 @@
     *************************/

 

     grouping topology-ref {

-        leaf topology-id {

+        leaf topology-uuid {

             type leafref {

-                path '/tapi-common:context/tapi-topology:topology/tapi-topology:uuid';

+                path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:uuid';

             }

             description "none";

         }

@@ -57,9 +77,9 @@
 

     grouping link-ref {

         uses topology-ref;

-        leaf link-id {

+        leaf link-uuid {

             type leafref {

-                path '/tapi-common:context/tapi-topology:topology/tapi-topology:link/tapi-topology:uuid';

+                path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:link/tapi-topology:uuid';

             }

             description "none";

         }

@@ -68,20 +88,20 @@
 

     grouping node-ref {

         uses topology-ref;

-        leaf node-id {

+        leaf node-uuid {

             type leafref {

-                path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:uuid';

+                path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:uuid';

             }

             description "none";

         }

         description "none";

     }

 

-    grouping owned-node-edge-point-ref {

+    grouping node-edge-point-ref {

         uses node-ref;

-        leaf owned-node-edge-point-id {

+        leaf node-edge-point-uuid {

             type leafref {

-                path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid';

+                path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid';

             }

             description "none";

         }

@@ -90,9 +110,9 @@
 

     grouping node-rule-group-ref {

         uses node-ref;

-        leaf node-rule-group-id {

+        leaf node-rule-group-uuid {

             type leafref {

-                path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:node-rule-group/tapi-topology:uuid';

+                path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:node-rule-group/tapi-topology:uuid';

             }

             description "none";

         }

@@ -104,8 +124,8 @@
     **********************/ 

         grouping link {

             list node-edge-point {

-                uses owned-node-edge-point-ref;

-                key 'topology-id node-id owned-node-edge-point-id';

+                uses node-edge-point-ref;

+                key 'topology-uuid node-uuid node-edge-point-uuid';

                 config false;

                 min-elements 2;

                 description "none";

@@ -146,8 +166,8 @@
                 description "none";

             }

             list aggregated-node-edge-point {

-            	uses owned-node-edge-point-ref;

-                key 'topology-id node-id owned-node-edge-point-id';

+            	uses node-edge-point-ref;

+                key 'topology-uuid node-uuid node-edge-point-uuid';

                 config false;

                 description "none";

             }

@@ -217,15 +237,20 @@
                 config false;

                 description "none";

             }

+            leaf-list supported-cep-layer-protocol-qualifier {

+                type tapi-common:layer-protocol-qualifier;

+                min-elements 1;

+                description "none";

+            }

             list aggregated-node-edge-point {

-            	uses owned-node-edge-point-ref;

-                key 'topology-id node-id owned-node-edge-point-id';

+            	uses node-edge-point-ref;

+                key 'topology-uuid node-uuid node-edge-point-uuid';

                 config false;

                 description "none";

             }

             list mapped-service-interface-point {

                 uses tapi-common:service-interface-point-ref;

-                key 'service-interface-point-id';

+                key 'service-interface-point-uuid';

                 config false;

                 description "NodeEdgePoint mapped to more than ServiceInterfacePoint (slicing/virtualizing) or a ServiceInterfacePoint mapped to more than one NodeEdgePoint (load balancing/Resilience) should be considered experimental";

             }

@@ -342,7 +367,7 @@
         grouping network-topology-service {

             list topology {

                 uses topology-ref;

-                key 'topology-id';

+                key 'topology-uuid';

                 config false;

                 description "none";

             }

@@ -372,7 +397,7 @@
             }

             list associated-node-rule-group {

                 uses node-rule-group-ref;

-                key 'topology-id node-id node-rule-group-id';

+                key 'topology-uuid node-uuid node-rule-group-uuid';

                 min-elements 2;

                 description "none";

             }

@@ -391,14 +416,14 @@
                 description "none";

             }

             list node-edge-point {

-            	uses owned-node-edge-point-ref;

-                key 'topology-id node-id owned-node-edge-point-id';

+            	uses node-edge-point-ref;

+                key 'topology-uuid node-uuid node-edge-point-uuid';

                 min-elements 1;

                 description "none";

             }

             list composed-rule-group {

                 uses node-rule-group-ref;

-                key 'topology-id node-id node-rule-group-id';

+                key 'topology-uuid node-uuid node-rule-group-uuid';

                 description "none";

             }

             list inter-rule-group {

diff --git a/models/tapi/src/main/yang/tapi-virtual-network@2018-03-07.yang b/models/tapi/src/main/yang/tapi-virtual-network@2018-10-16.yang
similarity index 81%
rename from models/tapi/src/main/yang/tapi-virtual-network@2018-03-07.yang
rename to models/tapi/src/main/yang/tapi-virtual-network@2018-10-16.yang
index 3bea4fb..25f33d8 100644
--- a/models/tapi/src/main/yang/tapi-virtual-network@2018-03-07.yang
+++ b/models/tapi/src/main/yang/tapi-virtual-network@2018-10-16.yang
@@ -8,48 +8,68 @@
         prefix tapi-common;

     }

     organization "ONF OTCC (Open Transport Configuration & Control) Project";

-    contact "
-        Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
-        Project List: <mailto:transport-api@opennetworking.org>
-        Editor: Karthik Sethuraman
-                <mailto:karthik.sethuraman@necam.com>";

+    contact "

+         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>

+         Project List: <mailto:transport-api@opennetworking.org>

+         Editor: Karthik Sethuraman

+                 <mailto:karthik.sethuraman@necam.com>";

     description "

         This module contains TAPI Virtual Network Model definitions.

         Source: TapiVirtualNetwork.uml

         Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

         License: This module is distributed under the Apache License 2.0";

+    revision 2018-10-16 {

+        description "ONF Transport API version 2.1.0.

+          - The TAPI YANG models included in this TAPI release (v2.1.0) are a *normative* part of the TAPI SDK.

+          - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]

+            <https://github.com/OpenNetworkingFoundation/EagleUmlYang>

+            and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]

+            <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>

+          - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.

+            As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.

+          - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.

+            The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.

+            YANG models included in this release are not backward compatible with previous TAPI releases.

+          - Changes included in this TAPI release (v2.1.0) are listed in

+            <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";

+    }

     revision 2018-03-07 {

-        description "ONF Transport API version 2.0.2

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.2
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";

     }

     revision 2018-02-16 {

-        description "ONF Transport API version 2.0.1

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.1
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";

     }

     revision 2018-01-02 {

-        description "ONF Transport API version 2.0.0

-        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.

+        description "ONF Transport API version 2.0.0
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";

-        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";

     }

     augment "/tapi-common:context" {

-        uses virtual-network-context;

+        container virtual-network-context {

+            uses virtual-network-context;

+            description "Augments the base TAPI Context with VirtualNetworkService information";

+        }

         description "Augments the base TAPI Context with VirtualNetworkService information";

     }

     /*************************

      * definitions of refrences

      *************************/

      grouping virtual-nw-service-ref {

-         leaf virtual-nw-service-id {

+         leaf virtual-nw-service-uuid {

              type leafref {

-                 path '/tapi-common:context/tapi-virtual-network:virtual-nw-service/tapi-virtual-network:uuid';

+                 path '/tapi-common:context/tapi-virtual-network:virtual-network-context/tapi-virtual-network:virtual-nw-service/tapi-virtual-network:uuid';

              }

              description "none";

          }

@@ -72,7 +92,7 @@
             }

             list diversity-exclusion {

                 uses virtual-nw-service-ref;

-                key 'virtual-nw-service-id';

+                key 'virtual-nw-service-uuid';

                 config false;

                 description "none";

             }