diff --git a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentMonitorProcess.java b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentMonitorProcess.java
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentMonitorProcess.java
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentMonitorProcess.java
@@ -24,10 +24,10 @@
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 
+import org.hibernate.ScrollMode;
+import org.hibernate.ScrollableResults;
 import org.hibernate.criterion.Projections;
 import org.hibernate.criterion.Restrictions;
 import org.openbravo.advpaymentmngt.utility.FIN_Utility;
@@ -109,22 +109,19 @@
         obc.setFilterOnReadableClients(false);
         obc.setFilterOnReadableOrganization(false);
       }
-      final Set<String> invoiceIds = new HashSet<String>();
-      for (Invoice invoice : obc.list()) {
-        invoiceIds.add(invoice.getId());
-      }
 
-      for (String invoiceId : invoiceIds) {
-        Invoice invoice = OBDal.getInstance().get(Invoice.class, invoiceId);
+      final ScrollableResults invoiceScroller = obc.scroll(ScrollMode.FORWARD_ONLY);
+      while (invoiceScroller.next()) {
+        final Invoice invoice = (Invoice) invoiceScroller.get()[0];
         updateInvoice(invoice);
         counter++;
-        OBDal.getInstance().getSession().flush();
-        OBDal.getInstance().getSession().clear();
-        if (counter % 50 == 0) {
+        if (counter % 100 == 0) {
+          OBDal.getInstance().getSession().flush();
+          OBDal.getInstance().getSession().clear();
           logger.log("Invoices updated: " + counter + "\n");
         }
       }
-      if (counter % 50 != 0)
+      if (counter % 100 != 0)
         logger.log("Invoices updated: " + counter + "\n");
     } catch (Exception e) {
       // catch any possible exception and throw it as a Quartz
