diff --git a/src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java b/src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java
--- a/src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java
+++ b/src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java
@@ -308,6 +308,8 @@
   static void closeOldReservations(final Order oldOrder) {
     if (getEnableStockReservationsPreferenceValue(oldOrder.getOrganization())) {
       ScrollableResults oldOrderLines = null;
+      boolean isTriggersDisabled = TriggerHandler.getInstance().isDisabled();
+      boolean isEnableDuringProcess = false;
       try {
         // Iterate old order lines
         oldOrderLines = getOrderLineList(oldOrder);
@@ -316,6 +318,11 @@
           final OrderLine oldOrderLine = (OrderLine) oldOrderLines.get(0);
           final Reservation reservation = getReservationForOrderLine(oldOrderLine);
           if (reservation != null) {
+            if (isTriggersDisabled && !isEnableDuringProcess) {
+              OBDal.getInstance().flush();
+              TriggerHandler.getInstance().enable();
+              isEnableDuringProcess = true;
+            }
             ReservationUtils.processReserve(reservation, "CL");
           }
           if ((++i % 100) == 0) {
@@ -327,6 +334,10 @@
         log4j.error("Error in CancelAndReplaceUtils.releaseOldReservations", e);
         throw new OBException(e.getMessage(), e);
       } finally {
+        if (isEnableDuringProcess) {
+          OBDal.getInstance().flush();
+          TriggerHandler.getInstance().disable();
+        }
         if (oldOrderLines != null) {
           oldOrderLines.close();
         }
diff --git a/src/org/openbravo/erpCommon/businessUtility/ReplaceOrderExecutor.java b/src/org/openbravo/erpCommon/businessUtility/ReplaceOrderExecutor.java
--- a/src/org/openbravo/erpCommon/businessUtility/ReplaceOrderExecutor.java
+++ b/src/org/openbravo/erpCommon/businessUtility/ReplaceOrderExecutor.java
@@ -45,6 +45,7 @@
 import org.openbravo.base.provider.OBProvider;
 import org.openbravo.dal.core.DalUtil;
 import org.openbravo.dal.core.OBContext;
+import org.openbravo.dal.core.TriggerHandler;
 import org.openbravo.dal.service.OBCriteria;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.dal.service.OBQuery;
@@ -660,6 +661,8 @@
 
   private void createNewReservations(Order newOrder) {
     if (getEnableStockReservationsPreferenceValue(newOrder.getOrganization())) {
+      boolean isTriggersDisabled = TriggerHandler.getInstance().isDisabled();
+      boolean isEnableDuringProcess = false;
       // Iterate old order lines
       try (final ScrollableResults newOrderLines = getOrderLineList(newOrder)) {
         int i = 0;
@@ -672,6 +675,11 @@
           }
           Reservation reservation = getReservationForOrderLine(newOrderLine.getReplacedorderline());
           if (reservation != null) {
+            if (isTriggersDisabled && !isEnableDuringProcess) {
+              OBDal.getInstance().flush();
+              TriggerHandler.getInstance().enable();
+              isEnableDuringProcess = true;
+            }
             ReservationUtils.createReserveFromSalesOrderLine(newOrderLine, true);
           }
           if ((++i % 100) == 0) {
@@ -682,6 +690,11 @@
       } catch (Exception e) {
         log4j.error("Error in CancelAndReplaceUtils.createNewReservations", e);
         throw new OBException(e.getMessage(), e);
+      } finally {
+        if (isEnableDuringProcess) {
+          OBDal.getInstance().flush();
+          TriggerHandler.getInstance().disable();
+        }
       }
     }
   }
