invalidation on node change
diff --git a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/TenantManager.java b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/TenantManager.java
index 8862ffc..0eedd7b 100644
--- a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/TenantManager.java
+++ b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/TenantManager.java
@@ -659,19 +659,17 @@
                             case NODE_DELETED:
                             case NODE_UPDATED:
                             case NODE_REPLACED:
-//                                Filter filter = Filter.builder().build();
-//                                DataNode node = dynamicConfigService.readNode(FpcUtil.tenants, filter);
-//                                getModelObjects(node, null).forEach(
-//                                        modelObject -> {
-//                                            DefaultTenants tenants = (DefaultTenants) modelObject;
-//                                            tenants.tenant()
-//                                                    .parallelStream()
-//                                                    .forEach(tenant -> cacheManager.tenantCache.put(
-//                                                            tenant.tenantId(),
-//                                                            Optional.of((DefaultTenant) tenant))
-//                                                    );
-//                                        }
-//                                );
+//                                List<NodeKey> nodeKeys = event.subject().nodeKeys();
+//                                if (nodeKeys.size() >= 4) {
+//                                    NodeKey nodeKey = nodeKeys.get(3);
+//                                    if (nodeKey.schemaId().name().equals("dpns") && nodeKey instanceof ListKey) {
+//                                        Object dpnId = ((ListKey) nodeKey).keyLeafs().get(0).leafValue();
+//                                        cacheManager.dpnsCache.invalidate(FpcDpnId.fromString(dpnId.toString()));
+//                                    } else if (nodeKey.schemaId().name().equals("contexts") && nodeKey instanceof ListKey) {
+//                                        Object contextId = ((ListKey) nodeKey).keyLeafs().get(0).leafValue();
+//                                        cacheManager.contextsCache.invalidate(FpcContextId.fromString(contextId.toString()));
+//                                    }
+//                                }
                                 break;
                             default:
                                 log.warn(UNKNOWN_EVENT, event.type());
@@ -695,7 +693,17 @@
          * @return true if event is supported; false otherwise
          */
         private boolean isSupported(DynamicConfigEvent event) {
-            return true;
+            ResourceId rsId = event.subject();
+            List<NodeKey> storeKeys = rsId.nodeKeys();
+            List<NodeKey> regKeys = tenants.nodeKeys();
+            // store[0] = tenants, reg[0] = /
+            if (storeKeys != null) {
+                int storeSize = storeKeys.size();
+                if (storeSize >= 4) {
+                    return storeKeys.get(0).equals(regKeys.get(1));
+                }
+            }
+            return false;
         }
 
         @Override
diff --git a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/CacheManager.java b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/CacheManager.java
index 6b9c86a..c691bea 100644
--- a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/CacheManager.java
+++ b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/CacheManager.java
@@ -59,6 +59,7 @@
                                         }
                                     }
                                 } catch (Exception e) {
+                                    // let store to populate and retry
                                     Thread.sleep(1000);
                                     return load(fpcContextId);
                                 }
@@ -86,6 +87,7 @@
                                         }
                                     }
                                 } catch (Exception e) {
+                                    // let store to populate and retry
                                     Thread.sleep(1000);
                                     return load(fpcDpnId);
                                 }
@@ -106,6 +108,4 @@
     public void addManager(TenantManager manager) {
         this.tenantManager = manager;
     }
-
-
 }
diff --git a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/Converter.java b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/Converter.java
index 5c6b3ce..5e61d74 100644
--- a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/Converter.java
+++ b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/Converter.java
@@ -23,6 +23,9 @@
 
 public class Converter {
     private static final Logger log = LoggerFactory.getLogger(Converter.class);
+    public static Function<String, FpcIdentity> getFpcIdentity = (v) -> new FpcIdentity(new FpcIdentityUnion(v));
+    public static Function<String, ClientIdentifier> getClientIdentity = (v) -> new ClientIdentifier(getFpcIdentity.apply(v));
+
     /**
      * Short to Byte
      *
@@ -112,9 +115,6 @@
         return value;
     }
 
-    public static Function<String, FpcIdentity> getFpcIdentity = (v) -> new FpcIdentity(new FpcIdentityUnion(v));
-    public static Function<String, ClientIdentifier> getClientIdentity = (v) -> new ClientIdentifier(getFpcIdentity.apply(v));
-
     public static DefaultContexts convertContext(org.onosproject.yang.gen.v1.ietfdmmfpcagent.rev20160803.ietfdmmfpcagent.payload.Contexts contexts) {
         DefaultContexts ctx = new DefaultContexts();
         FpcContextId fpcContextId = contexts.contextId();
diff --git a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/FpcUtil.java b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/FpcUtil.java
index a0ff5f7..37f302a 100644
--- a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/FpcUtil.java
+++ b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/FpcUtil.java
@@ -49,9 +49,11 @@
     public static final String UNKNOWN_EVENT = "FPC Agent listener: unknown event: {}";
     public static final String EVENT_NULL = "Event cannot be null";
     public static final String FPC_APP_ID = "org.onosproject.fpcagent";
-    protected static final Logger log = LoggerFactory.getLogger(FpcUtil.class);
+
+    private static final Logger log = LoggerFactory.getLogger(FpcUtil.class);
     private static final Map<String, FpcDpnId> uplinkDpnMap = Maps.newConcurrentMap();
     private static final Map<String, Short> nodeToTopicMap = Maps.newConcurrentMap();
+
     public static ModelConverter modelConverter = null;
     // Resource ID for Configure DPN RPC command
     public static ResourceId configureDpn;
@@ -65,15 +67,15 @@
     public static ResourceId registerClientResourceId;
     public static ResourceId deregisterClientResourceId;
 
-    public static FpcIdentity defaultIdentity = getFpcIdentity.apply("default");
+    public static final FpcIdentity defaultIdentity = getFpcIdentity.apply("default");
 
-    private static byte DPN_HELLO = 0b0000_0001;
-    private static byte DPN_BYE = 0b0000_0010;
-    private static byte DOWNLINK_DATA_NOTIFICATION = 0b0000_0101;
-    private static byte DPN_STATUS_INDICATION = 0b0000_1100;
-    private static byte DPN_OVERLOAD_INDICATION = 0b0000_0101;
-    private static byte DPN_REPLY = 0b0000_0100;
-    private static String DOWNLINK_DATA_NOTIFICATION_STRING = "Downlink-Data-Notification";
+    private static final byte DPN_HELLO = 0b0000_0001;
+    private static final byte DPN_BYE = 0b0000_0010;
+    private static final byte DOWNLINK_DATA_NOTIFICATION = 0b0000_0101;
+    private static final byte DPN_STATUS_INDICATION = 0b0000_1100;
+    private static final byte DPN_OVERLOAD_INDICATION = 0b0000_0101;
+    private static final byte DPN_REPLY = 0b0000_0100;
+    private static final String DOWNLINK_DATA_NOTIFICATION_STRING = "Downlink-Data-Notification";
 
     /**
      * Returns resource id from model converter.
@@ -102,12 +104,7 @@
 
         tenants = getResourceVal(tenantsId);
 
-        TenantKeys tenantKeys = new TenantKeys();
-        tenantKeys.tenantId(defaultIdentity);
-
-        ModelObjectId defaultTenantId = ModelObjectId.builder()
-                .addChild(DefaultTenants.class)
-                .addChild(DefaultTenant.class, tenantKeys)
+        ModelObjectId defaultTenantId = defaultTenantBuilder()
                 .build();
 
         defaultTenant = getResourceVal(defaultTenantId);