diff --git a/src/org/openbravo/materialmgmt/VariantChDescUpdateProcess.java b/src/org/openbravo/materialmgmt/VariantChDescUpdateProcess.java
--- a/src/org/openbravo/materialmgmt/VariantChDescUpdateProcess.java
+++ b/src/org/openbravo/materialmgmt/VariantChDescUpdateProcess.java
@@ -157,7 +157,7 @@
     pchQuery.setNamedParameter("product", product);
     for (ProductCharacteristic pch : pchQuery.list()) {
       // Reload pch to avoid errors after session clear.
-      OBDal.getInstance().refresh(pch);
+      // OBDal.getInstance().refresh(pch);
       if (StringUtils.isNotBlank(strChDesc)) {
         strChDesc += ", ";
       }
@@ -175,11 +175,11 @@
       pchvQuery.setNamedParameter("product", product.getId());
       for (ProductCharacteristicValue pchv : pchvQuery.list()) {
         // Reload pchv to avoid errors after session clear.
-        OBDal.getInstance().refresh(pchv);
+        // OBDal.getInstance().refresh(pchv);
         strChDesc += " " + pchv.getCharacteristicValue().getName();
       }
     }
     product.setCharacteristicDescription(strChDesc);
-    OBDal.getInstance().save(product);
+    // OBDal.getInstance().save(product);
   }
 }
\ No newline at end of file
diff --git a/src/org/openbravo/materialmgmt/VariantChDescUpdateProcessor.java b/src/org/openbravo/materialmgmt/VariantChDescUpdateProcessor.java
--- a/src/org/openbravo/materialmgmt/VariantChDescUpdateProcessor.java
+++ b/src/org/openbravo/materialmgmt/VariantChDescUpdateProcessor.java
@@ -66,6 +66,8 @@
               .getInstanceFromStaticBeanManager(VariantChDescUpdateProcess.class);
           try {
             process.update(productIds.getString(i), null);
+            OBDal.getInstance().flush();
+            OBDal.getInstance().getSession().clear();
           } catch (Exception e) {
             log.error("Error updating product ch description", e);
           }
