diff --git a/models/tapi/src/main/yang/tapi-odu@2018-02-16.yang b/models/tapi/src/main/yang/tapi-odu@2018-02-16.yang
new file mode 100644
index 0000000..9e2dd32
--- /dev/null
+++ b/models/tapi/src/main/yang/tapi-odu@2018-02-16.yang
@@ -0,0 +1,651 @@
+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;
+    }
+    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
+        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
+        License: This module is distributed under the Apache License 2.0";
+    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 version .
+        <https://wiki.opennetworking.org/display/OIMT/IISOMI>
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/Snowmass-ONFOpenTransport/blob/develop/change-log.md>";
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/Snowmass-ONFOpenTransport/tree/develop/UML>";
+    }
+    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
+        uses odu-node-edge-point-spec;
+        description "Augments the base LayerProtocol information in NodeEdgePoint with ODU-specific information";
+    }
+    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point" {
+        uses odu-connection-end-point-spec;
+        description "none";
+    }
+    augment "/tapi-common:context/tapi-oam:meg/tapi-oam:mep" {
+        uses odu-connection-end-point-spec;
+        description "none";
+    }
+    augment "/tapi-common:context/tapi-oam:meg/tapi-oam:mip" {
+        uses odu-mip-spec;
+        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 string;
+                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
+    **********************/ 
+        typedef odu-type {
+            type enumeration {
+                enum ODU0 {
+                    description "none";
+                }
+                enum ODU1 {
+                    description "none";
+                }
+                enum ODU2 {
+                    description "none";
+                }
+                enum ODU2E {
+                    description "none";
+                }
+                enum ODU3 {
+                    description "none";
+                }
+                enum ODU4 {
+                    description "none";
+                }
+                enum ODU_FLEX {
+                    description "none";
+                }
+                enum ODU_CN {
+                    description "none";
+                }
+            }
+            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";
+        }
+
+}
