diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/IntentInstaller.java b/core/net/src/main/java/org/onosproject/net/intent/impl/IntentInstaller.java
index 0fd57a9..66d11e7 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/IntentInstaller.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/IntentInstaller.java
@@ -360,8 +360,8 @@
                         } else if (uIntent instanceof FlowRuleIntent && installIntent instanceof FlowRuleIntent) {
                             //FIXME we can further optimize this by doing the filtering on a flow-by-flow basis
                             //      (direction can be implied from intent state)
-                            return ((FlowRuleIntent) uIntent).flowRules()
-                                    .containsAll(((FlowRuleIntent) installIntent).flowRules());
+                            return !flowRuleIntentChanged(((FlowRuleIntent) uIntent),
+                                                          ((FlowRuleIntent) installIntent));
                         } else {
                             return false;
                         }
@@ -393,6 +393,30 @@
         }
 
         /**
+         * Determines whether there is any flow rule changed
+         * (i.e., different set of flow rules or different treatments)
+         * between FlowRuleIntents to be uninstalled and to be installed.
+         *
+         * @param uninstallIntent FlowRuleIntent to uninstall
+         * @param installIntent FlowRuleIntent to install
+         * @return true if flow rules which to be uninstalled
+         * contains all flow rules which to be installed.
+         */
+        private boolean flowRuleIntentChanged(FlowRuleIntent uninstallIntent,
+                                              FlowRuleIntent installIntent) {
+            Collection<FlowRule> flowRulesToUninstall = uninstallIntent.flowRules();
+            Collection<FlowRule> flowRulesToInstall = installIntent.flowRules();
+
+            // Check if any flow rule changed
+            for (FlowRule flowRuleToInstall : flowRulesToInstall) {
+                if (flowRulesToUninstall.stream().noneMatch(flowRuleToInstall::exactMatch)) {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        /**
          * Applies the specified intent data, if present, to the network using the
          * specified context.
          *
