diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ContinuousResourceAllocation.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ContinuousResourceAllocation.java
index f5dafc9..16488f1 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ContinuousResourceAllocation.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ContinuousResourceAllocation.java
@@ -16,8 +16,14 @@
 package org.onosproject.store.resource.impl;
 
 import com.google.common.collect.ImmutableList;
+import org.onlab.util.GuavaCollectors;
 import org.onosproject.net.resource.ContinuousResource;
 import org.onosproject.net.resource.ResourceAllocation;
+import org.onosproject.net.resource.ResourceConsumerId;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 // internal use only
 final class ContinuousResourceAllocation {
@@ -37,4 +43,24 @@
     ImmutableList<ResourceAllocation> allocations() {
         return allocations;
     }
+
+    ContinuousResourceAllocation release(ContinuousResource resource, ResourceConsumerId consumerId) {
+        List<ResourceAllocation> nonMatched = allocations.stream()
+                .filter(x -> !(x.consumerId().equals(consumerId) &&
+                        ((ContinuousResource) x.resource()).value() == resource.value()))
+                .collect(Collectors.toList());
+
+        List<ResourceAllocation> matched = allocations.stream()
+                .filter(x -> (x.consumerId().equals(consumerId) &&
+                        ((ContinuousResource) x.resource()).value() == resource.value()))
+                .collect(Collectors.toList());
+
+        if (matched.size() > 1) {
+            matched.remove(0);
+        }
+
+        return new ContinuousResourceAllocation(original,
+                Stream.concat(nonMatched.stream(), matched.stream())
+                        .collect(GuavaCollectors.toImmutableList()));
+    }
 }
