diff --git a/src-test/org/openbravo/test/dal/IssuesTest.java b/src-test/org/openbravo/test/dal/IssuesTest.java
--- a/src-test/org/openbravo/test/dal/IssuesTest.java
+++ b/src-test/org/openbravo/test/dal/IssuesTest.java
@@ -35,10 +35,13 @@
 import org.dom4j.io.SAXReader;
 import org.hibernate.Query;
 import org.hibernate.SQLQuery;
+import org.hibernate.ScrollMode;
+import org.hibernate.ScrollableResults;
 import org.hibernate.Session;
 import org.hibernate.criterion.Restrictions;
 import org.hibernate.dialect.function.StandardSQLFunction;
 import org.hibernate.type.StandardBasicTypes;
+import org.junit.Assert;
 import org.openbravo.base.model.ModelProvider;
 import org.openbravo.base.model.Reference;
 import org.openbravo.base.model.domaintype.LongDomainType;
@@ -65,6 +68,7 @@
 import org.openbravo.model.ad.ui.Form;
 import org.openbravo.model.ad.ui.FormTrl;
 import org.openbravo.model.ad.ui.Message;
+import org.openbravo.model.common.businesspartner.BusinessPartner;
 import org.openbravo.model.common.businesspartner.Category;
 import org.openbravo.model.common.businesspartner.Location;
 import org.openbravo.model.common.enterprise.Organization;
@@ -132,6 +136,8 @@
  * 
  * https://issues.openbravo.com/view.php?id=18688: Ability to call database functions from HQL query
  * 
+ * https://issues.openbravo.com/view.php?id=20611: OBCriteria doesn't support ScrollabeResults
+ * 
  * @author mtaal
  * @author iperdomo
  */
@@ -718,4 +724,10 @@
     assertFalse(writableOrganizations2.isEmpty());
   }
 
+  public void test20611() {
+    OBCriteria<BusinessPartner> c = OBDal.getInstance().createCriteria(BusinessPartner.class);
+    ScrollableResults iterator = c.scroll(ScrollMode.FORWARD_ONLY);
+    Assert.assertTrue(iterator.next());
+  }
+
 }
\ No newline at end of file
diff --git a/src/org/openbravo/dal/service/OBDal.java b/src/org/openbravo/dal/service/OBDal.java
--- a/src/org/openbravo/dal/service/OBDal.java
+++ b/src/org/openbravo/dal/service/OBDal.java
@@ -380,8 +380,9 @@
    */
   public <T extends BaseOBObject> OBCriteria<T> createCriteria(Class<T> clz) {
     checkReadAccess(clz);
-    final OBCriteria<T> obCriteria = new OBCriteria<T>(clz.getName());
-    obCriteria.setEntity(ModelProvider.getInstance().getEntity(clz));
+    final Entity entity = ModelProvider.getInstance().getEntity(clz);
+    final OBCriteria<T> obCriteria = new OBCriteria<T>(entity.getName());
+    obCriteria.setEntity(entity);
     return obCriteria;
   }
 
@@ -396,8 +397,9 @@
    */
   public <T extends BaseOBObject> OBCriteria<T> createCriteria(Class<T> clz, String alias) {
     checkReadAccess(clz);
-    final OBCriteria<T> obCriteria = new OBCriteria<T>(clz.getName(), alias);
-    obCriteria.setEntity(ModelProvider.getInstance().getEntity(clz));
+    final Entity entity = ModelProvider.getInstance().getEntity(clz);
+    final OBCriteria<T> obCriteria = new OBCriteria<T>(entity.getName(), alias);
+    obCriteria.setEntity(entity);
     return obCriteria;
   }
 
