diff --git a/core/common/src/test/java/org/onosproject/store/trivial/SimpleFlowRuleStore.java b/core/common/src/test/java/org/onosproject/store/trivial/SimpleFlowRuleStore.java
index 31b58fb..3b667a8 100644
--- a/core/common/src/test/java/org/onosproject/store/trivial/SimpleFlowRuleStore.java
+++ b/core/common/src/test/java/org/onosproject/store/trivial/SimpleFlowRuleStore.java
@@ -25,6 +25,7 @@
 import com.google.common.collect.Streams;
 import com.google.common.util.concurrent.SettableFuture;
 import org.onlab.util.Tools;
+import org.onosproject.core.ApplicationId;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.flow.CompletedBatchOperation;
 import org.onosproject.net.flow.DefaultFlowEntry;
@@ -301,6 +302,16 @@
     }
 
     @Override
+    public boolean purgeFlowRules(DeviceId deviceId, ApplicationId appId) {
+        flowEntries.get(deviceId).values()
+                .removeIf(storedFlowEntries -> {
+                    storedFlowEntries.removeIf(storedFlowEntry -> storedFlowEntry.appId() == appId.id());
+                    return storedFlowEntries.isEmpty();
+                });
+        return true;
+    }
+
+    @Override
     public void purgeFlowRules() {
         flowEntries.clear();
     }
diff --git a/core/common/src/test/java/org/onosproject/store/trivial/SimpleGroupStore.java b/core/common/src/test/java/org/onosproject/store/trivial/SimpleGroupStore.java
index bf8ba59..8ece648 100644
--- a/core/common/src/test/java/org/onosproject/store/trivial/SimpleGroupStore.java
+++ b/core/common/src/test/java/org/onosproject/store/trivial/SimpleGroupStore.java
@@ -17,6 +17,7 @@
 
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Sets;
+import org.onosproject.core.ApplicationId;
 import org.onosproject.core.GroupId;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.group.DefaultGroup;
@@ -51,6 +52,7 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 import static org.slf4j.LoggerFactory.getLogger;
 
@@ -482,6 +484,31 @@
     }
 
     @Override
+    public void purgeGroupEntries(DeviceId deviceId, ApplicationId appId) {
+        List<StoredGroupEntry> entryPendingRemove =
+                groupEntriesById.get(deviceId).values().stream()
+                        .filter(storedGroupEntry -> storedGroupEntry.appId().equals(appId))
+                        .collect(Collectors.toList());
+
+        entryPendingRemove.forEach(storedGroupEntry -> {
+            groupEntriesById.computeIfPresent(deviceId, (k, value) -> {
+                value.remove(storedGroupEntry.id());
+                if (value.isEmpty()) {
+                    return null;
+                }
+                return value;
+            });
+            groupEntriesByKey.computeIfPresent(deviceId, (k, value) -> {
+                value.remove(storedGroupEntry.appCookie());
+                if (value.isEmpty()) {
+                    return null;
+                }
+                return value;
+            });
+        });
+    }
+
+    @Override
     public void purgeGroupEntries() {
         groupEntriesById.values().forEach(groupEntries -> {
             groupEntries.entrySet().forEach(entry -> {
