diff --git a/rw_core/core/device_agent.go b/rw_core/core/device_agent.go
index 6921612..fea66d6 100755
--- a/rw_core/core/device_agent.go
+++ b/rw_core/core/device_agent.go
@@ -257,35 +257,42 @@
 
 	var updatedFlows []*ofp.OfpFlowStats
 	var flowsToDelete []*ofp.OfpFlowStats
-	var groupsToDelete []*ofp.OfpGroupEntry
 	var updatedGroups []*ofp.OfpGroupEntry
+	var flowsToAdd []*ofp.OfpFlowStats
+	var groupsToAdd []*ofp.OfpGroupEntry
 
 	// Process flows
 	for _, flow := range newFlows {
 		updatedFlows = append(updatedFlows, flow)
+		if idx := fu.FindFlows(existingFlows.Items, flow); idx == -1 { // does not exist now , add new flow
+			flowsToAdd = append(flowsToAdd, flow)
+		}
 	}
 	for _, flow := range existingFlows.Items {
 		if idx := fu.FindFlows(newFlows, flow); idx == -1 {
-			updatedFlows = append(updatedFlows, flow)
+			updatedFlows = append(updatedFlows, flow) // append existing flows
 		} else {
+			// OF-1.3.1: If a flow entry with identical match fields and priority already resides , clear old flow and add new flow
 			flowsToDelete = append(flowsToDelete, flow)
+			flowsToAdd = append(flowsToAdd, newFlows[idx])
 		}
 	}
 
 	// Process groups
 	for _, g := range newGroups {
 		updatedGroups = append(updatedGroups, g)
+		if fu.FindGroup(existingGroups.Items, g.Desc.GroupId) == -1 { // does not exist now
+			groupsToAdd = append(groupsToAdd, g)
+		}
 	}
 	for _, group := range existingGroups.Items {
-		if fu.FindGroup(newGroups, group.Desc.GroupId) == -1 { // does not exist now
-			updatedGroups = append(updatedGroups, group)
-		} else {
-			groupsToDelete = append(groupsToDelete, group)
+		if fu.FindGroup(newGroups, group.Desc.GroupId) == -1 {
+			updatedGroups = append(updatedGroups, group) // Add existing groups
 		}
 	}
 
 	// Sanity check
-	if (len(updatedFlows) | len(flowsToDelete) | len(updatedGroups) | len(groupsToDelete)) == 0 {
+	if (len(updatedFlows) | len(flowsToDelete) | len(updatedGroups)) == 0 {
 		log.Debugw("nothing-to-update", log.Fields{"deviceId": agent.deviceId, "flows": newFlows, "groups": newGroups})
 		return nil
 	}
@@ -308,12 +315,12 @@
 
 	} else {
 		flowChanges := &ofp.FlowChanges{
-			ToAdd:    &voltha.Flows{Items: newFlows},
+			ToAdd:    &voltha.Flows{Items: flowsToAdd},
 			ToRemove: &voltha.Flows{Items: flowsToDelete},
 		}
 		groupChanges := &ofp.FlowGroupChanges{
-			ToAdd:    &voltha.FlowGroups{Items: newGroups},
-			ToRemove: &voltha.FlowGroups{Items: groupsToDelete},
+			ToAdd:    &voltha.FlowGroups{Items: groupsToAdd},
+			ToRemove: &voltha.FlowGroups{Items: nil},
 			ToUpdate: &voltha.FlowGroups{Items: []*ofp.OfpGroupEntry{}},
 		}
 		go agent.sendIncrementalFlowsToAdapters(device, flowChanges, groupChanges, flowMetadata, chAdapters)
diff --git a/rw_core/core/logical_device_agent.go b/rw_core/core/logical_device_agent.go
index 2c72b6d..7e35b04 100644
--- a/rw_core/core/logical_device_agent.go
+++ b/rw_core/core/logical_device_agent.go
@@ -855,7 +855,7 @@
 			//	TODO:  should this error be notified other than being logged?
 			log.Warnw("overlapped-flows", log.Fields{"logicaldeviceId": agent.logicalDeviceId})
 		} else {
-			//	Add flow
+			// Add new flow
 			flow = fu.FlowStatsEntryFromFlowModMessage(mod)
 			flows = append(flows, flow)
 			updatedFlows = append(updatedFlows, flow)
@@ -870,13 +870,12 @@
 				flow.ByteCount = oldFlow.ByteCount
 				flow.PacketCount = oldFlow.PacketCount
 			}
-			if !reflect.DeepEqual(oldFlow, flow) {
-				flows[idx] = flow
-				updatedFlows = append(updatedFlows, flow)
-				changed = true
-				updated = true
-			}
-		} else {
+			// OF-1.3.1: If a flow entry with identical match fields and priority already resides , clear old flow and add new flow
+			flows[idx] = flow
+			updatedFlows = append(updatedFlows, flow)
+			changed = true
+			updated = true
+		} else { // Add new flow
 			flows = append(flows, flow)
 			updatedFlows = append(updatedFlows, flow)
 			changed = true
@@ -903,7 +902,7 @@
 			log.Errorw("db-flow-update-failed", log.Fields{"logicalDeviceId": agent.logicalDeviceId})
 			return err
 		}
-		if !updated {
+		if !updated { // Newly added
 			changedMeterStats := agent.updateFlowCountOfMeterStats(mod, meters, flow)
 			metersToUpdate := &ofp.Meters{}
 			if lDevice.Meters != nil {
