diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/OpenFlowRuleProvider.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/OpenFlowRuleProvider.java
index 6087ef3..11ed2ce 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/OpenFlowRuleProvider.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/OpenFlowRuleProvider.java
@@ -391,10 +391,11 @@
             return;
         }
         pendingBatches.put(batch.id(), new InternalCacheEntry(batch));
+        // Build a batch of flow mods - to reduce the number i/o asked to the SO
+        Set<OFFlowMod> mods = Sets.newHashSet();
         OFFlowMod mod;
         for (FlowRuleBatchEntry fbe : batch.getOperations()) {
             // flow is the third party privacy flow
-
             FlowRuleExtPayLoad flowRuleExtPayLoad = fbe.target().payLoad();
             if (hasPayload(flowRuleExtPayLoad)) {
                 OFMessage msg = new ThirdPartyMessage(flowRuleExtPayLoad.payLoad());
@@ -420,13 +421,17 @@
                             fbe.operator(), fbe);
                     continue;
             }
-            sw.sendMsg(mod);
+            mods.add(mod);
         }
+        // Build a list to mantain the order
+        List<OFMessage> modsTosend = Lists.newArrayList(mods);
         OFBarrierRequest.Builder builder = sw.factory().buildBarrierRequest()
                 .setXid(batch.id());
-        sw.sendMsg(builder.build());
-
-        recordEvents(dpid, batch.getOperations().size());
+        // Adds finally the barrier request
+        modsTosend.add(builder.build());
+        sw.sendMsg(modsTosend);
+        // Take into account also the barrier request
+        recordEvents(dpid, (batch.getOperations().size() + 1));
     }
 
     private boolean hasPayload(FlowRuleExtPayLoad flowRuleExtPayLoad) {
