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 f1b8f89..3dc12b3 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
@@ -122,7 +122,16 @@
     @Override
     public DiscreteResources add(DiscreteResources other) {
         if (other instanceof EncodableDiscreteResources) {
-            return of(parent, Sets.union(this.values(), other.values()));
+            EncodableDiscreteResources cast = (EncodableDiscreteResources) other;
+            LinkedHashMap<Class<?>, EncodedDiscreteResources> newMap =
+                    Stream.concat(this.map.entrySet().stream(), cast.map.entrySet().stream())
+                            .collect(Collectors.toMap(
+                                    Map.Entry::getKey,
+                                    Map.Entry::getValue,
+                                    EncodedDiscreteResources::add,
+                                    LinkedHashMap::new
+                            ));
+            return new EncodableDiscreteResources(parent, newMap);
         } else if (other instanceof EmptyDiscreteResources) {
             return this;
         }
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodedDiscreteResources.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodedDiscreteResources.java
index 5ccb6d2..d02e91c 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodedDiscreteResources.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodedDiscreteResources.java
@@ -93,6 +93,15 @@
         return new EncodedDiscreteResources(newRangeSet, this.codec);
     }
 
+    EncodedDiscreteResources add(EncodedDiscreteResources other) {
+        checkArgument(this.codec.getClass() == other.codec.getClass());
+
+        RangeSet<Integer> newRangeSet = TreeRangeSet.create(this.rangeSet);
+        newRangeSet.addAll(other.rangeSet);
+
+        return new EncodedDiscreteResources(newRangeSet, this.codec);
+    }
+
     boolean isEmpty() {
         return rangeSet.isEmpty();
     }
diff --git a/core/store/dist/src/test/java/org/onosproject/store/resource/impl/EncodedDiscreteResourcesTest.java b/core/store/dist/src/test/java/org/onosproject/store/resource/impl/EncodedDiscreteResourcesTest.java
index fe1e781..066f57f 100644
--- a/core/store/dist/src/test/java/org/onosproject/store/resource/impl/EncodedDiscreteResourcesTest.java
+++ b/core/store/dist/src/test/java/org/onosproject/store/resource/impl/EncodedDiscreteResourcesTest.java
@@ -62,4 +62,17 @@
         assertThat(sut.difference(other), is(EncodedDiscreteResources.of(ImmutableSet.of(res2), new VlanIdCodec())));
     }
 
+    @Test
+    public void testAdd() {
+        DiscreteResource res1 = Resources.discrete(DID, PN, VID1).resource();
+        DiscreteResource res2 = Resources.discrete(DID, PN, VID2).resource();
+        DiscreteResource res3 = Resources.discrete(DID, PN, VID3).resource();
+
+        EncodedDiscreteResources sut = EncodedDiscreteResources.of(ImmutableSet.of(res1, res2), new VlanIdCodec());
+        EncodedDiscreteResources other = EncodedDiscreteResources.of(ImmutableSet.of(res1, res3), new VlanIdCodec());
+
+        assertThat(sut.add(other),
+                is(EncodedDiscreteResources.of(ImmutableSet.of(res1, res2, res3), new VlanIdCodec())));
+    }
+
 }
