diff --git a/models/tapi/src/main/yang/tapi-connectivity@2018-03-07.yang b/models/tapi/src/main/yang/tapi-connectivity@2018-03-07.yang
new file mode 100644
index 0000000..5a03060
--- /dev/null
+++ b/models/tapi/src/main/yang/tapi-connectivity@2018-03-07.yang
@@ -0,0 +1,781 @@
+module tapi-connectivity {
+    namespace "urn:onf:otcc:yang:tapi-connectivity";
+    prefix tapi-connectivity;
+    import tapi-common {
+        prefix tapi-common;
+    }
+    import tapi-topology {
+        prefix tapi-topology;
+    }
+    import tapi-path-computation {
+        prefix tapi-path-computation;
+    }
+    organization "ONF OTCC (Open Transport Configuration & Control) Project";
+    contact "
+        Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
+        Project List: <mailto:transport-api@opennetworking.org>
+        Editor: Karthik Sethuraman
+                <mailto:karthik.sethuraman@necam.com>";
+    description "
+        This module contains TAPI Connectivity Model definitions.
+        Source: TapiConnectivity.uml
+        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
+        License: This module is distributed under the Apache License 2.0";
+    revision 2018-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 version .
+        <https://wiki.opennetworking.org/display/OIMT/IISOMI>
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/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/TAPI/tree/develop/UML>";
+    }
+    augment "/tapi-common:context" {
+        uses connectivity-context;
+        description "Augments the base TAPI Context with ConnectivityService information";
+    }
+    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
+        uses cep-list;
+        description "none";
+    }
+
+    /*************************
+    * definitions of refrences
+    *************************/
+    grouping connectivity-service-ref {
+        leaf connectivity-service-id {
+            type leafref {
+                path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';
+            }
+        }
+    }
+
+    grouping connection-end-point-ref {
+        uses tapi-topology:owned-node-edge-point-ref;
+        leaf connection-end-point-id {
+            type leafref {
+                path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
+            }
+        }
+    }
+
+    grouping connection-ref {
+        leaf connection-id {
+            type leafref {
+                path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:uuid';
+            }
+        }
+    }
+
+    grouping switch-control-ref {
+        uses connection-ref;
+        leaf switch-control-id {
+            type leafref {
+                path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:switch-control/tapi-connectivity:uuid';
+            }
+        }
+    }
+
+    /***********************
+    * package object-classes
+    **********************/
+        grouping connection {
+            list connection-end-point {
+                uses connection-end-point-ref;
+                key 'topology-id node-id owned-node-edge-point-id connection-end-point-id';
+                config false;
+                min-elements 2;
+                description "none";
+            }
+            leaf-list lower-connection {
+                type leafref {
+                    path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:uuid';
+                }
+                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 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 connectivity-service-end-point {
+                type leafref {
+                    path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point/tapi-connectivity:local-id';
+                }
+                description "none";
+            }
+            list parent-node-edge-point {
+                uses tapi-topology:owned-node-edge-point-ref;
+                key 'topology-id node-id owned-node-edge-point-id';
+                config false;
+                min-elements 1;
+                description "none";
+            }
+            list client-node-edge-point {
+                uses tapi-topology:owned-node-edge-point-ref;
+                key 'topology-id node-id owned-node-edge-point-id';
+                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-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";
+            }
+            leaf is-exclusive {
+                type boolean;
+                default "true";
+                description "To distinguish if the resources are exclusive to the service  - for example between EPL(isExclusive=true) and EVPL (isExclusive=false), or between EPLAN (isExclusive=true) and EVPLAN (isExclusive=false)";
+            }
+            container requested-capacity {
+                uses tapi-common:capacity;
+                description "none";
+            }
+            container schedule {
+                uses tapi-common:time-range;
+                description "none";
+            }
+            list cost-characteristic {
+                key 'cost-name';
+                uses tapi-topology:cost-characteristic;
+                description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";
+            }
+            list latency-characteristic {
+                key 'traffic-property-name';
+                uses tapi-topology:latency-characteristic;
+                description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";
+            }
+            leaf coroute-inclusion {
+                type leafref {
+                    path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';
+                }
+                description "none";
+            }
+            list diversity-exclusion {
+                uses connectivity-service-ref;
+                key 'connectivity-service-id';
+                description "none";
+            }
+            uses route-compute-policy;
+            description "none";
+        }
+        grouping connectivity-service {
+            list end-point {
+                key 'local-id';
+                min-elements 2;
+                uses connectivity-service-end-point;
+                description "none";
+            }
+            leaf-list connection {
+                type leafref {
+                    path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:uuid';
+                }
+                config false;
+                description "none";
+            }
+            leaf direction {
+                type tapi-common:forwarding-direction;
+                description "none";
+            }
+            leaf layer-protocol-name {
+                type tapi-common:layer-protocol-name;
+                description "none";
+            }
+            uses tapi-common:service-spec;
+            uses connectivity-constraint;
+            uses topology-constraint;
+            uses tapi-common:admin-state-pac;
+            uses resilience-constraint;
+            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";
+            }
+            container service-interface-point {
+                uses tapi-common:service-interface-point-ref;
+                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 {
+            leaf-list connection-end-point {
+                type leafref {
+                    path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
+                }
+                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-id node-id owned-node-edge-point-id connection-end-point-id';
+                min-elements 1;
+                description "none";
+            }
+            leaf-list selected-route {
+                type leafref {
+                    path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:route/tapi-connectivity: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-id switch-control-id';
+                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 layer-protocol {
+                type tapi-common:layer-protocol-name;
+                description "Indicate which layer this resilience parameters package configured for.";
+            }
+            description "A list of control parameters to apply to a switch.";
+        }
+        grouping topology-constraint {
+            list include-topology {
+                uses tapi-topology:topology-ref;
+                key 'topology-id';
+                config false;
+                description "none";
+            }
+            list avoid-topology {
+                uses tapi-topology:topology-ref;
+                key 'topology-id';
+                config false;
+                description "none";
+            }
+            list include-path {
+                uses tapi-path-computation:path-ref;
+                key 'path-id';
+                config false;
+                description "none";
+            }
+            list exclude-path {
+                uses tapi-path-computation:path-ref;
+                key 'path-id';
+                config false;
+                description "none";
+            }
+            list include-link {
+                uses tapi-topology:link-ref;
+                key 'topology-id link-id';
+                config false;
+                description "This is a loose constraint - that is it is unordered and could be a partial list ";
+            }
+            list exclude-link {
+                uses tapi-topology:link-ref;
+                key 'topology-id link-id';
+                config false;
+                description "none";
+            }
+            list include-node {
+                uses tapi-topology:node-ref;
+                key 'topology-id node-id';
+                config false;
+                description "This is a loose constraint - that is it is unordered and could be a partial list";
+            }
+            list exclude-node {
+                uses tapi-topology:node-ref;
+                key 'topology-id node-id';
+                config false;
+                description "none";
+            }
+            leaf-list preferred-transport-layer {
+                type tapi-common:layer-protocol-name;
+                config false;
+                description "soft constraint requested by client to indicate the layer(s) of transport connection that it prefers to carry the service. This could be same as the service layer or one of the supported server layers";
+            }
+            description "none";
+        }
+        grouping cep-list {
+            list connection-end-point {
+                key 'uuid';
+                uses connection-end-point;
+                description "none";
+            }
+            description "none";
+        }
+        grouping route-compute-policy {
+            leaf route-objective-function {
+                type route-objective-function;
+                description "none";
+            }
+            leaf diversity-policy {
+                type diversity-policy;
+                description "none";
+            }
+            description "none";
+        }
+
+    /***********************
+    * package type-definitions
+    **********************/ 
+        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 route-objective-function {
+            type enumeration {
+                enum MIN_WORK_ROUTE_HOP {
+                    description "none";
+                }
+                enum MIN_WORK_ROUTE_COST {
+                    description "none";
+                }
+                enum MIN_WORK_ROUTE_LATENCY {
+                    description "none";
+                }
+                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_HOP {
+                    description "none";
+                }
+                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_COST {
+                    description "none";
+                }
+                enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_LATENCY {
+                    description "none";
+                }
+                enum LOAD_BALANCE_MAX_UNUSED_CAPACITY {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        typedef diversity-policy {
+            type enumeration {
+                enum SRLG {
+                    description "none";
+                }
+                enum SRNG {
+                    description "none";
+                }
+                enum SNG {
+                    description "none";
+                }
+                enum NODE {
+                    description "none";
+                }
+                enum LINK {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        typedef protection-role {
+            type enumeration {
+                enum WORK {
+                    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 service-id-or-name {
+                    type string;
+                    description "none";
+                }
+                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 {
+                    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 conn-constraint {
+                    uses connectivity-constraint;
+                    description "none";
+                }
+                container topo-constraint {
+                    uses topology-constraint;
+                    description "none";
+                }
+                list 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";
+                }
+                container end-point {
+                    uses connectivity-service-end-point;
+                    description "none";
+                }
+                container conn-constraint {
+                    uses connectivity-constraint;
+                    description "none";
+                }
+                container topo-constraint {
+                    uses topology-constraint;
+                    description "none";
+                }
+                list 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";
+                }
+            }
+            output {
+                container service {
+                    uses connectivity-service;
+                    description "none";
+                }
+            }
+        }
+
+}
