FC-272 - Batch size limit
diff --git a/build-config.xml b/build-config.xml
index 81c1e1e..faf4ac8 100644
--- a/build-config.xml
+++ b/build-config.xml
@@ -364,6 +364,7 @@
          <replace file="${dst.remote.conf}" token="@KEY_STORE_PW@" value="${key.store.password}"/>
          <replace file="${dst.remote.conf}" token="@SERVER_TYPE@" value="${ldap.server.type}"/>
          <replace file="${dst.remote.conf}" token="@IS_AUDIT@" value="${disable.audit}"/>
+         <replace file="${dst.remote.conf}" token="@LDAP_MAX_BATCH_SIZE@" value="${ldap.max.batch.size}"/>
 
          <echo message="###############  Modify fortress load scripts per user settings  ###############"/>
          <!-- The load script builds the Directory Information Tree and load the configuration entry used to hold params not needed to establish a connection with server. -->
@@ -389,6 +390,7 @@
          <replace file="${dst.load.bootstrap.script}" token="@GROUP_PROPERTIES@" value="${group.properties}"/>
          <replace file="${dst.load.bootstrap.script}" token="@ROLE_OCCUPANTS@" value="${role.occupants}"/>
          <replace file="${dst.load.bootstrap.script}" token="@IS_RFC2307@" value="${rfc2307}"/>
+         <replace file="${dst.load.bootstrap.script}" token="@LDAP_MAX_BATCH_SIZE@" value="${ldap.max.batch.size}"/>
          <echo message="###############  Copy ehcache config to bootstrap config folder  ###############"/>
          <delete file="${bootstrap.ehcache.conf}"/>
        <copy file="${ehcache.conf}" tofile="${bootstrap.ehcache.conf}"/>
diff --git a/build.properties.example b/build.properties.example
index 646fbdf..c68c47d 100644
--- a/build.properties.example
+++ b/build.properties.example
@@ -54,6 +54,9 @@
 ldap.host=localhost
 ldap.port=10389
 
+# This sets the maximum search result set from LDAP, default is 1000:
+ldap.max.batch.size=1000
+
 # These are needed for client SSL connections with LDAP Server:
 #enable.ldap.ssl=true
 # The LDAP hostname must match the common name in the server certificate:
diff --git a/ldap/setup/refreshLDAPData-src.xml b/ldap/setup/refreshLDAPData-src.xml
index 790dc87..cfca325 100755
--- a/ldap/setup/refreshLDAPData-src.xml
+++ b/ldap/setup/refreshLDAPData-src.xml
@@ -142,6 +142,7 @@
                 <config props="ldap.sub.14:7c"/>
                 <config props="ldap.filter.15:~"/>
                 <config props="ldap.sub.15:7e"/>
+                <config props="ldap.search.max.batch.size:@LDAP_MAX_BATCH_SIZE@"/>
             </addconfig>
 
             <addconfig>
@@ -209,6 +210,7 @@
                 <config props="ldap.sub.14:7c"/>
                 <config props="ldap.sub.15:7e"/>
                 <config props="ldap.filter.15:~"/>
+                <config props="ldap.search.max.batch.size:@LDAP_MAX_BATCH_SIZE@"/>
             </addconfig>
          </FortressAdmin>
     </target>
diff --git a/slapd.properties.example b/slapd.properties.example
index 58c4e1e..fa4283b 100644
--- a/slapd.properties.example
+++ b/slapd.properties.example
@@ -43,6 +43,9 @@
 suffix.dc=com
 suffix=dc=${suffix.name},dc=${suffix.dc}
 
+# This sets the maximum search result set from LDAP, default is 1000:
+ldap.max.batch.size=1000
+
 # A value of 'false' disables storing user membership on role object, default is 'true':
 #role.occupants=false
 
diff --git a/src/main/java/org/apache/directory/fortress/core/GlobalIds.java b/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
index 74baf01..74e817d 100755
--- a/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
+++ b/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
@@ -506,6 +506,11 @@
     public static final int BATCH_SIZE = 1000;
 
     /**
+     * This is the config property key used to store override of max LDAP batch size:
+     */
+    public static final String CONFIG_LDAP_MAX_BATCH_SIZE = "ldap.search.max.batch.size";
+
+    /**
      * Attribute is used in Fortress time/date constraints as default which will always pass.  i.e. values stored as beginDate=none or beginTime=none will turn the date and time constraints off
      * for a particular entity..
      */
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/AdminRoleDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/AdminRoleDAO.java
index b32c25c..21db700 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/AdminRoleDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/AdminRoleDAO.java
@@ -50,6 +50,7 @@
 import org.apache.directory.fortress.core.model.Graphable;
 import org.apache.directory.fortress.core.model.ObjectFactory;
 import org.apache.directory.fortress.core.model.Role;
+import org.apache.directory.fortress.core.util.Config;
 import org.apache.directory.ldap.client.api.LdapConnection;
 
 
@@ -476,7 +477,7 @@
                 + ROLE_NM + "=" + searchVal + "*))";
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, roleRoot,
-                SearchScope.ONELEVEL, filter, ROLE_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, filter, ROLE_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -569,7 +570,7 @@
             filter += "(" + ROLE_OCCUPANT + "=" + userDn + "))";
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, roleRoot,
-                SearchScope.ONELEVEL, filter, ROLE_NM_ATR, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, filter, ROLE_NM_ATR, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
 
             while ( searchResults.next() )
             {
@@ -617,7 +618,7 @@
                 + GlobalIds.PARENT_NODES + "=*))";
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, roleRoot,
-                SearchScope.ONELEVEL, filter, DESC_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, filter, DESC_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/AuditDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/AuditDAO.java
index 5cac8dc..f593d40 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/AuditDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/AuditDAO.java
@@ -274,7 +274,7 @@
             //log.warn("filter=" + filter);
             ld = getLogConnection();
             SearchCursor searchResults = search( ld, auditRoot,
-                SearchScope.ONELEVEL, filter, AUDIT_AUTHZ_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, filter, AUDIT_AUTHZ_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -345,7 +345,7 @@
             //System.out.println("filter=" + filter);
             ld = getLogConnection();
             SearchCursor searchResults = search( ld, auditRoot,
-                SearchScope.ONELEVEL, filter, AUDIT_AUTHZ_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, filter, AUDIT_AUTHZ_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -435,7 +435,7 @@
             //log.warn("filter=" + filter);
             ld = getLogConnection();
             SearchCursor searchResults = search( ld, auditRoot,
-                SearchScope.ONELEVEL, filter, AUDIT_AUTHZ_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, filter, AUDIT_AUTHZ_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -518,7 +518,7 @@
             //log.warn("filter=" + filter);
             ld = getLogConnection();
             SearchCursor searchResults = search( ld, auditRoot,
-                SearchScope.ONELEVEL, filter, AUDIT_BIND_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, filter, AUDIT_BIND_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -574,7 +574,7 @@
             //log.warn("filter=" + filter);
             ld = getLogConnection();
             SearchCursor searchResults = search( ld, auditRoot,
-                SearchScope.ONELEVEL, filter, AUDIT_MOD_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, filter, AUDIT_MOD_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -664,7 +664,7 @@
             //log.warn("filter=" + filter);
             ld = getLogConnection();
             SearchCursor searchResults = search( ld, auditRoot,
-                SearchScope.ONELEVEL, filter, AUDIT_MOD_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, filter, AUDIT_MOD_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/GroupDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/GroupDAO.java
index ab9db7c..3ddb83a 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/GroupDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/GroupDAO.java
@@ -408,7 +408,7 @@
                 + "*))";
             ld = getAdminConnection();
             searchResults = search( ld, groupRoot, SearchScope.ONELEVEL, filter, GROUP_ATRS, false,
-                GlobalIds.BATCH_SIZE );
+                Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
             while ( searchResults.next() )
             {
@@ -455,7 +455,7 @@
                 + user.getDn() + "))";
             ld = getAdminConnection();
             searchResults = search( ld, groupRoot, SearchScope.ONELEVEL, filter, GROUP_ATRS, false,
-                GlobalIds.BATCH_SIZE );
+                Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -503,7 +503,7 @@
                     + role.getDn() + "))";
             ld = getAdminConnection();
             searchResults = search( ld, groupRoot, SearchScope.ONELEVEL, filter, GROUP_ATRS, false,
-                    GlobalIds.BATCH_SIZE );
+                    Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/OrgUnitDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/OrgUnitDAO.java
index e28be64..1d0fcdc 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/OrgUnitDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/OrgUnitDAO.java
@@ -51,6 +51,7 @@
 import org.apache.directory.fortress.core.model.Graphable;
 import org.apache.directory.fortress.core.model.ObjectFactory;
 import org.apache.directory.fortress.core.model.OrgUnit;
+import org.apache.directory.fortress.core.util.Config;
 import org.apache.directory.ldap.client.api.LdapConnection;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -421,7 +422,7 @@
                 + SchemaConstants.OU_AT + "=" + searchVal + "*))";
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, orgUnitRoot,
-                SearchScope.ONELEVEL, filter, ORGUNIT_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, filter, ORGUNIT_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -490,7 +491,7 @@
             String filter = "(objectclass=" + ORGUNIT_OBJECT_CLASS_NM + ")";
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, orgUnitRoot,
-                SearchScope.ONELEVEL, filter, ORGUNIT_ATR, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, filter, ORGUNIT_ATR, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
 
             while ( searchResults.next() )
             {
@@ -580,7 +581,7 @@
                 + GlobalIds.PARENT_NODES + "=*))";
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, orgUnitRoot,
-                SearchScope.ONELEVEL, filter, DESC_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, filter, DESC_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java
index 6479ef2..b424aa6 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java
@@ -1201,7 +1201,7 @@
             filterbuf.append(  "))" );
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, permRoot,
-                SearchScope.SUBTREE, filterbuf.toString(), PERMISION_ATTRIBUTE_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.SUBTREE, filterbuf.toString(), PERMISION_ATTRIBUTE_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -1541,7 +1541,7 @@
             filterbuf.append(  "*))" );
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, permRoot,
-                SearchScope.SUBTREE, filterbuf.toString(), PERMISSION_OP_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.SUBTREE, filterbuf.toString(), PERMISSION_OP_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -1586,7 +1586,7 @@
                 filterbuf.append(  "))" );
                 ld = getAdminConnection();
                 SearchCursor searchResults = search( ld, permRoot,
-                    SearchScope.SUBTREE, filterbuf.toString(), PERMISSION_OP_ATRS, false, GlobalIds.BATCH_SIZE );
+                    SearchScope.SUBTREE, filterbuf.toString(), PERMISSION_OP_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
                 long sequence = 0;
 
                 while ( searchResults.next() )
@@ -1653,7 +1653,7 @@
                 filterbuf.append("))");
                 ld = getAdminConnection();
                 SearchCursor searchResults = search( ld, permRoot,
-                    SearchScope.SUBTREE, filterbuf.toString(), PERMISSION_OP_ATRS, false, GlobalIds.BATCH_SIZE );
+                    SearchScope.SUBTREE, filterbuf.toString(), PERMISSION_OP_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
                 long sequence = 0;
 
                 while ( searchResults.next() )
@@ -1705,7 +1705,7 @@
             filterbuf.append( "*))" );
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, permRoot,
-                SearchScope.SUBTREE, filterbuf.toString(), PERMISION_OBJ_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.SUBTREE, filterbuf.toString(), PERMISION_OBJ_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -1867,7 +1867,7 @@
             filterbuf.append( ")" );
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, permRoot,
-                SearchScope.SUBTREE, filterbuf.toString(), PERMISSION_OP_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.SUBTREE, filterbuf.toString(), PERMISSION_OP_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -1933,7 +1933,7 @@
             filterbuf.append( ")))" );
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, permRoot,
-                SearchScope.SUBTREE, filterbuf.toString(), PERMISSION_OP_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.SUBTREE, filterbuf.toString(), PERMISSION_OP_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -1986,7 +1986,7 @@
             filterbuf.append( "))" );
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, permRoot,
-                SearchScope.SUBTREE, filterbuf.toString(), PERMISSION_OP_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.SUBTREE, filterbuf.toString(), PERMISSION_OP_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -2065,7 +2065,7 @@
             filterbuf.append( "))" );
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, permRoot,
-                SearchScope.SUBTREE, filterbuf.toString(), PERMISSION_OP_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.SUBTREE, filterbuf.toString(), PERMISSION_OP_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PolicyDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/PolicyDAO.java
index 610ac1a..2539510 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/PolicyDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PolicyDAO.java
@@ -603,7 +603,7 @@
             String szFilter = GlobalIds.FILTER_PREFIX + PW_POLICY_CLASS + ")(" + PW_PWD_ID + "=" + searchVal + "*))";
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, policyRoot,
-                SearchScope.ONELEVEL, szFilter, PASSWORD_POLICY_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, szFilter, PASSWORD_POLICY_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -646,7 +646,7 @@
             String szFilter = "(objectclass=" + PW_POLICY_CLASS + ")";
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, policyRoot,
-                SearchScope.ONELEVEL, szFilter, PASSWORD_POLICY_NAME_ATR, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, szFilter, PASSWORD_POLICY_NAME_ATR, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
 
             while ( searchResults.next() )
             {
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/RoleDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/RoleDAO.java
index 31695a7..3a26886 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/RoleDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/RoleDAO.java
@@ -477,7 +477,7 @@
                 + ROLE_NM + "=" + searchVal + "*))";
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, roleRoot,
-                SearchScope.ONELEVEL, filter, ROLE_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, filter, ROLE_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -542,7 +542,7 @@
 
                 ld = getAdminConnection();
                 SearchCursor searchResults = search( ld, roleRoot,
-                    SearchScope.ONELEVEL, filterbuf.toString(), ROLE_ATRS, false, GlobalIds.BATCH_SIZE );
+                    SearchScope.ONELEVEL, filterbuf.toString(), ROLE_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
                 long sequence = 0;
 
                 while ( searchResults.next() )
@@ -644,7 +644,7 @@
             filter += "(" + SchemaConstants.ROLE_OCCUPANT_AT + "=" + userDn + "))";
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, roleRoot,
-                SearchScope.ONELEVEL, filter, ROLE_NM_ATR, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, filter, ROLE_NM_ATR, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
 
             while ( searchResults.next() )
             {
@@ -692,7 +692,7 @@
                 + GlobalIds.PARENT_NODES + "=*))";
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, roleRoot,
-                SearchScope.ONELEVEL, filter, DESC_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, filter, DESC_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/SdDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/SdDAO.java
index 243ad5d..4aca105 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/SdDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/SdDAO.java
@@ -49,6 +49,7 @@
 import org.apache.directory.fortress.core.model.ObjectFactory;
 import org.apache.directory.fortress.core.model.Role;
 import org.apache.directory.fortress.core.model.SDSet;
+import org.apache.directory.fortress.core.util.Config;
 import org.apache.directory.ldap.client.api.LdapConnection;
 
 
@@ -373,7 +374,7 @@
             String filter = GlobalIds.FILTER_PREFIX + objectClass + ")(" + SD_SET_NM + "=" + searchVal + "*))";
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, ssdRoot,
-                SearchScope.SUBTREE, filter, SD_SET_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.SUBTREE, filter, SD_SET_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -480,7 +481,7 @@
             filterbuf.append( ")" );
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, ssdRoot,
-                SearchScope.SUBTREE, filterbuf.toString(), SD_SET_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.SUBTREE, filterbuf.toString(), SD_SET_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
 
             long sequence = 0;
             while ( searchResults.next() )
@@ -569,7 +570,7 @@
                 filterbuf.append( "))" );
                 ld = getAdminConnection();
                 SearchCursor searchResults = search( ld, ssdRoot,
-                    SearchScope.SUBTREE, filterbuf.toString(), SD_SET_ATRS, false, GlobalIds.BATCH_SIZE );
+                    SearchScope.SUBTREE, filterbuf.toString(), SD_SET_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
                 long sequence = 0;
 
                 while ( searchResults.next() )
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
index 7742d63..de41657 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java
@@ -1027,7 +1027,7 @@
 
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, userRoot, SearchScope.ONELEVEL, filterbuf.toString(), defaultAtrs, false,
-                GlobalIds.BATCH_SIZE );
+                    Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -1158,7 +1158,7 @@
             filterbuf.append( ")" );
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, userRoot, SearchScope.ONELEVEL, filterbuf.toString(), defaultAtrs, false,
-                GlobalIds.BATCH_SIZE );
+                Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -1223,7 +1223,7 @@
             
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, userRoot, SearchScope.ONELEVEL, filterbuf.toString(), defaultAtrs, false,
-                GlobalIds.BATCH_SIZE );
+                Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -1279,7 +1279,7 @@
             
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, userRoot, SearchScope.ONELEVEL, filterbuf.toString(), defaultAtrs, false,
-                GlobalIds.BATCH_SIZE );
+                Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
 
             while ( searchResults.next() )
             {
@@ -1349,7 +1349,7 @@
 
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, userRoot, SearchScope.ONELEVEL, filterbuf.toString(), USERID_ATR, false,
-                GlobalIds.BATCH_SIZE );
+                Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -1417,7 +1417,7 @@
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, userRoot, SearchScope.ONELEVEL, filterbuf.toString(), USERID_ATRS,
                 false,
-                GlobalIds.BATCH_SIZE );
+                Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
 
             while ( searchResults.next() )
             {
@@ -1468,7 +1468,7 @@
 
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, userRoot, SearchScope.ONELEVEL, filterbuf.toString(), defaultAtrs, false,
-                GlobalIds.BATCH_SIZE );
+                Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -1577,7 +1577,7 @@
 
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, userRoot, SearchScope.ONELEVEL, filterbuf.toString(), defaultAtrs, false,
-                GlobalIds.BATCH_SIZE );
+                Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) );
             long sequence = 0;
 
             while ( searchResults.next() )
diff --git a/src/main/java/org/apache/directory/fortress/core/util/Config.java b/src/main/java/org/apache/directory/fortress/core/util/Config.java
index 6074c7d..da41282 100755
--- a/src/main/java/org/apache/directory/fortress/core/util/Config.java
+++ b/src/main/java/org/apache/directory/fortress/core/util/Config.java
@@ -154,7 +154,7 @@
         }
         else
         {
-            LOG.error( "getProperty invalid config, can't read prop [{}]", name );
+            LOG.warn( "getProperty invalid config, can't read prop [{}]", name );
         }
         return value;
     }
@@ -172,6 +172,7 @@
         if ( config != null )
         {
             value = ( String ) config.getProperty( name );
+            LOG.debug( "getProperty name [{}] value [{}] default value [{}]", name, value, defaultValue );
         }
         else
         {
@@ -201,7 +202,7 @@
         }
         else
         {
-            LOG.error( "getChar invalid config, can't read prop [{}]", name );
+            LOG.warn( "getChar invalid config, can't read prop [{}]", name );
         }
         return value;
     }
@@ -219,11 +220,11 @@
         if ( config != null )
         {
             value = ( char ) config.getProperty( name );
+            LOG.debug( "getChar name [{}] value [{}]", name, value );
         }
         else
         {
-            String warn = "getChar invalid config, can't read prop [" + name + "]";
-            LOG.warn( warn );
+            LOG.warn( "getChar invalid config, can't read prop [{}], using default [{}]", name, defaultValue );
         }
         if ( value == 0 )
         {
@@ -241,14 +242,22 @@
     public int getInt( String key )
     {
         int value = 0;
-        if ( config != null )
+        try
         {
-            value = config.getInt( key );
+            if ( config != null )
+            {
+                value = config.getInt( key );
+                LOG.debug( "getInt name [{}] value [{}]", key, value );
+            }
+            else
+            {
+                LOG.warn( "getInt invalid config, can't read prop [{}]", key );
+
+            }
         }
-        else
+        catch (org.apache.commons.configuration.ConversionException e)
         {
-            String warn = "getInt invalid config, can't read prop [" + key + "]";
-            LOG.warn( warn );
+            LOG.debug( "getInt can't read prop [{}], exception [{}]", key, e );
         }
         return value;
     }
@@ -262,15 +271,23 @@
      */
     public int getInt( String key, int defaultValue )
     {
-        int value = 0;
-        if ( config != null )
+        int value = defaultValue;
+        try
         {
-            value = config.getInt( key, defaultValue );
+            if ( config != null )
+            {
+                value = config.getInt( key, defaultValue );
+                LOG.debug( "getInt name [{}] value [{}]", key, value );
+            }
+            else
+            {
+                LOG.warn( "getInt invalid config, can't read prop [{}], using default [{}]", key, defaultValue );
+
+            }
         }
-        else
+        catch (org.apache.commons.configuration.ConversionException e)
         {
-            String warn = "getInt invalid config, can't read prop [" + key + "]";
-            LOG.warn( warn );
+            LOG.debug( "getInt can't read prop [{}], using default [{}], exception [{}]", key, defaultValue, e );
         }
         return value;
     }
@@ -289,16 +306,17 @@
             if (config != null)
             {
                 value = config.getBoolean(key);
+                LOG.debug( "getBoolean name [{}] value [{}]", key, value );
             }
             else
             {
-                String warn = "getBoolean - invalid config, can't read prop [" + key + "]";
-                LOG.warn(warn);
+                LOG.warn( "getBoolean invalid config, can't read prop [{}], using default [{}]", key, false );
+
             }
         }
         catch (java.util.NoSuchElementException e )
         {
-            // prop not found, ignore.
+            LOG.debug( "getBoolean - no such element [{}], using default [{}]", key, false );
         }
         return value;
     }
@@ -318,16 +336,16 @@
             if ( config != null )
             {
                 value = config.getBoolean( key, defaultValue );
+                LOG.debug( "getBoolean name [{}] value [{}]", key, value );
             }
             else
             {
-                String warn = "getBoolean - invalid config, can't read prop [" + key + "]";
-                LOG.warn( warn );
+                LOG.warn( "getBoolean - invalid config, can't read prop [{}], using default [{}]", key, defaultValue );
             }
         }
         catch (java.util.NoSuchElementException e )
         {
-            // prop not found, ignore.
+            LOG.debug( "getBoolean - no such element [{}], using default [{}]", key, defaultValue );
         }
         return value;
     }
diff --git a/src/test/java/org/apache/directory/fortress/core/ConfigMgrConsole.java b/src/test/java/org/apache/directory/fortress/core/ConfigMgrConsole.java
index 69c4554..7fe9ca7 100755
--- a/src/test/java/org/apache/directory/fortress/core/ConfigMgrConsole.java
+++ b/src/test/java/org/apache/directory/fortress/core/ConfigMgrConsole.java
@@ -25,6 +25,7 @@
 import java.util.Enumeration;
 import java.util.Properties;
 
+import org.apache.directory.fortress.core.util.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -156,4 +157,29 @@
         }
         ReaderUtil.readChar();
     }
+
+
+    void getProperty()
+    {
+        ReaderUtil.clearScreen();
+        System.out.println("Enter config param key:");
+        String key = ReaderUtil.readLn();
+        String value = Config.getInstance().getProperty(key);
+        System.out.println("PROP=" + key + " VALUE=" + value);
+        System.out.println("ENTER to continue");
+        ReaderUtil.readChar();
+    }
+
+
+    void getInt()
+    {
+        ReaderUtil.clearScreen();
+        System.out.println("Enter config param key:");
+        String key = ReaderUtil.readLn();
+        int value = Config.getInstance().getInt(key);
+        System.out.println("PROP=" + key + " VALUE=" + value);
+        System.out.println("ENTER to continue");
+        ReaderUtil.readChar();
+    }
+
 }
\ No newline at end of file
diff --git a/src/test/java/org/apache/directory/fortress/core/ProcessMenuCommand.java b/src/test/java/org/apache/directory/fortress/core/ProcessMenuCommand.java
index 5f7b0a9..990317e 100755
--- a/src/test/java/org/apache/directory/fortress/core/ProcessMenuCommand.java
+++ b/src/test/java/org/apache/directory/fortress/core/ProcessMenuCommand.java
@@ -289,6 +289,12 @@
                     case '4':
                         cfgConsole.deleteProps();
                         break;
+                    case '5':
+                        cfgConsole.getProperty();
+                        break;
+                    case '6':
+                        cfgConsole.getInt();
+                        break;
                     case 'q':
                     case 'Q':
                         done = true;
@@ -316,6 +322,8 @@
         System.out.println( "2.  Update Config Param" );
         System.out.println( "3.  Read Config Params" );
         System.out.println( "4.  Delete Config Params" );
+        System.out.println( "5.  GetProperty" );
+        System.out.println( "6.  GetInt" );
         System.out.println( "Enter q or Q to return to previous menu" );
     }
 
diff --git a/src/test/java/org/apache/directory/fortress/core/example/ExampleDAO.java b/src/test/java/org/apache/directory/fortress/core/example/ExampleDAO.java
index e46d2d2..9c15716 100755
--- a/src/test/java/org/apache/directory/fortress/core/example/ExampleDAO.java
+++ b/src/test/java/org/apache/directory/fortress/core/example/ExampleDAO.java
@@ -280,7 +280,7 @@
             String filter = GlobalIds.FILTER_PREFIX + Arrays.toString(EIds.EXAMPLE_OBJ_CLASS) + ")("
                 + EIds.EXAMPLE_NM + "=" + searchVal + "*))";
             SearchCursor searchResults = search( ld, exampleRoot,
-                SearchScope.SUBTREE, filter, EXAMPLE_ATRS, false, GlobalIds.BATCH_SIZE );
+                SearchScope.SUBTREE, filter, EXAMPLE_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) ));
             while ( searchResults.next() )
             {
                 exampleList.add(getEntityFromLdapEntry(searchResults.getEntry()));