diff --git a/apps/l3vpn/netl3vpn/pom.xml b/apps/l3vpn/netl3vpn/pom.xml
index e1dbc1f..75a64b0 100644
--- a/apps/l3vpn/netl3vpn/pom.xml
+++ b/apps/l3vpn/netl3vpn/pom.xml
@@ -32,7 +32,7 @@
     <description>IETF L3VPN Service Model</description>
 
     <properties>
-        <yang-tool-version>1.12.0-b6</yang-tool-version>
+        <yang-tool-version>1.12.0-b7</yang-tool-version>
     </properties>
 
     <dependencies>
@@ -56,5 +56,10 @@
             <artifactId>onos-app-l3vpn-yangmodel</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-app-config</artifactId>
+            <version>1.10.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 </project>
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnStore.java b/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnStore.java
index b5f8681..f04d3b7 100644
--- a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnStore.java
+++ b/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnStore.java
@@ -71,6 +71,14 @@
     void addVpnInsIfAbsent(String name, VpnInstance instance);
 
     /**
+     * Adds the VPN name and the VPN instance to the map.
+     *
+     * @param name     VPN name
+     * @param instance VPN instance
+     */
+    void addVpnIns(String name, VpnInstance instance);
+
+    /**
      * Adds the access info and the interface info to the map in store.
      *
      * @param accessInfo access info
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnInstance.java b/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnInstance.java
index 880ed51..f45efd2 100644
--- a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnInstance.java
+++ b/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnInstance.java
@@ -18,7 +18,7 @@
 
 import org.onosproject.net.DeviceId;
 
-import java.util.LinkedHashMap;
+import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -118,7 +118,7 @@
      */
     public void addDevInfo(DeviceId id, DeviceInfo info) {
         if (devInfo == null) {
-            devInfo = new LinkedHashMap<>();
+            devInfo = new HashMap<>();
         }
         devInfo.put(id, info);
     }
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java b/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java
index baf3bc4..6debaf4 100644
--- a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java
+++ b/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java
@@ -29,12 +29,12 @@
 import org.onosproject.l3vpn.netl3vpn.FullMeshVpnConfig;
 import org.onosproject.l3vpn.netl3vpn.HubSpokeVpnConfig;
 import org.onosproject.l3vpn.netl3vpn.InterfaceInfo;
+import org.onosproject.l3vpn.netl3vpn.NetL3VpnStore;
 import org.onosproject.l3vpn.netl3vpn.ProtocolInfo;
 import org.onosproject.l3vpn.netl3vpn.RouteProtocol;
 import org.onosproject.l3vpn.netl3vpn.VpnConfig;
 import org.onosproject.l3vpn.netl3vpn.VpnInstance;
 import org.onosproject.l3vpn.netl3vpn.VpnType;
-import org.onosproject.l3vpn.netl3vpn.NetL3VpnStore;
 import org.onosproject.net.DeviceId;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.service.ConsistentMap;
@@ -77,6 +77,7 @@
                            .register(LeafListKey.class)
                            .register(ListKey.class)
                            .register(AccessInfo.class)
+                           .register(InterfaceInfo.class)
                            .register(BgpInfo.class)
                            .register(RouteProtocol.class)
                            .register(ProtocolInfo.class)
@@ -187,6 +188,13 @@
     }
 
     @Override
+    public void addVpnIns(String name, VpnInstance instance) {
+        checkNotNull(name, VPN_NAME_NULL);
+        checkNotNull(instance, VPN_INS_NULL);
+        vpnInsMap.put(name, instance);
+    }
+
+    @Override
     public void addInterfaceInfo(AccessInfo accessInfo, InterfaceInfo intInfo) {
         checkNotNull(accessInfo, ACCESS_INFO_NULL);
         checkNotNull(intInfo, INT_INFO_NULL);
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3vpnManager.java b/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3vpnManager.java
index e13057e..e911000 100644
--- a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3vpnManager.java
+++ b/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3vpnManager.java
@@ -180,7 +180,8 @@
     private NodeId localNodeId;
     private ApplicationId appId;
 
-    private DynamicConfigListener configListener = new InternalConfigListener();
+    private final DynamicConfigListener configListener = new
+            InternalConfigListener();
 
     private final InternalLeadershipListener leadershipEventListener =
             new InternalLeadershipListener();
@@ -625,6 +626,7 @@
                                                             devMod);
         ResourceData resData = modelConverter.createDataNode(driMod);
         addToStore(resData);
+        l3VpnStore.addVpnIns(inst.vpnName(), inst);
         return info;
     }
 
diff --git a/apps/l3vpn/yangmodel/pom.xml b/apps/l3vpn/yangmodel/pom.xml
index fca0ffd..d2715b9 100644
--- a/apps/l3vpn/yangmodel/pom.xml
+++ b/apps/l3vpn/yangmodel/pom.xml
@@ -36,7 +36,7 @@
             <plugin>
                 <groupId>org.onosproject</groupId>
                 <artifactId>onos-yang-compiler-maven-plugin</artifactId>
-                <version>1.12.0-b6</version>
+                <version>1.12.0-b7</version>
                 <executions>
                     <execution>
                         <goals>
