diff --git a/apps/l3vpn/BUCK b/apps/l3vpn/BUCK
new file mode 100644
index 0000000..1c6d6ef
--- /dev/null
+++ b/apps/l3vpn/BUCK
@@ -0,0 +1,19 @@
+APPS = [
+  'org.onosproject.yang',
+]
+
+BUNDLES = [
+  '//apps/l3vpn/netl3vpn:onos-apps-l3vpn-netl3vpn',
+  '//apps/l3vpn/yangmodel:onos-apps-l3vpn-yangmodel',
+]
+
+onos_app(
+  app_name = 'org.onosproject.l3vpn',
+  title = 'YANG L3VPN App',
+  category = 'L3VPN APP',
+  url = 'http://onosproject.org',
+  included_bundles = BUNDLES,
+  description = 'L3VPN YANG Application',
+  required_apps = APPS,
+)
+
diff --git a/apps/l3vpn/netl3vpn/BUCK b/apps/l3vpn/netl3vpn/BUCK
new file mode 100644
index 0000000..47b8c9a
--- /dev/null
+++ b/apps/l3vpn/netl3vpn/BUCK
@@ -0,0 +1,16 @@
+COMPILE_DEPS = [
+  '//lib:CORE_DEPS',
+  '//apps/l3vpn/yangmodel:onos-apps-l3vpn-yangmodel',
+  '//lib:onos-yang-model',
+  '//lib:onos-yang-runtime',
+]
+
+TEST_DEPS = [
+  '//lib:TEST_ADAPTERS',
+  '//utils/osgi:onlab-osgi-tests',
+]
+
+osgi_jar_with_tests(
+  deps = COMPILE_DEPS,
+  test_deps = TEST_DEPS,
+)
diff --git a/apps/l3vpn/netl3vpn/pom.xml b/apps/l3vpn/netl3vpn/pom.xml
new file mode 100644
index 0000000..2ce1d09
--- /dev/null
+++ b/apps/l3vpn/netl3vpn/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2017-present Open Networking Laboratory
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onosproject</groupId>
+        <artifactId>onos-app-l3vpn</artifactId>
+        <version>1.10.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>onos-app-l3vpn-netl3vpn</artifactId>
+    <packaging>bundle</packaging>
+
+    <description>IETF L3VPN Service Model</description>
+
+    <properties>
+        <yang-tool-version>1.12.0-b5</yang-tool-version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onlab-junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-yang-model</artifactId>
+            <version>${yang-tool-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-yang-runtime</artifactId>
+            <version>${yang-tool-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-app-l3vpn-yangmodel</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3vpnManager.java b/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3vpnManager.java
new file mode 100644
index 0000000..2535173
--- /dev/null
+++ b/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3vpnManager.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2017-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.l3vpn.netl3vpn;
+
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.onosproject.core.CoreService;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.IetfInetTypes;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.l3vpn.svc.rev20160730.IetfL3VpnSvc;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev20130715.IetfYangTypes;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.l3vpn.svc.ext.rev20160730.L3VpnSvcExt;
+import org.onosproject.yang.model.YangModel;
+import org.onosproject.yang.model.YangModuleId;
+import org.onosproject.yang.runtime.DefaultAppModuleInfo;
+import org.onosproject.yang.runtime.DefaultModelRegistrationParam;
+import org.onosproject.yang.runtime.ModelRegistrationParam;
+import org.onosproject.yang.runtime.YangModelRegistry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Iterator;
+
+import static org.onosproject.yang.runtime.helperutils.YangApacheUtils.getYangModel;
+
+/**
+ * The IETF net l3vpn manager implementation.
+ */
+@Component(immediate = true)
+public class NetL3vpnManager {
+
+    private static final String APP_ID = "org.onosproject.app.l3vpn";
+    private final Logger log = LoggerFactory.getLogger(getClass());
+
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    protected CoreService coreService;
+
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    protected YangModelRegistry modelRegistry;
+
+    private ModelRegistrationParam regParam = null;
+
+    @Activate
+    protected void activate() {
+        coreService.registerApplication(APP_ID);
+        log.info("Started");
+        //TODO implementation
+    }
+
+    @Deactivate
+    protected void deactivate() {
+        modelRegistry.unregisterModel(regParam);
+        log.info("Stopped");
+    }
+
+    private void registerModel() {
+        YangModel model = getYangModel(getClass());
+        Iterator<YangModuleId> it = model.getYangModulesId().iterator();
+
+        //Create model registration param.
+        ModelRegistrationParam.Builder b =
+                DefaultModelRegistrationParam.builder().setYangModel(model);
+
+        YangModuleId id;
+        while (it.hasNext()) {
+            id = it.next();
+            switch (id.moduleName()) {
+                case "ietf-inet-types":
+                    b.addAppModuleInfo(id, new DefaultAppModuleInfo(
+                            IetfInetTypes.class, null));
+                    break;
+                case "ietf-l3vpn-svc":
+                    b.addAppModuleInfo(id, new DefaultAppModuleInfo(
+                            IetfL3VpnSvc.class, null));
+                    break;
+                case "ietf-yang-types":
+                    b.addAppModuleInfo(id, new DefaultAppModuleInfo(
+                            IetfYangTypes.class, null));
+                    break;
+                case "l3vpn-svc-ext":
+                    b.addAppModuleInfo(id, new DefaultAppModuleInfo(
+                            L3VpnSvcExt.class, null));
+                    break;
+                default:
+                    break;
+            }
+        }
+        regParam = b.build();
+        modelRegistry.registerModel(regParam);
+    }
+}
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/package-info.java b/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/package-info.java
new file mode 100644
index 0000000..de5783a
--- /dev/null
+++ b/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2017-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * The implementations of IETF l3vpn net YANG.
+ */
+package org.onosproject.l3vpn.netl3vpn;
diff --git a/apps/l3vpn/pom.xml b/apps/l3vpn/pom.xml
new file mode 100644
index 0000000..faa3170
--- /dev/null
+++ b/apps/l3vpn/pom.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2017-present Open Networking Laboratory
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onosproject</groupId>
+        <artifactId>onos-apps</artifactId>
+        <version>1.10.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>onos-app-l3vpn</artifactId>
+    <packaging>pom</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-yang-model</artifactId>
+            <version>1.12.0-b5</version>
+        </dependency>
+    </dependencies>
+
+    <modules>
+        <module>netl3vpn</module>
+        <module>yangmodel</module>
+    </modules>
+
+    <description>L3VPN YANG Application</description>
+</project>
+
diff --git a/apps/l3vpn/yangmodel/BUCK b/apps/l3vpn/yangmodel/BUCK
new file mode 100644
index 0000000..386be7b
--- /dev/null
+++ b/apps/l3vpn/yangmodel/BUCK
@@ -0,0 +1,13 @@
+COMPILE_DEPS = [
+  '//lib:CORE_DEPS',
+  '//lib:onos-yang-model',
+]
+
+yang_osgi_jar(
+  deps = COMPILE_DEPS,
+  name = 'onos-apps-l3vpn-yangmodel',
+  srcs = glob(['src/main/**/*.yang']),
+  visibility = [
+    'PUBLIC'
+  ],
+)
\ No newline at end of file
diff --git a/apps/l3vpn/yangmodel/pom.xml b/apps/l3vpn/yangmodel/pom.xml
new file mode 100644
index 0000000..a2bfbd22
--- /dev/null
+++ b/apps/l3vpn/yangmodel/pom.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2017-present Open Networking Laboratory
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onosproject</groupId>
+        <artifactId>onos-app-l3vpn</artifactId>
+        <version>1.10.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>onos-app-l3vpn-yangmodel</artifactId>
+    <packaging>bundle</packaging>
+
+    <description>IETF L3VPN YANG models</description>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.onosproject</groupId>
+                <artifactId>onos-yang-maven-plugin</artifactId>
+                <version>1.11</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>yang2java</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    <!-- Fix maven plugin version together with fix for buck -->
+</project>
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
diff --git a/modules.defs b/modules.defs
index b748938..452f04a 100644
--- a/modules.defs
+++ b/modules.defs
@@ -191,7 +191,8 @@
     '//apps/yang:onos-apps-yang-oar',
     '//apps/yang-gui:onos-apps-yang-gui-oar',
     '//apps/cord-support:onos-apps-cord-support-oar',
-    '//apps/network-troubleshoot:onos-apps-network-troubleshoot-oar'
+    '//apps/network-troubleshoot:onos-apps-network-troubleshoot-oar',
+    '//apps/l3vpn:onos-apps-l3vpn-oar',
 ]
 
 APP_JARS = [
