diff --git a/apps/l3vpn/yangmodel/src/main/yang/ietf-inet-types.yang b/apps/l3vpn/yangmodel/src/main/yang/ietf-inet-types.yang
new file mode 100755
index 0000000..51a44a3
--- /dev/null
+++ b/apps/l3vpn/yangmodel/src/main/yang/ietf-inet-types.yang
@@ -0,0 +1,454 @@
+  module ietf-inet-types {
+
+    yang-version 1;
+
+    namespace
+      "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+
+    prefix inet;
+
+    organization
+      "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+    contact
+      "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+    description
+      "This module contains a collection of generally useful derived
+    YANG data types for Internet addresses and related things.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+    revision "2013-07-15" {
+      description
+        "This revision adds the following new data types:
+      - ip-address-no-zone
+      - ipv4-address-no-zone
+      - ipv6-address-no-zone";
+      reference
+        "RFC 6991: Common YANG Data Types";
+
+    }
+
+    revision "2010-09-24" {
+      description "Initial revision.";
+      reference
+        "RFC 6021: Common YANG Data Types";
+
+    }
+
+
+    typedef ip-version {
+      type enumeration {
+        enum "unknown" {
+          value 0;
+          description
+            "An unknown or unspecified version of the Internet
+          protocol.";
+        }
+        enum "ipv4" {
+          value 1;
+          description
+            "The IPv4 protocol as defined in RFC 791.";
+        }
+        enum "ipv6" {
+          value 2;
+          description
+            "The IPv6 protocol as defined in RFC 2460.";
+        }
+      }
+      description
+        "This value represents the version of the IP protocol.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetVersion textual convention of the SMIv2.";
+      reference
+        "RFC  791: Internet Protocol
+         RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+         RFC 4001: Textual Conventions for Internet Network Addresses";
+
+    }
+
+    typedef dscp {
+      type uint8 {
+        range "0..63";
+      }
+      description
+        "The dscp type represents a Differentiated Services Code Point
+      that may be used for marking packets in a traffic stream.
+      In the value set and its semantics, this type is equivalent
+      to the Dscp textual convention of the SMIv2.";
+      reference
+        "RFC 3289: Management Information Base for the Differentiated
+        	  Services Architecture
+         RFC 2474: Definition of the Differentiated Services Field
+        	  (DS Field) in the IPv4 and IPv6 Headers
+         RFC 2780: IANA Allocation Guidelines For Values In
+        	  the Internet Protocol and Related Headers";
+
+    }
+
+    typedef ipv6-flow-label {
+      type uint32 {
+        range "0..1048575";
+      }
+      description
+        "The ipv6-flow-label type represents the flow identifier or Flow
+      Label in an IPv6 packet header that may be used to
+      discriminate traffic flows.
+
+      In the value set and its semantics, this type is equivalent
+      to the IPv6FlowLabel textual convention of the SMIv2.";
+      reference
+        "RFC 3595: Textual Conventions for IPv6 Flow Label
+         RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
+
+    }
+
+    typedef port-number {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "The port-number type represents a 16-bit port number of an
+      Internet transport-layer protocol such as UDP, TCP, DCCP, or
+      SCTP.  Port numbers are assigned by IANA.  A current list of
+      all assignments is available from <http://www.iana.org/>.
+
+      Note that the port number value zero is reserved by IANA.  In
+      situations where the value zero does not make sense, it can
+      be excluded by subtyping the port-number type.
+      In the value set and its semantics, this type is equivalent
+      to the InetPortNumber textual convention of the SMIv2.";
+      reference
+        "RFC  768: User Datagram Protocol
+         RFC  793: Transmission Control Protocol
+         RFC 4960: Stream Control Transmission Protocol
+         RFC 4340: Datagram Congestion Control Protocol (DCCP)
+         RFC 4001: Textual Conventions for Internet Network Addresses";
+
+    }
+
+    typedef as-number {
+      type uint32;
+      description
+        "The as-number type represents autonomous system numbers
+      which identify an Autonomous System (AS).  An AS is a set
+      of routers under a single technical administration, using
+      an interior gateway protocol and common metrics to route
+      packets within the AS, and using an exterior gateway
+      protocol to route packets to other ASes.  IANA maintains
+      the AS number space and has delegated large parts to the
+      regional registries.
+
+      Autonomous system numbers were originally limited to 16
+      bits.  BGP extensions have enlarged the autonomous system
+      number space to 32 bits.  This type therefore uses an uint32
+      base type without a range restriction in order to support
+      a larger autonomous system number space.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetAutonomousSystemNumber textual convention of
+      the SMIv2.";
+      reference
+        "RFC 1930: Guidelines for creation, selection, and registration
+        	  of an Autonomous System (AS)
+         RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+         RFC 4001: Textual Conventions for Internet Network Addresses
+         RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
+        	  Number Space";
+
+    }
+
+    typedef ip-address {
+      type union {
+        type ipv4-address;
+        type ipv6-address;
+      }
+      description
+        "The ip-address type represents an IP address and is IP
+      version neutral.  The format of the textual representation
+      implies the IP version.  This type supports scoped addresses
+      by allowing zone identifiers in the address format.";
+      reference
+        "RFC 4007: IPv6 Scoped Address Architecture";
+
+    }
+
+    typedef ipv4-address {
+      type string {
+        pattern
+          '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\p{N}\p{L}]+)?';
+      }
+      description
+        "The ipv4-address type represents an IPv4 address in
+       dotted-quad notation.  The IPv4 address may include a zone
+       index, separated by a % sign.
+
+       The zone index is used to disambiguate identical address
+       values.  For link-local addresses, the zone index will
+       typically be the interface index number or the name of an
+       interface.  If the zone index is not present, the default
+       zone of the device will be used.
+
+       The canonical format for the zone index is the numerical
+       format";
+    }
+
+    typedef ipv6-address {
+      type string {
+        pattern
+          '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\p{N}\p{L}]+)?';
+        pattern
+          '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?';
+      }
+      description
+        "The ipv6-address type represents an IPv6 address in full,
+      mixed, shortened, and shortened-mixed notation.  The IPv6
+      address may include a zone index, separated by a % sign.
+
+      The zone index is used to disambiguate identical address
+      values.  For link-local addresses, the zone index will
+      typically be the interface index number or the name of an
+      interface.  If the zone index is not present, the default
+      zone of the device will be used.
+
+
+
+      The canonical format of IPv6 addresses uses the textual
+      representation defined in Section 4 of RFC 5952.  The
+      canonical format for the zone index is the numerical
+      format as described in Section 11.2 of RFC 4007.";
+      reference
+        "RFC 4291: IP Version 6 Addressing Architecture
+         RFC 4007: IPv6 Scoped Address Architecture
+         RFC 5952: A Recommendation for IPv6 Address Text
+        	  Representation";
+
+    }
+
+    typedef ip-address-no-zone {
+      type union {
+        type ipv4-address-no-zone;
+        type ipv6-address-no-zone;
+      }
+      description
+        "The ip-address-no-zone type represents an IP address and is
+      IP version neutral.  The format of the textual representation
+      implies the IP version.  This type does not support scoped
+      addresses since it does not allow zone identifiers in the
+      address format.";
+      reference
+        "RFC 4007: IPv6 Scoped Address Architecture";
+
+    }
+
+    typedef ipv4-address-no-zone {
+      type ipv4-address {
+        pattern '[0-9\.]*';
+      }
+      description
+        "An IPv4 address without a zone index.  This type, derived from
+       ipv4-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+    }
+
+    typedef ipv6-address-no-zone {
+      type ipv6-address {
+        pattern '[0-9a-fA-F:\.]*';
+      }
+      description
+        "An IPv6 address without a zone index.  This type, derived from
+       ipv6-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+      reference
+        "RFC 4291: IP Version 6 Addressing Architecture
+         RFC 4007: IPv6 Scoped Address Architecture
+         RFC 5952: A Recommendation for IPv6 Address Text
+        	  Representation";
+
+    }
+
+    typedef ip-prefix {
+      type union {
+        type ipv4-prefix;
+        type ipv6-prefix;
+      }
+      description
+        "The ip-prefix type represents an IP prefix and is IP
+      version neutral.  The format of the textual representations
+      implies the IP version.";
+    }
+
+    typedef ipv4-prefix {
+      type string {
+        pattern
+          '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))';
+      }
+      description
+        "The ipv4-prefix type represents an IPv4 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 32.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The canonical format of an IPv4 prefix has all bits of
+      the IPv4 address set to zero that are not part of the
+      IPv4 prefix.";
+    }
+
+    typedef ipv6-prefix {
+      type string {
+        pattern
+          '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
+        pattern
+          '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(/.+)';
+      }
+      description
+        "The ipv6-prefix type represents an IPv6 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 128.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The IPv6 address should have all bits that do not belong
+      to the prefix set to zero.
+
+      The canonical format of an IPv6 prefix has all bits of
+      the IPv6 address set to zero that are not part of the
+      IPv6 prefix.  Furthermore, the IPv6 address is represented
+      as defined in Section 4 of RFC 5952.";
+      reference
+        "RFC 5952: A Recommendation for IPv6 Address Text
+        	  Representation";
+
+    }
+
+    typedef domain-name {
+      type string {
+        length "1..253";
+        pattern
+          '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)|\.';
+      }
+      description
+        "The domain-name type represents a DNS domain name.  The
+      name SHOULD be fully qualified whenever possible.
+
+      Internet domain names are only loosely specified.  Section
+      3.5 of RFC 1034 recommends a syntax (modified in Section
+      2.1 of RFC 1123).  The pattern above is intended to allow
+      for current practice in domain name use, and some possible
+      future expansion.  It is designed to hold various types of
+      domain names, including names used for A or AAAA records
+      (host names) and other records, such as SRV records.  Note
+      that Internet host names have a stricter syntax (described
+      in RFC 952) than the DNS recommendations in RFCs 1034 and
+      1123, and that systems that want to store host names in
+      schema nodes using the domain-name type are recommended to
+      adhere to this stricter standard to ensure interoperability.
+
+      The encoding of DNS names in the DNS protocol is limited
+      to 255 characters.  Since the encoding consists of labels
+      prefixed by a length bytes and there is a trailing NULL
+      byte, only 253 characters can appear in the textual dotted
+      notation.
+
+      The description clause of schema nodes using the domain-name
+      type MUST describe when and how these names are resolved to
+      IP addresses.  Note that the resolution of a domain-name value
+      may require to query multiple DNS records (e.g., A for IPv4
+      and AAAA for IPv6).  The order of the resolution process and
+      which DNS record takes precedence can either be defined
+      explicitly or may depend on the configuration of the
+      resolver.
+
+      Domain-name values use the US-ASCII encoding.  Their canonical
+      format uses lowercase US-ASCII characters.  Internationalized
+      domain names MUST be A-labels as per RFC 5890.";
+      reference
+        "RFC  952: DoD Internet Host Table Specification
+         RFC 1034: Domain Names - Concepts and Facilities
+         RFC 1123: Requirements for Internet Hosts -- Application
+        	  and Support
+         RFC 2782: A DNS RR for specifying the location of services
+        	  (DNS SRV)
+         RFC 5890: Internationalized Domain Names in Applications
+        	  (IDNA): Definitions and Document Framework";
+
+    }
+
+    typedef host {
+      type union {
+        type ip-address;
+        type domain-name;
+      }
+      description
+        "The host type represents either an IP address or a DNS
+      domain name.";
+    }
+
+    typedef uri {
+      type string;
+      description
+        "The uri type represents a Uniform Resource Identifier
+      (URI) as defined by STD 66.
+
+      Objects using the uri type MUST be in US-ASCII encoding,
+      and MUST be normalized as described by RFC 3986 Sections
+      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
+      percent-encoding is removed, and all case-insensitive
+      characters are set to lowercase except for hexadecimal
+      digits, which are normalized to uppercase as described in
+      Section 6.2.2.1.
+
+      The purpose of this normalization is to help provide
+      unique URIs.  Note that this normalization is not
+      sufficient to provide uniqueness.  Two URIs that are
+      textually distinct after this normalization may still be
+      equivalent.
+
+      Objects using the uri type may restrict the schemes that
+      they permit.  For example, 'data:' and 'urn:' schemes
+      might not be appropriate.
+
+      A zero-length URI is not a valid URI.  This can be used to
+      express 'URI absent' where required.
+
+      In the value set and its semantics, this type is equivalent
+      to the Uri SMIv2 textual convention defined in RFC 5017.";
+      reference
+        "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+         RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+        	  Group: Uniform Resource Identifiers (URIs), URLs,
+        	  and Uniform Resource Names (URNs): Clarifications
+        	  and Recommendations
+         RFC 5017: MIB Textual Conventions for Uniform Resource
+        	  Identifiers (URIs)";
+
+    }
+  }
\ No newline at end of file
diff --git a/apps/l3vpn/yangmodel/src/main/yang/ietf-l3vpn-svc@2016-07-30.yang b/apps/l3vpn/yangmodel/src/main/yang/ietf-l3vpn-svc@2016-07-30.yang
new file mode 100755
index 0000000..dbd60dc
--- /dev/null
+++ b/apps/l3vpn/yangmodel/src/main/yang/ietf-l3vpn-svc@2016-07-30.yang
@@ -0,0 +1,2599 @@
+module ietf-l3vpn-svc {
+
+    namespace "urn:ietf:params:xml:ns:yang:ietf-l3vpn-svc";
+
+    prefix l3vpn-svc;
+
+    import ietf-inet-types {
+        prefix inet;
+    }
+
+    import ietf-yang-types {
+        prefix yang;
+    }
+
+    organization
+     "IETF L3SM Working Group";
+
+    contact
+        "WG List:   &lt;mailto:l3sm@ietf.org&gt;
+
+        Editor:
+
+        ";
+
+    description
+        "The YANG module defines a generic service configuration
+        model for Layer 3 VPN common across all of the vendor
+        implementations.";
+
+    revision 2016-07-30 {
+        description
+        "Eliminated warnings";
+        reference
+            "draft-ietf-l3sm-l3vpn-service-yang-11";
+    }
+
+    revision 2016-07-05 {
+        description
+        "Draft text update";
+        reference
+            "draft-ietf-l3sm-l3vpn-service-yang-11";
+    }
+    revision 2016-06-27 {
+        description
+        "
+        * Removed templates
+        * Add site-network-access-type
+        * Add a leaf number-of-dynamic-address in case
+        of pe-dhcp addressing;
+
+        ";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-10";
+    }
+    revision 2016-06-10 {
+        description
+         "Add site-vpn-flavor NNI";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-09";
+    }
+    revision 2016-06-09 {
+        description
+         "Traffic protection moved to site level.
+          Decouple operational-requirements in two containers.
+         ";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-08";
+    }
+    revision 2016-06-06 {
+        description
+         "Set config false to actual-site-start and stop
+          Add a container before cloud-access list
+          Add a container before authorized-sites list
+          Add a container before denied-sites list
+          Modified access-diversity modeling
+          Replacing type placement diversity by an identity";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-07";
+    }
+    revision 2016-04-19 {
+        description
+         "* remove reference to core routing model :
+            created new address family identities
+          * added features
+          * Modified bearer parameters
+          * Modified union for ipv4/ipv6 addresses to ip-address
+          type
+          * Add BSR parameters for multicast
+          * Add applications matching for QoS classification
+          ";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-06";
+    }
+    revision 2016-04-05 {
+        description
+         "
+         * Added linecard diverse for site diversity
+         * Added a new diversity enum in placement-diversity : none
+         * Added state to site location
+
+         ";
+        reference "";
+    }
+    revision 2016-03-11 {
+        description
+        "
+            * Modify VPN policy and creating a vpn-policy-list
+            * Add VPN policy reference and VPN ID reference
+            under site-network-access
+        ";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-05";
+    }
+    revision 2016-01-04 {
+        description
+        "
+            * Add extranet-vpn container in vpn-svc
+            * Creating top level containers
+            * Refine groupings
+            * Added site-vpn-flavor
+        ";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-03";
+    }
+    revision 2016-01-04 {
+        description
+         "
+            * qos-profile moved to choice
+            * vpn leaf moved to vpn-id in vpn-policy
+            * added ordered-by user to qos classification list
+            * moved traffic protection to access availability
+            * creating a choice in matching filter for VPN policy
+            * added dot1p matching field in flow-definition
+        ";
+        reference "";
+    }
+    revision 2015-12-07 {
+        description
+         "
+            * A site is now a collection of site-accesses.
+            This was introduced to support M to N availability.
+            * Site-availability has been removed, replaced by
+            availability parameters under site-accesses
+            * Added transport-constraints within vpn-svc
+        ";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-02";
+    }
+    revision 2015-11-03 {
+        description "
+        * Add ToS support in match-flow
+        * nexthop in cascaded lan as mandatory
+        * customer-specific-info deleted and moved to routing
+        protocols
+        * customer-lan-connection modified : need prefix and CE address
+        * add choice in managing PE-CE addressing
+        * Simplifying traffic protection
+        ";
+        reference "";
+    }
+    revision 2015-09-10 {
+        description "
+        * Refine groupings for vpn-svc
+        * Removed name in vpn-svc
+        * id in vpn-svc moved to string
+        * Rename id in vpn-svc to vpn-id
+        * Changed key of vpn-svc list to vpn-id
+        * Add DSCP support in flow definition
+        ";
+        reference "";
+    }
+    revision 2015-08-07 {
+        description
+         "
+          Multicast :
+            * Removed ACL from security
+            * Add FW for site and cloud access
+         ";
+        reference "";
+    }
+    revision 2015-08-05 {
+        description
+         "
+          Multicast :
+          * Removed anycast-rp identity as discovery mechanism
+          * Added rp-group mappings for multicast
+          * Added flag for provider managed RP.
+         ";
+        reference "";
+    }
+    revision 2015-08-03 {
+        description
+         " * Creating multiple reusable groupings
+           * Added mpls leaf in vpn-svc for carrier's carrier case
+           * Modify identity single to single-site
+           * Modify site-type to site-role and also child identities.
+           * Creating OAM container under site and moved BFD in.
+           * Creating flow-definition grouping to be reused
+           in ACL, QoS ...
+           * Simplified VPN policy.
+           * Adding multicast static group to RP mappings.
+           * Removed native-vpn and site-role from global site
+           cfg, now managed within the VPN policy.
+           * Creating a separate list for site templates.
+         ";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-01";
+    }
+    revision 2015-07-02 {
+        reference "draft-ietf-l3sm-l3vpn-service-yang-00";
+    }
+    revision 2015-04-24 {
+        description "
+        * Add encryption parameters
+        * Adding holdtime for BFD.
+        * Add postal address in location
+        ";
+        reference "draft-lstd-l3sm-l3vpn-service-yang-00";
+    }
+    revision 2015-02-05 {
+        description "Initial revision.";
+        reference "draft-l3vpn-service-yang-00";
+    }
+
+    /* Features */
+
+    feature cloud-access {
+        description
+         "Allow VPN to connect to a Cloud Service
+         provider.";
+    }
+    feature multicast {
+        description
+        "Enables multicast capabilities in a VPN";
+    }
+    feature ipv4 {
+        description
+        "Enables IPv4 support in a VPN";
+    }
+    feature ipv6 {
+        description
+        "Enables IPv6 support in a VPN";
+    }
+    feature carrierscarrier {
+        description
+        "Enables support of carrier's carrier";
+    }
+    feature traffic-engineering {
+        description
+        "Enables support of transport constraint.";
+    }
+    feature traffic-engineering-multicast {
+        description
+        "Enables support of transport constraint
+        for multicast.";
+    }
+    feature extranet-vpn {
+        description
+        "Enables support of extranet VPNs";
+    }
+    feature site-diversity {
+        description
+        "Enables support of site diversity constraints";
+    }
+    feature encryption {
+        description
+        "Enables support of encryption";
+    }
+    feature qos {
+        description
+        "Enables support of Class of Services";
+    }
+    feature qos-custom {
+        description
+        "Enables support of custom qos profile";
+    }
+    feature rtg-bgp {
+        description
+        "Enables support of BGP routing protocol.";
+    }
+    feature rtg-rip {
+        description
+        "Enables support of RIP routing protocol.";
+    }
+    feature rtg-ospf {
+        description
+        "Enables support of OSPF routing protocol.";
+    }
+    feature rtg-ospf-sham-link {
+        description
+        "Enables support of OSPF sham-links.";
+    }
+    feature rtg-vrrp {
+        description
+        "Enables support of VRRP routing protocol.";
+    }
+    feature fast-reroute {
+        description
+        "Enables support of Fast Reroute.";
+    }
+    feature bfd {
+        description
+        "Enables support of BFD.";
+    }
+    feature always-on {
+        description
+        "Enables support for always-on access
+        constraint.";
+    }
+    feature requested-type {
+        description
+        "Enables support for requested-type access
+        constraint.";
+    }
+    feature bearer-reference {
+        description
+        "Enables support for bearer-reference access
+        constraint.";
+    }
+
+    /* Typedefs */
+
+    typedef svc-id {
+        type string;
+        description
+         "Defining a type of service component
+         identificators.";
+    }
+
+    typedef template-id {
+        type string;
+        description
+         "Defining a type of service template
+         identificators.";
+    }
+
+    /* Identities */
+
+    identity site-network-access-type {
+        description
+         "Base identity for site-network-access type";
+    }
+    identity point-to-point {
+        base site-network-access-type;
+        description
+        "Identity for point-to-point connection";
+    }
+    identity multipoint {
+        base site-network-access-type;
+        description
+        "Identity for multipoint connection
+        Example : ethernet broadcast segment";
+    }
+    identity placement-diversity {
+        description
+         "Base identity for site placement
+         constraints";
+    }
+    identity pe-diverse {
+        base placement-diversity;
+        description
+        "Identity for PE diversity";
+    }
+    identity pop-diverse {
+        base placement-diversity;
+        description
+        "Identity for POP diversity";
+    }
+    identity linecard-diverse {
+        base placement-diversity;
+        description
+        "Identity for linecard diversity";
+    }
+    identity same-pe {
+        base placement-diversity;
+        description
+        "Identity for having sites connected
+        on the same PE";
+    }
+    identity same-bearer {
+        base placement-diversity;
+        description
+        "Identity for having sites connected
+        using the same bearer";
+    }
+    identity customer-application {
+        description
+         "Base identity for customer application";
+    }
+    identity web {
+        base customer-application;
+        description
+         "Identity for web application (e.g. HTTP,HTTPS)";
+    }
+    identity mail {
+        base customer-application;
+        description
+         "Identity for mail applications";
+    }
+    identity file-transfer {
+        base customer-application;
+        description
+         "Identity for file transfer applications (
+         e.g. FTP, SFTP, ...)";
+    }
+    identity database {
+        base customer-application;
+        description
+         "Identity for database applications";
+    }
+    identity social {
+        base customer-application;
+        description
+         "Identity for social network applications";
+    }
+    identity games {
+        base customer-application;
+        description
+         "Identity for gaming applications";
+    }
+    identity p2p {
+        base customer-application;
+        description
+         "Identity for peer to peer applications";
+    }
+    identity network-management {
+        base customer-application;
+        description
+         "Identity for management applications (e.g. telnet
+            syslog, snmp ...)";
+    }
+    identity voice {
+        base customer-application;
+        description
+         "Identity for voice applications";
+    }
+    identity video {
+        base customer-application;
+        description
+         "Identity for video conference applications";
+    }
+    identity address-family {
+        description
+         "Base identity for an address family.";
+    }
+    identity ipv4 {
+        base address-family;
+        description
+        "Identity for IPv4 address family.";
+    }
+    identity ipv6 {
+        base address-family;
+        description
+        "Identity for IPv6 address family.";
+    }
+    identity site-vpn-flavor {
+        description
+        "Base identity for the site VPN service flavor.";
+    }
+    identity site-vpn-flavor-single {
+        base site-vpn-flavor;
+        description
+        "Base identity for the site VPN service flavor.
+        Used when the site belongs to only one VPN.";
+    }
+    identity site-vpn-flavor-multi {
+        base site-vpn-flavor;
+        description
+        "Base identity for the site VPN service flavor.
+        Used when a logical connection of a site
+        belongs to multiple VPNs.";
+    }
+    identity site-vpn-flavor-sub {
+        base site-vpn-flavor;
+        description
+        "Base identity for the site VPN service flavor.
+        Used when a site has multiple logical connections.
+        Each of the connection may belong to different
+        multiple VPNs.";
+    }
+    identity site-vpn-flavor-nni {
+        base site-vpn-flavor;
+        description
+        "Base identity for the site VPN service flavor.
+        Used to describe a NNI option A connection.";
+    }
+    identity transport-constraint {
+        description
+         "Base identity for transport constraint.";
+    }
+    identity tc-latency {
+        base transport-constraint;
+        description
+         "Base identity for transport constraint
+         based on latency.";
+    }
+    identity tc-jitter {
+        base transport-constraint;
+        description
+         "Base identity for transport constraint
+         based on jitter.";
+    }
+    identity tc-bandwidth {
+        base transport-constraint;
+        description
+         "Base identity for transport constraint
+         based on bandwidth.";
+    }
+    identity tc-path-diversity {
+        base transport-constraint;
+        description
+         "Base identity for transport constraint
+         based on path diversity.";
+    }
+    identity tc-site-diversity {
+        base transport-constraint;
+        description
+         "Base identity for transport constraint
+         based on site diversity.";
+    }
+    identity management {
+        description
+         "Base identity for site management scheme.";
+    }
+    identity co-managed {
+        base management;
+        description
+         "Base identity for comanaged site.";
+    }
+    identity customer-managed {
+        base management;
+        description
+         "Base identity for customer managed site.";
+    }
+    identity provider-managed {
+        base management;
+        description
+         "Base identity for provider managed site.";
+    }
+    identity address-allocation-type {
+        description
+         "Base identity for address-allocation-type
+         for PE-CE link.";
+    }
+    identity pe-dhcp {
+        base address-allocation-type;
+        description
+         "PE router provides DHCP service to CE.";
+    }
+    identity static-address {
+        base address-allocation-type;
+        description
+         "PE-CE addressing is static.";
+    }
+    identity slaac {
+        base address-allocation-type;
+        description
+         "Use IPv6 SLAAC.";
+    }
+    identity site-role {
+        description
+         "Base identity for site type.";
+    }
+    identity any-to-any-role {
+        base site-role;
+        description
+         "Site in a any to any IPVPN.";
+    }
+    identity spoke-role {
+        base site-role;
+        description
+         "Spoke Site in a Hub & Spoke IPVPN.";
+    }
+    identity hub-role {
+        base site-role;
+        description
+         "Hub Site in a Hub & Spoke IPVPN.";
+    }
+    identity vpn-topology {
+        description
+         "Base identity for VPN topology.";
+    }
+    identity any-to-any {
+        base vpn-topology;
+        description
+         "Identity for any to any VPN topology.";
+    }
+    identity hub-spoke {
+        base vpn-topology;
+        description
+         "Identity for Hub'n'Spoke VPN topology.";
+    }
+    identity hub-spoke-disjoint {
+        base vpn-topology;
+        description
+         "Identity for Hub'n'Spoke VPN topology
+          where Hubs cannot talk between each other.";
+    }
+    identity multicast-tree-type {
+        description
+         "Base identity for multicast tree type.";
+    }
+    identity ssm-tree-type {
+        base multicast-tree-type;
+        description
+         "Identity for SSM tree type.";
+    }
+    identity asm-tree-type {
+        base multicast-tree-type;
+        description
+         "Identity for ASM tree type.";
+    }
+    identity bidir-tree-type {
+        base multicast-tree-type;
+        description
+         "Identity for BiDir tree type.";
+    }
+    identity multicast-rp-discovery-type {
+        description
+         "Base identity for rp discovery type.";
+    }
+    identity auto-rp {
+        base multicast-rp-discovery-type;
+        description
+         "Base identity for auto-rp discovery type.";
+    }
+    identity static-rp {
+        base multicast-rp-discovery-type;
+        description
+         "Base identity for static type.";
+    }
+    identity bsr-rp {
+        base multicast-rp-discovery-type;
+        description
+         "Base identity for BDR discovery type.";
+    }
+    identity routing-protocol-type {
+        description
+         "Base identity for routing-protocol type.";
+    }
+    identity ospf {
+        base routing-protocol-type;
+        description
+         "Identity for OSPF protocol type.";
+    }
+    identity bgp {
+        base routing-protocol-type;
+        description
+         "Identity for BGP protocol type.";
+    }
+    identity static {
+        base routing-protocol-type;
+        description
+         "Identity for static routing protocol type.";
+    }
+    identity rip {
+        base routing-protocol-type;
+        description
+         "Identity for RIP protocol type.";
+    }
+    identity rip-ng {
+        base routing-protocol-type;
+        description
+         "Identity for RIPng protocol type.";
+    }
+    identity vrrp {
+        base routing-protocol-type;
+        description
+         "Identity for VRRP protocol type.
+         This is to be used when LAn are directly connected
+         to provider Edge routers.";
+    }
+    identity direct {
+        base routing-protocol-type;
+        description
+         "Identity for direct protocol type.
+        .";
+    }
+    identity protocol-type {
+        description
+         "Base identity for protocol field type.";
+    }
+    identity tcp {
+        base protocol-type;
+        description
+         "TCP protocol type.";
+    }
+    identity udp {
+        base protocol-type;
+        description
+         "UDP protocol type.";
+    }
+    identity icmp {
+        base protocol-type;
+        description
+         "icmp protocol type.";
+    }
+    identity icmp6 {
+        base protocol-type;
+        description
+         "icmp v6 protocol type.";
+    }
+    identity gre {
+        base protocol-type;
+        description
+         "GRE protocol type.";
+    }
+    identity ipip {
+        base protocol-type;
+        description
+         "IPinIP protocol type.";
+    }
+    identity hop-by-hop {
+        base protocol-type;
+        description
+         "Hop by Hop IPv6 header type.";
+    }
+    identity routing {
+        base protocol-type;
+        description
+         "Routing IPv6 header type.";
+    }
+    identity esp {
+        base protocol-type;
+        description
+         "ESP header type.";
+    }
+    identity ah {
+        base protocol-type;
+        description
+         "AH header type.";
+    }
+
+    /* Groupings */
+
+    grouping vpn-service-cloud-access {
+        container cloud-accesses {
+        list cloud-access {
+            if-feature cloud-access;
+            key cloud-identifier;
+
+            leaf cloud-identifier {
+                type string;
+                description
+                 "Identification of cloud service. Local
+                 admin meaning.";
+            }
+            container authorized-sites {
+                list authorized-site {
+                    key site-id;
+
+                    leaf site-id {
+                        type leafref {
+                            path "/l3vpn-svc/sites/site/site-id";
+                        }
+                        description
+                         "Site ID.";
+                    }
+                    description
+                     "List of authorized sites.";
+                }
+                description
+                "Configuration of authorized sites";
+            }
+            container denied-sites {
+                list denied-site {
+                    key site-id;
+
+                    leaf site-id {
+                        type leafref {
+                            path "/l3vpn-svc/sites/site/site-id";
+                        }
+                        description
+                         "Site ID.";
+                    }
+                    description
+                     "List of denied sites.";
+                }
+                description
+                "Configuration of denied sites";
+            }
+            leaf nat-enabled {
+                type boolean;
+                description
+                 "Control if NAT is required or not.";
+            }
+            leaf customer-nat-address {
+                type inet:ipv4-address;
+                description
+                 "NAT address to be used in case of public
+                 or shared cloud.
+                 This is to be used in case customer is providing
+                 the public address.";
+            }
+            description
+             "Cloud access configuration.";
+        }
+            description
+             "Container for cloud access configurations";
+        }
+        description
+         "grouping for vpn cloud definition";
+    }
+
+    grouping multicast-rp-group-cfg {
+        choice group-format {
+            case startend {
+                leaf group-start {
+                    type inet:ip-address;
+                    description
+                     "First group address.";
+                }
+                leaf group-end {
+                    type inet:ip-address;
+                    description
+                     "Last group address.";
+                }
+            }
+            case singleaddress {
+                leaf group-address {
+                    type inet:ip-address;
+                    description
+                     "Group address";
+                }
+            }
+            description
+             "Choice for group format.";
+        }
+        description
+         "Definition of groups for
+         RP to group mapping.";
+    }
+
+    grouping vpn-service-multicast {
+        container multicast {
+            if-feature multicast;
+            leaf enabled {
+                type boolean;
+                default false;
+                description
+                 "Enable multicast.";
+            }
+            container customer-tree-flavors {
+                list tree-flavor {
+                    key type;
+
+                    leaf type {
+                        type identityref {
+                            base multicast-tree-type;
+                        }
+                        description
+                         "Type of tree to be used.";
+                    }
+                    description
+                     "List of tree flavors.";
+                }
+                description
+                 "Type of trees used by customer.";
+            }
+            container rp {
+                container rp-group-mappings {
+                    list rp-group-mapping {
+                        key "id";
+
+                        leaf id {
+                            type uint16;
+                            description
+                             "Unique identifier for the mapping.";
+                        }
+                        container provider-managed {
+                            leaf enabled {
+                                type boolean;
+                                default false;
+                                description
+                                 "Set to true, if the RP must be a
+                                 provider
+                                 managed node.
+                                 Set to false, if it is a customer
+                                 managed node.";
+                            }
+
+                            leaf rp-redundancy {
+                                when "../enabled = 'true'" {
+                                    description
+                                     "Relevant when RP
+                                     is provider managed.";
+                                }
+                                type boolean;
+                                default false;
+                                description
+                                 "If true, redundancy
+                                 mechanism for RP is required.";
+                            }
+                            leaf optimal-traffic-delivery {
+                                when "../enabled = 'true'" {
+                                    description
+                                     "Relevant when RP
+                                     is provider managed.";
+                                }
+                                type boolean;
+                                default false;
+                                description
+                                 "If true, SP must ensure
+                                 that traffic uses an optimal path.";
+                            }
+                            description
+                             "Parameters for provider managed RP.";
+                        }
+
+                        leaf rp-address {
+                            when "../provider-managed/enabled='false'" {
+                                description
+                                 "Relevant when RP
+                                 is provider managed.";
+                            }
+                            type inet:ip-address;
+                            description
+                            "Defines the address of the
+                            RendezvousPoint.
+                            Used if RP is customer managed.";
+                        }
+
+                        container groups {
+                            list group {
+                                key id;
+
+                                leaf id {
+                                    type uint16;
+                                    description
+                                     "Identifier for the group.";
+                                }
+                                uses multicast-rp-group-cfg;
+                                description
+                                "List of groups.";
+                            }
+                            description
+                             "Multicast groups associated with RP.";
+                        }
+
+                        description
+                         "List of RP to group mappings.";
+                    }
+                    description
+                    "RP to group mappings.";
+                }
+                container rp-discovery {
+                    leaf rp-discovery-type {
+                        type identityref {
+                            base multicast-rp-discovery-type;
+                        }
+                        default static-rp;
+                        description
+                         "Type of RP discovery used.";
+                    }
+                    container bsr-candidates {
+                        when "../rp-discovery-type='bsr-rp'" {
+                            description
+                             "Only applicable if discovery type
+                             is BSR-RP";
+                        }
+                        list bsr-candidate {
+                            key address;
+
+                            leaf address {
+                                type inet:ip-address;
+                                description
+                                 "Address of BSR candidate";
+                            }
+
+                            description
+                             "List of customer BSR candidates";
+                        }
+                        description
+                         "Customer BSR candidates address";
+                    }
+                    description
+                     "RP discovery parameters";
+                }
+
+                description
+                 "RendezvousPoint parameters.";
+            }
+            description
+                "Multicast global parameters for the VPN service.";
+        }
+        description
+         "grouping for multicast vpn definition";
+    }
+
+    grouping vpn-service-mpls {
+        leaf carrierscarrier {
+            if-feature carrierscarrier;
+            type boolean;
+            default false;
+            description
+             "The VPN is using Carrier's Carrier,
+             and so MPLS is required.";
+        }
+        description
+         "grouping for mpls CsC definition";
+    }
+
+    grouping customer-location-info {
+        container location {
+                leaf address {
+                    type string;
+                    description
+                    "Address (number and street)
+                    of the site.";
+
+                }
+                leaf zip-code {
+                    type string;
+                    description
+                    "ZIP code of the site.";
+                }
+                leaf state {
+                    type string;
+                    description
+                    "State of the site.
+                    This leaf can also be used
+                    to describe a region
+                    for country who does not have
+                    states.
+                    ";
+                }
+                leaf city {
+                    type string;
+                    description
+                     "City of the site.";
+                }
+                leaf country-code {
+                    type string;
+                    description
+                     "Country of the site.";
+                }
+                description
+                    "Location of the site.";
+        }
+        description
+         "This grouping defines customer location
+          parameters";
+    }
+
+    grouping site-diversity {
+        container site-diversity {
+                if-feature site-diversity;
+
+                container groups {
+                    list group {
+                        key group-id;
+
+                        leaf group-id {
+                            type string;
+                            description
+                             "Group-id the site
+                             is belonging to";
+                        }
+                        description
+                        "List of group-id";
+                    }
+                    description
+                     "Groups the site
+                     is belonging to.
+                     All site network accesses will
+                     inherit those group values.";
+                }
+                description
+                     "Diversity constraint type.";
+            }
+        description
+         "This grouping defines site diversity
+          parameters";
+    }
+
+    grouping access-diversity {
+        container access-diversity {
+                if-feature site-diversity;
+                container groups {
+                    list group {
+                        key group-id;
+
+                        leaf group-id {
+                            type string;
+                            description
+                             "Group-id the site network access
+                             is belonging to";
+                        }
+                        description
+                        "List of group-id";
+                    }
+                    description
+                     "Groups the site network access
+                     is belonging to";
+                }
+                container constraints {
+                    list constraint {
+                        key constraint-type;
+
+                        leaf constraint-type {
+                            type identityref {
+                                base placement-diversity;
+                            }
+                            description
+                             "Diversity constraint type.";
+                        }
+                        container target {
+                            choice target-flavor {
+                                case id {
+                                    list group {
+                                        key group-id;
+
+                                        leaf group-id {
+                                            type string;
+                                            description
+                                             "The constraint will apply
+                                             against this particular
+                                             group-id";
+                                        }
+                                        description
+                                         "List of groups";
+                                    }
+                                }
+                                case all-accesses {
+                                    leaf all-other-accesses {
+                                        type empty;
+                                        description
+                                         "The constraint will apply
+                                         against all other site network
+                                         access
+                                         of this site";
+                                    }
+                                }
+                                case all-groups {
+                                    leaf all-other-groups {
+                                        type empty;
+                                        description
+                                         "The constraint will apply
+                                         against all other groups the
+                                         customer
+                                         is managing";
+                                    }
+                                }
+                                description
+                                 "Choice for the group definition";
+                            }
+                            description
+                             "The constraint will apply against
+                             this list of groups";
+                        }
+                        description
+                         "List of constraints";
+                    }
+                    description
+                     "Constraints for placing this site
+                     network access";
+                }
+
+                description
+                     "Diversity parameters.";
+            }
+        description
+         "This grouping defines access diversity
+          parameters";
+    }
+
+    grouping operational-requirements {
+          leaf requested-site-start {
+               type yang:date-and-time;
+               description
+                "Optional leaf indicating requested date
+                and time
+                when the service at a particular site is
+                expected
+                to start";
+           }
+
+           leaf requested-site-stop {
+               type yang:date-and-time;
+               description
+                "Optional leaf indicating requested date
+                and time
+                when the service at a particular site is
+                expected
+                to stop";
+           }
+        description
+         "This grouping defines some operational parameters
+          parameters";
+    }
+
+    grouping operational-requirements-ops {
+           leaf actual-site-start {
+               type yang:date-and-time;
+               config false;
+               description
+                "Optional leaf indicating actual date
+                and time
+                when the service at a particular site
+                actually
+                started";
+           }
+           leaf actual-site-stop {
+               type yang:date-and-time;
+               config false;
+               description
+                "Optional leaf indicating actual date
+                and time
+                when the service at a particular site
+                actually
+                stopped";
+           }
+        description
+         "This grouping defines some operational parameters
+          parameters";
+    }
+
+    grouping flow-definition {
+        container match-flow {
+            leaf dscp {
+                type uint8 {
+                    range "0 .. 63";
+                }
+                description
+                 "DSCP value.";
+            }
+            leaf tos {
+                type uint8 {
+                    range "0 .. 254";
+                }
+                description
+                 "TOS value.";
+            }
+            leaf dot1p {
+                type uint8 {
+                    range "0 .. 7";
+                }
+                description
+                "802.1p matching.";
+            }
+            leaf ipv4-src-prefix {
+                type inet:ipv4-prefix;
+                description
+                 "Match on IPv4 src address.";
+            }
+            leaf ipv6-src-prefix {
+                type inet:ipv6-prefix;
+                description
+                 "Match on IPv6 src address.";
+            }
+            leaf ipv4-dst-prefix {
+                type inet:ipv4-prefix;
+                description
+                 "Match on IPv4 dst address.";
+            }
+            leaf ipv6-dst-prefix {
+                type inet:ipv6-prefix;
+                description
+                 "Match on IPv6 dst address.";
+            }
+            leaf l4-src-port {
+                type uint16;
+                description
+                 "Match on layer 4 src port.";
+            }
+            leaf l4-dst-port {
+                type uint16;
+                description
+                 "Match on layer 4 dst port.";
+            }
+            leaf protocol-field {
+                type union {
+                    type uint8;
+                    type identityref {
+                        base protocol-type;
+                    }
+                }
+                description
+                 "Match on IPv4 protocol or
+                  Ipv6 Next Header
+                 field.";
+            }
+
+            description
+             "Describe flow matching
+             criterions.";
+        }
+        description
+         "Flow definition based on criteria.";
+    }
+
+    grouping site-service-basic {
+        leaf svc-input-bandwidth {
+               type uint32;
+               units bps;
+               description
+                "From the PE perspective, the service input
+                bandwidth of the connection.";
+        }
+        leaf svc-output-bandwidth {
+           type uint32;
+           units bps;
+           description
+            "From the PE perspective, the service output
+            bandwidth of the connection.";
+        }
+        leaf svc-mtu {
+            type uint16;
+            units bytes;
+            description
+             "MTU at service level.
+             If the service is IP,
+             it refers to the IP MTU.";
+        }
+        description
+         "Defines basic service parameters for a site.";
+    }
+
+    grouping site-protection {
+        container traffic-protection {
+            if-feature fast-reroute;
+            leaf enabled {
+                type boolean;
+                description
+                 "Enables
+                 traffic protection of access link.";
+            }
+
+            description
+             "Fast reroute service parameters
+             for the site.";
+        }
+        description
+         "Defines protection service parameters for a site.";
+    }
+
+    grouping site-service-mpls {
+        container carrierscarrier {
+            if-feature carrierscarrier;
+            leaf signalling-type {
+                type enumeration {
+                    enum "ldp" {
+                        description
+                            "Use LDP as signalling
+                            protocol between PE and CE.";
+                    }
+                    enum "bgp" {
+                        description
+                            "Use BGP 3107 as signalling
+                            protocol between PE and CE.
+                            In this case, bgp must be also
+                            configured
+                            as routing-protocol.
+                            ";
+                    }
+                }
+                description
+                 "MPLS signalling type.";
+            }
+            description
+             "This container is used when customer provides
+             MPLS based services.
+             This is used in case of Carrier's
+             Carrier.";
+        }
+        description
+         "Defines MPLS service parameters for a site.";
+    }
+
+    grouping site-service-qos-profile {
+        container qos {
+            if-feature qos;
+            container qos-classification-policy {
+                list rule {
+                    key id;
+                    ordered-by user;
+
+                    leaf id {
+                        type uint16;
+                        description
+                         "ID of the rule.";
+                    }
+
+                    choice match-type {
+                        case match-flow {
+                            uses flow-definition;
+                        }
+                        case match-application {
+                            leaf match-application {
+                                type identityref {
+                                    base customer-application;
+                                }
+                                description
+                                 "Defines the application
+                                 to match.";
+                            }
+                        }
+                        description
+                         "Choice for classification";
+                    }
+
+                    leaf target-class-id {
+                        type string;
+                        description
+                         "Identification of the
+                         class of service.
+                         This identifier is internal to
+                         the administration.";
+                    }
+
+                    description
+                     "List of marking rules.";
+                }
+                description
+                 "Need to express marking rules ...";
+            }
+            container qos-profile {
+
+                choice qos-profile {
+                    description
+                     "Choice for QoS profile.
+                     Can be standard profile or custom.";
+                    case standard {
+                        leaf profile {
+                            type string;
+                            description
+                             "QoS profile to be used";
+                        }
+                    }
+                    case custom {
+                        container classes {
+                            if-feature qos-custom;
+                            list class {
+                                key class-id;
+
+                                leaf class-id {
+                                    type string;
+                                    description
+                                     "Identification of the
+                                     class of service.
+                                     This identifier is internal to
+                                     the administration.";
+                                }
+                                leaf rate-limit {
+                                    type uint8;
+                                    units percent;
+                                    description
+                                     "To be used if class must
+                                     be rate
+                                     limited. Expressed as
+                                     percentage of the svc-bw.";
+                                }
+                                leaf priority-level {
+                                    type uint8;
+                                    description
+                                     "Defines the level of the
+                                     class in
+                                     term of priority queueing.
+                                      The higher the level is the
+                                      higher
+                                      is the priority.";
+                                }
+                                leaf guaranteed-bw-percent {
+                                    type uint8;
+                                    units percent;
+                                    description
+                                     "To be used to define the
+                                     guaranteed
+                                     BW in percent of the svc-bw
+                                     available at the priority-level.";
+                                }
+                                description
+                                 "List of class of services.";
+                            }
+                            description
+                                 "Container for
+                                 list of class of services.";
+                        }
+
+                    }
+
+                }
+                description
+                "Qos profile configuration.";
+            }
+            description
+             "QoS configuration.";
+        }
+        description
+         "This grouping defines QoS parameters
+         for a site";
+
+    }
+
+    grouping site-security-authentication {
+        container authentication {
+            description
+             "Authentication parameters";
+        }
+        description
+         "This grouping defines authentication
+         parameters
+         for a site";
+    }
+
+    grouping site-security-encryption {
+        container encryption {
+            if-feature encryption;
+            leaf enabled {
+                type boolean;
+                description
+                 "If true, access encryption is required.";
+            }
+            leaf layer {
+                type enumeration {
+                    enum layer2 {
+                        description
+                         "Encryption will occur at layer2.";
+                    }
+                    enum layer3 {
+                        description
+                         "IPSec is requested.";
+                    }
+                }
+                description
+                 "Layer on which encryption is applied.";
+            }
+            container encryption-profile {
+                choice profile {
+                    case provider-profile {
+                        leaf profile-name {
+                            type string;
+                            description
+                             "Name of the SP profile
+                             to be applied.";
+                        }
+                    }
+                    case customer-profile {
+                        leaf algorithm {
+                            type string;
+                            description
+                             "Encryption algorithm to
+                             be used.";
+                        }
+                        choice key-type {
+                            case psk {
+                                leaf preshared-key {
+                                    type string;
+                                    description
+                                     "Key coming from
+                                     customer.";
+                                }
+                            }
+                            case pki {
+
+                            }
+                            description
+                             "Type of keys to be used.";
+                        }
+                    }
+                    description
+                     "Choice of profile.";
+                }
+                description
+                 "Profile of encryption to be applied.";
+            }
+            description
+             "Encryption parameters.";
+        }
+        description
+         "This grouping defines encryption parameters
+         for a site";
+    }
+
+    grouping site-attachment-bearer {
+        container bearer {
+            container requested-type {
+                if-feature requested-type;
+                leaf requested-type {
+                    type string;
+                    description
+                     "Type of requested bearer Ethernet, DSL,
+                     Wireless ...
+                     Operator specific.";
+                }
+                leaf strict {
+                    type boolean;
+                    default false;
+                    description
+                     "define if the requested-type is a preference
+                     or a strict requirement.";
+                }
+                description
+                 "Container for requested type.";
+            }
+            leaf always-on {
+                if-feature always-on;
+                type boolean;
+                default true;
+                description
+                "Request for an always on access type.
+                This means no Dial access type for
+                example.";
+            }
+            leaf bearer-reference {
+                if-feature bearer-reference;
+                type string;
+                description
+                 "This is an internal reference for the
+                 service provider.
+                 Used ";
+            }
+            description
+             "Bearer specific parameters.
+             To be augmented.";
+        }
+        description
+         "Defines physical properties of
+         a site attachment.";
+    }
+
+    grouping site-routing {
+        container routing-protocols {
+            list routing-protocol {
+                key type;
+
+                leaf type {
+                    type identityref {
+                        base routing-protocol-type;
+                    }
+                    description
+                     "Type of routing protocol.";
+                }
+
+
+                container ospf {
+                    when "../type = 'ospf'" {
+                        description
+                         "Only applies
+                         when protocol is OSPF.";
+                    }
+                    if-feature rtg-ospf;
+                    leaf-list address-family {
+                        type identityref {
+                            base address-family;
+                        }
+                        description
+                         "Address family to be activated.";
+                    }
+                    leaf area-address {
+                        type yang:dotted-quad;
+                        description
+                         "Area address.";
+                    }
+                    leaf metric {
+                        type uint16;
+                        description
+                         "Metric of PE-CE link.";
+                    }
+                    container sham-links {
+                        if-feature rtg-ospf-sham-link;
+                        list sham-link {
+                            key target-site;
+
+                            leaf target-site {
+                                type svc-id;
+                                description
+                                 "Target site for the sham link
+                                  connection.
+                                  The site is referred through it's ID.";
+                            }
+                            leaf metric {
+                                type uint16;
+                                description
+                                 "Metric of the sham link.";
+                            }
+                            description
+                             "Creates a shamlink with another
+                             site";
+                        }
+                        description
+                         "List of Sham links";
+                    }
+                    description
+                     "OSPF specific configuration.";
+                }
+
+                container bgp {
+
+                    when "../type = 'bgp'" {
+                        description
+                         "Only applies when
+                         protocol is BGP.";
+                    }
+                    if-feature rtg-bgp;
+                    leaf autonomous-system {
+                        type uint32;
+                        description
+                         "AS number.";
+                    }
+                    leaf-list address-family {
+                        type identityref {
+                            base address-family;
+                        }
+                        description
+                         "Address family to be activated.";
+                    }
+                    description
+                     "BGP specific configuration.";
+                }
+                container static {
+                    when "../type = 'static'" {
+                        description
+                         "Only applies when protocol
+                         is static.";
+                    }
+
+                    container cascaded-lan-prefixes {
+                        list ipv4-lan-prefixes {
+                            if-feature ipv4;
+                            key "lan next-hop";
+
+                            leaf lan {
+                                type inet:ipv4-prefix;
+                                description
+                                 "Lan prefixes.";
+                            }
+                            leaf lan-tag {
+                                type string;
+                                description
+                                 "Internal tag to be used in vpn
+                                 policies.";
+                            }
+                            leaf next-hop {
+                                type inet:ipv4-address;
+                                description
+                                 "Nexthop address to use at customer
+                                 side.";
+                            }
+                            description "
+                                List of LAN prefixes for
+                                the site.
+                                ";
+                        }
+                        list ipv6-lan-prefixes {
+                            if-feature ipv6;
+                            key "lan next-hop";
+
+                            leaf lan {
+                                type inet:ipv6-prefix;
+                                description
+                                 "Lan prefixes.";
+                            }
+                            leaf lan-tag {
+                                type string;
+                                description
+                                 "Internal tag to be used
+                                 in vpn policies.";
+                            }
+                            leaf next-hop {
+                                type inet:ipv6-address;
+                                description
+                                 "Nexthop address to use at
+                                 customer side.";
+                            }
+                            description "
+                                List of LAN prefixes for the site.
+                                ";
+                        }
+                        description
+                            "LAN prefixes from the customer.";
+                    }
+                    description
+                     "Static routing
+                     specific configuration.";
+                }
+                container rip {
+
+                    when "../type = 'rip'" {
+                        description
+                         "Only applies when
+                         protocol is RIP.";
+                    }
+                    if-feature rtg-rip;
+                    leaf-list address-family {
+                        type identityref {
+                            base address-family;
+                        }
+                        description
+                         "Address family to be
+                         activated.";
+                    }
+
+                    description
+                     "RIP routing specific
+                     configuration.";
+                }
+
+
+                container vrrp {
+
+                    when "../type = 'vrrp'" {
+                        description
+                         "Only applies when
+                         protocol is VRRP.";
+                    }
+                    if-feature rtg-vrrp;
+                    leaf-list address-family {
+                        type identityref {
+                            base address-family;
+                        }
+                        description
+                         "Address family to be activated.";
+                    }
+                    description
+                     "VRRP routing specific configuration.";
+                }
+
+
+                description
+                 "List of routing protocols used
+                 on the site.
+                 Need to be augmented.";
+            }
+            description
+             "Defines routing protocols.";
+        }
+        description
+         "Grouping for routing protocols.";
+    }
+
+    grouping site-attachment-ip-connection {
+        container ip-connection {
+            container ipv4 {
+                if-feature ipv4;
+                leaf address-allocation-type {
+                    type identityref {
+                        base address-allocation-type;
+                    }
+
+                    default "static-address";
+                    description
+                     "Defines how addresses are allocated.
+                     ";
+                }
+
+                leaf number-of-dynamic-address {
+                    when
+                    "../address-allocation-type = 'pe-dhcp'"
+                     {
+                        description
+                         "Only applies when
+                         protocol allocation type is static";
+                    }
+                    type uint8;
+                    default 1;
+                    description
+                     "Describes the number of IP addresses the
+                     customer requires";
+                }
+                container addresses {
+                    when
+                    "../address-allocation-type = 'static-address'" {
+                        description
+                         "Only applies when
+                         protocol allocation type is static";
+                    }
+                    leaf provider-address {
+                        type inet:ipv4-address;
+                        description
+                         "Provider side address.";
+                    }
+                    leaf customer-address {
+                        type inet:ipv4-address;
+                        description
+                         "Customer side address.";
+                    }
+                    leaf mask {
+                        type uint8 {
+                            range "0..32";
+                        }
+                        description
+                         "Subnet mask expressed
+                         in bits";
+                    }
+                    description
+                     "Describes IP addresses used";
+                }
+                description
+                 "IPv4 specific parameters";
+
+            }
+            container ipv6 {
+                if-feature ipv6;
+                leaf address-allocation-type {
+                    type identityref {
+                        base address-allocation-type;
+                    }
+                    default "static-address";
+                    description
+                     "Defines how addresses are allocated.
+                     ";
+                }
+                leaf number-of-dynamic-address {
+                    when
+                    "../address-allocation-type = 'pe-dhcp'" {
+                        description
+                         "Only applies when
+                         protocol allocation type is static";
+                    }
+                    type uint8;
+                    default 1;
+                    description
+                     "Describes the number of IP addresses the
+                     customer requires";
+                }
+                container addresses {
+                    when
+                    "../address-allocation-type = 'static-address'" {
+                        description
+                         "Only applies when
+                         protocol allocation type is static";
+                    }
+                    leaf provider-address {
+                        type inet:ipv6-address;
+                        description
+                         "Provider side address.";
+                    }
+                    leaf customer-address {
+                        type inet:ipv6-address;
+                        description
+                         "Customer side address.";
+                    }
+                    leaf mask {
+                        type uint8 {
+                            range "0..128";
+
+                        }
+                        description
+                         "Subnet mask expressed
+                         in bits";
+                    }
+                    description
+                     "Describes IP addresses used";
+                }
+
+                description
+                 "IPv6 specific parameters";
+
+            }
+            container oam {
+                container bfd {
+                    if-feature bfd;
+                    leaf bfd-enabled {
+                        type boolean;
+                        description
+                         "BFD activation";
+                    }
+
+                    choice holdtime {
+                        case profile {
+                            leaf profile-name {
+                                type string;
+                                description
+                                 "Service provider well
+                                 known profile.";
+                            }
+                            description
+                                 "Service provider well
+                                 known profile.";
+                        }
+                        case fixed {
+                            leaf fixed-value {
+                                type uint32;
+                                units msec;
+                                description
+                                 "Expected holdtime
+                                 expressed
+                                 in msec.";
+                            }
+                        }
+                        description
+                         "Choice for holdtime flavor.";
+                    }
+                    description
+                     "Container for BFD.";
+                }
+                description
+                 "Define the OAM used on the connection.";
+            }
+            description
+             "Defines connection parameters.";
+        }
+        description
+         "This grouping defines IP connection parameters.";
+    }
+
+    grouping site-service-multicast {
+        container multicast {
+            if-feature multicast;
+            leaf multicast-site-type {
+                type enumeration {
+                    enum receiver-only {
+                        description
+                         "The site has only receivers.";
+                    }
+                    enum source-only {
+                        description
+                         "The site has only sources.";
+                    }
+                    enum source-receiver {
+                        description
+                         "The site has both
+                         sources & receivers.";
+                    }
+                }
+                default "source-receiver";
+                description
+                 "Type of multicast site.";
+            }
+            container multicast-transport-protocol {
+                leaf ipv4 {
+                    if-feature ipv4;
+                    type boolean;
+                    default true;
+                    description
+                        "Enables ipv4 multicast transport";
+                }
+                leaf ipv6 {
+                    if-feature ipv6;
+                    type boolean;
+                    default false;
+                    description
+                        "Enables ipv6 multicast transport";
+                }
+                description
+                 "Defines protocol to transport multicast.";
+            }
+            leaf protocol-type {
+                type enumeration {
+                    enum host {
+                        description
+                         "
+                         Hosts are directly connected
+                         to the provider network.
+                         Host protocols like IGMP, MLD
+                         are required.
+                         ";
+                    }
+                    enum router {
+                        description
+                         "
+                         Hosts are behind a customer router.
+                         PIM will be implemented.
+                         ";
+                    }
+                    enum both {
+                        description
+                         "Some Hosts are behind a customer
+                         router and some others are directly
+                         connected to the provider network.
+                         Both host and routing protocols must be
+                         used. Typically IGMP and PIM will be
+                         implemented.
+                         ";
+                    }
+                }
+                default "both";
+                description
+                 "Multicast protocol type to be used
+                 with the customer site.";
+            }
+
+            description
+             "Multicast parameters for the site.";
+        }
+        description
+          "Multicast parameters for the site.";
+    }
+
+    grouping site-management {
+        container management {
+            leaf type {
+                type identityref {
+                    base management;
+                }
+                description
+                "Management type of the connection.";
+            }
+            leaf management-transport {
+                type identityref {
+                    base address-family;
+                }
+                description
+                 "Transport protocol used for management.";
+            }
+            leaf address {
+                type inet:ip-address;
+                description
+                 "Management address";
+            }
+
+            description
+             "Management configuration";
+        }
+        description
+          "Management parameters for the site.";
+    }
+
+    grouping site-vpn-flavor-profile {
+        leaf site-vpn-flavor {
+            type identityref {
+                base site-vpn-flavor;
+            }
+            default site-vpn-flavor-single;
+            description
+             "Defines if the site
+            is a single VPN site, or multiVPN or ...";
+        }
+        description
+         "Grouping for site-vpn-flavor.";
+    }
+
+    grouping site-vpn-policy {
+        container vpn-policy-list {
+            list vpn-policy {
+                key vpn-policy-id;
+
+                leaf vpn-policy-id {
+                    type svc-id;
+                    description
+                     "Unique identifier for
+                     the VPN policy.";
+                }
+
+                list entries {
+                    key id;
+
+                    leaf id {
+                            type svc-id;
+                            description
+                             "Unique identifier for
+                              the policy entry.";
+                    }
+                    container filter {
+                        choice lan {
+                            case lan-prefix {
+                                container lan-prefixes {
+                                    list ipv4-lan-prefixes {
+                                        if-feature ipv4;
+                                        key lan;
+
+                                        leaf lan {
+                                            type inet:ipv4-prefix;
+                                            description
+                                             "Lan prefixes.";
+                                        }
+                                        description "
+                                            List of LAN prefixes
+                                            for the site.
+                                            ";
+                                    }
+                                    list ipv6-lan-prefixes {
+                                        if-feature ipv6;
+                                        key lan;
+
+                                        leaf lan {
+                                            type inet:ipv6-prefix;
+                                            description
+                                             "Lan prefixes.";
+                                        }
+                                        description "
+                                            List of LAN prefixes
+                                            for the site.
+                                            ";
+                                    }
+                                    description
+                                     "LAN prefixes from the customer.";
+                                }
+                            }
+                            case lan-tag {
+                                leaf-list lan-tag {
+                                    type string;
+                                    description
+                                     "List of lan-tags to be matched.";
+                                }
+                            }
+                            description
+                             "Choice for LAN matching type";
+                        }
+                        description
+                         "If used, it permit to split site LANs
+                         among multiple VPNs.
+                         If no filter used, all the LANs will be
+                         part of the same VPNs with the same
+                         role.";
+                    }
+                    container vpn {
+                        leaf vpn-id {
+                            type leafref {
+                                path "/l3vpn-svc/vpn-services/vpn-svc/vpn-id";
+                            }
+                            mandatory true;
+                            description
+                             "Reference to an IPVPN.";
+                        }
+                        leaf site-role {
+                            type identityref {
+                                base site-role;
+                            }
+                            mandatory true;
+                            description
+                             "Role of the site in the IPVPN.";
+                        }
+                        description
+                         "List of VPNs the LAN is associated to.";
+                    }
+                    description
+                     "List of entries for export policy.";
+                }
+                description
+                 "List of VPN policies.";
+            }
+            description
+                 "VPN policy.";
+        }
+        description
+          "VPN policy parameters for the site.";
+    }
+
+    grouping site-maximum-routes {
+        container maximum-routes {
+            list address-family {
+                key af;
+
+                leaf af {
+                    type identityref {
+                        base address-family;
+                    }
+                    description
+                     "Address-family.";
+                }
+                leaf maximum-routes {
+                    type uint32;
+                    description
+                     "Maximum prefixes the VRF can
+                     accept for this
+                     address-family.";
+                }
+                description
+                 "List of address families.";
+            }
+
+            description
+             "Define maximum-routes for the VRF.";
+        }
+        description
+        "Define maximum-routes for the site.";
+    }
+
+    grouping site-security {
+        container security {
+            uses site-security-authentication;
+            uses site-security-encryption;
+
+            description
+             "Site specific security parameters.";
+        }
+        description
+         "Grouping for security parameters.";
+    }
+
+    grouping site-service {
+        container service {
+            uses site-service-basic;
+            uses site-service-qos-profile;
+            uses site-service-mpls;
+            uses site-service-multicast;
+
+            description
+             "Service parameters on the attachement.";
+        }
+        description
+         "Grouping for service parameters.";
+    }
+
+    grouping transport-constraint-profile {
+        list constraint-list {
+            key constraint-type;
+
+            leaf constraint-type {
+                type identityref {
+                    base transport-constraint;
+                }
+                description
+                 "Constraint type to be applied.";
+            }
+            leaf constraint-opaque-value {
+                type string;
+                description
+                "Opaque value that can be used to
+                specify constraint parameters.";
+            }
+            description
+             "List of constraints";
+        }
+        description
+         "Grouping for transport constraint.";
+    }
+
+    grouping transport-constraints {
+        container transport-constraints {
+            if-feature traffic-engineering;
+            container unicast-transport-constraints {
+                list constraint {
+                    key constraint-id;
+
+                    leaf constraint-id {
+                        type svc-id;
+                        description
+                         "Defines an ID for the constraint
+                         rule.";
+                    }
+
+                    leaf site1 {
+                        type svc-id;
+                        description
+                         "The ID refers to one site end.";
+                    }
+                    leaf site2 {
+                        type svc-id;
+                        description
+                         "The ID refers to the other
+                         site end.";
+                    }
+                    uses transport-constraint-profile;
+                    description
+                     "List of constraints.
+                     Constraints are bidirectional.";
+                }
+                description
+                 "Unicast transport constraints.";
+            }
+            container multicast-transport-constraints {
+                if-feature traffic-engineering-multicast;
+                list constraint {
+                    key constraint-id;
+
+                    leaf constraint-id {
+                        type svc-id;
+                        description
+                         "Defines an ID for the constraint
+                         rule.";
+                    }
+
+                    leaf src-site {
+                        type svc-id;
+                        description
+                         "The ID refers to source site.";
+                    }
+                    leaf dst-site {
+                        type svc-id;
+                        description
+                         "The ID refers to the receiver
+                         site.";
+                    }
+                    uses transport-constraint-profile;
+                    description
+                     "List of constraints.
+                     Constraints are unidirectional.";
+                }
+                description
+                 "Multicast transport constraints.";
+            }
+            description
+                 "transport constraints.";
+        }
+        description
+         "Grouping for transport constraints
+         description.";
+    }
+
+    grouping vpn-extranet {
+        container extranet-vpns {
+            if-feature extranet-vpn;
+            list extranet-vpn {
+                key vpn-id;
+
+                leaf vpn-id {
+                    type svc-id;
+                    description
+                        "Identifies the target VPN";
+                }
+                leaf local-sites-role {
+                    type identityref {
+                        base site-role;
+                    }
+                    description
+                     "This describes the role of the
+                     local sites in the target VPN topology.";
+                }
+                description
+                 "List of extranet VPNs the local
+                 VPN is attached to.";
+            }
+            description
+             "Container for extranet vpn cfg.";
+        }
+        description
+            "grouping for extranet VPN configuration.
+            Extranet provides a way to interconnect all sites
+            from two VPNs in a easy way.";
+    }
+
+    grouping site-attachment-availability {
+        container availability {
+            leaf access-priority {
+                type uint32;
+                default 1;
+                description
+                 "Defines the priority for the access.
+                 The highest the priority value is,
+                 the highest the
+                 preference of the access is.";
+            }
+            description
+             "Availability parameters
+             (used for multihoming)";
+        }
+        description
+         "Defines site availability parameters.";
+    }
+
+    grouping access-vpn-policy {
+        container vpn-attachment {
+            choice attachment-flavor {
+                case vpn-policy-id {
+                    leaf vpn-policy-id {
+                        type leafref {
+                            path "/l3vpn-svc/sites/site/"+
+                            "vpn-policy-list/vpn-policy/"+
+                            "vpn-policy-id";
+                        }
+                        description
+                         "Reference to a VPN policy.";
+                    }
+                }
+                case vpn-id {
+                    leaf vpn-id {
+                        type leafref {
+                            path "/l3vpn-svc/vpn-services"+
+                            "/vpn-svc/vpn-id";
+                        }
+                        description
+                            "Reference to a VPN.";
+                    }
+                    leaf site-role {
+                        type identityref {
+                                base site-role;
+                            }
+                        mandatory true;
+                        description
+                         "Role of the site in the IPVPN.";
+                    }
+                }
+                mandatory true;
+                description
+                 "Choice for VPN attachment flavor.";
+            }
+            description
+             "Defines VPN attachment of a site.";
+        }
+        description
+         "Defines the VPN attachment rules
+         for a site logical access.";
+    }
+
+    grouping vpn-svc-cfg {
+        leaf vpn-id {
+                type svc-id;
+                description
+                "VPN identifier. Local administration meaning.";
+            }
+        leaf customer-name {
+            type string;
+            description
+             "Name of the customer.";
+        }
+        leaf topology {
+            type identityref {
+                base vpn-topology;
+            }
+            default "any-to-any";
+            description
+             "VPN topology.";
+        }
+
+        uses vpn-service-cloud-access;
+        uses vpn-service-multicast;
+        uses vpn-service-mpls;
+        uses transport-constraints;
+        uses vpn-extranet;
+
+        description
+         "grouping for vpn-svc configuration.";
+    }
+
+    grouping site-top-level-cfg {
+        uses operational-requirements;
+        uses customer-location-info;
+        uses site-diversity;
+        uses site-management;
+        uses site-vpn-policy;
+        uses site-vpn-flavor-profile;
+        uses site-maximum-routes;
+        uses site-security;
+        uses site-service;
+        uses site-protection;
+        uses site-routing;
+
+        description
+         "Grouping for site top level cfg.";
+    }
+
+    grouping site-network-access-top-level-cfg {
+        leaf site-network-access-type {
+            type identityref {
+                base site-network-access-type;
+            }
+            default "point-to-point";
+            description
+            "Describes the type of connection, e.g. :
+            point-to-point or multipoint";
+        }
+        uses access-diversity;
+        uses site-attachment-bearer;
+        uses site-attachment-ip-connection;
+        uses site-security;
+        uses site-service;
+        uses site-routing;
+        uses site-attachment-availability;
+        uses access-vpn-policy;
+
+        description
+         "Grouping for site network access
+         top level cfg.";
+    }
+
+    /* Main blocks */
+
+    container l3vpn-svc {
+        container vpn-services {
+            list vpn-svc {
+                key vpn-id;
+
+                uses vpn-svc-cfg;
+
+                description "
+                    List of VPN services.
+
+                ";
+            }
+            description
+             "top level container
+             for the VPN services.";
+        }
+
+        container sites {
+            list site {
+                key site-id;
+
+                leaf site-id {
+                    type svc-id;
+                    description
+                        "Identifier of the site.";
+                }
+
+                uses site-top-level-cfg;
+                uses operational-requirements-ops;
+
+                container site-network-accesses {
+                    list site-network-access {
+                        key site-network-access-id;
+
+                        leaf site-network-access-id {
+                            type svc-id;
+                            description
+                             "Identifier for the access";
+                        }
+                        uses site-network-access-top-level-cfg;
+
+                        description
+                         "List of accesses for a site.";
+                    }
+                    description
+                     "List of accesses for a site.";
+                }
+
+                description "List of sites.";
+            }
+            description
+             "Container for sites";
+        }
+
+        description
+         "Main container for L3VPN service configuration.";
+    }
+}
\ No newline at end of file
diff --git a/apps/l3vpn/yangmodel/src/main/yang/ietf-yang-types.yang b/apps/l3vpn/yangmodel/src/main/yang/ietf-yang-types.yang
new file mode 100755
index 0000000..3f87464
--- /dev/null
+++ b/apps/l3vpn/yangmodel/src/main/yang/ietf-yang-types.yang
@@ -0,0 +1,473 @@
+module ietf-yang-types {
+
+     namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
+     prefix "yang";
+
+     organization
+      "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+     contact
+      "WG Web:   <http://tools.ietf.org/wg/netmod/>
+       WG List:  <mailto:netmod@ietf.org>
+
+       WG Chair: David Kessens
+                 <mailto:david.kessens@nsn.com>
+
+       WG Chair: Juergen Schoenwaelder
+                 <mailto:j.schoenwaelder@jacobs-university.de>
+
+       Editor:   Juergen Schoenwaelder
+                 <mailto:j.schoenwaelder@jacobs-university.de>";
+
+     description
+      "This module contains a collection of generally useful derived
+       YANG data types.
+
+       Copyright (c) 2013 IETF Trust and the persons identified as
+       authors of the code.  All rights reserved.
+
+       Redistribution and use in source and binary forms, with or
+       without modification, is permitted pursuant to, and subject
+       to the license terms contained in, the Simplified BSD License
+       set forth in Section 4.c of the IETF Trust's Legal Provisions
+       Relating to IETF Documents
+       (http://trustee.ietf.org/license-info).
+
+       This version of this YANG module is part of RFC 6991; see
+       the RFC itself for full legal notices.";
+
+     revision 2013-07-15 {
+       description
+        "This revision adds the following new data types:
+         - yang-identifier
+         - hex-string
+         - uuid
+         - dotted-quad";
+       reference
+        "RFC 6991: Common YANG Data Types";
+     }
+
+     revision 2010-09-24 {
+       description
+        "Initial revision.";
+       reference
+        "RFC 6021: Common YANG Data Types";
+     }
+
+     /*** collection of counter and gauge types ***/
+
+     typedef counter32 {
+       type uint32;
+       description
+        "The counter32 type represents a non-negative integer
+         that monotonically increases until it reaches a
+         maximum value of 2^32-1 (4294967295 decimal), when it
+         wraps around and starts increasing again from zero.
+
+         Counters have no defined 'initial' value, and thus, a
+         single value of a counter has (in general) no information
+         content.  Discontinuities in the monotonically increasing
+         value normally occur at re-initialization of the
+         management system, and at other times as specified in the
+         description of a schema node using this type.  If such
+         other times can occur, for example, the creation of
+         a schema node of type counter32 at times other than
+         re-initialization, then a corresponding schema node
+         should be defined, with an appropriate type, to indicate
+         the last discontinuity.
+
+         The counter32 type should not be used for configuration
+         schema nodes.  A default statement SHOULD NOT be used in
+         combination with the type counter32.
+
+         In the value set and its semantics, this type is equivalent
+         to the Counter32 type of the SMIv2.";
+       reference
+        "RFC 2578: Structure of Management Information Version 2
+                   (SMIv2)";
+     }
+
+     typedef zero-based-counter32 {
+       type yang:counter32;
+       default "0";
+       description
+        "The zero-based-counter32 type represents a counter32
+         that has the defined 'initial' value zero.
+
+         A schema node of this type will be set to zero (0) on creation
+         and will thereafter increase monotonically until it reaches
+         a maximum value of 2^32-1 (4294967295 decimal), when it
+         wraps around and starts increasing again from zero.
+
+         Provided that an application discovers a new schema node
+         of this type within the minimum time to wrap, it can use the
+         'initial' value as a delta.  It is important for a management
+         station to be aware of this minimum time and the actual time
+         between polls, and to discard data if the actual time is too
+         long or there is no defined minimum time.
+         In the value set and its semantics, this type is equivalent
+         to the ZeroBasedCounter32 textual convention of the SMIv2.";
+       reference
+         "RFC 4502: Remote Network Monitoring Management Information
+                    Base Version 2";
+     }
+
+     typedef counter64 {
+       type uint64;
+       description
+        "The counter64 type represents a non-negative integer
+         that monotonically increases until it reaches a
+         maximum value of 2^64-1 (18446744073709551615 decimal),
+         when it wraps around and starts increasing again from zero.
+
+         Counters have no defined 'initial' value, and thus, a
+         single value of a counter has (in general) no information
+         content.  Discontinuities in the monotonically increasing
+         value normally occur at re-initialization of the
+         management system, and at other times as specified in the
+         description of a schema node using this type.  If such
+         other times can occur, for example, the creation of
+         a schema node of type counter64 at times other than
+         re-initialization, then a corresponding schema node
+         should be defined, with an appropriate type, to indicate
+         the last discontinuity.
+
+         The counter64 type should not be used for configuration
+         schema nodes.  A default statement SHOULD NOT be used in
+         combination with the type counter64.
+
+         In the value set and its semantics, this type is equivalent
+         to the Counter64 type of the SMIv2.";
+       reference
+        "RFC 2578: Structure of Management Information Version 2
+                   (SMIv2)";
+     }
+
+     typedef zero-based-counter64 {
+       type yang:counter64;
+       default "0";
+       description
+        "The zero-based-counter64 type represents a counter64 that
+         has the defined 'initial' value zero.
+         A schema node of this type will be set to zero (0) on creation
+         and will thereafter increase monotonically until it reaches
+         a maximum value of 2^64-1 (18446744073709551615 decimal),
+         when it wraps around and starts increasing again from zero.
+
+         Provided that an application discovers a new schema node
+         of this type within the minimum time to wrap, it can use the
+         'initial' value as a delta.  It is important for a management
+         station to be aware of this minimum time and the actual time
+         between polls, and to discard data if the actual time is too
+         long or there is no defined minimum time.
+
+         In the value set and its semantics, this type is equivalent
+         to the ZeroBasedCounter64 textual convention of the SMIv2.";
+       reference
+        "RFC 2856: Textual Conventions for Additional High Capacity
+                   Data Types";
+     }
+
+     typedef gauge32 {
+       type uint32;
+       description
+        "The gauge32 type represents a non-negative integer, which
+         may increase or decrease, but shall never exceed a maximum
+         value, nor fall below a minimum value.  The maximum value
+         cannot be greater than 2^32-1 (4294967295 decimal), and
+         the minimum value cannot be smaller than 0.  The value of
+         a gauge32 has its maximum value whenever the information
+         being modeled is greater than or equal to its maximum
+         value, and has its minimum value whenever the information
+         being modeled is smaller than or equal to its minimum value.
+         If the information being modeled subsequently decreases
+         below (increases above) the maximum (minimum) value, the
+         gauge32 also decreases (increases).
+
+         In the value set and its semantics, this type is equivalent
+         to the Gauge32 type of the SMIv2.";
+       reference
+        "RFC 2578: Structure of Management Information Version 2
+                   (SMIv2)";
+     }
+
+     typedef gauge64 {
+       type uint64;
+       description
+        "The gauge64 type represents a non-negative integer, which
+         may increase or decrease, but shall never exceed a maximum
+         value, nor fall below a minimum value.  The maximum value
+         cannot be greater than 2^64-1 (18446744073709551615), and
+         the minimum value cannot be smaller than 0.  The value of
+         a gauge64 has its maximum value whenever the information
+         being modeled is greater than or equal to its maximum
+         value, and has its minimum value whenever the information
+         being modeled is smaller than or equal to its minimum value.
+         If the information being modeled subsequently decreases
+         below (increases above) the maximum (minimum) value, the
+         gauge64 also decreases (increases).
+
+         In the value set and its semantics, this type is equivalent
+         to the CounterBasedGauge64 SMIv2 textual convention defined
+         in RFC 2856";
+       reference
+        "RFC 2856: Textual Conventions for Additional High Capacity
+                   Data Types";
+     }
+
+     /*** collection of identifier-related types ***/
+
+     typedef object-identifier {
+       type string {
+         pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
+               + '(\.(0|([1-9]\d*)))*';
+       }
+       description
+        "The object-identifier type represents administratively
+         assigned names in a registration-hierarchical-name tree.
+
+         Values of this type are denoted as a sequence of numerical
+         non-negative sub-identifier values.  Each sub-identifier
+         value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
+         are separated by single dots and without any intermediate
+         whitespace.
+
+         The ASN.1 standard restricts the value space of the first
+         sub-identifier to 0, 1, or 2.  Furthermore, the value space
+         of the second sub-identifier is restricted to the range
+         0 to 39 if the first sub-identifier is 0 or 1.  Finally,
+         the ASN.1 standard requires that an object identifier
+         has always at least two sub-identifiers.  The pattern
+         captures these restrictions.
+
+         Although the number of sub-identifiers is not limited,
+         module designers should realize that there may be
+         implementations that stick with the SMIv2 limit of 128
+         sub-identifiers.
+
+         This type is a superset of the SMIv2 OBJECT IDENTIFIER type
+         since it is not restricted to 128 sub-identifiers.  Hence,
+         this type SHOULD NOT be used to represent the SMIv2 OBJECT
+         IDENTIFIER type; the object-identifier-128 type SHOULD be
+         used instead.";
+       reference
+        "ISO9834-1: Information technology -- Open Systems
+         Interconnection -- Procedures for the operation of OSI
+         Registration Authorities: General procedures and top
+         arcs of the ASN.1 Object Identifier tree";
+     }
+
+     typedef object-identifier-128 {
+       type object-identifier {
+         pattern '\d*(\.\d*){1,127}';
+       }
+       description
+        "This type represents object-identifiers restricted to 128
+         sub-identifiers.
+
+         In the value set and its semantics, this type is equivalent
+         to the OBJECT IDENTIFIER type of the SMIv2.";
+       reference
+        "RFC 2578: Structure of Management Information Version 2
+                   (SMIv2)";
+     }
+
+     typedef yang-identifier {
+       type string {
+         length "1..max";
+         pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
+         pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
+       }
+       description
+         "A YANG identifier string as defined by the 'identifier'
+          rule in Section 12 of RFC 6020.  An identifier must
+          start with an alphabetic character or an underscore
+          followed by an arbitrary sequence of alphabetic or
+          numeric characters, underscores, hyphens, or dots.
+
+          A YANG identifier MUST NOT start with any possible
+          combination of the lowercase or uppercase character
+          sequence 'xml'.";
+       reference
+         "RFC 6020: YANG - A Data Modeling Language for the Network
+                    Configuration Protocol (NETCONF)";
+     }
+
+     /*** collection of types related to date and time***/
+
+     typedef date-and-time {
+       type string {
+         pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
+               + '(Z|[\+\-]\d{2}:\d{2})';
+       }
+       description
+        "The date-and-time type is a profile of the ISO 8601
+         standard for representation of dates and times using the
+         Gregorian calendar.  The profile is defined by the
+         date-time production in Section 5.6 of RFC 3339.
+
+         The date-and-time type is compatible with the dateTime XML
+         schema type with the following notable exceptions:
+
+         (a) The date-and-time type does not allow negative years.
+
+         (b) The date-and-time time-offset -00:00 indicates an unknown
+             time zone (see RFC 3339) while -00:00 and +00:00 and Z
+             all represent the same time zone in dateTime.
+
+         (c) The canonical format (see below) of data-and-time values
+             differs from the canonical format used by the dateTime XML
+             schema type, which requires all times to be in UTC using
+             the time-offset 'Z'.
+
+         This type is not equivalent to the DateAndTime textual
+         convention of the SMIv2 since RFC 3339 uses a different
+         separator between full-date and full-time and provides
+         higher resolution of time-secfrac.
+
+         The canonical format for date-and-time values with a known time
+         zone uses a numeric time zone offset that is calculated using
+         the device's configured known offset to UTC time.  A change of
+         the device's offset to UTC time will cause date-and-time values
+         to change accordingly.  Such changes might happen periodically
+         in case a server follows automatically daylight saving time
+         (DST) time zone offset changes.  The canonical format for
+         date-and-time values with an unknown time zone (usually
+         referring to the notion of local time) uses the time-offset
+         -00:00.";
+       reference
+        "RFC 3339: Date and Time on the Internet: Timestamps
+         RFC 2579: Textual Conventions for SMIv2
+         XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
+     }
+
+     typedef timeticks {
+       type uint32;
+       description
+        "The timeticks type represents a non-negative integer that
+         represents the time, modulo 2^32 (4294967296 decimal), in
+         hundredths of a second between two epochs.  When a schema
+         node is defined that uses this type, the description of
+         the schema node identifies both of the reference epochs.
+
+         In the value set and its semantics, this type is equivalent
+         to the TimeTicks type of the SMIv2.";
+       reference
+        "RFC 2578: Structure of Management Information Version 2
+                   (SMIv2)";
+     }
+
+     typedef timestamp {
+       type yang:timeticks;
+       description
+        "The timestamp type represents the value of an associated
+         timeticks schema node at which a specific occurrence
+         happened.  The specific occurrence must be defined in the
+         description of any schema node defined using this type.  When
+         the specific occurrence occurred prior to the last time the
+         associated timeticks attribute was zero, then the timestamp
+         value is zero.  Note that this requires all timestamp values
+         to be reset to zero when the value of the associated timeticks
+         attribute reaches 497+ days and wraps around to zero.
+
+         The associated timeticks schema node must be specified
+         in the description of any schema node using this type.
+
+         In the value set and its semantics, this type is equivalent
+         to the TimeStamp textual convention of the SMIv2.";
+       reference
+        "RFC 2579: Textual Conventions for SMIv2";
+     }
+
+     /*** collection of generic address types ***/
+
+     typedef phys-address {
+       type string {
+         pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+       }
+
+       description
+        "Represents media- or physical-level addresses represented
+         as a sequence octets, each octet represented by two hexadecimal
+         numbers.  Octets are separated by colons.  The canonical
+         representation uses lowercase characters.
+
+         In the value set and its semantics, this type is equivalent
+         to the PhysAddress textual convention of the SMIv2.";
+       reference
+        "RFC 2579: Textual Conventions for SMIv2";
+     }
+
+     typedef mac-address {
+       type string {
+         pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
+       }
+       description
+        "The mac-address type represents an IEEE 802 MAC address.
+         The canonical representation uses lowercase characters.
+
+         In the value set and its semantics, this type is equivalent
+         to the MacAddress textual convention of the SMIv2.";
+       reference
+        "IEEE 802: IEEE Standard for Local and Metropolitan Area
+                   Networks: Overview and Architecture
+         RFC 2579: Textual Conventions for SMIv2";
+     }
+
+     /*** collection of XML-specific types ***/
+
+     typedef xpath1.0 {
+       type string;
+       description
+        "This type represents an XPATH 1.0 expression.
+
+         When a schema node is defined that uses this type, the
+         description of the schema node MUST specify the XPath
+         context in which the XPath expression is evaluated.";
+       reference
+        "XPATH: XML Path Language (XPath) Version 1.0";
+     }
+
+     /*** collection of string types ***/
+
+     typedef hex-string {
+       type string {
+         pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+       }
+
+       description
+        "A hexadecimal string with octets represented as hex digits
+         separated by colons.  The canonical representation uses
+         lowercase characters.";
+     }
+
+     typedef uuid {
+       type string {
+         pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
+               + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
+       }
+       description
+        "A Universally Unique IDentifier in the string representation
+         defined in RFC 4122.  The canonical representation uses
+         lowercase characters.
+
+         The following is an example of a UUID in string representation:
+         f81d4fae-7dec-11d0-a765-00a0c91e6bf6
+         ";
+       reference
+        "RFC 4122: A Universally Unique IDentifier (UUID) URN
+                   Namespace";
+     }
+
+     typedef dotted-quad {
+       type string {
+         pattern
+           '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+         + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
+       }
+       description
+         "An unsigned 32-bit number expressed in the dotted-quad
+          notation, i.e., four octets written as decimal numbers
+          and separated with the '.' (full stop) character.";
+     }
+   }
\ No newline at end of file
diff --git a/apps/l3vpn/yangmodel/src/main/yang/l3vpn-svc-ext@2016-07-30.yang b/apps/l3vpn/yangmodel/src/main/yang/l3vpn-svc-ext@2016-07-30.yang
new file mode 100644
index 0000000..e3fecb6
--- /dev/null
+++ b/apps/l3vpn/yangmodel/src/main/yang/l3vpn-svc-ext@2016-07-30.yang
@@ -0,0 +1,362 @@
+module l3vpn-svc-ext {
+    yang-version 1;
+    namespace "urn:ietf:params:xml:ns:yang:l3vpn:svc:ext";
+    prefix "l3vpn-svc-ext";
+
+    import ietf-inet-types { prefix inet;  }
+    import ietf-l3vpn-svc { prefix l3vpn;  }
+
+    revision 2016-07-30 {
+        description
+        "Eliminated warnings";
+    }
+
+    revision "2016-07-20" {
+        description "Initial revision of extended l3vpn yang model";
+    }
+
+    typedef short-as-number {
+        type inet:as-number {
+            range 0..65535;
+        }
+    }
+
+    typedef route-distinguisher {
+        reference "https://tools.ietf.org/html/rfc4364#section-4.2";
+        type union {
+            type rd-ipv4;
+            type rd-as;
+            type rd-as2;
+        }
+    }
+
+    typedef rd-ipv4 {
+        type string {
+            /* IPv4 : 2B number */
+            pattern '((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+                + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))'
+                + ':'
+                + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
+                + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
+                + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])';
+        }
+    }
+
+    typedef rd-as {
+        type string {
+            /* 2B AS : 4B number */
+            pattern '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
+                + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
+                + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])'
+                + ':'
+                + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
+                + '[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|'
+                + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
+                + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
+                + '4[0-1][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|42[0-8][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
+                + '429[0-3][0-9][0-9][0-9][0-9][0-9][0-9]|4294[0-8][0-9][0-9][0-9][0-9][0-9]|'
+                + '42949[0-5][0-9][0-9][0-9][0-9]|429496[0-6][0-9][0-9][0-9]|4294967[0-1][0-9][0-9]|'
+                + '42949672[0-8][0-9]|429496729[0-5])';
+        }
+    }
+
+    typedef rd-as2 {
+        type string {
+            /* 4B AS : 2B number */
+            pattern '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
+                + '[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|'
+                + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
+                + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
+                + '4[0-1][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|42[0-8][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
+                + '429[0-3][0-9][0-9][0-9][0-9][0-9][0-9]|4294[0-8][0-9][0-9][0-9][0-9][0-9]|'
+                + '42949[0-5][0-9][0-9][0-9][0-9]|429496[0-6][0-9][0-9][0-9]|4294967[0-1][0-9][0-9]|'
+                + '42949672[0-8][0-9]|429496729[0-5])'
+                + ':'
+                + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
+                + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
+                + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])';
+        }
+    }
+
+    identity tc-demanded-tunnel {
+        base l3vpn:transport-constraint;
+        description "on-demand tunnel.";
+    }
+
+    grouping class-profile {
+        list qos-class {
+            key class-id;
+            leaf class-id {
+                type string;
+                description
+                 "Identification of the
+                 class of service.
+                 This identifier is internal to
+                 the administration.";
+            }
+            leaf rate-limit {
+                type uint8;
+                units percent;
+                description
+                 "To be used if class must
+                 be rate
+                 limited. Expressed as
+                 percentage of the svc-bw.";
+            }
+            leaf priority-level {
+                type uint8;
+                description
+                 "Defines the level of the
+                 class in
+                 term of priority queueing.
+                 The higher the level is the
+                 higher
+                 is the priority.";
+            }
+            leaf guaranteed-bw-percent {
+                type uint8;
+                units percent;
+                description
+                 "To be used to define the
+                 guaranteed
+                 BW in percent of the svc-bw
+                 available at the priority-level.";
+            }
+            description
+             "List of class of services.";
+        }
+    }
+
+    augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:service/l3vpn:qos/l3vpn:qos-profile/l3vpn:qos-profile" {
+        case custom-unicom {
+            container inbound-classes {
+                uses class-profile;
+            }
+            container outbound-classes {
+                uses class-profile;
+            }
+        }
+    }
+
+    grouping bearer-attachment-grouping {
+        container bearer-attachment {
+            leaf pe-name {
+                type string;
+            }
+            leaf pe-mgmt-ip {
+                type inet:ipv4-address;
+            }
+            description "attached PE";
+        }
+    }
+
+    augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:bearer" {
+        uses bearer-attachment-grouping;
+    }
+
+    grouping requested-type-grouping {
+        container requested-type-profile {
+            choice requested-type-choice {
+                case dot1q-case {
+                    container dot1q {
+                        leaf physical-if {
+                            description "physical interface name.";
+                            type string;
+                        }
+                        leaf vlan-id {
+                            type uint16 {
+                                range "1..4096";
+                            }
+                        }
+                    }
+                }
+                case physical-case {
+                    container physical {
+                        leaf physical-if {
+                            description "physical interface name.";
+                            type string;
+                        }
+                    }
+                }
+            }
+            leaf circuit-id {
+                description "circuit description for PE-CE port.";
+                type string;
+            }
+        }
+    }
+
+    augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:bearer/l3vpn:requested-type" {
+        uses requested-type-grouping;
+    }
+
+    grouping bfd-grouping {
+        leaf bfd-enabled {
+            type boolean;
+            description
+             "BFD activation";
+        }
+        choice holdtime {
+            case profile {
+                leaf profile-name {
+                    type string;
+                    description
+                     "Service provider well
+                     known profile.";
+                }
+                description
+                 "Service provider well
+                 known profile.";
+            }
+            case fixed {
+                leaf fixed-value {
+                    type uint32;
+                    units msec;
+                    description
+                     "Expected holdtime
+                     expressed
+                     in msec.";
+                }
+            }
+            case dynamic {
+                container dynamic-value {
+                    leaf interval {
+                        type uint16;
+                        units msec;
+                        default 500;
+                    }
+                    leaf multiplier {
+                        type uint16;
+                        default 3;
+                    }
+                    description
+                     "interval * multiplier is
+                     timeout value.";
+                }
+            }
+        }
+    }
+
+    grouping bgp-profile {
+        leaf as-override {
+            type boolean;
+            default false;
+        }
+        container soo {
+            leaf soo-enabled {
+                type boolean;
+            }
+            leaf soo-value {
+                type string;
+            }
+        }
+        container password {
+            leaf password-enabled {
+                type boolean;
+            }
+            leaf password-value {
+                type string;
+            }
+        }
+        container bgp-timer {
+            leaf keep-alive {
+                type uint16;
+                default 60;
+                units "seconds";
+            }
+            leaf hold-time {
+                type uint16;
+                default 180;
+                units "seconds";
+            }
+        }
+        container bfd {
+            uses bfd-grouping;
+        }
+    }
+
+    augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:routing-protocols/l3vpn:routing-protocol/l3vpn:bgp" {
+        uses bgp-profile;
+    }
+
+    augment "/l3vpn:l3vpn-svc/l3vpn:vpn-services/l3vpn:vpn-svc/l3vpn:transport-constraints/l3vpn:unicast-transport-constraints/l3vpn:constraint/l3vpn:constraint-list" {
+        leaf constraint-opaque-value2 {
+            type string;
+            description
+             "Opaque value that can be used to
+             specify constraint parameters.";
+        }
+    }
+
+    grouping route-ipv4-extended-community {
+        reference "http://tools.ietf.org/html/rfc4360";
+        leaf global-administrator {
+            type inet:ipv4-address;
+        }
+        leaf local-administrator {
+            type uint16;
+        }
+    }
+
+    grouping extended-community {
+        choice extended-community {
+            reference "http://tools.ietf.org/html/rfc4360#section-4";
+            default route-target-extended-community-case;
+            case route-target-extended-community-case {
+                container route-target-extended-community {
+                    leaf global-administrator {
+                        type short-as-number;
+                    }
+                    leaf local-administrator {
+                        type uint32;
+                    }
+                }
+            }
+            case route-target-ipv4-case {
+                container route-target-ipv4 {
+                    uses route-ipv4-extended-community;
+                }
+            }
+            case route-target-extended-community-case2 {
+                container route-target-extended-community2 {
+                    leaf global-administrator {
+                        type uint32;
+                    }
+                    leaf local-administrator {
+                        type uint16;
+                    }
+                }
+            }
+        }
+    }
+
+    grouping rdrt-profile {
+        choice site-role {
+            case custom-case {
+                container custom {
+                    list import-rt {
+                        key imrt-id;
+                        leaf imrt-id {
+                          type string;
+                        }
+                        uses extended-community;
+                    }
+                    list export-rt {
+                        key exrt-id;
+                        leaf exrt-id {
+                          type string;
+                        }
+                        uses extended-community;
+                    }
+                    leaf rd {
+                        type route-distinguisher;
+                    }
+                }
+            }
+        }
+    }
+
+    augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:vpn-attachment" {
+        uses rdrt-profile;
+    }
+}
\ No newline at end of file
