diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResources.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResources.java
index ca4cfca..e5f3834 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResources.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResources.java
@@ -26,6 +26,7 @@
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
@@ -100,13 +101,14 @@
             EncodableDiscreteResources cast = (EncodableDiscreteResources) other;
 
             Map<Class<?>, EncodedDiscreteResources> newMap = new LinkedHashMap<>();
-            for (Class<?> key : this.map.keySet()) {
-                EncodedDiscreteResources thisValues = this.map.get(key);
-                if (!cast.map.containsKey(key)) {
+            for (Entry<Class<?>, EncodedDiscreteResources> e : this.map.entrySet()) {
+                Class<?> key = e.getKey();
+                EncodedDiscreteResources thisValues = e.getValue();
+                EncodedDiscreteResources otherValues = cast.map.get(key);
+                if (otherValues == null) {
                     newMap.put(key, thisValues);
                     continue;
                 }
-                EncodedDiscreteResources otherValues = cast.map.get(key);
                 EncodedDiscreteResources diff = thisValues.difference(otherValues);
                 // omit empty resources from a new resource set
                 // empty EncodedDiscreteResources can't deserialize due to
