diff --git a/models/tapi/src/main/yang/tapi-common@2018-10-16.yang b/models/tapi/src/main/yang/tapi-common@2018-10-16.yang
old mode 100644
new mode 100755
index 958febf..d526a7a
--- a/models/tapi/src/main/yang/tapi-common@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-common@2018-10-16.yang
@@ -27,34 +27,34 @@
             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
+        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>";
     }
 
-    /*************************
+   /**************************
     * definitions of refrences
-    *************************/
+    **************************/
     grouping service-interface-point-ref {
         leaf service-interface-point-uuid {
             type leafref {
@@ -65,614 +65,613 @@
         description "none";
     }
 
-    /***********************
+   /**************************
     * package object-classes
-    **********************/ 
-        grouping admin-state-pac {
-            leaf administrative-state {
-                type administrative-state;
-                description "none";
-            }
-            leaf operational-state {
-                type operational-state;
-                config false;
-                description "none";
-            }
-            leaf lifecycle-state {
-                type lifecycle-state;
-                config false;
-                description "none";
-            }
-            description "Provides state attributes that are applicable to an entity that can be administered. Such an entity also has operational and lifecycle aspects.";
+    **************************/
+    grouping admin-state-pac {
+        leaf administrative-state {
+            type administrative-state;
+            description "none";
         }
-        grouping global-class {
-            leaf uuid {
-                type uuid;
-                description "UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity.
-                    UUID here uses string representation as defined in RFC 4122.  The canonical representation uses lowercase characters.
-                    Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} 
-                    Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6";
-            }
-            list name {
-                key 'value-name';
-                uses name-and-value;
-                description "List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity.";
-            }
-            description "The TAPI GlobalComponent serves as the super class for all TAPI entities that can be directly retrieved by their ID. As such, these are first class entities and their ID is expected to be globally unique. ";
+        leaf operational-state {
+            type operational-state;
+            config false;
+            description "none";
         }
-        grouping lifecycle-state-pac {
-            leaf lifecycle-state {
-                type lifecycle-state;
-                config false;
+        leaf lifecycle-state {
+            type lifecycle-state;
+            config false;
+            description "none";
+        }
+        description "Provides state attributes that are applicable to an entity that can be administered. Such an entity also has operational and lifecycle aspects.";
+    }
+    grouping global-class {
+        leaf uuid {
+            type uuid;
+            description "UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity.
+                UUID here uses string representation as defined in RFC 4122.  The canonical representation uses lowercase characters.
+                Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}
+                Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6";
+        }
+        list name {
+            key 'value-name';
+            uses name-and-value;
+            description "List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity.";
+        }
+        description "The TAPI GlobalComponent serves as the super class for all TAPI entities that can be directly retrieved by their ID. As such, these are first class entities and their ID is expected to be globally unique. ";
+    }
+    grouping lifecycle-state-pac {
+        leaf lifecycle-state {
+            type lifecycle-state;
+            config false;
+            description "none";
+        }
+        description "Provides state attributes for an entity that has lifeccycle aspects only.";
+    }
+    grouping local-class {
+        leaf local-id {
+            type string;
+            description "none";
+        }
+        list name {
+            key 'value-name';
+            uses name-and-value;
+            description "List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity.";
+        }
+        description "The TAPI GlobalComponent serves as the super class for all TAPI entities that can be directly retrieved by their ID. As such, these are first class entities and their ID is expected to be globally unique. ";
+    }
+    grouping operational-state-pac {
+        leaf operational-state {
+            type operational-state;
+            config false;
+            description "none";
+        }
+        leaf lifecycle-state {
+            type lifecycle-state;
+            config false;
+            description "none";
+        }
+        description "Provides state attributes that are applicable to an entity that reflects operational aspects. Such an entity is expected to also have lifecycle aspects.";
+    }
+    container context {
+        uses tapi-context;
+        presence "Root container for all TAPI interaction";
+        description "none";
+    }
+    grouping tapi-context {
+        list service-interface-point {
+            key 'uuid';
+            uses service-interface-point;
+            description "none";
+        }
+        uses global-class;
+        description "The Network Control Domain (NCD) object class represents the scope of control that a particular SDN controller has with respect to a particular network, (i.e., encompassing a designated set of interconnected (virtual) network elements).";
+    }
+    grouping resource-spec {
+        uses global-class;
+        description "none";
+    }
+    grouping service-spec {
+        uses global-class;
+        description "none";
+    }
+    grouping service-interface-point {
+        leaf layer-protocol-name {
+            type layer-protocol-name;
+            config false;
+            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;
+        description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.
+            The structure of LTP supports all transport protocols including circuit and packet forms.";
+    }
+    grouping capacity-pac {
+        container total-potential-capacity {
+            config false;
+            uses capacity;
+            description "An optimistic view of the capacity of the TopologicalEntity assuming that any shared capacity is available to be taken.";
+        }
+        container available-capacity {
+            config false;
+            uses capacity;
+            description "Capacity available to be assigned.";
+        }
+        description "The TopologicalEntity derives capacity from the underlying realization.
+            A TopologicalEntity may be an abstraction and virtualization of a subset of the underlying capability offered in a view or may be directly reflecting the underlying realization.
+            A TopologicalEntity may be directly used in the view or may be assigned to another view for use.
+            The clients supported by a multi-layer TopologicalEntity may interact such that the resources used by one client may impact those available to another. This is derived from the LTP spec details.
+            Represents the capacity available to user (client) along with client interaction and usage.
+            A TopologicalEntity may reflect one or more client protocols and one or more members for each profile.";
+    }
+    grouping termination-pac {
+        leaf termination-direction {
+            type termination-direction;
+            config false;
+            description "The overall directionality of the LP.
+                - A BIDIRECTIONAL LP will have some SINK and/or SOURCE flowss.
+                - A SINK LP can only contain elements with SINK flows or CONTRA_DIRECTION_SOURCE flows
+                - A SOURCE LP can only contain SOURCE flows or CONTRA_DIRECTION_SINK flows";
+        }
+        leaf termination-state {
+            type termination-state;
+            config false;
+            description "Indicates whether the layer is terminated and if so how.";
+        }
+        description "Each transport layer is represented by a LayerProtocol (LP) instance. The LayerProtocol instances it can be used for controlling termination and monitoring functionality.
+            It can also be used for controlling the adaptation (i.e. encapsulation and/or multiplexing of client signal), tandem connection monitoring, traffic conditioning and/or shaping functionality at an intermediate point along a connection.
+            Where the client – server relationship is fixed 1:1 and immutable, the layers can be encapsulated in a single LTP instance. Where the is a n:1 relationship between client and server, the layers must be split over two separate instances of LTP. ";
+    }
+
+   /**************************
+    * package type-definitions
+    **************************/
+    identity LAYER_PROTOCOL_QUALIFIER {
+        description "none";
+    }
+    typedef administrative-state {
+        type enumeration {
+            enum LOCKED {
+                description "Users are administratively prohibited from making use of the resource.";
+            }
+            enum UNLOCKED {
+                description "Users are allowed to use the resource";
+            }
+        }
+        description "The possible values of the administrativeState.";
+    }
+    typedef date-and-time {
+        type string;
+        description "This primitive type defines the date and time according to the following structure:
+            yyyyMMddhhmmss.s[Z|{+|-}HHMm] where:
+            yyyy    0000..9999    year
+            MM    01..12            month
+            dd        01..31            day
+            hh        00..23            hour
+            mm    00..59            minute
+            ss        00..59            second
+            s        .0...9            tenth of second (set to .0 if EMS or NE cannot support this granularity)
+            Z        Z                indicates UTC (rather than local time)
+            {+|-}    + or -            delta from UTC
+            HH        00..23            time zone difference in hours
+            Mm    00..59            time zone difference in minutes.";
+    }
+    typedef directive-value {
+        type enumeration {
+            enum MINIMIZE {
                 description "none";
             }
-            description "Provides state attributes for an entity that has lifeccycle aspects only.";
+            enum MAXIMIZE {
+                description "none";
+            }
+            enum ALLOW {
+                description "none";
+            }
+            enum DISALLOW {
+                description "none";
+            }
+            enum DONT_CARE {
+                description "none";
+            }
         }
-        grouping local-class {
-            leaf local-id {
+        description "none";
+    }
+    typedef forwarding-direction {
+        type enumeration {
+            enum BIDIRECTIONAL {
+                description "The Fowarding entity supports both BIDIRECTIONAL flows at all Ports (i.e. all Ports have both an INPUT flow and an OUTPUT flow defined)";
+            }
+            enum UNIDIRECTIONAL {
+                description "The Forwarding entity has Ports that are either INPUT or OUTPUT. It has no BIDIRECTIONAL Ports.";
+            }
+            enum UNDEFINED_OR_UNKNOWN {
+                description "Not a normal state. The system is unable to determine the correct value.";
+            }
+        }
+        description "The directionality of a Forwarding entity.";
+    }
+    typedef layer-protocol-name {
+        type enumeration {
+            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 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.
+            Layer protocol names include:
+            -    Layer 1 (L1): OTU, ODU
+            -    Layer 2 (L2): Carrier Grade Ethernet (ETY, ETH), MPLS-TP (MT)
+            ";
+    }
+    typedef lifecycle-state {
+        type enumeration {
+            enum PLANNED {
+                description "The resource is planned but is not present in the network.";
+            }
+            enum POTENTIAL_AVAILABLE {
+                description "The supporting resources are present in the network but are shared with other clients; or require further configuration before they can be used; or both.
+                    o    When a potential resource is configured and allocated to a client it is moved to the installed state for that client.
+                    o    If the potential resource has been consumed (e.g. allocated to another client) it is moved to the planned state for all other clients.";
+            }
+            enum POTENTIAL_BUSY {
+                description "The supporting resources are present in the network but are shared with other clients; or require further configuration before they can be used; or both.
+                    o    When a potential resource is configured and allocated to a client it is moved to the installed state for that client.
+                    o    If the potential resource has been consumed (e.g. allocated to another client) it is moved to the planned state for all other clients.";
+            }
+            enum INSTALLED {
+                description "The resource is present in the network and is capable of providing the service expected.";
+            }
+            enum PENDING_REMOVAL {
+                description "The resource has been marked for removal";
+            }
+        }
+        description "The possible values of the lifecycleState.";
+    }
+    grouping name-and-value {
+        leaf value-name {
+            type string;
+            description "The name of the value. The value need not have a name.";
+        }
+        leaf value {
+            type string;
+            description "The value";
+        }
+        description "A scoped name-value pair";
+    }
+    typedef operational-state {
+        type enumeration {
+            enum DISABLED {
+                description "The resource is unable to meet the SLA of the user of the resource. If no (explicit) SLA is defined the resource is disabled if it is totally inoperable and unable to provide service to the user.";
+            }
+            enum ENABLED {
+                description "The resource is partially or fully operable and available for use";
+            }
+        }
+        description "The possible values of the operationalState.";
+    }
+    typedef port-direction {
+        type enumeration {
+            enum BIDIRECTIONAL {
+                description "The Port has both an INPUT flow and an OUTPUT flow defined.";
+            }
+            enum INPUT {
+                description "The Port only has definition for a flow into the Forwarding entity (i.e. an ingress flow).";
+            }
+            enum OUTPUT {
+                description "The Port only has definition for a flow out of the Forwarding entity (i.e. an egress flow).";
+            }
+            enum UNIDENTIFIED_OR_UNKNOWN {
+                description "Not a normal state. The system is unable to determine the correct value.";
+            }
+        }
+        description "The orientation of flow at the Port of a Forwarding entity";
+    }
+    typedef port-role {
+        type enumeration {
+            enum SYMMETRIC {
+                description "none";
+            }
+            enum ROOT {
+                description "none";
+            }
+            enum LEAF {
+                description "none";
+            }
+            enum TRUNK {
+                description "none";
+            }
+            enum UNKNOWN {
+                description "none";
+            }
+        }
+        description "The role of an end in the context of the function of the forwarding entity that it bounds";
+    }
+    typedef termination-direction {
+        type enumeration {
+            enum BIDIRECTIONAL {
+                description "A Termination with both SINK and SOURCE flows.";
+            }
+            enum SINK {
+                description "The flow is up the layer stack from the server side to the client side.
+                    Considering an example of a Termination function within the termination entity, a SINK flow:
+                    - will arrive at at the base of the termination function (the server side) where it is essentially at an INPUT to the termination component
+                    - then will be decoded and deconstructed
+                    - then relevant parts of the flow will be sent out of the termination function (the client side) where it is essentially at an OUTPUT from the termination component
+                    A SINK termination is one that only supports a SINK flow.
+                    A SINK termiation can be bound to an OUTPUT Port of a Forwarding entity";
+            }
+            enum SOURCE {
+                description "The flow is down the layer stack from the server side to the client side.
+                    Considering an example of a Termination function within the termination entity, a SOURCE flow:
+                    - will arrive at at the top of the termination function (the client side) where it is essentially at an INPUT to the termination component
+                    - then will be assembled with various overheads etc and will be coded
+                    - then coded form of the assembly of flow will be sent out of the termination function (the server side) where it is essentially at an OUTPUT from the termination component
+                    A SOURCE termination is one that only supports a SOURCE flow.
+                    A SOURCE termiation can be bound to an INPUT Port of a Forwarding entity";
+            }
+            enum UNDEFINED_OR_UNKNOWN {
+                description "Not a normal state. The system is unable to determine the correct value.";
+            }
+        }
+        description "The directionality of a termination entity";
+    }
+    typedef termination-state {
+        type enumeration {
+            enum LP_CAN_NEVER_TERMINATE {
+                description "A non-flexible case that can never be terminated.";
+            }
+            enum LT_NOT_TERMINATED {
+                description "A flexible termination that can terminate but is currently not terminated.";
+            }
+            enum TERMINATED_SERVER_TO_CLIENT_FLOW {
+                description "A flexible termination that is currently terminated for server to client flow only.";
+            }
+            enum TERMINATED_CLIENT_TO_SERVER_FLOW {
+                description "A flexible termination that is currently terminated for client to server flow only.";
+            }
+            enum TERMINATED_BIDIRECTIONAL {
+                description "A flexible termination that is currently terminated in both directions of flow.";
+            }
+            enum LT_PERMENANTLY_TERMINATED {
+                description "A non-flexible termination that is always terminated (in both directions of flow for a bidirectional case and in the one direction of flow for both unidirectional cases).";
+            }
+            enum TERMINATION_STATE_UNKNOWN {
+                description "There TerminationState cannot be determined.";
+            }
+        }
+        description "Provides support for the range of behaviours and specific states that an LP can take with respect to termination of the signal.
+            Indicates to what degree the LayerTermination is terminated.";
+    }
+    typedef uuid {
+        type string;
+        description "The univeral ID value where the mechanism for generation is defned by some authority not directly referenced in the structure.
+            UUID here uses string representation as defined in RFC 4122.  The canonical representation uses lowercase characters.
+            Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}
+            Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6";
+    }
+    grouping capacity {
+        container total-size {
+            uses capacity-value;
+            description "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate.";
+        }
+        container bandwidth-profile {
+            uses bandwidth-profile;
+            description "none";
+        }
+        description "Information on capacity of a particular TopologicalEntity.";
+    }
+    grouping bandwidth-profile {
+        leaf bw-profile-type {
+            type bandwidth-profile-type;
+            description "none";
+        }
+        container committed-information-rate {
+            uses capacity-value;
+            description "none";
+        }
+        container committed-burst-size {
+            uses capacity-value;
+            description "none";
+        }
+        container peak-information-rate {
+            uses capacity-value;
+            description "none";
+        }
+        container peak-burst-size {
+            uses capacity-value;
+            description "none";
+        }
+        leaf color-aware {
+            type boolean;
+            description "none";
+        }
+        leaf coupling-flag {
+            type boolean;
+            description "none";
+        }
+        description "none";
+    }
+    grouping capacity-value {
+        leaf value {
+            type uint64;
+            description "none";
+        }
+        leaf unit {
+            type capacity-unit;
+            description "none";
+        }
+        description "The Capacity (Bandwidth) values that are applicable for digital layers.";
+    }
+    typedef capacity-unit {
+        type enumeration {
+            enum TB {
+                description "Indicates that the integer CapacityValue is in TeraBytes";
+            }
+            enum TBPS {
+                description "Indicates that the integer CapacityValue is in Terabit-per-second";
+            }
+            enum GB {
+                description "Indicates that the integer CapacityValue is in GigaBytes";
+            }
+            enum GBPS {
+                description "Indicates that the integer CapacityValue is in Gigabit-per-second";
+            }
+            enum MB {
+                description "Indicates that the integer CapacityValue is in MegaBytes";
+            }
+            enum MBPS {
+                description "Indicates that the integer CapacityValue is in Megabit-per-second";
+            }
+            enum KB {
+                description "Indicates that the integer CapacityValue is in KiloBytes";
+            }
+            enum KBPS {
+                description "Indicates that the integer CapacityValue is in Kilobit-per-second";
+            }
+            enum GHz {
+                description "none";
+            }
+            enum MHz {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    typedef bandwidth-profile-type {
+        type enumeration {
+            enum MEF_10.x {
+                description "none";
+            }
+            enum RFC_2697 {
+                description "none";
+            }
+            enum RFC_2698 {
+                description "none";
+            }
+            enum RFC_4115 {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    grouping time-range {
+        leaf end-time {
+            type date-and-time;
+            description "none";
+        }
+        leaf start-time {
+            type date-and-time;
+            description "none";
+        }
+        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 {
+            key 'unit';
+            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
+    **************************/
+    rpc get-service-interface-point-details {
+        description "none";
+        input {
+            leaf sip-id-or-name {
                 type string;
                 description "none";
             }
-            list name {
-                key 'value-name';
-                uses name-and-value;
-                description "List of names. A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity.";
-            }
-            description "The TAPI GlobalComponent serves as the super class for all TAPI entities that can be directly retrieved by their ID. As such, these are first class entities and their ID is expected to be globally unique. ";
         }
-        grouping operational-state-pac {
-            leaf operational-state {
-                type operational-state;
-                config false;
+        output {
+            container sip {
+                uses service-interface-point;
                 description "none";
             }
-            leaf lifecycle-state {
-                type lifecycle-state;
-                config false;
-                description "none";
-            }
-            description "Provides state attributes that are applicable to an entity that reflects operational aspects. Such an entity is expected to also have lifecycle aspects.";
         }
-        container context {
-            uses tapi-context;
-            presence "Root container for all TAPI interaction";
-            description "none";
-        }
-        grouping tapi-context {
-            list service-interface-point {
+    }
+    rpc get-service-interface-point-list {
+        description "none";
+        output {
+            list sip {
                 key 'uuid';
                 uses service-interface-point;
                 description "none";
             }
-            uses global-class;
-            description "The Network Control Domain (NCD) object class represents the scope of control that a particular SDN controller has with respect to a particular network, (i.e., encompassing a designated set of interconnected (virtual) network elements).";
         }
-        grouping resource-spec {
-            uses global-class;
-            description "none";
-        }
-        grouping service-spec {
-            uses global-class;
-            description "none";
-        }
-        grouping service-interface-point {
-            leaf layer-protocol-name {
-                type layer-protocol-name;
-                config false;
-                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;
-            description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers. 
-                The structure of LTP supports all transport protocols including circuit and packet forms.";
-        }
-        grouping capacity-pac {
-            container total-potential-capacity {
-                config false;
-                uses capacity;
-                description "An optimistic view of the capacity of the TopologicalEntity assuming that any shared capacity is available to be taken.";
-            }
-            container available-capacity {
-                config false;
-                uses capacity;
-                description "Capacity available to be assigned.";
-            }
-            description "The TopologicalEntity derives capacity from the underlying realization. 
-                A TopologicalEntity may be an abstraction and virtualization of a subset of the underlying capability offered in a view or may be directly reflecting the underlying realization.
-                A TopologicalEntity may be directly used in the view or may be assigned to another view for use.
-                The clients supported by a multi-layer TopologicalEntity may interact such that the resources used by one client may impact those available to another. This is derived from the LTP spec details.
-                Represents the capacity available to user (client) along with client interaction and usage. 
-                A TopologicalEntity may reflect one or more client protocols and one or more members for each profile.";
-        }
-        grouping termination-pac {
-            leaf termination-direction {
-                type termination-direction;
-                config false;
-                description "The overall directionality of the LP. 
-                    - A BIDIRECTIONAL LP will have some SINK and/or SOURCE flowss.
-                    - A SINK LP can only contain elements with SINK flows or CONTRA_DIRECTION_SOURCE flows
-                    - A SOURCE LP can only contain SOURCE flows or CONTRA_DIRECTION_SINK flows";
-            }
-            leaf termination-state {
-                type termination-state;
-                config false;
-                description "Indicates whether the layer is terminated and if so how.";
-            }
-            description "Each transport layer is represented by a LayerProtocol (LP) instance. The LayerProtocol instances it can be used for controlling termination and monitoring functionality. 
-                It can also be used for controlling the adaptation (i.e. encapsulation and/or multiplexing of client signal), tandem connection monitoring, traffic conditioning and/or shaping functionality at an intermediate point along a connection. 
-                Where the client – server relationship is fixed 1:1 and immutable, the layers can be encapsulated in a single LTP instance. Where the is a n:1 relationship between client and server, the layers must be split over two separate instances of LTP. ";
-        }
-
-    /***********************
-    * package type-definitions
-    **********************/ 
-        identity LAYER_PROTOCOL_QUALIFIER {
-            description "none";
-        }
-        typedef administrative-state {
-            type enumeration {
-                enum LOCKED {
-                    description "Users are administratively prohibited from making use of the resource.";
-                }
-                enum UNLOCKED {
-                    description "Users are allowed to use the resource";
-                }
-            }
-            description "The possible values of the administrativeState.";
-        }
-        typedef date-and-time {
-            type string;
-            description "This primitive type defines the date and time according to the following structure:
-                yyyyMMddhhmmss.s[Z|{+|-}HHMm] where:
-                yyyy    0000..9999    year
-                MM    01..12            month
-                dd        01..31            day
-                hh        00..23            hour
-                mm    00..59            minute
-                ss        00..59            second
-                s        .0...9            tenth of second (set to .0 if EMS or NE cannot support this granularity)
-                Z        Z                indicates UTC (rather than local time)
-                {+|-}    + or -            delta from UTC
-                HH        00..23            time zone difference in hours
-                Mm    00..59            time zone difference in minutes.";
-        }
-        typedef directive-value {
-            type enumeration {
-                enum MINIMIZE {
-                    description "none";
-                }
-                enum MAXIMIZE {
-                    description "none";
-                }
-                enum ALLOW {
-                    description "none";
-                }
-                enum DISALLOW {
-                    description "none";
-                }
-                enum DONT_CARE {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef forwarding-direction {
-            type enumeration {
-                enum BIDIRECTIONAL {
-                    description "The Fowarding entity supports both BIDIRECTIONAL flows at all Ports (i.e. all Ports have both an INPUT flow and an OUTPUT flow defined)";
-                }
-                enum UNIDIRECTIONAL {
-                    description "The Forwarding entity has Ports that are either INPUT or OUTPUT. It has no BIDIRECTIONAL Ports.";
-                }
-                enum UNDEFINED_OR_UNKNOWN {
-                    description "Not a normal state. The system is unable to determine the correct value.";
-                }
-            }
-            description "The directionality of a Forwarding entity.";
-        }
-        typedef layer-protocol-name {
-            type enumeration {
-                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 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.
-                Layer protocol names include:
-                -    Layer 1 (L1): OTU, ODU
-                -    Layer 2 (L2): Carrier Grade Ethernet (ETY, ETH), MPLS-TP (MT)
-                ";
-        }
-        typedef lifecycle-state {
-            type enumeration {
-                enum PLANNED {
-                    description "The resource is planned but is not present in the network.";
-                }
-                enum POTENTIAL_AVAILABLE {
-                    description "The supporting resources are present in the network but are shared with other clients; or require further configuration before they can be used; or both.
-                        o    When a potential resource is configured and allocated to a client it is moved to the installed state for that client.
-                        o    If the potential resource has been consumed (e.g. allocated to another client) it is moved to the planned state for all other clients.";
-                }
-                enum POTENTIAL_BUSY {
-                    description "The supporting resources are present in the network but are shared with other clients; or require further configuration before they can be used; or both.
-                        o    When a potential resource is configured and allocated to a client it is moved to the installed state for that client.
-                        o    If the potential resource has been consumed (e.g. allocated to another client) it is moved to the planned state for all other clients.";
-                }
-                enum INSTALLED {
-                    description "The resource is present in the network and is capable of providing the service expected.";
-                }
-                enum PENDING_REMOVAL {
-                    description "The resource has been marked for removal";
-                }
-            }
-            description "The possible values of the lifecycleState.";
-        }
-        grouping name-and-value {
-            leaf value-name {
+    }
+    rpc update-service-interface-point {
+        description "none";
+        input {
+            leaf sip-id-or-name {
                 type string;
-                description "The name of the value. The value need not have a name.";
-            }
-            leaf value {
-                type string;
-                description "The value";
-            }
-            description "A scoped name-value pair";
-        }
-        typedef operational-state {
-            type enumeration {
-                enum DISABLED {
-                    description "The resource is unable to meet the SLA of the user of the resource. If no (explicit) SLA is defined the resource is disabled if it is totally inoperable and unable to provide service to the user.";
-                }
-                enum ENABLED {
-                    description "The resource is partially or fully operable and available for use";
-                }
-            }
-            description "The possible values of the operationalState.";
-        }
-        typedef port-direction {
-            type enumeration {
-                enum BIDIRECTIONAL {
-                    description "The Port has both an INPUT flow and an OUTPUT flow defined.";
-                }
-                enum INPUT {
-                    description "The Port only has definition for a flow into the Forwarding entity (i.e. an ingress flow).";
-                }
-                enum OUTPUT {
-                    description "The Port only has definition for a flow out of the Forwarding entity (i.e. an egress flow).";
-                }
-                enum UNIDENTIFIED_OR_UNKNOWN {
-                    description "Not a normal state. The system is unable to determine the correct value.";
-                }
-            }
-            description "The orientation of flow at the Port of a Forwarding entity";
-        }
-        typedef port-role {
-            type enumeration {
-                enum SYMMETRIC {
-                    description "none";
-                }
-                enum ROOT {
-                    description "none";
-                }
-                enum LEAF {
-                    description "none";
-                }
-                enum TRUNK {
-                    description "none";
-                }
-                enum UNKNOWN {
-                    description "none";
-                }
-            }
-            description "The role of an end in the context of the function of the forwarding entity that it bounds";
-        }
-        typedef termination-direction {
-            type enumeration {
-                enum BIDIRECTIONAL {
-                    description "A Termination with both SINK and SOURCE flows.";
-                }
-                enum SINK {
-                    description "The flow is up the layer stack from the server side to the client side. 
-                        Considering an example of a Termination function within the termination entity, a SINK flow:
-                        - will arrive at at the base of the termination function (the server side) where it is essentially at an INPUT to the termination component
-                        - then will be decoded and deconstructed 
-                        - then relevant parts of the flow will be sent out of the termination function (the client side) where it is essentially at an OUTPUT from the termination component
-                        A SINK termination is one that only supports a SINK flow.
-                        A SINK termiation can be bound to an OUTPUT Port of a Forwarding entity";
-                }
-                enum SOURCE {
-                    description "The flow is down the layer stack from the server side to the client side. 
-                        Considering an example of a Termination function within the termination entity, a SOURCE flow:
-                        - will arrive at at the top of the termination function (the client side) where it is essentially at an INPUT to the termination component
-                        - then will be assembled with various overheads etc and will be coded 
-                        - then coded form of the assembly of flow will be sent out of the termination function (the server side) where it is essentially at an OUTPUT from the termination component
-                        A SOURCE termination is one that only supports a SOURCE flow.
-                        A SOURCE termiation can be bound to an INPUT Port of a Forwarding entity";
-                }
-                enum UNDEFINED_OR_UNKNOWN {
-                    description "Not a normal state. The system is unable to determine the correct value.";
-                }
-            }
-            description "The directionality of a termination entity";
-        }
-        typedef termination-state {
-            type enumeration {
-                enum LP_CAN_NEVER_TERMINATE {
-                    description "A non-flexible case that can never be terminated.";
-                }
-                enum LT_NOT_TERMINATED {
-                    description "A flexible termination that can terminate but is currently not terminated.";
-                }
-                enum TERMINATED_SERVER_TO_CLIENT_FLOW {
-                    description "A flexible termination that is currently terminated for server to client flow only.";
-                }
-                enum TERMINATED_CLIENT_TO_SERVER_FLOW {
-                    description "A flexible termination that is currently terminated for client to server flow only.";
-                }
-                enum TERMINATED_BIDIRECTIONAL {
-                    description "A flexible termination that is currently terminated in both directions of flow.";
-                }
-                enum LT_PERMENANTLY_TERMINATED {
-                    description "A non-flexible termination that is always terminated (in both directions of flow for a bidirectional case and in the one direction of flow for both unidirectional cases).";
-                }
-                enum TERMINATION_STATE_UNKNOWN {
-                    description "There TerminationState cannot be determined.";
-                }
-            }
-            description "Provides support for the range of behaviours and specific states that an LP can take with respect to termination of the signal.
-                Indicates to what degree the LayerTermination is terminated.";
-        }
-        typedef uuid {
-            type string;
-            description "The univeral ID value where the mechanism for generation is defned by some authority not directly referenced in the structure.
-                UUID here uses string representation as defined in RFC 4122.  The canonical representation uses lowercase characters.
-                Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} 
-                Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6";
-        }
-        grouping capacity {
-            container total-size {
-                uses capacity-value;
-                description "Total capacity of the TopologicalEntity in MB/s. In case of bandwidthProfile, this is expected to same as the committedInformationRate.";
-            }
-            container bandwidth-profile {
-                uses bandwidth-profile;
                 description "none";
             }
-            description "Information on capacity of a particular TopologicalEntity.";
-        }
-        grouping bandwidth-profile {
-            leaf bw-profile-type {
-                type bandwidth-profile-type;
+            leaf state {
+                type administrative-state;
                 description "none";
             }
-            container committed-information-rate {
-                uses capacity-value;
-                description "none";
-            }
-            container committed-burst-size {
-                uses capacity-value;
-                description "none";
-            }
-            container peak-information-rate {
-                uses capacity-value;
-                description "none";
-            }
-            container peak-burst-size {
-                uses capacity-value;
-                description "none";
-            }
-            leaf color-aware {
-                type boolean;
-                description "none";
-            }
-            leaf coupling-flag {
-                type boolean;
-                description "none";
-            }
-            description "none";
-        }
-        grouping capacity-value {
-            leaf value {
-                type uint64;
-                description "none";
-            }
-            leaf unit {
-                type capacity-unit;
-                description "none";
-            }
-            description "The Capacity (Bandwidth) values that are applicable for digital layers.";
-        }
-        typedef capacity-unit {
-            type enumeration {
-                enum TB {
-                    description "Indicates that the integer CapacityValue is in TeraBytes";
-                }
-                enum TBPS {
-                    description "Indicates that the integer CapacityValue is in Terabit-per-second";
-                }
-                enum GB {
-                    description "Indicates that the integer CapacityValue is in GigaBytes";
-                }
-                enum GBPS {
-                    description "Indicates that the integer CapacityValue is in Gigabit-per-second";
-                }
-                enum MB {
-                    description "Indicates that the integer CapacityValue is in MegaBytes";
-                }
-                enum MBPS {
-                    description "Indicates that the integer CapacityValue is in Megabit-per-second";
-                }
-                enum KB {
-                    description "Indicates that the integer CapacityValue is in KiloBytes";
-                }
-                enum KBPS {
-                    description "Indicates that the integer CapacityValue is in Kilobit-per-second";
-                }
-                enum GHz {
-                    description "none";
-                }
-                enum MHz {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef bandwidth-profile-type {
-            type enumeration {
-                enum MEF_10.x {
-                    description "none";
-                }
-                enum RFC_2697 {
-                    description "none";
-                }
-                enum RFC_2698 {
-                    description "none";
-                }
-                enum RFC_4115 {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        grouping time-range {
-            leaf end-time {
-                type date-and-time;
-                description "none";
-            }
-            leaf start-time {
-                type date-and-time;
-                description "none";
-            }
-            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 {
-                key 'unit';
-                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
-    **********************/ 
-        rpc get-service-interface-point-details {
-            description "none";
-            input {
-                leaf sip-id-or-name {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                container sip {
-                    uses service-interface-point;
-                    description "none";
-                }
-            }
         }
-        rpc get-service-interface-point-list {
-            description "none";
-            output {
-                list sip {
-                	key 'uuid';
-                    uses service-interface-point;
-                    description "none";
-                }
-            }
-        }
-        rpc update-service-interface-point {
-            description "none";
-            input {
-                leaf sip-id-or-name {
-                    type string;
-                    description "none";
-                }
-                leaf state {
-                    type administrative-state;
-                    description "none";
-                }
-            }
-        }
-
+    }
 }
diff --git a/models/tapi/src/main/yang/tapi-connectivity@2018-10-16.yang b/models/tapi/src/main/yang/tapi-connectivity@2018-10-16.yang
old mode 100644
new mode 100755
index 7f01298..755eb2e
--- a/models/tapi/src/main/yang/tapi-connectivity@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-connectivity@2018-10-16.yang
@@ -35,28 +35,28 @@
             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
+        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" {
@@ -67,16 +67,16 @@
         description "Augments the base TAPI Context with ConnectivityService information";
     }
     augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
-    	container cep-list {
+        container cep-list {
             uses cep-list;
             description "none";
         }
         description "none";
     }
 
-    /*************************
+   /**************************
     * definitions of references
-    *************************/
+    **************************/
     grouping connectivity-service-ref {
         leaf connectivity-service-uuid {
             type leafref {
@@ -86,16 +86,15 @@
         }
         description "none";
     }
-
     grouping connectivity-service-end-point-ref {
-    	uses connectivity-service-ref;
-    	leaf connectivity-service-end-point-local-id {
-	    	type leafref {
-	            path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point/tapi-connectivity:local-id';
-	        }
-	    	description "none";
-    	}
-    	description "none";
+        uses connectivity-service-ref;
+        leaf connectivity-service-end-point-local-id {
+            type leafref {
+                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:node-edge-point-ref;
@@ -107,7 +106,6 @@
         }
         description "none";
     }
-
     grouping connection-ref {
         leaf connection-uuid {
             type leafref {
@@ -117,7 +115,6 @@
         }
         description "none";
     }
-
     grouping switch-control-ref {
         uses connection-ref;
         leaf switch-control-uuid {
@@ -128,9 +125,8 @@
         }
         description "none";
     }
-    
     grouping route-ref {
-    	uses connection-ref;
+        uses connection-ref;
         leaf route-local-id {
             type leafref {
                 path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:route/tapi-connectivity:local-id';
@@ -140,620 +136,619 @@
         description "none";
     }
 
-    /***********************
+   /**************************
     * package object-classes
-    **********************/ 
-        grouping connection {
-            list connection-end-point {
-                uses connection-end-point-ref;
-                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-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;
-                uses route;
-                description "none";
-            }
-            list switch-control {
-                key 'uuid';
-                config false;
-                uses switch-control;
-                description "none";
-            }
-            leaf direction {
-                type tapi-common:forwarding-direction;
-                config false;
-                description "none";
-            }
-            leaf layer-protocol-name {
-                type tapi-common:layer-protocol-name;
-                config false;
-                description "none";
-            }
-            uses tapi-common:resource-spec;
-            uses tapi-common:operational-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.";
-        }
-        grouping connection-end-point {
-            leaf layer-protocol-name {
-                type tapi-common:layer-protocol-name;
-                config false;
-                description "none";
-            }
-            leaf layer-protocol-qualifier {
-                type tapi-common:layer-protocol-qualifier;
-                config false;
-                description "none";
-            }
-            container parent-node-edge-point {
-            	uses tapi-topology:node-edge-point-ref;
-                config false;
-                description "none";
-            }
-            list client-node-edge-point {
-                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";
-            }
-            leaf connection-port-direction {
-                type tapi-common:port-direction;
-                config false;
-                description "The orientation of defined flow at the EndPoint.";
-            }
-            leaf connection-port-role {
-                type tapi-common:port-role;
-                config false;
-                description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";
-            }
-            uses tapi-common:resource-spec;
-            uses tapi-common:operational-state-pac;
-            uses tapi-common:termination-pac;
-            description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers. 
-                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";
-            }
-            leaf service-level {
-                type string;
-                description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";
-            }
-            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";
-            }
-            container coroute-inclusion {
-            	uses connectivity-service-ref;
-                description "none";
-            }
-            list diversity-exclusion {
-            	uses connectivity-service-ref;
-                key 'connectivity-service-uuid';
-                description "none";
-            }
+    **************************/
+    grouping connection {
+        list connection-end-point {
+            uses connection-end-point-ref;
+            key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
+            config false;
+            min-elements 2;
             description "none";
         }
-        grouping connectivity-service {
+        list lower-connection {
+            uses connection-ref;
+            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;
+            uses route;
+            description "none";
+        }
+        list switch-control {
+            key 'uuid';
+            config false;
+            uses switch-control;
+            description "none";
+        }
+        leaf direction {
+            type tapi-common:forwarding-direction;
+            config false;
+            description "none";
+        }
+        leaf layer-protocol-name {
+            type tapi-common:layer-protocol-name;
+            config false;
+            description "none";
+        }
+        uses tapi-common:resource-spec;
+        uses tapi-common:operational-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.";
+    }
+    grouping connection-end-point {
+        leaf layer-protocol-name {
+            type tapi-common:layer-protocol-name;
+            config false;
+            description "none";
+        }
+        leaf layer-protocol-qualifier {
+            type tapi-common:layer-protocol-qualifier;
+            config false;
+            description "none";
+        }
+        container parent-node-edge-point {
+            uses tapi-topology:node-edge-point-ref;
+            config false;
+            description "none";
+        }
+        list client-node-edge-point {
+            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";
+        }
+        leaf connection-port-direction {
+            type tapi-common:port-direction;
+            config false;
+            description "The orientation of defined flow at the EndPoint.";
+        }
+        leaf connection-port-role {
+            type tapi-common:port-role;
+            config false;
+            description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";
+        }
+        uses tapi-common:resource-spec;
+        uses tapi-common:operational-state-pac;
+        uses tapi-common:termination-pac;
+        description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.
+            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";
+        }
+        leaf service-level {
+            type string;
+            description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";
+        }
+        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";
+        }
+        container coroute-inclusion {
+            uses connectivity-service-ref;
+            description "none";
+        }
+        list diversity-exclusion {
+            uses connectivity-service-ref;
+            key 'connectivity-service-uuid';
+            description "none";
+        }
+        description "none";
+    }
+    grouping connectivity-service {
+        list end-point {
+            key 'local-id';
+            min-elements 2;
+            uses connectivity-service-end-point;
+            description "none";
+        }
+        list connection {
+            uses connection-ref;
+            key 'connection-uuid';
+            config false;
+            description "none";
+        }
+        uses tapi-common:service-spec;
+        uses connectivity-constraint;
+        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.";
+    }
+    grouping connectivity-service-end-point {
+        leaf layer-protocol-name {
+            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";
+        }
+        leaf direction {
+            type tapi-common:port-direction;
+            description "The orientation of defined flow at the EndPoint.";
+        }
+        leaf role {
+            type tapi-common:port-role;
+            description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";
+        }
+        leaf protection-role {
+            type protection-role;
+            description "To specify the protection role of this Port when create or update ConnectivityService.";
+        }
+        uses tapi-common:local-class;
+        uses tapi-common:admin-state-pac;
+        description "The association of the FC to LTPs is made via EndPoints.
+            The EndPoint (EP) object class models the access to the FC function.
+            The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.
+            In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC.
+            It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
+            The EP replaces the Protection Unit of a traditional protection model.
+            The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
+    }
+    grouping route {
+        list connection-end-point {
+            uses connection-end-point-ref;
+            key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
+            config false;
+            min-elements 2;
+            description "none";
+        }
+        uses tapi-common:local-class;
+        description "The FC Route (FcRoute) object class models the individual routes of an FC.
+            The route of an FC object is represented by a list of FCs at a lower level.
+            Note that depending on the service supported by an FC, an the FC can have multiple routes.";
+    }
+    grouping connectivity-context {
+        list connectivity-service {
+            key 'uuid';
+            uses connectivity-service;
+            description "none";
+        }
+        list connection {
+            key 'uuid';
+            config false;
+            uses connection;
+            description "none";
+        }
+        description "none";
+    }
+    grouping switch {
+        list selected-connection-end-point {
+            uses connection-end-point-ref;
+            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-uuid route-local-id';
+            min-elements 1;
+            description "none";
+        }
+        leaf selection-control {
+            type selection-control;
+            description "Degree of administrative control applied to the switch selection.";
+        }
+        leaf selection-reason {
+            type selection-reason;
+            config false;
+            description "The reason for the current switch selection.";
+        }
+        leaf switch-direction {
+            type tapi-common:port-direction;
+            description "Indicates whether the switch selects from ingress to the FC or to egress of the FC, or both.";
+        }
+        uses tapi-common:local-class;
+        description "The class models the switched forwarding of traffic (traffic flow) between FcPorts (ConnectionEndPoints) and is present where there is protection functionality in the FC (Connection).
+            If an FC exposes protection (having two or more FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects to represent the alternative flow choices visible at the edge of the FC.
+            The FC switch represents and defines a protection switch structure encapsulated in the FC.
+            Essentially performs one of the functions of the Protection Group in a traditional model. It associates to 2 or more FcPorts each playing the role of a Protection Unit.
+            One or more protection, i.e. standby/backup, FcPorts provide protection for one or more working (i.e. regular/main/preferred) FcPorts where either protection or working can feed one or more protected FcPort.
+            The switch may be used in revertive or non-revertive (symmetric) mode. When in revertive mode it may define a waitToRestore time.
+            It may be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 and 1:1).
+            It may be locked out (prevented from switching), force switched or manual switched.
+            It will indicate switch state and change of state.
+            The switch can be switched away from all sources such that it becomes open and hence two coordinated switches can both feed the same LTP so long as at least one of the two is switched away from all sources (is 'open').
+            The ability for a Switch to be 'high impedance' allows bidirectional ForwardingConstructs to be overlaid on the same bidirectional LTP where the appropriate control is enabled to prevent signal conflict.
+            This ability allows multiple alternate routes to be present that otherwise would be in conflict.";
+    }
+    grouping switch-control {
+        list sub-switch-control {
+            uses switch-control-ref;
+            key 'connection-uuid switch-control-uuid';
+            description "none";
+        }
+        list switch {
+            key 'local-id';
+            uses switch;
+            description "none";
+        }
+        uses tapi-common:resource-spec;
+        uses resilience-constraint;
+        description "Represents the capability to control and coordinate switches, to add/delete/modify FCs and to add/delete/modify LTPs/LPs so as to realize a protection scheme.";
+    }
+    grouping resilience-constraint {
+        container resilience-type {
+            uses tapi-topology:resilience-type;
+            description "none";
+        }
+        leaf restoration-coordinate-type {
+            type coordinate-type;
+            description " The coordination mechanism between multi-layers.";
+        }
+        leaf restore-priority {
+            type uint64;
+            description "none";
+        }
+        leaf reversion-mode {
+            type reversion-mode;
+            description "Indcates whether the protection scheme is revertive or non-revertive.";
+        }
+        leaf wait-to-revert-time {
+            type uint64;
+            default "15";
+            description "If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource.";
+        }
+        leaf hold-off-time {
+            type uint64;
+            description "This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm.";
+        }
+        leaf is-lock-out {
+            type boolean;
+            description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
+                This overrides all other protection control states including forced.
+                If the item is locked out then it cannot be used under any circumstances.
+                Note: Only relevant when part of a protection scheme.";
+        }
+        leaf is-frozen {
+            type boolean;
+            description "Temporarily prevents any switch action to be taken and, as such, freezes the current state.
+                Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored.
+                All administrative controls of any aspect of protection are rejected.";
+        }
+        leaf is-coordinated-switching-both-ends {
+            type boolean;
+            description "Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends.";
+        }
+        leaf max-switch-times {
+            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-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 cep-list {
+        list connection-end-point {
+            key 'uuid';
+            uses connection-end-point;
+            description "none";
+        }
+        description "none";
+    }
+
+   /**************************
+    * package type-definitions
+    **************************/
+    typedef service-type {
+        type enumeration {
+            enum POINT_TO_POINT_CONNECTIVITY {
+                description "none";
+            }
+            enum POINT_TO_MULTIPOINT_CONNECTIVITY {
+                description "none";
+            }
+            enum MULTIPOINT_CONNECTIVITY {
+                description "none";
+            }
+            enum ROOTED_MULTIPOINT_CONNECTIVITY {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    typedef reversion-mode {
+        type enumeration {
+            enum REVERTIVE {
+                description "An FC switched to a lower priority (non-preferred) resource will revert to a higher priority (preferred) resource when that recovers (potentially after some hold-off time).";
+            }
+            enum NON-REVERTIVE {
+                description "An FC switched to a lower priority (non-preferred) resource will not revert to a higher priority (preferred) resource when that recovers.";
+            }
+        }
+        description "The reversion mode associated with protection.";
+    }
+    typedef selection-control {
+        type enumeration {
+            enum LOCK_OUT {
+                description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
+                    This overrides all other protection control states including forced.
+                    If the item is locked out then it cannot be used under any circumstances.
+                    Note: Only relevant when part of a protection scheme.";
+            }
+            enum NORMAL {
+                description "none";
+            }
+            enum MANUAL {
+                description "none";
+            }
+            enum FORCED {
+                description "none";
+            }
+        }
+        description "Possible degrees of administrative control applied to the Route selection.";
+    }
+    typedef selection-reason {
+        type enumeration {
+            enum LOCKOUT {
+                description "none";
+            }
+            enum NORMAL {
+                description "none";
+            }
+            enum MANUAL {
+                description "none";
+            }
+            enum FORCED {
+                description "none";
+            }
+            enum WAIT_TO_REVERT {
+                description "none";
+            }
+            enum SIGNAL_DEGRADE {
+                description "none";
+            }
+            enum SIGNAL_FAIL {
+                description "none";
+            }
+        }
+        description "The cause of the current route selection.";
+    }
+    typedef coordinate-type {
+        type enumeration {
+            enum NO_COORDINATE {
+                description "none";
+            }
+            enum HOLD_OFF_TIME {
+                description "none";
+            }
+            enum WAIT_FOR_NOTIFICATION {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    typedef protection-role {
+        type enumeration {
+            enum WORK {
+                description "none";
+            }
+            enum PROTECT {
+                description "none";
+            }
+            enum PROTECTED {
+                description "none";
+            }
+            enum NA {
+                description "none";
+            }
+            enum WORK_RESTORE {
+                description "none";
+            }
+            enum PROTECT_RESTORE {
+                description "none";
+            }
+        }
+        description "none";
+    }
+
+   /**************************
+    * package interfaces
+    **************************/
+    rpc get-connection-details {
+        description "none";
+        input {
+            leaf connection-id-or-name {
+                type string;
+                description "none";
+            }
+        }
+        output {
+            container connection {
+                uses connection;
+                description "none";
+            }
+        }
+    }
+    rpc get-connectivity-service-list {
+        description "none";
+        output {
+            list service {
+                key 'uuid';
+                uses connectivity-service;
+                description "none";
+            }
+        }
+    }
+    rpc get-connectivity-service-details {
+        description "none";
+        input {
+            leaf service-id-or-name {
+                type string;
+                description "none";
+            }
+        }
+        output {
+            container service {
+                uses connectivity-service;
+                description "none";
+            }
+        }
+    }
+    rpc create-connectivity-service {
+        description "none";
+        input {
             list end-point {
                 key 'local-id';
                 min-elements 2;
                 uses connectivity-service-end-point;
                 description "none";
             }
-            list connection {
-                uses connection-ref;
-                key 'connection-uuid';
-                config false;
+            container connectivity-constraint {
+                uses connectivity-constraint;
                 description "none";
             }
-            uses tapi-common:service-spec;
-            uses connectivity-constraint;
-            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.";
+            container routing-constraint {
+                uses tapi-path-computation:routing-constraint;
+                description "none";
+            }
+            container topology-constraint {
+                uses tapi-path-computation:topology-constraint;
+                description "none";
+            }
+            container resilience-constraint {
+                uses resilience-constraint;
+                description "none";
+            }
+            leaf state {
+                type string;
+                description "none";
+            }
         }
-        grouping connectivity-service-end-point {
-            leaf layer-protocol-name {
-                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";
-            }
-            leaf direction {
-                type tapi-common:port-direction;
-                description "The orientation of defined flow at the EndPoint.";
-            }
-            leaf role {
-                type tapi-common:port-role;
-                description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";
-            }
-            leaf protection-role {
-                type protection-role;
-                description "To specify the protection role of this Port when create or update ConnectivityService.";
-            }
-            uses tapi-common:local-class;
-            uses tapi-common:admin-state-pac;
-            description "The association of the FC to LTPs is made via EndPoints.
-                The EndPoint (EP) object class models the access to the FC function. 
-                The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.  
-                In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC. 
-                It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
-                The EP replaces the Protection Unit of a traditional protection model. 
-                The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
-        }
-        grouping route {
-            list connection-end-point {
-                uses connection-end-point-ref;
-                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
-                config false;
-                min-elements 2;
-                description "none";
-            }
-            uses tapi-common:local-class;
-            description "The FC Route (FcRoute) object class models the individual routes of an FC. 
-                The route of an FC object is represented by a list of FCs at a lower level. 
-                Note that depending on the service supported by an FC, an the FC can have multiple routes.";
-        }
-        grouping connectivity-context {
-            list connectivity-service {
-                key 'uuid';
+        output {
+            container service {
                 uses connectivity-service;
                 description "none";
             }
-            list connection {
-                key 'uuid';
-                config false;
-                uses connection;
-                description "none";
-            }
-            description "none";
         }
-        grouping switch {
-            list selected-connection-end-point {
-                uses connection-end-point-ref;
-                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
-                min-elements 1;
+    }
+    rpc update-connectivity-service {
+        description "none";
+        input {
+            leaf service-id-or-name {
+                type string;
                 description "none";
             }
-            list selected-route {
-                uses route-ref;
-                key 'connection-uuid route-local-id';
-                min-elements 1;
-                description "none";
-            }
-            leaf selection-control {
-                type selection-control;
-                description "Degree of administrative control applied to the switch selection.";
-            }
-            leaf selection-reason {
-                type selection-reason;
-                config false;
-                description "The reason for the current switch selection.";
-            }
-            leaf switch-direction {
-                type tapi-common:port-direction;
-                description "Indicates whether the switch selects from ingress to the FC or to egress of the FC, or both.";
-            }
-            uses tapi-common:local-class;
-            description "The class models the switched forwarding of traffic (traffic flow) between FcPorts (ConnectionEndPoints) and is present where there is protection functionality in the FC (Connection). 
-                If an FC exposes protection (having two or more FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects to represent the alternative flow choices visible at the edge of the FC.
-                The FC switch represents and defines a protection switch structure encapsulated in the FC. 
-                Essentially performs one of the functions of the Protection Group in a traditional model. It associates to 2 or more FcPorts each playing the role of a Protection Unit. 
-                One or more protection, i.e. standby/backup, FcPorts provide protection for one or more working (i.e. regular/main/preferred) FcPorts where either protection or working can feed one or more protected FcPort.
-                The switch may be used in revertive or non-revertive (symmetric) mode. When in revertive mode it may define a waitToRestore time.
-                It may be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 and 1:1).
-                It may be locked out (prevented from switching), force switched or manual switched.
-                It will indicate switch state and change of state.
-                The switch can be switched away from all sources such that it becomes open and hence two coordinated switches can both feed the same LTP so long as at least one of the two is switched away from all sources (is 'open').
-                The ability for a Switch to be 'high impedance' allows bidirectional ForwardingConstructs to be overlaid on the same bidirectional LTP where the appropriate control is enabled to prevent signal conflict.
-                This ability allows multiple alternate routes to be present that otherwise would be in conflict.";
-        }
-        grouping switch-control {
-            list sub-switch-control {
-                uses switch-control-ref;
-                key 'connection-uuid switch-control-uuid';
-                description "none";
-            }
-            list switch {
+            list end-point {
                 key 'local-id';
-                uses switch;
+                uses connectivity-service-end-point;
                 description "none";
             }
-            uses tapi-common:resource-spec;
-            uses resilience-constraint;
-            description "Represents the capability to control and coordinate switches, to add/delete/modify FCs and to add/delete/modify LTPs/LPs so as to realize a protection scheme.";
+            container connectivity-constraint {
+                uses connectivity-constraint;
+                description "none";
+            }
+            container routing-constraint {
+                uses tapi-path-computation:routing-constraint;
+                description "none";
+            }
+            container topology-constraint {
+                uses tapi-path-computation:topology-constraint;
+                description "none";
+            }
+            container resilience-constraint {
+                uses resilience-constraint;
+                description "none";
+            }
+            leaf state {
+                type string;
+                description "none";
+            }
         }
-        grouping resilience-constraint {
-            container resilience-type {
-                uses tapi-topology:resilience-type;
+        output {
+            container service {
+                uses connectivity-service;
                 description "none";
             }
-            leaf restoration-coordinate-type {
-                type coordinate-type;
-                description " The coordination mechanism between multi-layers.";
-            }
-            leaf restore-priority {
-                type uint64;
-                description "none";
-            }
-            leaf reversion-mode {
-                type reversion-mode;
-                description "Indcates whether the protection scheme is revertive or non-revertive.";
-            }
-            leaf wait-to-revert-time {
-                type uint64;
-                default "15";
-                description "If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource.";
-            }
-            leaf hold-off-time {
-                type uint64;
-                description "This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm.";
-            }
-            leaf is-lock-out {
-                type boolean;
-                description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
-                    This overrides all other protection control states including forced.
-                    If the item is locked out then it cannot be used under any circumstances.
-                    Note: Only relevant when part of a protection scheme.";
-            }
-            leaf is-frozen {
-                type boolean;
-                description "Temporarily prevents any switch action to be taken and, as such, freezes the current state. 
-                    Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored.
-                    All administrative controls of any aspect of protection are rejected.";
-            }
-            leaf is-coordinated-switching-both-ends {
-                type boolean;
-                description "Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends.";
-            }
-            leaf max-switch-times {
-                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-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 cep-list {
-            list connection-end-point {
-                key 'uuid';
+    }
+    rpc delete-connectivity-service {
+        description "none";
+        input {
+            leaf service-id-or-name {
+                type string;
+                description "none";
+            }
+        }
+    }
+    rpc get-connection-end-point-details {
+        description "none";
+        input {
+            leaf topology-id-or-name {
+                type string;
+                description "none";
+            }
+            leaf node-id-or-name {
+                type string;
+                description "none";
+            }
+            leaf nep-id-or-name {
+                type string;
+                description "none";
+            }
+            leaf cep-id-or-name {
+                type string;
+                description "none";
+            }
+        }
+        output {
+            container connection-end-point {
                 uses connection-end-point;
                 description "none";
             }
-            description "none";
         }
-
-    /***********************
-    * package type-definitions
-    **********************/ 
-        typedef service-type {
-            type enumeration {
-                enum POINT_TO_POINT_CONNECTIVITY {
-                    description "none";
-                }
-                enum POINT_TO_MULTIPOINT_CONNECTIVITY {
-                    description "none";
-                }
-                enum MULTIPOINT_CONNECTIVITY {
-                    description "none";
-                }
-                enum ROOTED_MULTIPOINT_CONNECTIVITY {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef reversion-mode {
-            type enumeration {
-                enum REVERTIVE {
-                    description "An FC switched to a lower priority (non-preferred) resource will revert to a higher priority (preferred) resource when that recovers (potentially after some hold-off time).";
-                }
-                enum NON-REVERTIVE {
-                    description "An FC switched to a lower priority (non-preferred) resource will not revert to a higher priority (preferred) resource when that recovers.";
-                }
-            }
-            description "The reversion mode associated with protection.";
-        }
-        typedef selection-control {
-            type enumeration {
-                enum LOCK_OUT {
-                    description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
-                        This overrides all other protection control states including forced.
-                        If the item is locked out then it cannot be used under any circumstances.
-                        Note: Only relevant when part of a protection scheme.";
-                }
-                enum NORMAL {
-                    description "none";
-                }
-                enum MANUAL {
-                    description "none";
-                }
-                enum FORCED {
-                    description "none";
-                }
-            }
-            description "Possible degrees of administrative control applied to the Route selection.";
-        }
-        typedef selection-reason {
-            type enumeration {
-                enum LOCKOUT {
-                    description "none";
-                }
-                enum NORMAL {
-                    description "none";
-                }
-                enum MANUAL {
-                    description "none";
-                }
-                enum FORCED {
-                    description "none";
-                }
-                enum WAIT_TO_REVERT {
-                    description "none";
-                }
-                enum SIGNAL_DEGRADE {
-                    description "none";
-                }
-                enum SIGNAL_FAIL {
-                    description "none";
-                }
-            }
-            description "The cause of the current route selection.";
-        }
-        typedef coordinate-type {
-            type enumeration {
-                enum NO_COORDINATE {
-                    description "none";
-                }
-                enum HOLD_OFF_TIME {
-                    description "none";
-                }
-                enum WAIT_FOR_NOTIFICATION {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef protection-role {
-            type enumeration {
-                enum WORK {
-                    description "none";
-                }
-                enum PROTECT {
-                    description "none";
-                }
-                enum PROTECTED {
-                    description "none";
-                }
-                enum NA {
-                    description "none";
-                }
-                enum WORK_RESTORE {
-                    description "none";
-                }
-                enum PROTECT_RESTORE {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-
-    /***********************
-    * package interfaces
-    **********************/ 
-        rpc get-connection-details {
-            description "none";
-            input {
-                leaf connection-id-or-name {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                container connection {
-                    uses connection;
-                    description "none";
-                }
-            }
-        }
-        rpc get-connectivity-service-list {
-            description "none";
-            output {
-                list service {
-                	key 'uuid';
-                    uses connectivity-service;
-                    description "none";
-                }
-            }
-        }
-        rpc get-connectivity-service-details {
-            description "none";
-            input {
-                leaf service-id-or-name {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                container service {
-                    uses connectivity-service;
-                    description "none";
-                }
-            }
-        }
-        rpc create-connectivity-service {
-            description "none";
-            input {
-                list end-point {
-                    key 'local-id';
-                    min-elements 2;
-                    uses connectivity-service-end-point;
-                    description "none";
-                }
-                container connectivity-constraint {
-                    uses connectivity-constraint;
-                    description "none";
-                }
-                container routing-constraint {
-                    uses tapi-path-computation:routing-constraint;
-                    description "none";
-                }
-                container topology-constraint {
-                    uses tapi-path-computation:topology-constraint;
-                    description "none";
-                }
-                container resilience-constraint {
-                    uses resilience-constraint;
-                    description "none";
-                }
-                leaf state {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                container service {
-                    uses connectivity-service;
-                    description "none";
-                }
-            }
-        }
-        rpc update-connectivity-service {
-            description "none";
-            input {
-                leaf service-id-or-name {
-                    type string;
-                    description "none";
-                }
-                list end-point {
-                	key 'local-id';
-                    uses connectivity-service-end-point;
-                    description "none";
-                }
-                container connectivity-constraint {
-                    uses connectivity-constraint;
-                    description "none";
-                }
-                container routing-constraint {
-                    uses tapi-path-computation:routing-constraint;
-                    description "none";
-                }
-                container topology-constraint {
-                    uses tapi-path-computation:topology-constraint;
-                    description "none";
-                }
-                container resilience-constraint {
-                    uses resilience-constraint;
-                    description "none";
-                }
-                leaf state {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                container service {
-                    uses connectivity-service;
-                    description "none";
-                }
-            }
-        }
-        rpc delete-connectivity-service {
-            description "none";
-            input {
-                leaf service-id-or-name {
-                    type string;
-                    description "none";
-                }
-            }
-        }
-        rpc get-connection-end-point-details {
-            description "none";
-            input {
-                leaf topology-id-or-name {
-                    type string;
-                    description "none";
-                }
-                leaf node-id-or-name {
-                    type string;
-                    description "none";
-                }
-                leaf nep-id-or-name {
-                    type string;
-                    description "none";
-                }
-                leaf cep-id-or-name {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                container connection-end-point {
-                    uses connection-end-point;
-                    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
old mode 100644
new mode 100755
index 362ab4e..545f585
--- a/models/tapi/src/main/yang/tapi-dsr@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-dsr@2018-10-16.yang
@@ -25,190 +25,190 @@
             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
+        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>";
     }
-    /***********************
-    * 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";
-        }
 
+   /**************************
+    * 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-10-16.yang b/models/tapi/src/main/yang/tapi-eth@2018-10-16.yang
old mode 100644
new mode 100755
index 7e5e407..383558e
--- a/models/tapi/src/main/yang/tapi-eth@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-eth@2018-10-16.yang
@@ -37,28 +37,28 @@
             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
+        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-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point" {
@@ -299,1599 +299,1599 @@
         }
         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";
-            }
+    **************************/
+    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";
         }
-        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";
-            }
+        container traffic-conditioning {
+            uses traffic-conditioning-pac;
             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 eth-connection-end-point-spec {
+        container ety-term {
+            uses ety-termination-pac;
             description "none";
         }
-        grouping traffic-conditioning-pac {
-            list prio-config-list {
-                key 'queue-id';
-                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 {
-                key 'queue-id';
-                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 {
-                key 'queue-id';
-                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 {
-                key 'queue-id';
-                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";
-            }
+        container eth-term {
+            uses eth-termination-pac;
             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";
-            }
+        container eth-ctp {
+            uses eth-ctp-pac;
             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-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 {
+            key 'queue-id';
+            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 {
+            key 'queue-id';
+            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 {
+            key 'queue-id';
+            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 {
+            key 'queue-id';
+            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";
         }
-        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-mep-spec {
+        container eth-mep-common {
+            uses eth-mep-common;
             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.";
-            }
+        container eth-mep-source-pac {
+            uses eth-mep-source;
             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.";
-            }
+        container eth-mep-sink {
+            uses eth-mep-sink;
             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-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";
         }
-        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";
+        leaf number {
+            type uint64;
+            description "G.8052: This parameter specifies how many LB messages to be sent for the LB_Series process.";
         }
-        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";
+        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.";
         }
-        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";
+        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.";
         }
-        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";
+        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.";
         }
-        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.";
+        leaf cc-priority {
+            type uint64 {
+                range "0..7";
             }
-            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.";
+            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.";
         }
-        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.";
+        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";
         }
-        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.";
+        leaf lck-priority {
+            type uint64 {
+                range "0..7";
             }
-            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.";
+            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.";
         }
-        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.";
+        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.";
         }
-        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 ais-priority {
+            type uint64 {
+                range "0..7";
             }
-            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";
+            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.";
         }
-        grouping eth-link-trace-result-data {
-            list result-list {
-                key 'source-address';
-                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";
+        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";
         }
-        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";
+        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.";
         }
-        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";
+        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.";
         }
-        grouping eth-oam-msg-common-pac {
-            leaf period {
-                type oam-period;
-                description "G.8052: This parameter provides the periodicity of the TST OAM messages.";
+        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";
             }
-            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.";
+            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";
             }
-            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.";
+            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";
             }
-            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'.";
-            }
+            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";
         }
-
-    /***********************
-    * package type-definitions
-    **********************/ 
-        identity ETH_OAM_JOB_TYPE {
-        	base tapi-oam:OAM_JOB_TYPE;
+        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";
         }
-        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 {
+        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";
         }
-        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.";
+        leaf source-address {
+            type mac-address;
+            description "This attribute contains the MAC address of the peer MEP. See G.8013 for details.";
         }
-        typedef scheduling-configuration {
+        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 "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";
+        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.";
         }
-        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";
+        leaf destination-address {
+            type mac-address;
+            description "This attribute contains the MAC address of the peer MEP. See G.8013 for details.";
         }
-        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";
+        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";
         }
-        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";
+        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.";
         }
-        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.";
+        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).";
         }
-        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.";
+        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";
         }
-        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.";
+        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";
         }
-        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.
+        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:
-                The value 10ms is only used in synthetic loss measurements.
-                The value 0 means that the value is not relevant.";
+                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.";
         }
-        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). ";
+        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";
         }
-        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.";
+        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.";
         }
-        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.";
+        leaf source-address {
+            type mac-address;
+            description "This attribute contains the MAC address of the peer MEP. See G.8013 for details.";
         }
-        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.";
+        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";
         }
-        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.";
+        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";
         }
-        typedef eth-oam-job-type {
-            type identityref {
-                base ETH_OAM_JOB_TYPE;
+        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 {
+            key 'source-address';
+            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";
         }
-        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 queue-id {
+            type uint64 {
+                range "1..8";
             }
-            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.";
+            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-10-16.yang b/models/tapi/src/main/yang/tapi-notification@2018-10-16.yang
old mode 100644
new mode 100755
index f79a376..2885abc
--- a/models/tapi/src/main/yang/tapi-notification@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-notification@2018-10-16.yang
@@ -29,28 +29,28 @@
             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
+        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" {
@@ -60,18 +60,461 @@
         }
         description "Augments the base TAPI Context with NotificationService information";
     }
-    /***********************
+
+   /**************************
     * package object-classes
-    **********************/ 
-        grouping notification-subscription-service {
-            list notification {
-                key 'uuid';
-                config false;
-                uses notification;
+    **************************/
+    grouping notification-subscription-service {
+        list notification {
+            key 'uuid';
+            config false;
+            uses notification;
+            description "none";
+        }
+        container notification-channel {
+            uses notification-channel;
+            description "none";
+        }
+        container subscription-filter {
+            uses subscription-filter;
+            description "none";
+        }
+        leaf subscription-state {
+            type subscription-state;
+            description "none";
+        }
+        leaf-list supported-notification-types {
+            type notification-type;
+            config false;
+            min-elements 1;
+            description "none";
+        }
+        leaf-list supported-object-types {
+            type object-type;
+            config false;
+            min-elements 1;
+            description "none";
+        }
+        uses tapi-common:service-spec;
+        description "none";
+    }
+    grouping subscription-filter {
+        leaf-list requested-notification-types {
+            type notification-type;
+            config false;
+            description "none";
+        }
+        leaf-list requested-object-types {
+            type object-type;
+            config false;
+            description "none";
+        }
+        leaf-list requested-layer-protocols {
+            type tapi-common:layer-protocol-name;
+            config false;
+            description "none";
+        }
+        leaf-list requested-object-identifier {
+            type tapi-common:uuid;
+            config false;
+            description "none";
+        }
+        leaf include-content {
+            type boolean;
+            config false;
+            description "Indicates whether the published Notification includes content or just the Notification Id (which enables retrieval of the notification at the later stage)";
+        }
+        uses tapi-common:local-class;
+        description "none";
+    }
+    notification notification {
+        uses notification;
+        description "none";
+    }
+    grouping notification {
+        leaf notification-type {
+            type notification-type;
+            description "none";
+        }
+        leaf target-object-type {
+            type object-type;
+            description "none";
+        }
+        leaf target-object-identifier {
+            type tapi-common:uuid;
+            description "none";
+        }
+        list target-object-name {
+            key 'value-name';
+            min-elements 1;
+            uses tapi-common:name-and-value;
+            description "none";
+        }
+        leaf event-time-stamp {
+            type tapi-common:date-and-time;
+            description "none";
+        }
+        leaf sequence-number {
+            type uint64;
+            config false;
+            description "A monotonous increasing sequence number associated with the notification.
+                The exact semantics of how this sequence number is assigned (per channel or subscription or source or system) is left undefined.";
+        }
+        leaf source-indicator {
+            type source-indicator;
+            description "none";
+        }
+        leaf layer-protocol-name {
+            type tapi-common:layer-protocol-name;
+            description "none";
+        }
+        list changed-attributes {
+            key 'value-name';
+            uses name-and-value-change;
+            description "none";
+        }
+        list additional-info {
+            key 'value-name';
+            uses tapi-common:name-and-value;
+            description "none";
+        }
+        leaf additional-text {
+            type string;
+            description "none";
+        }
+        container tca-info {
+            uses tca-info;
+            description "none";
+        }
+        container alarm-info {
+            uses alarm-info;
+            description "none";
+        }
+        uses tapi-common:resource-spec;
+        description "none";
+    }
+    grouping notification-channel {
+        leaf stream-address {
+            type string;
+            config false;
+            description "The address/location/URI of the channel/stream to which the subscribed notifications are published.
+                This specifics of this is typically dependent on the implementation protocol & mechanism and hence is typed as a string.";
+        }
+        leaf next-sequence-no {
+            type uint64;
+            config false;
+            description "The sequence number of the next notification that will be published on the channel";
+        }
+        uses tapi-common:local-class;
+        description "none";
+    }
+    grouping notification-context {
+        list notif-subscription {
+            key 'uuid';
+            uses notification-subscription-service;
+            description "none";
+        }
+        list notification {
+            key 'uuid';
+            config false;
+            uses notification;
+            description "none";
+        }
+        description "none";
+    }
+    grouping alarm-info {
+        leaf is-transient {
+            type boolean;
+            config false;
+            description "none";
+        }
+        leaf perceived-severity {
+            type perceived-severity-type;
+            config false;
+            description "none";
+        }
+        leaf probable-cause {
+            type string;
+            config false;
+            description "none";
+        }
+        leaf service-affecting {
+            type service-affecting;
+            description "none";
+        }
+        description "none";
+    }
+    grouping tca-info {
+        leaf is-transient {
+            type boolean;
+            config false;
+            description "none";
+        }
+        leaf threshold-crossing {
+            type threshold-crossing-type;
+            description "none";
+        }
+        leaf threshold-parameter {
+            type string;
+            config false;
+            description "none";
+        }
+        leaf threshold-value {
+            type uint64;
+            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";
+    }
+
+   /**************************
+    * package type-definitions
+    **************************/
+    grouping name-and-value-change {
+        leaf value-name {
+            type string;
+            description "The name of the value. The value need not have a name.";
+        }
+        leaf old-value {
+            type string;
+            description "The value";
+        }
+        leaf new-value {
+            type string;
+            description "The value";
+        }
+        description "A scoped name-value triple, including old value and new value";
+    }
+    typedef notification-type {
+        type enumeration {
+            enum OBJECT_CREATION {
+                description "Not a normal state. The system is unable to determine the correct value.";
+            }
+            enum OBJECT_DELETION {
                 description "none";
             }
-            container notification-channel {
-                uses notification-channel;
+            enum ATTRIBUTE_VALUE_CHANGE {
+                description "none";
+            }
+            enum ALARM_EVENT {
+                description "none";
+            }
+            enum THRESHOLD_CROSSING_ALERT {
+                description "none";
+            }
+        }
+        description "List of supported Notifications types.";
+    }
+    typedef object-type {
+        type enumeration {
+            enum TOPOLOGY {
+                description "none";
+            }
+            enum NODE {
+                description "none";
+            }
+            enum LINK {
+                description "none";
+            }
+            enum CONNECTION {
+                description "none";
+            }
+            enum PATH {
+                description "none";
+            }
+            enum CONNECTIVITY_SERVICE {
+                description "none";
+            }
+            enum VIRTUAL_NETWORK_SERVICE {
+                description "none";
+            }
+            enum PATH_COMPUTATION_SERVICE {
+                description "none";
+            }
+            enum NODE_EDGE_POINT {
+                description "none";
+            }
+            enum SERVICE_INTERFACE_POINT {
+                description "none";
+            }
+            enum CONNECTION_END_POINT {
+                description "none";
+            }
+            enum MAINTENANCE_ENTITY_GROUP {
+                description "none";
+            }
+            enum MAINTENANCE_ENTITY {
+                description "none";
+            }
+            enum MEG_END_POINT {
+                description "none";
+            }
+            enum MEG_INTERMEDIATE_POINT {
+                description "none";
+            }
+            enum SWITCH_CONTROL {
+                description "none";
+            }
+            enum SWITCH {
+                description "none";
+            }
+            enum ROUTE {
+                description "none";
+            }
+            enum NODE_RULE_GROUP {
+                description "none";
+            }
+            enum INTER_RULE_GROUP {
+                description "none";
+            }
+            enum RULE {
+                description "none";
+            }
+            enum OAM_JOB {
+                description "none";
+            }
+        }
+        description "The list of TAPI Global Object Class types on which Notifications can be raised.";
+    }
+    typedef source-indicator {
+        type enumeration {
+            enum RESOURCE_OPERATION {
+                description "none";
+            }
+            enum MANAGEMENT_OPERATION {
+                description "none";
+            }
+            enum UNKNOWN {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    typedef subscription-state {
+        type enumeration {
+            enum SUSPENDED {
+                description "none";
+            }
+            enum ACTIVE {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    typedef perceived-severity-type {
+        type enumeration {
+            enum CRITICAL {
+                description "none";
+            }
+            enum MAJOR {
+                description "none";
+            }
+            enum MINOR {
+                description "none";
+            }
+            enum WARNING {
+                description "none";
+            }
+            enum CLEARED {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    typedef threshold-crossing-type {
+        type enumeration {
+            enum THRESHOLD_ABOVE {
+                description "none";
+            }
+            enum THRESHOLD_BELOW {
+                description "none";
+            }
+            enum CLEARED {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    typedef service-affecting {
+        type enumeration {
+            enum SERVICE_AFFECTING {
+                description "none";
+            }
+            enum NOT_SERVICE_AFFECTING {
+                description "none";
+            }
+            enum UNKNOWN {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    typedef perceived-tca-severity {
+        type enumeration {
+            enum WARNING {
+                description "none";
+            }
+            enum CLEAR {
+                description "none";
+            }
+        }
+        description "none";
+    }
+
+   /**************************
+    * package interfaces
+    **************************/
+    rpc get-supported-notification-types {
+        description "none";
+        output {
+            leaf-list supported-notification-types {
+                type notification-type;
+                min-elements 1;
+                description "none";
+            }
+            leaf-list supported-object-types {
+                type object-type;
+                min-elements 1;
+                description "none";
+            }
+        }
+    }
+    rpc create-notification-subscription-service {
+        description "none";
+        input {
+            container subscription-filter {
+                uses subscription-filter;
+                description "none";
+            }
+            leaf subscription-state {
+                type subscription-state;
+                description "none";
+            }
+        }
+        output {
+            container subscription-service {
+                uses notification-subscription-service;
+                description "none";
+            }
+        }
+    }
+    rpc update-notification-subscription-service {
+        description "none";
+        input {
+            leaf subscription-id-or-name {
+                type string;
                 description "none";
             }
             container subscription-filter {
@@ -82,515 +525,72 @@
                 type subscription-state;
                 description "none";
             }
-            leaf-list supported-notification-types {
-                type notification-type;
-                config false;
-                min-elements 1;
-                description "none";
-            }
-            leaf-list supported-object-types {
-                type object-type;
-                config false;
-                min-elements 1;
-                description "none";
-            }
-            uses tapi-common:service-spec;
-            description "none";
         }
-        grouping subscription-filter {
-            leaf-list requested-notification-types {
-                type notification-type;
-                config false;
+        output {
+            container subscription-service {
+                uses notification-subscription-service;
                 description "none";
             }
-            leaf-list requested-object-types {
-                type object-type;
-                config false;
-                description "none";
-            }
-            leaf-list requested-layer-protocols {
-                type tapi-common:layer-protocol-name;
-                config false;
-                description "none";
-            }
-            leaf-list requested-object-identifier {
-                type tapi-common:uuid;
-                config false;
-                description "none";
-            }
-            leaf include-content {
-                type boolean;
-                config false;
-                description "Indicates whether the published Notification includes content or just the Notification Id (which enables retrieval of the notification at the later stage)";
-            }
-            uses tapi-common:local-class;
-            description "none";
         }
-        notification notification {
-            uses notification;
-            description "none";
-        }
-        grouping notification {
-            leaf notification-type {
-                type notification-type;
-                description "none";
-            }
-            leaf target-object-type {
-                type object-type;
-                description "none";
-            }
-            leaf target-object-identifier {
-                type tapi-common:uuid;
-                description "none";
-            }
-            list target-object-name {
-                key 'value-name';
-                min-elements 1;
-                uses tapi-common:name-and-value;
-                description "none";
-            }
-            leaf event-time-stamp {
-                type tapi-common:date-and-time;
-                description "none";
-            }
-            leaf sequence-number {
-                type uint64;
-                config false;
-                description "A monotonous increasing sequence number associated with the notification.
-                    The exact semantics of how this sequence number is assigned (per channel or subscription or source or system) is left undefined.";
-            }
-            leaf source-indicator {
-                type source-indicator;
-                description "none";
-            }
-            leaf layer-protocol-name {
-                type tapi-common:layer-protocol-name;
-                description "none";
-            }
-            list changed-attributes {
-                key 'value-name';
-                uses name-and-value-change;
-                description "none";
-            }
-            list additional-info {
-                key 'value-name';
-                uses tapi-common:name-and-value;
-                description "none";
-            }
-            leaf additional-text {
+    }
+    rpc delete-notification-subscription-service {
+        description "none";
+        input {
+            leaf subscription-id-or-name {
                 type string;
                 description "none";
             }
-            container tca-info {
-                uses tca-info;
-                description "none";
-            }
-            container alarm-info {
-                uses alarm-info;
-                description "none";
-            }
-            uses tapi-common:resource-spec;
-            description "none";
         }
-        grouping notification-channel {
-            leaf stream-address {
+        output {
+            container subscription-service {
+                uses notification-subscription-service;
+                description "none";
+            }
+        }
+    }
+    rpc get-notification-subscription-service-details {
+        description "none";
+        input {
+            leaf subscription-id-or-name {
                 type string;
-                config false;
-                description "The address/location/URI of the channel/stream to which the subscribed notifications are published.
-                    This specifics of this is typically dependent on the implementation protocol & mechanism and hence is typed as a string.";
+                description "none";
             }
-            leaf next-sequence-no {
-                type uint64;
-                config false;
-                description "The sequence number of the next notification that will be published on the channel";
-            }
-            uses tapi-common:local-class;
-            description "none";
         }
-        grouping notification-context {
-            list notif-subscription {
+        output {
+            container subscription-service {
+                uses notification-subscription-service;
+                description "none";
+            }
+        }
+    }
+    rpc get-notification-subscription-service-list {
+        description "none";
+        output {
+            list subscription-service {
                 key 'uuid';
                 uses notification-subscription-service;
                 description "none";
             }
+        }
+    }
+    rpc get-notification-list {
+        description "none";
+        input {
+            leaf subscription-id-or-name {
+                type string;
+                description "none";
+            }
+            leaf time-period {
+                type string;
+                description "none";
+            }
+        }
+        output {
             list notification {
                 key 'uuid';
-                config false;
                 uses notification;
                 description "none";
             }
-            description "none";
         }
-        grouping alarm-info {
-            leaf is-transient {
-                type boolean;
-                config false;
-                description "none";
-            }
-            leaf perceived-severity {
-                type perceived-severity-type;
-                config false;
-                description "none";
-            }
-            leaf probable-cause {
-                type string;
-                config false;
-                description "none";
-            }
-            leaf service-affecting {
-                type service-affecting;
-                description "none";
-            }
-            description "none";
-        }
-        grouping tca-info {
-            leaf is-transient {
-                type boolean;
-                config false;
-                description "none";
-            }
-            leaf threshold-crossing {
-                type threshold-crossing-type;
-                description "none";
-            }
-            leaf threshold-parameter {
-                type string;
-                config false;
-                description "none";
-            }
-            leaf threshold-value {
-                type uint64;
-                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";
-        }
-
-    /***********************
-    * package type-definitions
-    **********************/ 
-        grouping name-and-value-change {
-            leaf value-name {
-                type string;
-                description "The name of the value. The value need not have a name.";
-            }
-            leaf old-value {
-                type string;
-                description "The value";
-            }
-            leaf new-value {
-                type string;
-                description "The value";
-            }
-            description "A scoped name-value triple, including old value and new value";
-        }
-        typedef notification-type {
-            type enumeration {
-                enum OBJECT_CREATION {
-                    description "Not a normal state. The system is unable to determine the correct value.";
-                }
-                enum OBJECT_DELETION {
-                    description "none";
-                }
-                enum ATTRIBUTE_VALUE_CHANGE {
-                    description "none";
-                }
-                enum ALARM_EVENT {
-                    description "none";
-                }
-                enum THRESHOLD_CROSSING_ALERT {
-                    description "none";
-                }
-            }
-            description "List of supported Notifications types.";
-        }
-        typedef object-type {
-            type enumeration {
-                enum TOPOLOGY {
-                    description "none";
-                }
-                enum NODE {
-                    description "none";
-                }
-                enum LINK {
-                    description "none";
-                }
-                enum CONNECTION {
-                    description "none";
-                }
-                enum PATH {
-                    description "none";
-                }
-                enum CONNECTIVITY_SERVICE {
-                    description "none";
-                }
-                enum VIRTUAL_NETWORK_SERVICE {
-                    description "none";
-                }
-                enum PATH_COMPUTATION_SERVICE {
-                    description "none";
-                }
-                enum NODE_EDGE_POINT {
-                    description "none";
-                }
-                enum SERVICE_INTERFACE_POINT {
-                    description "none";
-                }
-                enum CONNECTION_END_POINT {
-                    description "none";
-                }
-                enum MAINTENANCE_ENTITY_GROUP {
-                    description "none";
-                }
-                enum MAINTENANCE_ENTITY {
-                    description "none";
-                }
-                enum MEG_END_POINT {
-                    description "none";
-                }
-                enum MEG_INTERMEDIATE_POINT {
-                    description "none";
-                }
-                enum SWITCH_CONTROL {
-                    description "none";
-                }
-                enum SWITCH {
-                    description "none";
-                }
-                enum ROUTE {
-                    description "none";
-                }
-                enum NODE_RULE_GROUP {
-                    description "none";
-                }
-                enum INTER_RULE_GROUP {
-                    description "none";
-                }
-                enum RULE {
-                    description "none";
-                }
-                enum OAM_JOB {
-                    description "none";
-                }
-            }
-            description "The list of TAPI Global Object Class types on which Notifications can be raised.";
-        }
-        typedef source-indicator {
-            type enumeration {
-                enum RESOURCE_OPERATION {
-                    description "none";
-                }
-                enum MANAGEMENT_OPERATION {
-                    description "none";
-                }
-                enum UNKNOWN {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef subscription-state {
-            type enumeration {
-                enum SUSPENDED {
-                    description "none";
-                }
-                enum ACTIVE {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef perceived-severity-type {
-            type enumeration {
-                enum CRITICAL {
-                    description "none";
-                }
-                enum MAJOR {
-                    description "none";
-                }
-                enum MINOR {
-                    description "none";
-                }
-                enum WARNING {
-                    description "none";
-                }
-                enum CLEARED {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef threshold-crossing-type {
-            type enumeration {
-                enum THRESHOLD_ABOVE {
-                    description "none";
-                }
-                enum THRESHOLD_BELOW {
-                    description "none";
-                }
-                enum CLEARED {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef service-affecting {
-            type enumeration {
-                enum SERVICE_AFFECTING {
-                    description "none";
-                }
-                enum NOT_SERVICE_AFFECTING {
-                    description "none";
-                }
-                enum UNKNOWN {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef perceived-tca-severity {
-            type enumeration {
-                enum WARNING {
-                    description "none";
-                }
-                enum CLEAR {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-
-    /***********************
-    * package interfaces
-    **********************/ 
-        rpc get-supported-notification-types {
-            description "none";
-            output {
-                leaf-list supported-notification-types {
-                    type notification-type;
-                    min-elements 1;
-                    description "none";
-                }
-                leaf-list supported-object-types {
-                    type object-type;
-                    min-elements 1;
-                    description "none";
-                }
-            }
-        }
-        rpc create-notification-subscription-service {
-            description "none";
-            input {
-                container subscription-filter {
-                    uses subscription-filter;
-                    description "none";
-                }
-                leaf subscription-state {
-                    type subscription-state;
-                    description "none";
-                }
-            }
-            output {
-                container subscription-service {
-                    uses notification-subscription-service;
-                    description "none";
-                }
-            }
-        }
-        rpc update-notification-subscription-service {
-            description "none";
-            input {
-                leaf subscription-id-or-name {
-                    type string;
-                    description "none";
-                }
-                container subscription-filter {
-                    uses subscription-filter;
-                    description "none";
-                }
-                leaf subscription-state {
-                    type subscription-state;
-                    description "none";
-                }
-            }
-            output {
-                container subscription-service {
-                    uses notification-subscription-service;
-                    description "none";
-                }
-            }
-        }
-        rpc delete-notification-subscription-service {
-            description "none";
-            input {
-                leaf subscription-id-or-name {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                container subscription-service {
-                    uses notification-subscription-service;
-                    description "none";
-                }
-            }
-        }
-        rpc get-notification-subscription-service-details {
-            description "none";
-            input {
-                leaf subscription-id-or-name {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                container subscription-service {
-                    uses notification-subscription-service;
-                    description "none";
-                }
-            }
-        }
-        rpc get-notification-subscription-service-list {
-            description "none";
-            output {
-                list subscription-service {
-                	key 'uuid';
-                    uses notification-subscription-service;
-                    description "none";
-                }
-            }
-        }
-        rpc get-notification-list {
-            description "none";
-            input {
-                leaf subscription-id-or-name {
-                    type string;
-                    description "none";
-                }
-                leaf time-period {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                list notification {
-                	key 'uuid';
-                    uses notification;
-                    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
old mode 100644
new mode 100755
index 467779e..143b790
--- a/models/tapi/src/main/yang/tapi-oam@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-oam@2018-10-16.yang
@@ -35,28 +35,28 @@
             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
+        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" {
@@ -67,16 +67,16 @@
         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 {
+        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 {
@@ -86,18 +86,16 @@
         }
         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";
+        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 {
@@ -107,40 +105,36 @@
         }
         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";
+        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";
+        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";
+        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 {
@@ -150,29 +144,26 @@
         }
         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";
+        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";
+        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 {
@@ -182,649 +173,646 @@
         }
         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";
+        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";
+        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;
+    **************************/
+    grouping mep {
+        leaf layer-protocol-name {
+            type tapi-common:layer-protocol-name;
+            config false;
             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;
+        leaf direction {
+            type tapi-common:termination-direction;
+            config false;
             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;
+        leaf mep-identifier {
+            type string;
+            config false;
             description "none";
         }
-        grouping mip {
-            leaf layer-protocol-name {
-                type tapi-common:layer-protocol-name;
-                config false;
-                description "none";
-            }
-            uses tapi-common:local-class;
+        leaf-list peer-mep-identifier {
+            type string;
+            config false;
+            min-elements 1;
             description "none";
         }
-        grouping oam-service {
+        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 {
                 key 'local-id';
                 min-elements 2;
                 uses oam-service-end-point;
                 description "none";
             }
-            container meg {
-                uses meg-ref;
-                config false;
+            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 {
+                key 'local-id';
+                min-elements 2;
+                uses oam-service-end-point;
                 description "none";
             }
             container oam-profile {
-                uses oam-profile-ref;
+                uses oam-profile;
                 description "none";
             }
-            uses tapi-common:service-spec;
-            uses tapi-common:admin-state-pac;
-            uses oam-constraint;
-            description "none";
+            leaf state {
+                type string;
+                description "none";
+            }
+            leaf schedule {
+                type string;
+                description "none";
+            }
         }
-        grouping oam-context {
-            list oam-service {
+        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 {
                 key 'uuid';
                 uses oam-service;
                 description "none";
             }
-            list meg {
-                key 'uuid';
-                config false;
+        }
+    }
+    rpc get-meg {
+        description "none";
+        input {
+            leaf service-id {
+                type string;
+                description "none";
+            }
+        }
+        output {
+            container meg {
                 uses meg;
                 description "none";
             }
-            list oam-job {
-                key 'uuid';
-                uses oam-job;
+        }
+    }
+    rpc update-oam-service {
+        description "none";
+        input {
+            leaf service-id {
+                type string;
                 description "none";
             }
-            list oam-profile {
-                key 'uuid';
+            list end-point {
+                key 'local-id';
+                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";
             }
-            description "none";
+            leaf state {
+                type string;
+                description "none";
+            }
+            leaf schedule {
+                type string;
+                description "none";
+            }
         }
-        grouping oam-service-end-point {
-            container service-interface-point {
-                uses tapi-common:service-interface-point-ref;
+        output {
+            container oam-job {
+                uses oam-job;
                 description "none";
             }
-            container connectivity-service-end-point {
-                uses tapi-connectivity:connectivity-service-end-point-ref;
+        }
+    }
+    rpc create-oam-service-end-point {
+        description "none";
+        input {
+            leaf service-id {
+                type string;
                 description "none";
             }
-            container mep {
-                uses mep-ref;
-                config false;
+            leaf sip-id {
+                type string;
                 description "none";
             }
-            container mip {
-                uses mip-ref;
-                config false;
+            leaf c-sep-id {
+                type string;
                 description "none";
             }
-            leaf layer-protocol-name {
-                type tapi-common:layer-protocol-name;
+            leaf layer {
+                type string;
                 description "none";
             }
             leaf direction {
-                type tapi-common:port-direction;
+                type string;
+                description "none";
+            }
+            leaf state {
+                type string;
                 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.
-                    ";
+                description "none";
             }
             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';
+        }
+        output {
+            container end-point {
+                uses oam-service-end-point;
                 description "none";
             }
-            description "none";
         }
-        grouping oam-constraint {
-            leaf layer-protocol-name {
-                type tapi-common:layer-protocol-name;
+    }
+    rpc delete-oam-service-end-point {
+        description "none";
+        input {
+            leaf service-id {
+                type string;
                 description "none";
             }
-            leaf direction {
-                type tapi-common:forwarding-direction;
+            leaf o-sep-id {
+                type string;
                 description "none";
             }
-            leaf meg-level {
-                type uint64;
+        }
+    }
+    rpc update-oam-service-end-point {
+        description "none";
+        input {
+            leaf service-id {
+                type string;
                 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;
+            leaf o-sep-id {
+                type string;
                 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;
+            leaf state {
+                type string;
                 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;
+        output {
+            container end-point {
+                uses oam-service-end-point;
                 description "none";
             }
-            leaf period-end-time {
-                type tapi-common:date-and-time;
+        }
+    }
+    rpc get-oam-service-end-point {
+        description "none";
+        input {
+            leaf service-id {
+                type string;
                 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;
+            leaf o-sep-id {
+                type string;
                 description "none";
             }
-            list pm-bin-data {
-                key 'local-id';
-                min-elements 1;
-                uses pm-bin-data;
+        }
+        output {
+            container end-point {
+                uses oam-service-end-point;
                 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 {
-                	key 'local-id';
-                    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 {
-                	key 'local-id';
-                    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 {
-                	key 'uuid';
-                    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 {
-                	key 'local-id';
-                    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-10-16.yang b/models/tapi/src/main/yang/tapi-odu@2018-10-16.yang
old mode 100644
new mode 100755
index 68d5dea..d927fdd
--- a/models/tapi/src/main/yang/tapi-odu@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-odu@2018-10-16.yang
@@ -41,28 +41,28 @@
             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
+        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-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
@@ -93,617 +93,617 @@
         }
         description "none";
     }
-    /***********************
+
+   /**************************
     * package object-classes
-    **********************/ 
-        grouping odu-termination-and-client-adaptation-pac {
-            leaf opu-tributary-slot-size {
-                type odu-slot-size;
-                config false;
-                description "This attribute is applicable for ODU2 and ODU3 CTP only. It indicates the slot size of the ODU CTP.";
-            }
-            leaf auto-payload-type {
-                type boolean;
-                config false;
-                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 tapi-dsr:digital-signal-type;
-                config false;
-                description "This attribute configures the type of the client CTP of the server ODU TTP.";
-            }
-            leaf configured-mapping-type {
-                type mapping-type;
-                config false;
-                description "This attributes indicates the configured mapping type.";
-            }
-            container accepted-payload-type {
-                config false;
-                uses odu-payload-type;
-                description "This attribute is applicable when the ODU CTP object instance represents a lower order ODU CTP Sink at the client layer of the ODUP/ODU[i]j or ODUP/ODUj-21 adaptation function. 
-                    This attribute is a 2-digit Hex code that indicates the new accepted payload type.
-                    Valid values are defined in Table 15-8 of ITU-T Recommendation G.709 with one additional value UN_INTERPRETABLE.";
-            }
-            description "This Pac contains the attributes associated with the client adaptation function of the server layer TTP
-                It is present only if the CEP contains a TTP";
+    **************************/
+    grouping odu-termination-and-client-adaptation-pac {
+        leaf opu-tributary-slot-size {
+            type odu-slot-size;
+            config false;
+            description "This attribute is applicable for ODU2 and ODU3 CTP only. It indicates the slot size of the ODU CTP.";
         }
-        grouping odu-connection-end-point-spec {
-            container odu-common {
-                uses odu-common-pac;
-                description "none";
-            }
-            container odu-term-and-adapter {
-                config false;
-                uses odu-termination-and-client-adaptation-pac;
-                description "none";
-            }
-            container odu-ctp {
-                config false;
-                uses odu-ctp-pac;
-                description "none";
-            }
-            container odu-protection {
-                config false;
-                uses odu-protection-pac;
-                description "none";
-            }
+        leaf auto-payload-type {
+            type boolean;
+            config false;
+            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 tapi-dsr:digital-signal-type;
+            config false;
+            description "This attribute configures the type of the client CTP of the server ODU TTP.";
+        }
+        leaf configured-mapping-type {
+            type mapping-type;
+            config false;
+            description "This attributes indicates the configured mapping type.";
+        }
+        container accepted-payload-type {
+            config false;
+            uses odu-payload-type;
+            description "This attribute is applicable when the ODU CTP object instance represents a lower order ODU CTP Sink at the client layer of the ODUP/ODU[i]j or ODUP/ODUj-21 adaptation function.
+                This attribute is a 2-digit Hex code that indicates the new accepted payload type.
+                Valid values are defined in Table 15-8 of ITU-T Recommendation G.709 with one additional value UN_INTERPRETABLE.";
+        }
+        description "This Pac contains the attributes associated with the client adaptation function of the server layer TTP
+            It is present only if the CEP contains a TTP";
+    }
+    grouping odu-connection-end-point-spec {
+        container odu-common {
+            uses odu-common-pac;
             description "none";
         }
-        grouping odu-pool-pac {
-            leaf client-capacity {
-                type uint64;
-                description "none";
-            }
-            leaf max-client-instances {
-                type uint64;
-                config false;
-                description "none";
-            }
-            leaf max-client-size {
-                type uint64;
-                config false;
-                description "none";
-            }
+        container odu-term-and-adapter {
+            config false;
+            uses odu-termination-and-client-adaptation-pac;
             description "none";
         }
-        grouping odu-node-edge-point-spec {
-            container odu-pool {
-                config false;
-                uses odu-pool-pac;
-                description "none";
-            }
+        container odu-ctp {
+            config false;
+            uses odu-ctp-pac;
             description "none";
         }
-        grouping odu-ctp-pac {
-            leaf-list tributary-slot-list {
-                type uint64;
-                config false;
-                description "This attribute contains a set of distinct (i.e. unique) integers (e.g. 2, 3, 5, 9, 15 representing the tributary slots TS2, TS3, TS5, TS9 and TS15) which represents the resources occupied by the Low Order ODU Link Connection (e.g. carrying an ODUflex with a bit rate of 6.25G). 
-                    This attribute applies when the LO ODU_ ConnectionTerminationPoint connects with an HO ODU_TrailTerminationPoint object. 
-                    It will not apply if this ODU_ ConnectionTerminationPoint object directly connects to an OTU_TrailTerminationPoint object (i.e. OTU has no trib slots). 
-                    The upper bound of the integer allowed in this set is a function of the HO-ODU server layer to which the ODU connection has been mapped (adapted). 
-                    Thus, for example, M=8/32/80 for ODU2/ODU3/ODU4 server layers (respectively). Note that the value of this attribute can be changed only in the case of ODUflex and has to be through specific operations (i.e. not be changing the attribute tributarySlotList directly).";
-            }
-            leaf tributary-port-number {
-                type uint64;
-                config false;
-                description "This attribute identifies the tributary port number that is associated with the ODU CTP.
-                    range of type : The value range depends on the size of the Tributary Port Number (TPN) field used which depends on th server-layer ODU or OTU.
-                    In case of ODUk mapping into OTUk, there is no TPN field, so the tributaryPortNumber shall be zero.
-                    In case of LO ODUj mapping over ODU1, ODU2 or ODU3, the TPN is encoded in a 6-bit field so the value range is 0-63. See clause 14.4.1/G.709-2016.
-                    In case of LO ODUj mapping over ODU4, the TPN is encoded in a 7-bit field so the value range is 0-127. See clause 14.4.1.4/G.709-2016.
-                    In case of ODUk mapping over ODUCn, the TPN is encoded in a 14-bit field so the value range is 0-16383. See clause 20.4.1.1/G.709-2016.
-                    ";
-            }
-            leaf accepted-msi {
-                type string;
-                config false;
-                description "This attribute is applicable when the ODU CTP object instance represents a lower order ODU1 or ODU2 CTP Sink at the client layer of the ODU3P/ODU12 adaptation function or represents a lower order ODUj CTP Sink at the client layer of the ODUP/ODUj-21 adaptation function. This attribute is a 1-byte field that represents the accepted multiplex structure of the adaptation function. ";
-            }
-            description "This Pac contains the attributes associated with the CTP
-                It is present only if the CEP contains a CTP";
-        }
-        grouping odu-mep-spec {
-            container odu-mep {
-                uses odu-mep-pac;
-                description "none";
-            }
-            container odu-ncm {
-                config false;
-                uses odu-ncm-pac;
-                description "none";
-            }
-            container odu-tcm {
-                config false;
-                uses odu-tcm-mep-pac;
-                description "none";
-            }
-            container odu-defect {
-                uses odu-defect-pac;
-                description "none";
-            }
-            container odu-pm {
-                uses odu-pm-pac;
-                description "none";
-            }
+        container odu-protection {
+            config false;
+            uses odu-protection-pac;
             description "none";
         }
-        grouping odu-protection-pac {
-            leaf aps-enable {
-                type boolean;
-                default "true";
-                description "This attribute is for enabling/disabling the automatic protection switching (APS) capability at the transport adaptation function that is represented by the ODU_ConnectionTerminationPoint object class. It triggers the MI_APS_EN signal to the transport adaptation function.";
-            }
-            leaf aps-level {
-                type uint64;
-                description "This attribute is for configuring the automatic protection switching (APS) level that should operate at the transport adaptation function that is represented by the ODU_ConnectionTerminationPoint object class. It triggers the MI_APS_LVL signal to the transport adaptation function. The value 0 means path and the values 1 through 6 mean TCM level 1 through 6 respectively.";
-            }
+        description "none";
+    }
+    grouping odu-pool-pac {
+        leaf client-capacity {
+            type uint64;
             description "none";
         }
-        grouping odu-ncm-pac {
-            leaf-list tcm-fields-in-use {
-                type uint64;
-                config false;
-                description "This attribute indicates the used TCM fields of the ODU OH.";
-            }
+        leaf max-client-instances {
+            type uint64;
+            config false;
             description "none";
         }
-        grouping odu-tcm-mep-pac {
-            leaf tcm-extension {
-                type tcm-extension;
-                description "none";
-            }
-            leaf tcm-mode {
-                type tcm-mode;
-                description "This attribute specifies the TCM mode at the entity. Valid values are: Operational, Monitor, and Transparent.";
-            }
-            leaf codirectional {
-                type boolean;
-                config false;
-                description "This attribute specifies the directionality of the ODUT MEP with respect to the associated ODU CEP. The value of TRUE means that the sink part of the ODUT MEP terminates the same signal direction as the sink part of the ODU CEP. The Source part behaves similarly. This attribute is meaningful only on objects instantiated under ODU CEP, and at least one among ODU CEP and the subordinate object is bidirectional.";
-            }
-            leaf ac-status-source {
-                type tcm-status;
-                config false;
-                description "This attribute indicates the status of the accepted TCM. ";
-            }
-            leaf ac-status-sink {
-                type tcm-status;
-                config false;
-                description "This attribute indicates the status of the accepted TCM. ";
-            }
-            leaf admin-state-source {
-                type tapi-common:administrative-state;
-                description "This attribute provides the capability to provision the LOCK signal at the source, which is one of the ODU maintenance signals.  When a Tandem Connection endpoint is set to admin state locked, it will insert the ODU-LCK signal in the source direction.";
-            }
-            leaf admin-state-sink {
-                type tapi-common:administrative-state;
-                description "This attribute provides the capability to provision the LOCK signal at the sink, which is one of the ODU maintenance signals. When a Tandem Connection endpoint is set to admin state locked, it will insert the ODU-LCK signal in the downstream direction.";
-            }
-            uses odu-tcm-mip-pac;
+        leaf max-client-size {
+            type uint64;
+            config false;
             description "none";
         }
-        grouping odu-mip-spec {
-            container odu-mip {
-                config false;
-                uses odu-mip-pac;
-                description "none";
-            }
-            container odu-ncm {
-                config false;
-                uses odu-ncm-pac;
-                description "none";
-            }
-            container odu-tcm {
-                config false;
-                uses odu-tcm-mip-pac;
-                description "none";
-            }
-            container odu-pm {
-                uses odu-pm-pac;
-                description "none";
-            }
-            container odu-defect {
-                uses odu-defect-pac;
-                description "none";
-            }
+        description "none";
+    }
+    grouping odu-node-edge-point-spec {
+        container odu-pool {
+            config false;
+            uses odu-pool-pac;
             description "none";
         }
-        grouping odu-mip-pac {
-            leaf acti {
-                type string;
-                config false;
-                description "The Trail Trace Identifier (TTI) information recovered (Accepted) from the TTI overhead position at the sink of a trail.";
-            }
-            leaf ex-dapi {
-                type string;
-                description "The Expected Destination Access Point Identifier (ExDAPI), provisioned by the managing system, to be compared with the TTI accepted at the overhead position of the sink for the purpose of checking the integrity of connectivity.";
-            }
-            leaf ex-sapi {
-                type string;
-                description "The Expected Source Access Point Identifier (ExSAPI), provisioned by the managing system, to be compared with the TTI accepted at the overhead position of the sink for the purpose of checking the integrity of connectivity.
-                    ";
-            }
-            leaf tim-act-disabled {
-                type boolean;
-                default "true";
-                description "This attribute provides the control capability for the managing system to enable or disable the Consequent Action function when detecting Trace Identifier Mismatch (TIM) at the trail termination sink.";
-            }
-            leaf tim-det-mode {
-                type tim-det-mo;
-                description "This attribute indicates the mode of the Trace Identifier Mismatch (TIM) Detection function allowed values: OFF, SAPIonly, DAPIonly, SAPIandDAPI";
-            }
-            leaf deg-m {
-                type uint64;
-                description "This attribute indicates the threshold level for declaring a Degraded Signal defect (dDEG). A dDEG shall be declared if DegM consecutive bad PM Seconds are detected.";
-            }
-            container deg-thr {
-                uses deg-thr;
-                description "This attribute indicates the threshold level for declaring a performance monitoring (PM) Second to be bad. The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.";
-            }
+        description "none";
+    }
+    grouping odu-ctp-pac {
+        leaf-list tributary-slot-list {
+            type uint64;
+            config false;
+            description "This attribute contains a set of distinct (i.e. unique) integers (e.g. 2, 3, 5, 9, 15 representing the tributary slots TS2, TS3, TS5, TS9 and TS15) which represents the resources occupied by the Low Order ODU Link Connection (e.g. carrying an ODUflex with a bit rate of 6.25G).
+                This attribute applies when the LO ODU_ ConnectionTerminationPoint connects with an HO ODU_TrailTerminationPoint object.
+                It will not apply if this ODU_ ConnectionTerminationPoint object directly connects to an OTU_TrailTerminationPoint object (i.e. OTU has no trib slots).
+                The upper bound of the integer allowed in this set is a function of the HO-ODU server layer to which the ODU connection has been mapped (adapted).
+                Thus, for example, M=8/32/80 for ODU2/ODU3/ODU4 server layers (respectively). Note that the value of this attribute can be changed only in the case of ODUflex and has to be through specific operations (i.e. not be changing the attribute tributarySlotList directly).";
+        }
+        leaf tributary-port-number {
+            type uint64;
+            config false;
+            description "This attribute identifies the tributary port number that is associated with the ODU CTP.
+                range of type : The value range depends on the size of the Tributary Port Number (TPN) field used which depends on th server-layer ODU or OTU.
+                In case of ODUk mapping into OTUk, there is no TPN field, so the tributaryPortNumber shall be zero.
+                In case of LO ODUj mapping over ODU1, ODU2 or ODU3, the TPN is encoded in a 6-bit field so the value range is 0-63. See clause 14.4.1/G.709-2016.
+                In case of LO ODUj mapping over ODU4, the TPN is encoded in a 7-bit field so the value range is 0-127. See clause 14.4.1.4/G.709-2016.
+                In case of ODUk mapping over ODUCn, the TPN is encoded in a 14-bit field so the value range is 0-16383. See clause 20.4.1.1/G.709-2016.
+                ";
+        }
+        leaf accepted-msi {
+            type string;
+            config false;
+            description "This attribute is applicable when the ODU CTP object instance represents a lower order ODU1 or ODU2 CTP Sink at the client layer of the ODU3P/ODU12 adaptation function or represents a lower order ODUj CTP Sink at the client layer of the ODUP/ODUj-21 adaptation function. This attribute is a 1-byte field that represents the accepted multiplex structure of the adaptation function. ";
+        }
+        description "This Pac contains the attributes associated with the CTP
+            It is present only if the CEP contains a CTP";
+    }
+    grouping odu-mep-spec {
+        container odu-mep {
+            uses odu-mep-pac;
             description "none";
         }
-        grouping odu-tcm-mip-pac {
-            leaf tcm-field {
-                type uint64;
-                config false;
-                description "This attribute indicates the tandem connection monitoring field of the ODU OH.";
-            }
+        container odu-ncm {
+            config false;
+            uses odu-ncm-pac;
             description "none";
         }
-        grouping odu-mep-pac {
-            leaf dm-source {
-                type boolean;
-                description "This attribute is for configuring the delay measurement process at the trail termination function represented by the subject TTP object class. It models the MI_DM_Source MI signal. If MI_DM_Source is false, then the value of the DMp bit is determined by the RI_DM. If MI_DM_Source is true, then the value of the DMp bit is set to MI_DMValue.";
-            }
-            leaf dm-value {
-                type boolean;
-                description "This attribute is for setting the DMp and DMti bits of the delay measurement process. The value of 'true' sets the DMp and DMti bits to 0 and the value of 'false' to 1.";
-            }
-            leaf txti {
-                type string;
-                description "The Trail Trace Identifier (TTI) information, provisioned by the managing system at the termination source, to be placed in the TTI overhead position of the source of a trail for transmission.
-                    ";
-            }
+        container odu-tcm {
+            config false;
+            uses odu-tcm-mep-pac;
+            description "none";
+        }
+        container odu-defect {
+            uses odu-defect-pac;
+            description "none";
+        }
+        container odu-pm {
+            uses odu-pm-pac;
+            description "none";
+        }
+        description "none";
+    }
+    grouping odu-protection-pac {
+        leaf aps-enable {
+            type boolean;
+            default "true";
+            description "This attribute is for enabling/disabling the automatic protection switching (APS) capability at the transport adaptation function that is represented by the ODU_ConnectionTerminationPoint object class. It triggers the MI_APS_EN signal to the transport adaptation function.";
+        }
+        leaf aps-level {
+            type uint64;
+            description "This attribute is for configuring the automatic protection switching (APS) level that should operate at the transport adaptation function that is represented by the ODU_ConnectionTerminationPoint object class. It triggers the MI_APS_LVL signal to the transport adaptation function. The value 0 means path and the values 1 through 6 mean TCM level 1 through 6 respectively.";
+        }
+        description "none";
+    }
+    grouping odu-ncm-pac {
+        leaf-list tcm-fields-in-use {
+            type uint64;
+            config false;
+            description "This attribute indicates the used TCM fields of the ODU OH.";
+        }
+        description "none";
+    }
+    grouping odu-tcm-mep-pac {
+        leaf tcm-extension {
+            type tcm-extension;
+            description "none";
+        }
+        leaf tcm-mode {
+            type tcm-mode;
+            description "This attribute specifies the TCM mode at the entity. Valid values are: Operational, Monitor, and Transparent.";
+        }
+        leaf codirectional {
+            type boolean;
+            config false;
+            description "This attribute specifies the directionality of the ODUT MEP with respect to the associated ODU CEP. The value of TRUE means that the sink part of the ODUT MEP terminates the same signal direction as the sink part of the ODU CEP. The Source part behaves similarly. This attribute is meaningful only on objects instantiated under ODU CEP, and at least one among ODU CEP and the subordinate object is bidirectional.";
+        }
+        leaf ac-status-source {
+            type tcm-status;
+            config false;
+            description "This attribute indicates the status of the accepted TCM. ";
+        }
+        leaf ac-status-sink {
+            type tcm-status;
+            config false;
+            description "This attribute indicates the status of the accepted TCM. ";
+        }
+        leaf admin-state-source {
+            type tapi-common:administrative-state;
+            description "This attribute provides the capability to provision the LOCK signal at the source, which is one of the ODU maintenance signals.  When a Tandem Connection endpoint is set to admin state locked, it will insert the ODU-LCK signal in the source direction.";
+        }
+        leaf admin-state-sink {
+            type tapi-common:administrative-state;
+            description "This attribute provides the capability to provision the LOCK signal at the sink, which is one of the ODU maintenance signals. When a Tandem Connection endpoint is set to admin state locked, it will insert the ODU-LCK signal in the downstream direction.";
+        }
+        uses odu-tcm-mip-pac;
+        description "none";
+    }
+    grouping odu-mip-spec {
+        container odu-mip {
+            config false;
             uses odu-mip-pac;
             description "none";
         }
-        grouping odu-common-pac {
-            leaf odu-type {
-                type odu-type;
-                config false;
-                description "This attribute specifies the type of the ODU termination point.";
-            }
-            leaf odu-rate {
-                type uint64;
-                config false;
-                description "This attribute indicates the rate of the ODU terminatino point. 
-                    This attribute is Set at create; i.e., once created it cannot be changed directly. 
-                    In case of resizable ODU flex, its value can be changed via HAO (not directly on the attribute). 
-                    ";
-            }
-            leaf odu-rate-tolerance {
-                type uint64;
-                config false;
-                description "This attribute indicates the rate tolerance of the ODU termination point. 
-                    Valid values are real value in the unit of ppm. 
-                    Standardized values are defined in Table 7-2/G.709.";
-            }
+        container odu-ncm {
+            config false;
+            uses odu-ncm-pac;
             description "none";
         }
-        grouping odu-pm-pac {
-            leaf n-bbe {
-                type uint64;
-                description "Near-end Background Block Error";
-            }
-            leaf f-bbe {
-                type uint64;
-                config false;
-                description "Far-end Background Block Error";
-            }
-            leaf n-ses {
-                type uint64;
-                description "Near-end Severely Errored Second";
-            }
-            leaf f-ses {
-                type uint64;
-                description "Far-end Severely Errored Second";
-            }
-            container uas {
-                uses uas-choice;
-                description "UnAvailable Second";
-            }
-            description "Instance of this object class contains the ODUP layer-specific Current Data. This object class is a subclass of the OTN_CurrentData object class.
-                PM data attributes: fBbe, fSes, nBbe, nSes. uas";
+        container odu-tcm {
+            config false;
+            uses odu-tcm-mip-pac;
+            description "none";
         }
-        grouping odu-defect-pac {
-            leaf bdi {
-                type boolean;
-                config false;
-                description "Backward Defect Indication";
-            }
-            leaf deg {
-                type boolean;
-                config false;
-                description "Signal Degraded";
-            }
-            leaf lck {
-                type boolean;
-                config false;
-                description "Locked";
-            }
-            leaf oci {
-                type boolean;
-                config false;
-                description "Open Connection Indicator";
-            }
-            leaf ssf {
-                type boolean;
-                config false;
-                description "Server Signal Failure";
-            }
-            leaf tim {
-                type boolean;
-                config false;
-                description "Trail Trace Identifier Mismatch";
-            }
-            description "The valid list of defects raised on the entity. If the value of any attribute is true, then the corresponding defect is raised.";
+        container odu-pm {
+            uses odu-pm-pac;
+            description "none";
         }
+        container odu-defect {
+            uses odu-defect-pac;
+            description "none";
+        }
+        description "none";
+    }
+    grouping odu-mip-pac {
+        leaf acti {
+            type string;
+            config false;
+            description "The Trail Trace Identifier (TTI) information recovered (Accepted) from the TTI overhead position at the sink of a trail.";
+        }
+        leaf ex-dapi {
+            type string;
+            description "The Expected Destination Access Point Identifier (ExDAPI), provisioned by the managing system, to be compared with the TTI accepted at the overhead position of the sink for the purpose of checking the integrity of connectivity.";
+        }
+        leaf ex-sapi {
+            type string;
+            description "The Expected Source Access Point Identifier (ExSAPI), provisioned by the managing system, to be compared with the TTI accepted at the overhead position of the sink for the purpose of checking the integrity of connectivity.
+                ";
+        }
+        leaf tim-act-disabled {
+            type boolean;
+            default "true";
+            description "This attribute provides the control capability for the managing system to enable or disable the Consequent Action function when detecting Trace Identifier Mismatch (TIM) at the trail termination sink.";
+        }
+        leaf tim-det-mode {
+            type tim-det-mo;
+            description "This attribute indicates the mode of the Trace Identifier Mismatch (TIM) Detection function allowed values: OFF, SAPIonly, DAPIonly, SAPIandDAPI";
+        }
+        leaf deg-m {
+            type uint64;
+            description "This attribute indicates the threshold level for declaring a Degraded Signal defect (dDEG). A dDEG shall be declared if DegM consecutive bad PM Seconds are detected.";
+        }
+        container deg-thr {
+            uses deg-thr;
+            description "This attribute indicates the threshold level for declaring a performance monitoring (PM) Second to be bad. The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.";
+        }
+        description "none";
+    }
+    grouping odu-tcm-mip-pac {
+        leaf tcm-field {
+            type uint64;
+            config false;
+            description "This attribute indicates the tandem connection monitoring field of the ODU OH.";
+        }
+        description "none";
+    }
+    grouping odu-mep-pac {
+        leaf dm-source {
+            type boolean;
+            description "This attribute is for configuring the delay measurement process at the trail termination function represented by the subject TTP object class. It models the MI_DM_Source MI signal. If MI_DM_Source is false, then the value of the DMp bit is determined by the RI_DM. If MI_DM_Source is true, then the value of the DMp bit is set to MI_DMValue.";
+        }
+        leaf dm-value {
+            type boolean;
+            description "This attribute is for setting the DMp and DMti bits of the delay measurement process. The value of 'true' sets the DMp and DMti bits to 0 and the value of 'false' to 1.";
+        }
+        leaf txti {
+            type string;
+            description "The Trail Trace Identifier (TTI) information, provisioned by the managing system at the termination source, to be placed in the TTI overhead position of the source of a trail for transmission.
+                ";
+        }
+        uses odu-mip-pac;
+        description "none";
+    }
+    grouping odu-common-pac {
+        leaf odu-type {
+            type odu-type;
+            config false;
+            description "This attribute specifies the type of the ODU termination point.";
+        }
+        leaf odu-rate {
+            type uint64;
+            config false;
+            description "This attribute indicates the rate of the ODU terminatino point.
+                This attribute is Set at create; i.e., once created it cannot be changed directly.
+                In case of resizable ODU flex, its value can be changed via HAO (not directly on the attribute).
+                ";
+        }
+        leaf odu-rate-tolerance {
+            type uint64;
+            config false;
+            description "This attribute indicates the rate tolerance of the ODU termination point.
+                Valid values are real value in the unit of ppm.
+                Standardized values are defined in Table 7-2/G.709.";
+        }
+        description "none";
+    }
+    grouping odu-pm-pac {
+        leaf n-bbe {
+            type uint64;
+            description "Near-end Background Block Error";
+        }
+        leaf f-bbe {
+            type uint64;
+            config false;
+            description "Far-end Background Block Error";
+        }
+        leaf n-ses {
+            type uint64;
+            description "Near-end Severely Errored Second";
+        }
+        leaf f-ses {
+            type uint64;
+            description "Far-end Severely Errored Second";
+        }
+        container uas {
+            uses uas-choice;
+            description "UnAvailable Second";
+        }
+        description "Instance of this object class contains the ODUP layer-specific Current Data. This object class is a subclass of the OTN_CurrentData object class.
+            PM data attributes: fBbe, fSes, nBbe, nSes. uas";
+    }
+    grouping odu-defect-pac {
+        leaf bdi {
+            type boolean;
+            config false;
+            description "Backward Defect Indication";
+        }
+        leaf deg {
+            type boolean;
+            config false;
+            description "Signal Degraded";
+        }
+        leaf lck {
+            type boolean;
+            config false;
+            description "Locked";
+        }
+        leaf oci {
+            type boolean;
+            config false;
+            description "Open Connection Indicator";
+        }
+        leaf ssf {
+            type boolean;
+            config false;
+            description "Server Signal Failure";
+        }
+        leaf tim {
+            type boolean;
+            config false;
+            description "Trail Trace Identifier Mismatch";
+        }
+        description "The valid list of defects raised on the entity. If the value of any attribute is true, then the corresponding defect is raised.";
+    }
 
-    /***********************
+   /**************************
     * package type-definitions
-    **********************/ 
-        identity ODU_TYPE {
-        	base tapi-common:LAYER_PROTOCOL_QUALIFIER;
-            description "none";
-        }
-        identity ODU_TYPE_ODU0 {
+    **************************/
+    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 identityref {
             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 identityref {
-                base ODU_TYPE;
-            }
-            description "none";
-        }
-        typedef mapping-type {
-            type enumeration {
-                enum AMP {
-                    description "none";
-                }
-                enum BMP {
-                    description "none";
-                }
-                enum GFP-F {
-                    description "none";
-                }
-                enum GMP {
-                    description "none";
-                }
-                enum TTP_GFP_BMP {
-                    description "none";
-                }
-                enum NULL {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef tim-det-mo {
-            type enumeration {
-                enum DAPI {
-                    description "none";
-                }
-                enum SAPI {
-                    description "none";
-                }
-                enum BOTH {
-                    description "none";
-                }
-                enum OFF {
-                    description "none";
-                }
-            }
-            description "List of modes for trace identifier mismatch detection.";
-        }
-        typedef odu-slot-size {
-            type enumeration {
-                enum 1G25 {
-                    description "none";
-                }
-                enum 2G5 {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        grouping odu-payload-type {
-            leaf named-payload-type {
-                type odu-named-payload-type;
+        description "none";
+    }
+    typedef mapping-type {
+        type enumeration {
+            enum AMP {
                 description "none";
             }
-            leaf hex-payload-type {
-                type uint64;
+            enum BMP {
                 description "none";
             }
+            enum GFP-F {
+                description "none";
+            }
+            enum GMP {
+                description "none";
+            }
+            enum TTP_GFP_BMP {
+                description "none";
+            }
+            enum NULL {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    typedef tim-det-mo {
+        type enumeration {
+            enum DAPI {
+                description "none";
+            }
+            enum SAPI {
+                description "none";
+            }
+            enum BOTH {
+                description "none";
+            }
+            enum OFF {
+                description "none";
+            }
+        }
+        description "List of modes for trace identifier mismatch detection.";
+    }
+    typedef odu-slot-size {
+        type enumeration {
+            enum 1G25 {
+                description "none";
+            }
+            enum 2G5 {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    grouping odu-payload-type {
+        leaf named-payload-type {
+            type odu-named-payload-type;
             description "none";
         }
-        typedef odu-named-payload-type {
-            type enumeration {
-                enum UNKNOWN {
-                    description "none";
-                }
-                enum UNINTERPRETABLE {
-                    description "none";
-                }
-            }
+        leaf hex-payload-type {
+            type uint64;
             description "none";
         }
-        grouping deg-thr {
-            leaf deg-thr-value {
-                type uint64;
-                description "Percentage of detected errored blocks";
-            }
-            leaf deg-thr-type {
-                type deg-thr-type;
-                description "Number of errored blocks";
-            }
-            leaf percentage-granularity {
-                type percentage-granularity;
+        description "none";
+    }
+    typedef odu-named-payload-type {
+        type enumeration {
+            enum UNKNOWN {
                 description "none";
             }
-            description "Degraded Threshold, specify either the percentage or the number of Errored Blocks in the defined interval. 
-                degThrValue when type is PERCENTAGE:
-                percentageGranularity is used to indicate the number of decimal points
-                So if percentageGranularity is ones, a value of 1 in degThrValue would indicate 1%, a value of 10 = 10%, a value of 100 = 100%
-                So if percentageGranularity is thousandths a value of 1 in degThrValue would indicate 0.001%, a value of 1000 = 1%, a value of 1000000 = 100%
-                degThrValue when type is NUMBER_ERROR_BLOCKS:
-                Number of Errored Blocks is captured in an integer value.";
-        }
-        typedef deg-thr-type {
-            type enumeration {
-                enum PERCENTAGE {
-                    description "Choice of % or Number of errored blocks";
-                }
-                enum NUMBER_ERRORED_BLOCKS {
-                    description "Number of % or blocks";
-                }
+            enum UNINTERPRETABLE {
+                description "none";
             }
-            description "The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.";
         }
-        typedef tcm-status {
-            type enumeration {
-                enum NO_SOURCE_TC {
-                    description "TCM byte 3 (bits 6 7 8) -- 0 0 0, No source Tandem Connection";
-                }
-                enum IN_USE_WITHOUT_IAE {
-                    description "TCM byte 3 (bits 6 7 8) -- 0 0 1,  In use without IAE (Incoming Alignment Error)";
-                }
-                enum IN_USE_WITH_IAE {
-                    description "TCM byte 3 (bits 6 7 8) -- 0 1 0, In use with IAE (Incoming Alignment Error)";
-                }
-                enum RESERVED_1 {
-                    description "TCM byte 3 (bits 6 7 8) -- 0 1 1, Reserved for future international standardization";
-                }
-                enum RESERVED_2 {
-                    description "TCM byte 3 (bits 6 7 8) -- 1 0 0, Reserved for future international standardization";
-                }
-                enum LCK {
-                    description "TCM byte 3 (bits 6 7 8) -- 1 0 1, Maintenance signal: ODU-LCK";
-                }
-                enum OCI {
-                    description "TCM byte 3 (bits 6 7 8) -- 1 1 0, Maintenance signal: ODU-OCI";
-                }
-                enum AIS {
-                    description "TCM byte 3 (bits 6 7 8) -- 1 1 1, Maintenance signal: ODU-AIS";
-                }
-            }
-            description "See Table 15-5/G.709/Y.1331 ";
+        description "none";
+    }
+    grouping deg-thr {
+        leaf deg-thr-value {
+            type uint64;
+            description "Percentage of detected errored blocks";
         }
-        typedef tcm-mode {
-            type enumeration {
-                enum OPERATIONAL {
-                    description "none";
-                }
-                enum TRANSPARENT {
-                    description "none";
-                }
-                enum MONITOR {
-                    description "none";
-                }
-            }
-            description "List of value modes for the sink side of the tandem connection monitoring function.";
+        leaf deg-thr-type {
+            type deg-thr-type;
+            description "Number of errored blocks";
         }
-        typedef tcm-monitoring {
-            type enumeration {
-                enum INTRUSIVE {
-                    description "none";
-                }
-                enum NON-INTRUSIVE {
-                    description "none";
-                }
-            }
-            description "Monitoring types for the tandem connection monitoring function.";
-        }
-        typedef tcm-extension {
-            type enumeration {
-                enum NORMAL {
-                    description "none";
-                }
-                enum PASS-THROUGH {
-                    description "none";
-                }
-                enum ERASE {
-                    description "none";
-                }
-            }
+        leaf percentage-granularity {
+            type percentage-granularity;
             description "none";
         }
-        typedef percentage-granularity {
-            type enumeration {
-                enum ONES {
-                    description "none";
-                }
-                enum ONE_TENTHS {
-                    description "value * (1/10)";
-                }
-                enum ONE_HUNDREDTHS {
-                    description "value * (1/100)";
-                }
-                enum ONE_THOUSANDTHS {
-                    description "value * (1/1000)";
-                }
+        description "Degraded Threshold, specify either the percentage or the number of Errored Blocks in the defined interval.
+            degThrValue when type is PERCENTAGE:
+            percentageGranularity is used to indicate the number of decimal points
+            So if percentageGranularity is ones, a value of 1 in degThrValue would indicate 1%, a value of 10 = 10%, a value of 100 = 100%
+            So if percentageGranularity is thousandths a value of 1 in degThrValue would indicate 0.001%, a value of 1000 = 1%, a value of 1000000 = 100%
+            degThrValue when type is NUMBER_ERROR_BLOCKS:
+            Number of Errored Blocks is captured in an integer value.";
+    }
+    typedef deg-thr-type {
+        type enumeration {
+            enum PERCENTAGE {
+                description "Choice of % or Number of errored blocks";
             }
+            enum NUMBER_ERRORED_BLOCKS {
+                description "Number of % or blocks";
+            }
+        }
+        description "The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.";
+    }
+    typedef tcm-status {
+        type enumeration {
+            enum NO_SOURCE_TC {
+                description "TCM byte 3 (bits 6 7 8) -- 0 0 0, No source Tandem Connection";
+            }
+            enum IN_USE_WITHOUT_IAE {
+                description "TCM byte 3 (bits 6 7 8) -- 0 0 1,  In use without IAE (Incoming Alignment Error)";
+            }
+            enum IN_USE_WITH_IAE {
+                description "TCM byte 3 (bits 6 7 8) -- 0 1 0, In use with IAE (Incoming Alignment Error)";
+            }
+            enum RESERVED_1 {
+                description "TCM byte 3 (bits 6 7 8) -- 0 1 1, Reserved for future international standardization";
+            }
+            enum RESERVED_2 {
+                description "TCM byte 3 (bits 6 7 8) -- 1 0 0, Reserved for future international standardization";
+            }
+            enum LCK {
+                description "TCM byte 3 (bits 6 7 8) -- 1 0 1, Maintenance signal: ODU-LCK";
+            }
+            enum OCI {
+                description "TCM byte 3 (bits 6 7 8) -- 1 1 0, Maintenance signal: ODU-OCI";
+            }
+            enum AIS {
+                description "TCM byte 3 (bits 6 7 8) -- 1 1 1, Maintenance signal: ODU-AIS";
+            }
+        }
+        description "See Table 15-5/G.709/Y.1331 ";
+    }
+    typedef tcm-mode {
+        type enumeration {
+            enum OPERATIONAL {
+                description "none";
+            }
+            enum TRANSPARENT {
+                description "none";
+            }
+            enum MONITOR {
+                description "none";
+            }
+        }
+        description "List of value modes for the sink side of the tandem connection monitoring function.";
+    }
+    typedef tcm-monitoring {
+        type enumeration {
+            enum INTRUSIVE {
+                description "none";
+            }
+            enum NON-INTRUSIVE {
+                description "none";
+            }
+        }
+        description "Monitoring types for the tandem connection monitoring function.";
+    }
+    typedef tcm-extension {
+        type enumeration {
+            enum NORMAL {
+                description "none";
+            }
+            enum PASS-THROUGH {
+                description "none";
+            }
+            enum ERASE {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    typedef percentage-granularity {
+        type enumeration {
+            enum ONES {
+                description "none";
+            }
+            enum ONE_TENTHS {
+                description "value * (1/10)";
+            }
+            enum ONE_HUNDREDTHS {
+                description "value * (1/100)";
+            }
+            enum ONE_THOUSANDTHS {
+                description "value * (1/1000)";
+            }
+        }
+        description "none";
+    }
+    grouping uas-choice {
+        leaf bidirectional {
+            type boolean;
+            default "true";
             description "none";
         }
-        grouping uas-choice {
-            leaf bidirectional {
-                type boolean;
-                default "true";
-                description "none";
-            }
-            leaf uas {
-                type uint64;
-                description "none";
-            }
-            leaf nuas {
-                type uint64;
-                description "none";
-            }
-            leaf fuas {
-                type uint64;
-                description "none";
-            }
-            description "If bidirectional is TRUE then use the uas attribute, if bidirectional is FALSE use the nuas, and fuas attributes";
+        leaf uas {
+            type uint64;
+            description "none";
         }
-
+        leaf nuas {
+            type uint64;
+            description "none";
+        }
+        leaf fuas {
+            type uint64;
+            description "none";
+        }
+        description "If bidirectional is TRUE then use the uas attribute, if bidirectional is FALSE use the nuas, and fuas attributes";
+    }
 }
diff --git a/models/tapi/src/main/yang/tapi-path-computation@2018-10-16.yang b/models/tapi/src/main/yang/tapi-path-computation@2018-10-16.yang
old mode 100644
new mode 100755
index 56982df..ba6173d
--- a/models/tapi/src/main/yang/tapi-path-computation@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-path-computation@2018-10-16.yang
@@ -32,28 +32,28 @@
             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
+        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" {
@@ -64,9 +64,9 @@
         description "Augments the base TAPI Context with PathComputationService information";
     }
 
-    /*************************
+   /**************************
     * definitions of refrences
-    *************************/
+    **************************/
     grouping path-ref {
         leaf path-uuid {
             type leafref {
@@ -77,81 +77,307 @@
         description "none";
     }
 
-    /***********************
+   /**************************
     * package object-classes
-    **********************/ 
-        grouping path {
-            list link {
-                uses tapi-topology:link-ref;
-                key 'topology-uuid link-uuid';
-                config false;
-                min-elements 1;
-                description "none";
-            }
-            container routing-constraint {
-                config false;
-                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";
+    **************************/
+    grouping path {
+        list link {
+            uses tapi-topology:link-ref;
+            key 'topology-uuid link-uuid';
+            config false;
+            min-elements 1;
+            description "none";
         }
-        grouping path-service-end-point {
-            container service-interface-point {
-            	uses tapi-common:service-interface-point-ref;
-                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;
-                description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";
-            }
-            leaf direction {
-                type tapi-common:port-direction;
-                config false;
-                description "The orientation of defined flow at the EndPoint.";
-            }
-            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. 
-                The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.  
-                In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC. 
-                It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
-                The EP replaces the Protection Unit of a traditional protection model. 
-                The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
+        container routing-constraint {
+            config false;
+            uses routing-constraint;
+            description "none";
         }
-        grouping path-computation-service {
-            list path {
-                uses path-ref;
-                key 'path-uuid';
-                config false;
-                min-elements 1;
+        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";
+    }
+    grouping path-service-end-point {
+        container service-interface-point {
+            uses tapi-common:service-interface-point-ref;
+            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;
+            description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";
+        }
+        leaf direction {
+            type tapi-common:port-direction;
+            config false;
+            description "The orientation of defined flow at the EndPoint.";
+        }
+        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.
+            The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.
+            In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC.
+            It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
+            The EP replaces the Protection Unit of a traditional protection model.
+            The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
+    }
+    grouping path-computation-service {
+        list path {
+            uses path-ref;
+            key 'path-uuid';
+            config false;
+            min-elements 1;
+            description "none";
+        }
+        list end-point {
+            key 'local-id';
+            min-elements 2;
+            max-elements 2;
+            uses path-service-end-point;
+            description "none";
+        }
+        container routing-constraint {
+            uses routing-constraint;
+            description "none";
+        }
+        container topology-constraint {
+            uses topology-constraint;
+            description "none";
+        }
+        container objective-function {
+            uses path-objective-function;
+            description "none";
+        }
+        container optimization-constraint {
+            uses path-optimization-constraint;
+            description "none";
+        }
+        uses tapi-common:service-spec;
+        description "none";
+    }
+    grouping path-objective-function {
+        leaf bandwidth-optimization {
+            type tapi-common:directive-value;
+            config false;
+            description "none";
+        }
+        leaf concurrent-paths {
+            type tapi-common:directive-value;
+            config false;
+            description "none";
+        }
+        leaf cost-optimization {
+            type tapi-common:directive-value;
+            config false;
+            description "none";
+        }
+        leaf link-utilization {
+            type tapi-common:directive-value;
+            config false;
+            description "none";
+        }
+        leaf resource-sharing {
+            type tapi-common:directive-value;
+            config false;
+            description "none";
+        }
+        uses tapi-common:local-class;
+        description "none";
+    }
+    grouping path-optimization-constraint {
+        leaf traffic-interruption {
+            type tapi-common:directive-value;
+            config false;
+            description "none";
+        }
+        uses tapi-common:local-class;
+        description "none";
+    }
+    grouping routing-constraint {
+        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.";
+        }
+        list risk-diversity-characteristic {
+            key 'risk-characteristic-name';
+            uses tapi-topology:risk-characteristic;
+            description "none";
+        }
+        leaf diversity-policy {
+            type diversity-policy;
+            description "none";
+        }
+        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 {
+        list path-comp-service {
+            key 'uuid';
+            uses path-computation-service;
+            description "none";
+        }
+        list path {
+            key 'uuid';
+            config false;
+            uses path;
+            description "none";
+        }
+        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";
             }
-            list end-point {
+            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
+    **************************/
+    rpc compute-p-2-p-path {
+        description "none";
+        input {
+            list sep {
                 key 'local-id';
                 min-elements 2;
                 max-elements 2;
@@ -170,281 +396,54 @@
                 uses path-objective-function;
                 description "none";
             }
+        }
+        output {
+            container service {
+                uses path-computation-service;
+                description "none";
+            }
+        }
+    }
+    rpc optimize-p-2-p-path {
+        description "none";
+        input {
+            leaf path-id-or-name {
+                type string;
+                description "none";
+            }
+            container routing-constraint {
+                uses routing-constraint;
+                description "none";
+            }
             container optimization-constraint {
                 uses path-optimization-constraint;
                 description "none";
             }
-            uses tapi-common:service-spec;
-            description "none";
+            container objective-function {
+                uses path-objective-function;
+                description "none";
+            }
         }
-        grouping path-objective-function {
-            leaf bandwidth-optimization {
-                type tapi-common:directive-value;
-                config false;
-                description "none";
-            }
-            leaf concurrent-paths {
-                type tapi-common:directive-value;
-                config false;
-                description "none";
-            }
-            leaf cost-optimization {
-                type tapi-common:directive-value;
-                config false;
-                description "none";
-            }
-            leaf link-utilization {
-                type tapi-common:directive-value;
-                config false;
-                description "none";
-            }
-            leaf resource-sharing {
-                type tapi-common:directive-value;
-                config false;
-                description "none";
-            }
-            uses tapi-common:local-class;
-            description "none";
-        }
-        grouping path-optimization-constraint {
-            leaf traffic-interruption {
-                type tapi-common:directive-value;
-                config false;
-                description "none";
-            }
-            uses tapi-common:local-class;
-            description "none";
-        }
-        grouping routing-constraint {
-            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.";
-            }
-            list risk-diversity-characteristic {
-                key 'risk-characteristic-name';
-                uses tapi-topology:risk-characteristic;
-                description "none";
-            }
-            leaf diversity-policy {
-                type diversity-policy;
-                description "none";
-            }
-            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 {
-            list path-comp-service {
-                key 'uuid';
+        output {
+            container service {
                 uses path-computation-service;
                 description "none";
             }
-            list path {
-                key 'uuid';
-                config false;
-                uses path;
+        }
+    }
+    rpc delete-p-2-p-path {
+        description "none";
+        input {
+            leaf path-id-or-name {
+                type string;
                 description "none";
             }
-            description "none";
         }
-        grouping topology-constraint {
-            list include-topology {
-                uses tapi-topology:topology-ref;
-                key 'topology-uuid';
-                config false;
+        output {
+            container service {
+                uses path-computation-service;
                 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
-    **********************/ 
-        rpc compute-p-2-p-path {
-            description "none";
-            input {
-                list sep {
-                	key 'local-id';
-                    min-elements 2;
-                    max-elements 2;
-                    uses path-service-end-point;
-                    description "none";
-                }
-                container routing-constraint {
-                    uses routing-constraint;
-                    description "none";
-                }
-                container topology-constraint {
-                    uses topology-constraint;
-                    description "none";
-                }
-                container objective-function {
-                    uses path-objective-function;
-                    description "none";
-                }
-            }
-            output {
-                container service {
-                    uses path-computation-service;
-                    description "none";
-                }
-            }
-        }
-        rpc optimize-p-2-p-path {
-            description "none";
-            input {
-                leaf path-id-or-name {
-                    type string;
-                    description "none";
-                }
-                container routing-constraint {
-                    uses routing-constraint;
-                    description "none";
-                }
-                container optimization-constraint {
-                    uses path-optimization-constraint;
-                    description "none";
-                }
-                container objective-function {
-                    uses path-objective-function;
-                    description "none";
-                }
-            }
-            output {
-                container service {
-                    uses path-computation-service;
-                    description "none";
-                }
-            }
-        }
-        rpc delete-p-2-p-path {
-            description "none";
-            input {
-                leaf path-id-or-name {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                container service {
-                    uses path-computation-service;
-                    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
old mode 100644
new mode 100755
index 9a53635..5ae8fe1
--- 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
@@ -35,28 +35,28 @@
             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
+        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-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point" {
@@ -269,649 +269,649 @@
         }
         description "none";
     }
-    /***********************
+
+   /**************************
     * package object-classes
-    **********************/ 
-        grouping otsi-gserver-adaptation-pac {
-            leaf number-of-otsi {
-                type uint64;
-                config false;
-                description "none";
-            }
+    **************************/
+    grouping otsi-gserver-adaptation-pac {
+        leaf number-of-otsi {
+            type uint64;
+            config false;
             description "none";
         }
-        grouping otsi-connection-end-point-spec {
-            container otsi-termination {
-                config false;
-                uses otsi-termination-pac;
-                description "none";
-            }
+        description "none";
+    }
+    grouping otsi-connection-end-point-spec {
+        container otsi-termination {
+            config false;
+            uses otsi-termination-pac;
             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 {
-                key 'upper-frequency lower-frequency';
-                config false;
-                uses spectrum-band;
-                description "none";
-            }
-            list available-spectrum {
-                key 'upper-frequency lower-frequency';
-                config false;
-                uses spectrum-band;
-                description "none";
-            }
-            list occupied-spectrum {
-                key 'upper-frequency lower-frequency';
-                config false;
-                uses spectrum-band;
-                description "none";
-            }
+        description "none";
+    }
+    grouping otsi-termination-pac {
+        container selected-central-frequency {
+            config false;
+            uses central-frequency;
             description "none";
         }
-        grouping media-channel-node-edge-point-spec {
-            container mc-pool {
-                config false;
-                uses media-channel-pool-capability-pac;
-                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";
         }
-        grouping otsi-routing-spec {
-            leaf optical-routing-strategy {
-                type optical-routing-strategy;
-                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";
         }
-        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";
-            }
+        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 {
+            key 'upper-frequency lower-frequency';
+            config false;
+            uses spectrum-band;
             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";
-            }
+        list available-spectrum {
+            key 'upper-frequency lower-frequency';
+            config false;
+            uses spectrum-band;
             description "none";
         }
-        grouping otsi-capability-pac {
-            list supportable-lower-central-frequency {
-                key 'central-frequency';
-                config false;
-                uses central-frequency;
-                description "The lower frequency of the channel spectrum";
-            }
-            list supportable-upper-central-frequency {
-                key 'central-frequency';
-                config false;
-                uses central-frequency;
-                description "The Upper frequency of the channel spectrum";
-            }
-            list supportable-application-identifier {
-                key 'application-code';
-                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";
-            }
+        list occupied-spectrum {
+            key 'upper-frequency lower-frequency';
+            config false;
+            uses spectrum-band;
             description "none";
         }
-        grouping otsi-connectivity-service-end-point-spec {
-            container otsi-config {
-                uses otsi-termination-config-pac;
-                description "none";
-            }
+        description "none";
+    }
+    grouping media-channel-node-edge-point-spec {
+        container mc-pool {
+            config false;
+            uses media-channel-pool-capability-pac;
             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 otsi-routing-spec {
+        leaf optical-routing-strategy {
+            type optical-routing-strategy;
             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-properties-pac {
+        container occupied-spectrum {
+            config false;
+            uses spectrum-band;
             description "none";
         }
-        grouping media-channel-service-interface-point-spec {
-            container mc-pool {
-                config false;
-                uses media-channel-pool-capability-pac;
-                description "none";
-            }
+        container measured-power-ingress {
+            config false;
+            uses power-properties-pac;
             description "none";
         }
-        grouping media-channel-connectivity-service-end-point-spec {
-            container mc-config {
-                uses media-channel-config-pac;
-                description "none";
-            }
+        container measured-power-egress {
+            uses power-properties-pac;
             description "none";
         }
-        grouping media-channel-config-pac {
-            container spectrum {
-                uses spectrum-band;
-                description "none";
-            }
+        description "none";
+    }
+    grouping otsi-assembly-connection-end-point-spec {
+        container otsi-adapter {
+            config false;
+            uses otsi-gserver-adaptation-pac;
             description "none";
         }
-        grouping media-channel-connection-end-point-spec {
-            container media-channel {
-                config false;
-                uses media-channel-properties-pac;
-                description "none";
-            }
+        container fec-parameters {
+            config false;
+            uses fec-properties-pac;
             description "none";
         }
-        grouping ots-connection-end-point-spec {
-            container ots-media-channel {
-                config false;
-                uses media-channel-properties-pac;
-                description "none";
-            }
+        description "none";
+    }
+    grouping otsi-capability-pac {
+        list supportable-lower-central-frequency {
+            key 'central-frequency';
+            config false;
+            uses central-frequency;
+            description "The lower frequency of the channel spectrum";
+        }
+        list supportable-upper-central-frequency {
+            key 'central-frequency';
+            config false;
+            uses central-frequency;
+            description "The Upper frequency of the channel spectrum";
+        }
+        list supportable-application-identifier {
+            key 'application-code';
+            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";
         }
-        grouping media-channel-assembly-spec {
+        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";
         }
-        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 otsi-connectivity-service-end-point-spec {
+        container otsi-config {
+            uses otsi-termination-config-pac;
             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.";
+        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";
         }
-        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";
-            }
+        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;
+    **************************/
+    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";
         }
-        identity PHOTONIC_LAYER_QUALIFIER_OTSi {
-            base PHOTONIC_LAYER_QUALIFIER;
+        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";
         }
-        identity PHOTONIC_LAYER_QUALIFIER_OTSiA {
-            base PHOTONIC_LAYER_QUALIFIER;
-            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. ";
         }
-        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 "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";
             }
-            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;
+            enum NO_RELAY {
                 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;
+            enum MIN_RELAY {
                 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";
-                }
+            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";
         }
-        typedef laser-type {
-            type enumeration {
-                enum PUMP {
-                    description "none";
-                }
-                enum MODULATED {
-                    description "none";
-                }
-                enum PULSE {
-                    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";
             }
-            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";
+            }
         }
-        typedef photonic-layer-qualifier {
-            type identityref {
-                base PHOTONIC_LAYER_QUALIFIER;
+        description "none";
+    }
+    typedef laser-type {
+        type enumeration {
+            enum PUMP {
+                description "none";
             }
-            description "none";
+            enum MODULATED {
+                description "none";
+            }
+            enum PULSE {
+                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";
+        description "none";
+    }
+    typedef photonic-layer-qualifier {
+        type identityref {
+            base PHOTONIC_LAYER_QUALIFIER;
         }
-        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";
+    }
+    typedef laser-control-type {
+        type enumeration {
+            enum FORCED-ON {
+                description "none";
             }
-            description "none";
+            enum FORCED-OFF {
+                description "none";
+            }
+            enum AUTOMATIC-LASER-SHUTDOWN {
+                description "none";
+            }
+            enum UNDEFINED {
+                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)";
+        description "none";
+    }
+    typedef laser-control-status-type {
+        type enumeration {
+            enum ON {
+                description "none";
             }
-            leaf grid-type {
-                type grid-type;
-                description "Specifies the frequency grid standard used to determine the nominal central frequency and frequency slot width";
+            enum OFF {
+                description "none";
             }
-            description "This data-type holds the frequency constraint information in terms of GridType ( FIXED grid (DWDM or CWDM) or FLEX grid) and AdjustmentGranularity.";
+            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-10-16.yang b/models/tapi/src/main/yang/tapi-topology@2018-10-16.yang
old mode 100644
new mode 100755
index adf6ba0..df459aa
--- a/models/tapi/src/main/yang/tapi-topology@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-topology@2018-10-16.yang
@@ -29,28 +29,28 @@
             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
+        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" {
@@ -61,10 +61,9 @@
         description "Augments the base TAPI Context with TopologyService information";
     }
 
-    /*************************
+   /**************************
     * definitions of refrences
-    *************************/
-
+    **************************/
     grouping topology-ref {
         leaf topology-uuid {
             type leafref {
@@ -74,7 +73,6 @@
         }
         description "none";
     }
-
     grouping link-ref {
         uses topology-ref;
         leaf link-uuid {
@@ -85,7 +83,6 @@
         }
         description "none";
     }
-
     grouping node-ref {
         uses topology-ref;
         leaf node-uuid {
@@ -96,7 +93,6 @@
         }
         description "none";
     }
-
     grouping node-edge-point-ref {
         uses node-ref;
         leaf node-edge-point-uuid {
@@ -107,7 +103,6 @@
         }
         description "none";
     }
-
     grouping node-rule-group-ref {
         uses node-ref;
         leaf node-rule-group-uuid {
@@ -119,597 +114,596 @@
         description "none";
     }
 
-    /***********************
+   /**************************
     * package object-classes
-    **********************/ 
-        grouping link {
-            list node-edge-point {
-                uses node-edge-point-ref;
-                key 'topology-uuid node-uuid node-edge-point-uuid';
-                config false;
-                min-elements 2;
-                description "none";
-            }
-            leaf-list layer-protocol-name {
-                type tapi-common:layer-protocol-name;
-                config false;
-                min-elements 1;
-                description "none";
-            }
-            leaf direction {
-                type tapi-common:forwarding-direction;
-                config false;
-                description "The directionality of the Link. 
-                    Is applicable to simple Links where all LinkEnds are BIDIRECTIONAL (the Link will be BIDIRECTIONAL) or UNIDIRECTIONAL (the Link will be UNIDIRECTIONAL). 
-                    Is not present in more complex cases.";
-            }
-            container resilience-type {
-                uses resilience-type;
-                description "none";
-            }
-            uses tapi-common:resource-spec;
-            uses tapi-common:admin-state-pac;
-            uses tapi-common:capacity-pac;
-            uses transfer-cost-pac;
-            uses transfer-integrity-pac;
-            uses transfer-timing-pac;
-            uses risk-parameter-pac;
-            uses validation-pac;
-            uses layer-protocol-transition-pac;
-            description "The Link object class models effective adjacency between two or more ForwardingDomains (FD). ";
-        }
-        grouping node {
-            list owned-node-edge-point {
-                key 'uuid';
-                config false;
-                uses node-edge-point;
-                description "none";
-            }
-            list aggregated-node-edge-point {
-            	uses node-edge-point-ref;
-                key 'topology-uuid node-uuid node-edge-point-uuid';
-                config false;
-                description "none";
-            }
-            list node-rule-group {
-                key 'uuid';
-                uses node-rule-group;
-                description "none";
-            }
-            container encap-topology {
-                uses topology-ref;
-                config false;
-                description "none";
-            }
-            leaf-list layer-protocol-name {
-                type tapi-common:layer-protocol-name;
-                config false;
-                min-elements 1;
-                description "none";
-            }
-            uses tapi-common:resource-spec;
-            uses tapi-common:admin-state-pac;
-            uses tapi-common:capacity-pac;
-            uses transfer-cost-pac;
-            uses transfer-integrity-pac;
-            uses transfer-timing-pac;
-            description "The ForwardingDomain (FD) object class models the ForwardingDomain topological component which is used to effect forwarding of transport characteristic information and offers the potential to enable forwarding. 
-                At the lowest level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs). ";
-        }
-        grouping topology {
-            list node {
-                key 'uuid';
-                config false;
-                uses node;
-                description "none";
-            }
-            list link {
-                key 'uuid';
-                config false;
-                uses link;
-                description "none";
-            }
-            leaf-list layer-protocol-name {
-                type tapi-common:layer-protocol-name;
-                config false;
-                min-elements 1;
-                description "none";
-            }
-            uses tapi-common:resource-spec;
-            description "The ForwardingDomain (FD) object class models the ForwardingDomain topological component which is used to effect forwarding of transport characteristic information and offers the potential to enable forwarding. 
-                At the lowest level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs). ";
-        }
-        grouping layer-protocol-transition-pac {
-            leaf-list transitioned-layer-protocol-name {
-                type string;
-                min-elements 2;
-                description "Provides the ordered structure of layer protocol transitions encapsulated in the TopologicalEntity. The ordering relates to the LinkPort role.";
-            }
-            description "Relevant for a Link that is formed by abstracting one or more LTPs (in a stack) to focus on the flow and deemphasize the protocol transformation. 
-                This abstraction is relevant when considering multi-layer routing. 
-                The layer protocols of the LTP and the order of their application to the signal is still relevant and need to be accounted for. This is derived from the LTP spec details.
-                This Pac provides the relevant abstractions of the LTPs and provides the necessary association to the LTPs involved.
-                Links that included details in this Pac are often referred to as Transitional Links.";
-        }
-        grouping node-edge-point {
-            leaf layer-protocol-name {
-                type tapi-common:layer-protocol-name;
-                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 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-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";
-            }
-            leaf link-port-direction {
-                type tapi-common:port-direction;
-                config false;
-                description "The orientation of defined flow at the LinkEnd.";
-            }
-            leaf link-port-role {
-                type tapi-common:port-role;
-                config false;
-                description "Each LinkEnd of the Link has a role (e.g., symmetric, hub, spoke, leaf, root)  in the context of the Link with respect to the Link function. ";
-            }
-            uses tapi-common:resource-spec;
-            uses tapi-common:admin-state-pac;
-            uses tapi-common:termination-pac;
-            uses tapi-common:capacity-pac;
-            description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers. 
-                The structure of LTP supports all transport protocols including circuit and packet forms.";
-        }
-        grouping risk-parameter-pac {
-            list risk-characteristic {
-                key 'risk-characteristic-name';
-                config false;
-                min-elements 1;
-                uses risk-characteristic;
-                description "A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration.";
-            }
-            description "The risk characteristics of a TopologicalEntity come directly from the underlying physical realization. 
-                The risk characteristics propagate from the physical realization to the client and from the server layer to the client layer, this propagation may be modified by protection.
-                A TopologicalEntity may suffer degradation or failure as a result of a problem in a part of the underlying realization.
-                The realization can be partitioned into segments which have some relevant common failure modes.
-                There is a risk of failure/degradation of each segment of the underlying realization.
-                Each segment is a part of a larger physical/geographical unit that behaves as one with respect to failure (i.e. a failure will have a high probability of impacting the whole unit (e.g. all cables in the same duct).
-                Disruptions to that larger physical/geographical unit will impact (cause failure/errors to) all TopologicalEntities that use any part of that larger physical/geographical entity.
-                Any TopologicalEntity that uses any part of that larger physical/geographical unit will suffer impact and hence each TopologicalEntity shares risk.
-                The identifier of each physical/geographical unit that is involved in the realization of each segment of a Topological entity can be listed in the RiskParameter_Pac of that TopologicalEntity.
-                A segment has one or more risk characteristic.
-                Shared risk between two TopologicalEntities compromises the integrity of any solution that use one of those TopologicalEntity as a backup for the other.
-                Where two TopologicalEntities have a common risk characteristic they have an elevated probability of failing simultaneously compared to two TopologicalEntities that do not share risk characteristics.";
-        }
-        grouping transfer-cost-pac {
-            list cost-characteristic {
-                key 'cost-name';
-                config false;
-                min-elements 1;
-                uses cost-characteristic;
-                description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";
-            }
-            description "The cost characteristics of a TopologicalEntity not necessarily correlated to the cost of the underlying physical realization. 
-                They may be quite specific to the individual TopologicalEntity e.g. opportunity cost. Relates to layer capacity
-                There may be many perspectives from which cost may be considered  for a particular TopologicalEntity and hence many specific costs and potentially cost algorithms. 
-                Using an entity will incur a cost. ";
-        }
-        grouping transfer-integrity-pac {
-            leaf error-characteristic {
-                type string;
-                config false;
-                description "Describes the degree to which the signal propagated can be errored. 
-                    Applies to TDM systems as the errored signal will be propagated and not packet as errored packets will be discarded.";
-            }
-            leaf loss-characteristic {
-                type string;
-                config false;
-                description "Describes the acceptable characteristic of lost packets where loss may result from discard due to errors or overflow.
-                    Applies to packet systems and not TDM (as for TDM errored signals are propagated unless grossly errored and overflow/underflow turns into timing slips).";
-            }
-            leaf repeat-delivery-characteristic {
-                type string;
-                config false;
-                description "Primarily applies to packet systems where a packet may be delivered more than once (in fault recovery for example). 
-                    It can also apply to TDM where several frames may be received twice due to switching in a system with a large differential propagation delay.";
-            }
-            leaf delivery-order-characteristic {
-                type string;
-                config false;
-                description "Describes the degree to which packets will be delivered out of sequence.
-                    Does not apply to TDM as the TDM protocols maintain strict order.";
-            }
-            leaf unavailable-time-characteristic {
-                type string;
-                config false;
-                description "Describes the duration for which there may be no valid signal propagated.";
-            }
-            leaf server-integrity-process-characteristic {
-                type string;
-                config false;
-                description "Describes the effect of any server integrity enhancement process on the characteristics of the TopologicalEntity.";
-            }
-            description "Transfer intergrity characteristic covers expected/specified/acceptable characteristic of degradation of the transfered signal.
-                It includes all aspects of possible degradation of signal content as well as any damage of any form to the total TopologicalEntity and to the carried signals.
-                Note that the statement is of total impact to the TopologicalEntity so any partial usage of the TopologicalEntity (e.g. a signal that does not use full capacity) will only suffer its portion of the impact.";
-        }
-        grouping transfer-timing-pac {
-            list latency-characteristic {
-                key 'traffic-property-name';
-                config false;
-                min-elements 1;
-                uses 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.";
-            }
-            description "A TopologicalEntity will suffer effects from the underlying physical realization related to the timing of the information passed by the TopologicalEntity.";
-        }
-        grouping validation-pac {
-            list validation-mechanism {
-                key 'validation-mechanism';
-                config false;
-                min-elements 1;
-                uses validation-mechanism;
-                description "Provides details of the specific validation mechanism(s) used to confirm the presence of an intended topologicalEntity.";
-            }
-            description "Validation covers the various adjacenct discovery and reachability verification protocols. Also may cover Information source and degree of integrity.";
-        }
-        grouping network-topology-service {
-            list topology {
-                uses topology-ref;
-                key 'topology-uuid';
-                config false;
-                description "none";
-            }
-            uses tapi-common:service-spec;
+    **************************/
+    grouping link {
+        list node-edge-point {
+            uses node-edge-point-ref;
+            key 'topology-uuid node-uuid node-edge-point-uuid';
+            config false;
+            min-elements 2;
             description "none";
         }
-        grouping topology-context {
-            container nw-topology-service {
-                config false;
-                uses network-topology-service;
+        leaf-list layer-protocol-name {
+            type tapi-common:layer-protocol-name;
+            config false;
+            min-elements 1;
+            description "none";
+        }
+        leaf direction {
+            type tapi-common:forwarding-direction;
+            config false;
+            description "The directionality of the Link.
+                Is applicable to simple Links where all LinkEnds are BIDIRECTIONAL (the Link will be BIDIRECTIONAL) or UNIDIRECTIONAL (the Link will be UNIDIRECTIONAL).
+                Is not present in more complex cases.";
+        }
+        container resilience-type {
+            uses resilience-type;
+            description "none";
+        }
+        uses tapi-common:resource-spec;
+        uses tapi-common:admin-state-pac;
+        uses tapi-common:capacity-pac;
+        uses transfer-cost-pac;
+        uses transfer-integrity-pac;
+        uses transfer-timing-pac;
+        uses risk-parameter-pac;
+        uses validation-pac;
+        uses layer-protocol-transition-pac;
+        description "The Link object class models effective adjacency between two or more ForwardingDomains (FD). ";
+    }
+    grouping node {
+        list owned-node-edge-point {
+            key 'uuid';
+            config false;
+            uses node-edge-point;
+            description "none";
+        }
+        list aggregated-node-edge-point {
+            uses node-edge-point-ref;
+            key 'topology-uuid node-uuid node-edge-point-uuid';
+            config false;
+            description "none";
+        }
+        list node-rule-group {
+            key 'uuid';
+            uses node-rule-group;
+            description "none";
+        }
+        container encap-topology {
+            uses topology-ref;
+            config false;
+            description "none";
+        }
+        leaf-list layer-protocol-name {
+            type tapi-common:layer-protocol-name;
+            config false;
+            min-elements 1;
+            description "none";
+        }
+        uses tapi-common:resource-spec;
+        uses tapi-common:admin-state-pac;
+        uses tapi-common:capacity-pac;
+        uses transfer-cost-pac;
+        uses transfer-integrity-pac;
+        uses transfer-timing-pac;
+        description "The ForwardingDomain (FD) object class models the ForwardingDomain topological component which is used to effect forwarding of transport characteristic information and offers the potential to enable forwarding.
+            At the lowest level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs). ";
+    }
+    grouping topology {
+        list node {
+            key 'uuid';
+            config false;
+            uses node;
+            description "none";
+        }
+        list link {
+            key 'uuid';
+            config false;
+            uses link;
+            description "none";
+        }
+        leaf-list layer-protocol-name {
+            type tapi-common:layer-protocol-name;
+            config false;
+            min-elements 1;
+            description "none";
+        }
+        uses tapi-common:resource-spec;
+        description "The ForwardingDomain (FD) object class models the ForwardingDomain topological component which is used to effect forwarding of transport characteristic information and offers the potential to enable forwarding.
+            At the lowest level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs). ";
+    }
+    grouping layer-protocol-transition-pac {
+        leaf-list transitioned-layer-protocol-name {
+            type string;
+            min-elements 2;
+            description "Provides the ordered structure of layer protocol transitions encapsulated in the TopologicalEntity. The ordering relates to the LinkPort role.";
+        }
+        description "Relevant for a Link that is formed by abstracting one or more LTPs (in a stack) to focus on the flow and deemphasize the protocol transformation.
+            This abstraction is relevant when considering multi-layer routing. 
+            The layer protocols of the LTP and the order of their application to the signal is still relevant and need to be accounted for. This is derived from the LTP spec details.
+            This Pac provides the relevant abstractions of the LTPs and provides the necessary association to the LTPs involved.
+            Links that included details in this Pac are often referred to as Transitional Links.";
+    }
+    grouping node-edge-point {
+        leaf layer-protocol-name {
+            type tapi-common:layer-protocol-name;
+            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 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-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";
+        }
+        leaf link-port-direction {
+            type tapi-common:port-direction;
+            config false;
+            description "The orientation of defined flow at the LinkEnd.";
+        }
+        leaf link-port-role {
+            type tapi-common:port-role;
+            config false;
+            description "Each LinkEnd of the Link has a role (e.g., symmetric, hub, spoke, leaf, root)  in the context of the Link with respect to the Link function. ";
+        }
+        uses tapi-common:resource-spec;
+        uses tapi-common:admin-state-pac;
+        uses tapi-common:termination-pac;
+        uses tapi-common:capacity-pac;
+        description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.
+            The structure of LTP supports all transport protocols including circuit and packet forms.";
+    }
+    grouping risk-parameter-pac {
+        list risk-characteristic {
+            key 'risk-characteristic-name';
+            config false;
+            min-elements 1;
+            uses risk-characteristic;
+            description "A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration.";
+        }
+        description "The risk characteristics of a TopologicalEntity come directly from the underlying physical realization.
+            The risk characteristics propagate from the physical realization to the client and from the server layer to the client layer, this propagation may be modified by protection.
+            A TopologicalEntity may suffer degradation or failure as a result of a problem in a part of the underlying realization.
+            The realization can be partitioned into segments which have some relevant common failure modes.
+            There is a risk of failure/degradation of each segment of the underlying realization.
+            Each segment is a part of a larger physical/geographical unit that behaves as one with respect to failure (i.e. a failure will have a high probability of impacting the whole unit (e.g. all cables in the same duct).
+            Disruptions to that larger physical/geographical unit will impact (cause failure/errors to) all TopologicalEntities that use any part of that larger physical/geographical entity.
+            Any TopologicalEntity that uses any part of that larger physical/geographical unit will suffer impact and hence each TopologicalEntity shares risk.
+            The identifier of each physical/geographical unit that is involved in the realization of each segment of a Topological entity can be listed in the RiskParameter_Pac of that TopologicalEntity.
+            A segment has one or more risk characteristic.
+            Shared risk between two TopologicalEntities compromises the integrity of any solution that use one of those TopologicalEntity as a backup for the other.
+            Where two TopologicalEntities have a common risk characteristic they have an elevated probability of failing simultaneously compared to two TopologicalEntities that do not share risk characteristics.";
+    }
+    grouping transfer-cost-pac {
+        list cost-characteristic {
+            key 'cost-name';
+            config false;
+            min-elements 1;
+            uses cost-characteristic;
+            description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";
+        }
+        description "The cost characteristics of a TopologicalEntity not necessarily correlated to the cost of the underlying physical realization.
+            They may be quite specific to the individual TopologicalEntity e.g. opportunity cost. Relates to layer capacity
+            There may be many perspectives from which cost may be considered  for a particular TopologicalEntity and hence many specific costs and potentially cost algorithms.
+            Using an entity will incur a cost. ";
+    }
+    grouping transfer-integrity-pac {
+        leaf error-characteristic {
+            type string;
+            config false;
+            description "Describes the degree to which the signal propagated can be errored.
+                Applies to TDM systems as the errored signal will be propagated and not packet as errored packets will be discarded.";
+        }
+        leaf loss-characteristic {
+            type string;
+            config false;
+            description "Describes the acceptable characteristic of lost packets where loss may result from discard due to errors or overflow.
+                Applies to packet systems and not TDM (as for TDM errored signals are propagated unless grossly errored and overflow/underflow turns into timing slips).";
+        }
+        leaf repeat-delivery-characteristic {
+            type string;
+            config false;
+            description "Primarily applies to packet systems where a packet may be delivered more than once (in fault recovery for example).
+                It can also apply to TDM where several frames may be received twice due to switching in a system with a large differential propagation delay.";
+        }
+        leaf delivery-order-characteristic {
+            type string;
+            config false;
+            description "Describes the degree to which packets will be delivered out of sequence.
+                Does not apply to TDM as the TDM protocols maintain strict order.";
+        }
+        leaf unavailable-time-characteristic {
+            type string;
+            config false;
+            description "Describes the duration for which there may be no valid signal propagated.";
+        }
+        leaf server-integrity-process-characteristic {
+            type string;
+            config false;
+            description "Describes the effect of any server integrity enhancement process on the characteristics of the TopologicalEntity.";
+        }
+        description "Transfer intergrity characteristic covers expected/specified/acceptable characteristic of degradation of the transfered signal.
+            It includes all aspects of possible degradation of signal content as well as any damage of any form to the total TopologicalEntity and to the carried signals.
+            Note that the statement is of total impact to the TopologicalEntity so any partial usage of the TopologicalEntity (e.g. a signal that does not use full capacity) will only suffer its portion of the impact.";
+    }
+    grouping transfer-timing-pac {
+        list latency-characteristic {
+            key 'traffic-property-name';
+            config false;
+            min-elements 1;
+            uses 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.";
+        }
+        description "A TopologicalEntity will suffer effects from the underlying physical realization related to the timing of the information passed by the TopologicalEntity.";
+    }
+    grouping validation-pac {
+        list validation-mechanism {
+            key 'validation-mechanism';
+            config false;
+            min-elements 1;
+            uses validation-mechanism;
+            description "Provides details of the specific validation mechanism(s) used to confirm the presence of an intended topologicalEntity.";
+        }
+        description "Validation covers the various adjacenct discovery and reachability verification protocols. Also may cover Information source and degree of integrity.";
+    }
+    grouping network-topology-service {
+        list topology {
+            uses topology-ref;
+            key 'topology-uuid';
+            config false;
+            description "none";
+        }
+        uses tapi-common:service-spec;
+        description "none";
+    }
+    grouping topology-context {
+        container nw-topology-service {
+            config false;
+            uses network-topology-service;
+            description "none";
+        }
+        list topology {
+            key 'uuid';
+            config false;
+            uses topology;
+            description "none";
+        }
+        description "none";
+    }
+    grouping inter-rule-group {
+        list rule {
+            key 'local-id';
+            min-elements 1;
+            uses rule;
+            description "none";
+        }
+        list associated-node-rule-group {
+            uses node-rule-group-ref;
+            key 'topology-uuid node-uuid node-rule-group-uuid';
+            min-elements 2;
+            description "none";
+        }
+        uses tapi-common:resource-spec;
+        uses tapi-common:capacity-pac;
+        uses transfer-cost-pac;
+        uses transfer-timing-pac;
+        uses risk-parameter-pac;
+        description "none";
+    }
+    grouping node-rule-group {
+        list rule {
+            key 'local-id';
+            min-elements 1;
+            uses rule;
+            description "none";
+        }
+        list node-edge-point {
+            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-uuid node-uuid node-rule-group-uuid';
+            description "none";
+        }
+        list inter-rule-group {
+            key 'uuid';
+            uses inter-rule-group;
+            description "none";
+        }
+        uses tapi-common:resource-spec;
+        uses tapi-common:capacity-pac;
+        uses transfer-cost-pac;
+        uses transfer-timing-pac;
+        uses risk-parameter-pac;
+        description "none";
+    }
+    grouping rule {
+        leaf rule-type {
+            type rule-type;
+            description "none";
+        }
+        leaf forwarding-rule {
+            type forwarding-rule;
+            description "none";
+        }
+        leaf override-priority {
+            type uint64;
+            description "none";
+        }
+        uses tapi-common:local-class;
+        description "none";
+    }
+
+   /**************************
+    * package type-definitions
+    **************************/
+    grouping cost-characteristic {
+        leaf cost-name {
+            type string;
+            description "The cost characteristic will related to some aspect of the TopologicalEntity (e.g. $ cost, routing weight). This aspect will be conveyed by the costName.";
+        }
+        leaf cost-value {
+            type string;
+            description "The specific cost.";
+        }
+        leaf cost-algorithm {
+            type string;
+            description "The cost may vary based upon some properties of the TopologicalEntity. The rules for the variation are conveyed by the costAlgorithm.";
+        }
+        description "The information for a particular cost characteristic.";
+    }
+    grouping latency-characteristic {
+        leaf traffic-property-name {
+            type string;
+            description "The identifier of the specific traffic property to which the queuing latency applies.";
+        }
+        leaf fixed-latency-characteristic {
+            type string;
+            config false;
+            description "A TopologicalEntity suffers delay caused by the realization of the servers (e.g. distance related; FEC encoding etc.) along with some client specific processing. This is the total average latency effect of the TopologicalEntity";
+        }
+        leaf queing-latency-characteristic {
+            type string;
+            description "The specific queuing latency for the traffic property.";
+        }
+        leaf jitter-characteristic {
+            type string;
+            config false;
+            description "High frequency deviation from true periodicity of a signal and therefore a small high rate of change of transfer latency.
+                Applies to TDM systems (and not packet).";
+        }
+        leaf wander-characteristic {
+            type string;
+            config false;
+            description "Low frequency deviation from true periodicity of a signal and therefore a small low rate of change of transfer latency.
+                Applies to TDM systems (and not packet).";
+        }
+        description "Provides information on latency characteristic for a particular stated trafficProperty.";
+    }
+    grouping risk-characteristic {
+        leaf risk-characteristic-name {
+            type string;
+            description "The name of the risk characteristic. The characteristic may be related to a specific degree of closeness.
+                For example a particular characteristic may apply to failures that are localized (e.g. to one side of a road) where as another characteristic may relate to failures that have a broader impact (e.g. both sides of a road that crosses a bridge).
+                Depending upon the importance of the traffic being routed different risk characteristics will be evaluated.";
+        }
+        leaf-list risk-identifier-list {
+            type string;
+            min-elements 1;
+            description "A list of the identifiers of each physical/geographic unit (with the specific risk characteristic) that is related to a segment of the TopologicalEntity.";
+        }
+        description "The information for a particular risk characteristic where there is a list of risk identifiers related to that characteristic.";
+    }
+    grouping validation-mechanism {
+        leaf validation-mechanism {
+            type string;
+            description "Name of mechanism used to validate adjacency";
+        }
+        leaf layer-protocol-adjacency-validated {
+            type string;
+            description "State of validatiion";
+        }
+        leaf validation-robustness {
+            type string;
+            description "Quality of validation (i.e. how likely is the stated validation to be invalid)";
+        }
+        description "Identifies the validation mechanism and describes the characteristics of that mechanism";
+    }
+    typedef forwarding-rule {
+        type enumeration {
+            enum MAY_FORWARD_ACROSS_GROUP {
                 description "none";
             }
-            list topology {
-                key 'uuid';
-                config false;
+            enum MUST_FORWARD_ACROSS_GROUP {
+                description "none";
+            }
+            enum CANNOT_FORWARD_ACROSS_GROUP {
+                description "none";
+            }
+            enum NO_STATEMENT_ON_FORWARDING {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    typedef rule-type {
+        type enumeration {
+            enum FORWARDING {
+                description "none";
+            }
+            enum CAPACITY {
+                description "none";
+            }
+            enum COST {
+                description "none";
+            }
+            enum TIMING {
+                description "none";
+            }
+            enum RISK {
+                description "none";
+            }
+            enum GROUPING {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    grouping resilience-type {
+        leaf restoration-policy {
+            type restoration-policy;
+            description "none";
+        }
+        leaf protection-type {
+            type protection-type;
+            description "none";
+        }
+        description "none";
+    }
+    typedef restoration-policy {
+        type enumeration {
+            enum PER_DOMAIN_RESTORATION {
+                description "none";
+            }
+            enum END_TO_END_RESTORATION {
+                description "none";
+            }
+            enum NA {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    typedef protection-type {
+        type enumeration {
+            enum NO_PROTECTON {
+                description "none";
+            }
+            enum ONE_PLUS_ONE_PROTECTION {
+                description "none";
+            }
+            enum ONE_PLUS_ONE_PROTECTION_WITH_DYNAMIC_RESTORATION {
+                description "none";
+            }
+            enum PERMANENT_ONE_PLUS_ONE_PROTECTION {
+                description "none";
+            }
+            enum ONE_FOR_ONE_PROTECTION {
+                description "none";
+            }
+            enum DYNAMIC_RESTORATION {
+                description "none";
+            }
+            enum PRE_COMPUTED_RESTORATION {
+                description "none";
+            }
+        }
+        description "none";
+    }
+
+   /**************************
+    * package interfaces
+    **************************/
+    rpc get-topology-details {
+        description "none";
+        input {
+            leaf topology-id-or-name {
+                type string;
+                description "none";
+            }
+        }
+        output {
+            container topology {
                 uses topology;
                 description "none";
             }
-            description "none";
         }
-        grouping inter-rule-group {
-            list rule {
-                key 'local-id';
-                min-elements 1;
-                uses rule;
+    }
+    rpc get-node-details {
+        description "none";
+        input {
+            leaf topology-id-or-name {
+                type string;
                 description "none";
             }
-            list associated-node-rule-group {
-                uses node-rule-group-ref;
-                key 'topology-uuid node-uuid node-rule-group-uuid';
-                min-elements 2;
+            leaf node-id-or-name {
+                type string;
                 description "none";
             }
-            uses tapi-common:resource-spec;
-            uses tapi-common:capacity-pac;
-            uses transfer-cost-pac;
-            uses transfer-timing-pac;
-            uses risk-parameter-pac;
-            description "none";
         }
-        grouping node-rule-group {
-            list rule {
-                key 'local-id';
-                min-elements 1;
-                uses rule;
+        output {
+            container node {
+                uses node;
                 description "none";
             }
-            list node-edge-point {
-            	uses node-edge-point-ref;
-                key 'topology-uuid node-uuid node-edge-point-uuid';
-                min-elements 1;
+        }
+    }
+    rpc get-node-edge-point-details {
+        description "none";
+        input {
+            leaf topology-id-or-name {
+                type string;
                 description "none";
             }
-            list composed-rule-group {
-                uses node-rule-group-ref;
-                key 'topology-uuid node-uuid node-rule-group-uuid';
+            leaf node-id-or-name {
+                type string;
                 description "none";
             }
-            list inter-rule-group {
+            leaf ep-id-or-name {
+                type string;
+                description "none";
+            }
+        }
+        output {
+            container node-edge-point {
+                uses node-edge-point;
+                description "none";
+            }
+        }
+    }
+    rpc get-link-details {
+        description "none";
+        input {
+            leaf topology-id-or-name {
+                type string;
+                description "none";
+            }
+            leaf link-id-or-name {
+                type string;
+                description "none";
+            }
+        }
+        output {
+            container link {
+                uses link;
+                description "none";
+            }
+        }
+    }
+    rpc get-topology-list {
+        description "none";
+        output {
+            list topology {
                 key 'uuid';
-                uses inter-rule-group;
+                uses topology;
                 description "none";
             }
-            uses tapi-common:resource-spec;
-            uses tapi-common:capacity-pac;
-            uses transfer-cost-pac;
-            uses transfer-timing-pac;
-            uses risk-parameter-pac;
-            description "none";
         }
-        grouping rule {
-            leaf rule-type {
-                type rule-type;
-                description "none";
-            }
-            leaf forwarding-rule {
-                type forwarding-rule;
-                description "none";
-            }
-            leaf override-priority {
-                type uint64;
-                description "none";
-            }
-            uses tapi-common:local-class;
-            description "none";
-        }
-
-    /***********************
-    * package type-definitions
-    **********************/ 
-        grouping cost-characteristic {
-            leaf cost-name {
-                type string;
-                description "The cost characteristic will related to some aspect of the TopologicalEntity (e.g. $ cost, routing weight). This aspect will be conveyed by the costName.";
-            }
-            leaf cost-value {
-                type string;
-                description "The specific cost.";
-            }
-            leaf cost-algorithm {
-                type string;
-                description "The cost may vary based upon some properties of the TopologicalEntity. The rules for the variation are conveyed by the costAlgorithm.";
-            }
-            description "The information for a particular cost characteristic.";
-        }
-        grouping latency-characteristic {
-            leaf traffic-property-name {
-                type string;
-                description "The identifier of the specific traffic property to which the queuing latency applies.";
-            }
-            leaf fixed-latency-characteristic {
-                type string;
-                config false;
-                description "A TopologicalEntity suffers delay caused by the realization of the servers (e.g. distance related; FEC encoding etc.) along with some client specific processing. This is the total average latency effect of the TopologicalEntity";
-            }
-            leaf queing-latency-characteristic {
-                type string;
-                description "The specific queuing latency for the traffic property.";
-            }
-            leaf jitter-characteristic {
-                type string;
-                config false;
-                description "High frequency deviation from true periodicity of a signal and therefore a small high rate of change of transfer latency.
-                    Applies to TDM systems (and not packet).";
-            }
-            leaf wander-characteristic {
-                type string;
-                config false;
-                description "Low frequency deviation from true periodicity of a signal and therefore a small low rate of change of transfer latency.
-                    Applies to TDM systems (and not packet).";
-            }
-            description "Provides information on latency characteristic for a particular stated trafficProperty.";
-        }
-        grouping risk-characteristic {
-            leaf risk-characteristic-name {
-                type string;
-                description "The name of the risk characteristic. The characteristic may be related to a specific degree of closeness. 
-                    For example a particular characteristic may apply to failures that are localized (e.g. to one side of a road) where as another characteristic may relate to failures that have a broader impact (e.g. both sides of a road that crosses a bridge).
-                    Depending upon the importance of the traffic being routed different risk characteristics will be evaluated.";
-            }
-            leaf-list risk-identifier-list {
-                type string;
-                min-elements 1;
-                description "A list of the identifiers of each physical/geographic unit (with the specific risk characteristic) that is related to a segment of the TopologicalEntity.";
-            }
-            description "The information for a particular risk characteristic where there is a list of risk identifiers related to that characteristic.";
-        }
-        grouping validation-mechanism {
-            leaf validation-mechanism {
-                type string;
-                description "Name of mechanism used to validate adjacency";
-            }
-            leaf layer-protocol-adjacency-validated {
-                type string;
-                description "State of validatiion";
-            }
-            leaf validation-robustness {
-                type string;
-                description "Quality of validation (i.e. how likely is the stated validation to be invalid)";
-            }
-            description "Identifies the validation mechanism and describes the characteristics of that mechanism";
-        }
-        typedef forwarding-rule {
-            type enumeration {
-                enum MAY_FORWARD_ACROSS_GROUP {
-                    description "none";
-                }
-                enum MUST_FORWARD_ACROSS_GROUP {
-                    description "none";
-                }
-                enum CANNOT_FORWARD_ACROSS_GROUP {
-                    description "none";
-                }
-                enum NO_STATEMENT_ON_FORWARDING {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef rule-type {
-            type enumeration {
-                enum FORWARDING {
-                    description "none";
-                }
-                enum CAPACITY {
-                    description "none";
-                }
-                enum COST {
-                    description "none";
-                }
-                enum TIMING {
-                    description "none";
-                }
-                enum RISK {
-                    description "none";
-                }
-                enum GROUPING {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        grouping resilience-type {
-            leaf restoration-policy {
-                type restoration-policy;
-                description "none";
-            }
-            leaf protection-type {
-                type protection-type;
-                description "none";
-            }
-            description "none";
-        }
-        typedef restoration-policy {
-            type enumeration {
-                enum PER_DOMAIN_RESTORATION {
-                    description "none";
-                }
-                enum END_TO_END_RESTORATION {
-                    description "none";
-                }
-                enum NA {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef protection-type {
-            type enumeration {
-                enum NO_PROTECTON {
-                    description "none";
-                }
-                enum ONE_PLUS_ONE_PROTECTION {
-                    description "none";
-                }
-                enum ONE_PLUS_ONE_PROTECTION_WITH_DYNAMIC_RESTORATION {
-                    description "none";
-                }
-                enum PERMANENT_ONE_PLUS_ONE_PROTECTION {
-                    description "none";
-                }
-                enum ONE_FOR_ONE_PROTECTION {
-                    description "none";
-                }
-                enum DYNAMIC_RESTORATION {
-                    description "none";
-                }
-                enum PRE_COMPUTED_RESTORATION {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-
-    /***********************
-    * package interfaces
-    **********************/ 
-        rpc get-topology-details {
-            description "none";
-            input {
-                leaf topology-id-or-name {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                container topology {
-                    uses topology;
-                    description "none";
-                }
-            }
-        }
-        rpc get-node-details {
-            description "none";
-            input {
-                leaf topology-id-or-name {
-                    type string;
-                    description "none";
-                }
-                leaf node-id-or-name {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                container node {
-                    uses node;
-                    description "none";
-                }
-            }
-        }
-        rpc get-node-edge-point-details {
-            description "none";
-            input {
-                leaf topology-id-or-name {
-                    type string;
-                    description "none";
-                }
-                leaf node-id-or-name {
-                    type string;
-                    description "none";
-                }
-                leaf ep-id-or-name {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                container node-edge-point {
-                    uses node-edge-point;
-                    description "none";
-                }
-            }
-        }
-        rpc get-link-details {
-            description "none";
-            input {
-                leaf topology-id-or-name {
-                    type string;
-                    description "none";
-                }
-                leaf link-id-or-name {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                container link {
-                    uses link;
-                    description "none";
-                }
-            }
-        }
-        rpc get-topology-list {
-            description "none";
-            output {
-                list topology {
-                	key 'uuid';
-                    uses topology;
-                    description "none";
-                }
-            }
-        }
-
+    }
 }
diff --git a/models/tapi/src/main/yang/tapi-virtual-network@2018-10-16.yang b/models/tapi/src/main/yang/tapi-virtual-network@2018-10-16.yang
old mode 100644
new mode 100755
index 6e87288..8ab1bb4
--- a/models/tapi/src/main/yang/tapi-virtual-network@2018-10-16.yang
+++ b/models/tapi/src/main/yang/tapi-virtual-network@2018-10-16.yang
@@ -32,28 +32,28 @@
             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
+        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" {
@@ -63,9 +63,10 @@
         }
         description "Augments the base TAPI Context with VirtualNetworkService information";
     }
-    /*************************
+
+    /**************************
      * definitions of refrences
-     *************************/
+     **************************/
      grouping virtual-nw-service-ref {
          leaf virtual-nw-service-uuid {
              type leafref {
@@ -75,193 +76,192 @@
          }
          description "none";
      }
-     
-    /***********************
-    * package object-classes
-    **********************/ 
-        grouping virtual-network-constraint {
-            container src-service-end-point {
-                uses tapi-common:service-interface-point-ref;
-                config false;
-                description "none";
-            }
-            container sink-service-end-point {
-            	uses tapi-common:service-interface-point-ref;
-                config false;
-                description "none";
-            }
-            list diversity-exclusion {
-                uses virtual-nw-service-ref;
-                key 'virtual-nw-service-uuid';
-                config false;
-                description "none";
-            }
-            container requested-capacity {
-                uses tapi-common:capacity;
-                description "none";
-            }
-            leaf service-level {
-                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-list service-layer {
-                type tapi-common:layer-protocol-name;
-                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.";
-            }
-            uses tapi-common:local-class;
-            description "none";
-        }
-        grouping virtual-network-service {
-            container topology {
-                uses tapi-topology:topology-ref;
-                config false;
-                description "none";
-            }
-            list end-point {
-                key 'local-id';
-                min-elements 2;
-                uses virtual-network-service-end-point;
-                description "none";
-            }
-            list vnw-constraint {
-                key 'local-id';
-                min-elements 1;
-                uses virtual-network-constraint;
-                description "none";
-            }
-            leaf schedule {
-                type string;
-                description "none";
-            }
-            container state {
-                uses tapi-common:admin-state-pac;
-                description "none";
-            }
-            leaf-list layer-protocol-name {
-                type tapi-common:layer-protocol-name;
-                min-elements 1;
-                description "none";
-            }
-            uses tapi-common:service-spec;
-            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.";
-        }
-        grouping virtual-network-service-end-point {
-            container service-interface-point {
-            	uses tapi-common:service-interface-point-ref;
-                config false;
-                description "none";
-            }
-            leaf role {
-                type tapi-common:port-role;
-                config false;
-                description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";
-            }
-            leaf direction {
-                type tapi-common:port-direction;
-                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. 
-                The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.  
-                In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC. 
-                It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
-                The EP replaces the Protection Unit of a traditional protection model. 
-                The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
-        }
-        grouping virtual-network-context {
-            list virtual-nw-service {
-                key 'uuid';
-                uses virtual-network-service;
-                description "none";
-            }
-            description "none";
-        }
 
-    /***********************
-    * package interfaces
-    **********************/ 
-        rpc create-virtual-network-service {
-            description "none";
-            input {
-                list sep {
-                	key 'local-id';
-                    min-elements 2;
-                    uses virtual-network-service-end-point;
-                    description "none";
-                }
-                container vnw-constraint {
-                    uses virtual-network-constraint;
-                    description "none";
-                }
-                leaf conn-schedule {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                container service {
-                    uses virtual-network-service;
-                    description "none";
-                }
-            }
-        }
-        rpc delete-virtual-network-service {
-            description "none";
-            input {
-                leaf service-id-or-name {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                container service {
-                    uses virtual-network-service;
-                    description "none";
-                }
-            }
-        }
-        rpc get-virtual-network-service-details {
-            description "none";
-            input {
-                leaf service-id-or-name {
-                    type string;
-                    description "none";
-                }
-            }
-            output {
-                container service {
-                    uses virtual-network-service;
-                    description "none";
-                }
-            }
-        }
-        rpc get-virtual-network-service-list {
-            description "none";
-            output {
-                list service {
-                	key 'uuid';
-                    uses virtual-network-service;
-                    description "none";
-                }
-            }
-        }
+    /**************************
+     * package object-classes
+     **************************/
+     grouping virtual-network-constraint {
+         container src-service-end-point {
+             uses tapi-common:service-interface-point-ref;
+             config false;
+             description "none";
+         }
+         container sink-service-end-point {
+             uses tapi-common:service-interface-point-ref;
+             config false;
+             description "none";
+         }
+         list diversity-exclusion {
+             uses virtual-nw-service-ref;
+             key 'virtual-nw-service-uuid';
+             config false;
+             description "none";
+         }
+         container requested-capacity {
+             uses tapi-common:capacity;
+             description "none";
+         }
+         leaf service-level {
+             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-list service-layer {
+             type tapi-common:layer-protocol-name;
+             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.";
+         }
+         uses tapi-common:local-class;
+         description "none";
+     }
+     grouping virtual-network-service {
+         container topology {
+             uses tapi-topology:topology-ref;
+             config false;
+             description "none";
+         }
+         list end-point {
+             key 'local-id';
+             min-elements 2;
+             uses virtual-network-service-end-point;
+             description "none";
+         }
+         list vnw-constraint {
+             key 'local-id';
+             min-elements 1;
+             uses virtual-network-constraint;
+             description "none";
+         }
+         leaf schedule {
+             type string;
+             description "none";
+         }
+         container state {
+             uses tapi-common:admin-state-pac;
+             description "none";
+         }
+         leaf-list layer-protocol-name {
+             type tapi-common:layer-protocol-name;
+             min-elements 1;
+             description "none";
+         }
+         uses tapi-common:service-spec;
+         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.";
+     }
+     grouping virtual-network-service-end-point {
+         container service-interface-point {
+             uses tapi-common:service-interface-point-ref;
+             config false;
+             description "none";
+         }
+         leaf role {
+             type tapi-common:port-role;
+             config false;
+             description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";
+         }
+         leaf direction {
+             type tapi-common:port-direction;
+             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.
+             The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.
+             In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC. 
+             It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
+             The EP replaces the Protection Unit of a traditional protection model.
+             The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
+     }
+     grouping virtual-network-context {
+         list virtual-nw-service {
+             key 'uuid';
+             uses virtual-network-service;
+             description "none";
+         }
+         description "none";
+     }
 
+    /**************************
+     * package interfaces
+     **************************/
+     rpc create-virtual-network-service {
+         description "none";
+         input {
+             list sep {
+                 key 'local-id';
+                 min-elements 2;
+                 uses virtual-network-service-end-point;
+                 description "none";
+             }
+             container vnw-constraint {
+                 uses virtual-network-constraint;
+                 description "none";
+             }
+             leaf conn-schedule {
+                 type string;
+                 description "none";
+             }
+         }
+         output {
+             container service {
+                 uses virtual-network-service;
+                 description "none";
+             }
+         }
+     }
+     rpc delete-virtual-network-service {
+         description "none";
+         input {
+             leaf service-id-or-name {
+                 type string;
+                 description "none";
+             }
+         }
+         output {
+             container service {
+                 uses virtual-network-service;
+                 description "none";
+             }
+         }
+     }
+     rpc get-virtual-network-service-details {
+         description "none";
+         input {
+             leaf service-id-or-name {
+                 type string;
+                 description "none";
+             }
+         }
+         output {
+             container service {
+                 uses virtual-network-service;
+                 description "none";
+             }
+         }
+     }
+     rpc get-virtual-network-service-list {
+         description "none";
+         output {
+             list service {
+                 key 'uuid';
+                 uses virtual-network-service;
+                 description "none";
+             }
+         }
+     }
 }
