diff --git a/VERSION b/VERSION
index 1996c50..b7f8ee4 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-7.1.3
+7.1.4
diff --git a/pkg/flows/flow_utils.go b/pkg/flows/flow_utils.go
index 41b615a..1e50a63 100644
--- a/pkg/flows/flow_utils.go
+++ b/pkg/flows/flow_utils.go
@@ -1378,6 +1378,12 @@
 	return filteredDR
 }
 
+func (dr *DeviceRules) RemoveRule(deviceId string) {
+	dr.rulesLock.RLock()
+	defer dr.rulesLock.RUnlock()
+	delete(dr.Rules, deviceId)
+}
+
 func (dr *DeviceRules) AddFlow(deviceId string, flow *ofp.OfpFlowStats) {
 	dr.rulesLock.Lock()
 	defer dr.rulesLock.Unlock()
diff --git a/pkg/flows/flow_utils_test.go b/pkg/flows/flow_utils_test.go
index 05a041a..4947c16 100644
--- a/pkg/flows/flow_utils_test.go
+++ b/pkg/flows/flow_utils_test.go
@@ -314,6 +314,63 @@
 	assert.Equal(t, group.Desc.GroupId, allGroups[0].Desc.GroupId)
 }
 
+func TestDeviceRules_FilterRules(t *testing.T) {
+	dr := NewDeviceRules()
+	rules := dr.GetRules()
+	assert.True(t, len(rules) == 0)
+
+	dr.AddFlow("1", nil)
+	dr.AddFlow("2", nil)
+	dr.AddFlow("3", nil)
+	dr.AddFlow("4", nil)
+	rules = dr.GetRules()
+	assert.True(t, len(rules) == 4)
+
+	keep := map[string]string{"1": "1", "3": "3", "5": "5"}
+	result := dr.FilterRules(keep)
+	rules = result.GetRules()
+	assert.True(t, len(rules) == 2)
+
+	_, ok := rules["1"]
+	assert.True(t, ok)
+	_, ok = rules["2"]
+	assert.False(t, ok)
+	_, ok = rules["3"]
+	assert.True(t, ok)
+	_, ok = rules["4"]
+	assert.False(t, ok)
+}
+
+func TestDeviceRules_RemoveRule(t *testing.T) {
+	dr := NewDeviceRules()
+	rules := dr.GetRules()
+	assert.True(t, len(rules) == 0)
+
+	dr.AddFlow("1", nil)
+	dr.AddFlow("2", nil)
+	dr.AddFlow("3", nil)
+	dr.AddFlow("4", nil)
+	rules = dr.GetRules()
+	assert.True(t, len(rules) == 4)
+
+	dr.RemoveRule("3")
+	rules = dr.GetRules()
+	assert.True(t, len(rules) == 3)
+
+	_, ok := rules["1"]
+	assert.True(t, ok)
+	_, ok = rules["2"]
+	assert.True(t, ok)
+	_, ok = rules["3"]
+	assert.False(t, ok)
+	_, ok = rules["4"]
+	assert.True(t, ok)
+
+	dr.RemoveRule("5")
+	rules = dr.GetRules()
+	assert.True(t, len(rules) == 3)
+}
+
 func TestDeviceRules_AddFlow(t *testing.T) {
 	dr := NewDeviceRules()
 	rules := dr.GetRules()
