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";
             }
