diff --git a/models/tapi/src/main/yang/tapi-odu@2018-12-10.yang b/models/tapi/src/main/yang/tapi-odu@2018-12-10.yang
new file mode 100755
index 0000000..8d104b9
--- /dev/null
+++ b/models/tapi/src/main/yang/tapi-odu@2018-12-10.yang
@@ -0,0 +1,716 @@
+module tapi-odu {
+    namespace "urn:onf:otcc:yang:tapi-odu";
+    prefix tapi-odu;
+    import tapi-common {
+        prefix tapi-common;
+    }
+    import tapi-connectivity {
+        prefix tapi-connectivity;
+    }
+    import tapi-topology {
+        prefix tapi-topology;
+    }
+    import tapi-oam {
+        prefix tapi-oam;
+    }
+    import tapi-dsr {
+        prefix tapi-dsr;
+    }
+    organization "ONF OTCC (Open Transport Configuration & Control) Project";
+    contact "
+         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
+         Project List: <mailto:transport-api@opennetworking.org>
+         Editor: Karthik Sethuraman
+                 <mailto:karthik.sethuraman@necam.com>";
+    description "
+        This module contains TAPI Odu Model definitions.
+        Source: TapiOdu.uml
+        - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK.
+        - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]
+          <https://github.com/OpenNetworkingFoundation/EagleUmlYang>
+          and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]
+          <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>
+        - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.
+          As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.
+        - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.
+          The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.
+          YANG models included in this release may not be backward compatible with previous TAPI releases.
+        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
+        License: This module is distributed under the Apache License 2.0";
+    revision 2018-12-10 {
+        description "ONF Transport API version 2.1.1.
+                   Changes included in this TAPI release (v2.1.1) are listed in
+                   <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.1.md>";
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
+    }
+    revision 2018-10-16 {
+        description "ONF Transport API version 2.1.0.
+                   Changes included in this TAPI release (v2.1.0) are listed in
+                   <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
+    }
+    revision 2018-03-07 {
+        description "ONF Transport API version 2.0.2
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
+    }
+    revision 2018-02-16 {
+        description "ONF Transport API version 2.0.1
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";
+    }
+    revision 2018-01-02 {
+        description "ONF Transport API version 2.0.0
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";
+    }
+    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
+        container odu-node-edge-point-spec {
+            uses odu-node-edge-point-spec;
+            description "Augments the base LayerProtocol information in NodeEdgePoint with ODU-specific information";
+        }
+        description "Augments the base LayerProtocol information in NodeEdgePoint with ODU-specific information";
+    }
+    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point" {
+        container odu-connection-end-point-spec {
+            uses odu-connection-end-point-spec;
+            description "none";
+        }
+        description "none";
+    }
+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:mep" {
+        container odu-connection-end-point-spec {
+            uses odu-connection-end-point-spec;
+            description "none";
+        }
+        description "none";
+    }
+    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:mip" {
+        container odu-mip-spec {
+            uses odu-mip-spec;
+            description "none";
+        }
+        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-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";
+        }
+        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";
+        }
+        description "none";
+    }
+    grouping odu-node-edge-point-spec {
+        container odu-pool {
+            config false;
+            uses odu-pool-pac;
+            description "none";
+        }
+        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";
+        }
+        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";
+        }
+        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-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 {
+        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";
+        }
+        leaf hex-payload-type {
+            type uint64;
+            description "none";
+        }
+        description "none";
+    }
+    typedef odu-named-payload-type {
+        type enumeration {
+            enum UNKNOWN {
+                description "none";
+            }
+            enum UNINTERPRETABLE {
+                description "none";
+            }
+        }
+        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";
+        }
+        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";
+        }
+        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";
+    }
+}
