diff --git a/src/org/openbravo/costing/FixBackdatedTransactionsProcess.java b/src/org/openbravo/costing/FixBackdatedTransactionsProcess.java
index a172bd190b..019e07ee19 100644
--- a/src/org/openbravo/costing/FixBackdatedTransactionsProcess.java
+++ b/src/org/openbravo/costing/FixBackdatedTransactionsProcess.java
@@ -98,8 +98,13 @@ public class FixBackdatedTransactionsProcess extends BaseProcessActionHandler {
         try {
           final SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
           Date lastMovementDate = dateFormat.parse("01-01-1900");
+          String productId = "";
           while (transactions.next()) {
             final MaterialTransaction trx = (MaterialTransaction) transactions.get()[0];
+            if (!productId.equals(trx.getProduct().getId())) {
+              productId = trx.getProduct().getId();
+              lastMovementDate = dateFormat.parse("01-01-1900");
+            }
             if (trx.getMovementDate().compareTo(lastMovementDate) < 0) {
               createCostAdjustmenHeader(rule.getOrganization());
               final CostAdjustmentLineParameters lineParameters = new CostAdjustmentLineParameters(
@@ -203,7 +208,7 @@ public class FixBackdatedTransactionsProcess extends BaseProcessActionHandler {
     }
     //@formatter:off
     hql +=
-        " order by trx.transactionProcessDate";
+        " order by trx.product, trx.transactionProcessDate";
     //@formatter:on
 
     final Query<MaterialTransaction> stockLinesQry = OBDal.getInstance()
