diff --git a/pom.xml b/pom.xml
index 52994f73520a7a83d4624e45696688172124bd56..0576c4018ce53b47b3f87883baf51be0ac5f4087 100644
--- a/pom.xml
+++ b/pom.xml
@@ -301,7 +301,7 @@
             <artifactId>maven-surefire-plugin</artifactId>
             <version>2.8.1</version>
             <configuration>
-              <argLine>-XX:MaxPermSize=256m -Xmx1024m -Xms1024m</argLine>
+              <argLine>-XX:MaxPermSize=256m -Xmx1024m -Xms256m</argLine>
             	<systemPropertyVariables>
 								<java.io.tmpdir>${project.build.directory}/olatdata</java.io.tmpdir>
 							</systemPropertyVariables>
@@ -365,7 +365,7 @@
             <artifactId>maven-surefire-plugin</artifactId>
             <version>2.8.1</version>
             <configuration>
-              <argLine>-XX:MaxPermSize=256m -Xmx1024m -Xms1024m</argLine>
+              <argLine>-XX:MaxPermSize=256m -Xmx1024m -Xms256m</argLine>
             	<systemPropertyVariables>
 								<java.io.tmpdir>${project.build.directory}/olatdata</java.io.tmpdir>
 							</systemPropertyVariables>
@@ -589,7 +589,7 @@
             <artifactId>maven-surefire-plugin</artifactId>
             <version>2.8.1</version>
             <configuration>
-              <argLine>-XX:MaxPermSize=256m -Xmx1024m -Xms1024m</argLine>
+              <argLine>-XX:MaxPermSize=256m -Xmx1024m -Xms256m</argLine>
             	<systemPropertyVariables>
 								<java.io.tmpdir>${project.build.directory}/olatdata</java.io.tmpdir>
 							</systemPropertyVariables>
diff --git a/src/test/java/org/olat/basesecurity/BaseSecurityTest.java b/src/test/java/org/olat/basesecurity/BaseSecurityTest.java
index 27a05019e87be79d5d1968c17ce2e00f93ffaeb9..6ba095851bab32bb3be055145ad857a89c4dbab4 100644
--- a/src/test/java/org/olat/basesecurity/BaseSecurityTest.java
+++ b/src/test/java/org/olat/basesecurity/BaseSecurityTest.java
@@ -61,489 +61,536 @@ public class BaseSecurityTest extends OlatTestCase {
 	private BaseSecurity baseSecurityManager;
 	
 	@Test public void testSecurityGroup() {
-		Identity ident = getOrCreateIdentity("anIdentity");
-		// check on those four default groups
-		SecurityGroup ng;
-		ng = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ADMIN);
-		assertNotNull(ng);
-		ng = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ANONYMOUS);
-		assertNotNull(ng);
-		ng = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_OLATUSERS);
-		assertNotNull(ng);
-		ng = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_AUTHORS);
-		assertNotNull(ng);
-
-		SecurityGroup secg = baseSecurityManager.createAndPersistSecurityGroup();
-		SecurityGroup secg2 = baseSecurityManager.createAndPersistSecurityGroup();
-		SecurityGroup secg3 = baseSecurityManager.createAndPersistSecurityGroup();
-		assertNotNull(secg.getKey());
-
-		baseSecurityManager.addIdentityToSecurityGroup(ident, secg);
-		Identity ident2 = baseSecurityManager.createAndPersistIdentity("gugus", null, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "uuu", Encoder.encrypt("ppp"));
-		
-		// simulate some user gui clicks
-		DBFactory.getInstance().closeSession();
-
-		// groupmembership test
-		assertTrue(baseSecurityManager.isIdentityInSecurityGroup(ident, secg));
-		assertFalse(baseSecurityManager.isIdentityInSecurityGroup(ident, secg2));
-		assertFalse(baseSecurityManager.isIdentityInSecurityGroup(ident2, secg2));
-		assertFalse(baseSecurityManager.isIdentityInSecurityGroup(ident2, secg));
+		System.out.println("start testSecurityGroup");
+		try {
+			Identity ident = getOrCreateIdentity("anIdentity");
+			// check on those four default groups
+			SecurityGroup ng;
+			ng = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ADMIN);
+			assertNotNull(ng);
+			ng = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ANONYMOUS);
+			assertNotNull(ng);
+			ng = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_OLATUSERS);
+			assertNotNull(ng);
+			ng = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_AUTHORS);
+			assertNotNull(ng);
+
+			SecurityGroup secg = baseSecurityManager.createAndPersistSecurityGroup();
+			SecurityGroup secg2 = baseSecurityManager.createAndPersistSecurityGroup();
+			SecurityGroup secg3 = baseSecurityManager.createAndPersistSecurityGroup();
+			assertNotNull(secg.getKey());
+
+			baseSecurityManager.addIdentityToSecurityGroup(ident, secg);
+			Identity ident2 = baseSecurityManager.createAndPersistIdentity("gugus", null, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "uuu", Encoder.encrypt("ppp"));
+			
+			// simulate some user gui clicks
+			DBFactory.getInstance().closeSession();
 
-		baseSecurityManager.addIdentityToSecurityGroup(ident2, secg3);
-		assertTrue(baseSecurityManager.isIdentityInSecurityGroup(ident2, secg3));
-		// simulate some user gui clicks
-		DBFactory.getInstance().closeSession();
+			// groupmembership test
+			assertTrue(baseSecurityManager.isIdentityInSecurityGroup(ident, secg));
+			assertFalse(baseSecurityManager.isIdentityInSecurityGroup(ident, secg2));
+			assertFalse(baseSecurityManager.isIdentityInSecurityGroup(ident2, secg2));
+			assertFalse(baseSecurityManager.isIdentityInSecurityGroup(ident2, secg));
 
-		baseSecurityManager.deleteSecurityGroup(secg3);
+			baseSecurityManager.addIdentityToSecurityGroup(ident2, secg3);
+			assertTrue(baseSecurityManager.isIdentityInSecurityGroup(ident2, secg3));
+			// simulate some user gui clicks
+			DBFactory.getInstance().closeSession();
 
-		// simulate some user gui clicks
-		DBFactory.getInstance().closeSession();
-		assertFalse(baseSecurityManager.isIdentityInSecurityGroup(ident2, secg3));
+			baseSecurityManager.deleteSecurityGroup(secg3);
 
-		List idents = baseSecurityManager.getIdentitiesOfSecurityGroup(secg);
-		assertEquals(idents.size(), 1);
-		baseSecurityManager.deleteSecurityGroup(secg2);
-		baseSecurityManager.deleteSecurityGroup(secg);
+			// simulate some user gui clicks
+			DBFactory.getInstance().closeSession();
+			assertFalse(baseSecurityManager.isIdentityInSecurityGroup(ident2, secg3));
 
+			List idents = baseSecurityManager.getIdentitiesOfSecurityGroup(secg);
+			assertEquals(idents.size(), 1);
+			baseSecurityManager.deleteSecurityGroup(secg2);
+			baseSecurityManager.deleteSecurityGroup(secg);
+		} catch (Exception e) {
+			e.printStackTrace();
+		} catch (Error err) {
+			err.printStackTrace();
+		}
+		System.out.println("stop testSecurityGroup");
 	}
 
 	@Test public void testNamedGroups() {
-		SecurityGroup ng = baseSecurityManager.createAndPersistNamedSecurityGroup("abc");
-		DBFactory.getInstance().closeSession();
-		SecurityGroup sgFound = baseSecurityManager.findSecurityGroupByName("abc");
-		assertNotNull(sgFound);
-		assertTrue(sgFound.getKey().equals(ng.getKey()));
+		System.out.println("start testNamedGroups");
+		try {
+			SecurityGroup ng = baseSecurityManager.createAndPersistNamedSecurityGroup("abc");
+			DBFactory.getInstance().closeSession();
+			SecurityGroup sgFound = baseSecurityManager.findSecurityGroupByName("abc");
+			assertNotNull(sgFound);
+			assertTrue(sgFound.getKey().equals(ng.getKey()));
+		} catch (Exception e) {
+			e.printStackTrace();
+		} catch (Error err) {
+			err.printStackTrace();
+		}
+		System.out.println("stop testNamedGroups");
 	}
 	
 	@Test public void testPolicy() {
-		Identity ident = getOrCreateIdentity("anIdentity");
-		Identity ident2 = baseSecurityManager.createAndPersistIdentity("gugus2", null, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "uuu2", Encoder.encrypt("ppp"));
-		
-		SecurityGroup secg = baseSecurityManager.createAndPersistSecurityGroup();
-		SecurityGroup secg2 = baseSecurityManager.createAndPersistSecurityGroup();
+		System.out.println("start testPolicy");
+		try {
+			Identity ident = getOrCreateIdentity("anIdentity");
+			Identity ident2 = baseSecurityManager.createAndPersistIdentity("gugus2", null, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "uuu2", Encoder.encrypt("ppp"));
+			
+			SecurityGroup secg = baseSecurityManager.createAndPersistSecurityGroup();
+			SecurityGroup secg2 = baseSecurityManager.createAndPersistSecurityGroup();
+
+			baseSecurityManager.addIdentityToSecurityGroup(ident, secg);
+			// resourceable type
+			OLATResourceable or1 = OresHelper.createOLATResourceableInstance("Forum", new Long("111"));
+			// simulate some user gui clicks
+			DBFactory.getInstance().closeSession();
 
-		baseSecurityManager.addIdentityToSecurityGroup(ident, secg);
-		// resourceable type
-		OLATResourceable or1 = OresHelper.createOLATResourceableInstance("Forum", new Long("111"));
-		// simulate some user gui clicks
-		DBFactory.getInstance().closeSession();
+			
+			// resourceable (type and key)
+			OLATResourceable or2 = OresHelper.createOLATResourceableInstance("Forum", new Long("123"));
+
+			baseSecurityManager.createAndPersistPolicy(secg2, Constants.PERMISSION_ACCESS, or1);
+			Policy policy = baseSecurityManager.createAndPersistPolicy(secg, "read", or2); // instance
+																																		// resource
+			assertNotNull(policy);
+			assertNotNull(policy.getSecurityGroup());
+			assertNotNull(policy.getSecurityGroup().getKey());
+			assertTrue(policy.getSecurityGroup().getKey().equals(secg.getKey()));
+
+			policy = baseSecurityManager.createAndPersistPolicy(secg, "read", or1); // type resource
+			assertNotNull(policy);
+
+			//assert we have instance access if we own the type policy
+			assertTrue(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "read", or2));
+
+			assertTrue(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "read", or1));
+			assertFalse(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "write", or1));
+			assertFalse(baseSecurityManager.isIdentityPermittedOnResourceable(ident2, "read", or1));
+			assertTrue(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "read", or2));
+			assertFalse(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "blub", or2));
 
-		
-		// resourceable (type and key)
-		OLATResourceable or2 = OresHelper.createOLATResourceableInstance("Forum", new Long("123"));
-
-		baseSecurityManager.createAndPersistPolicy(secg2, Constants.PERMISSION_ACCESS, or1);
-		Policy policy = baseSecurityManager.createAndPersistPolicy(secg, "read", or2); // instance
-																																	// resource
-		assertNotNull(policy);
-		assertNotNull(policy.getSecurityGroup());
-		assertNotNull(policy.getSecurityGroup().getKey());
-		assertTrue(policy.getSecurityGroup().getKey().equals(secg.getKey()));
-
-		policy = baseSecurityManager.createAndPersistPolicy(secg, "read", or1); // type resource
-		assertNotNull(policy);
-
-		//assert we have instance access if we own the type policy
-		assertTrue(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "read", or2));
-
-		assertTrue(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "read", or1));
-		assertFalse(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "write", or1));
-		assertFalse(baseSecurityManager.isIdentityPermittedOnResourceable(ident2, "read", or1));
-		assertTrue(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "read", or2));
-		assertFalse(baseSecurityManager.isIdentityPermittedOnResourceable(ident, "blub", or2));
-
-		DBFactory.getInstance().closeSession();
-
-		// test on deleting a securitygroup that is still referenced by a policy
-		// (referential integrity)
-		boolean r = true;
-		try {
-			baseSecurityManager.deleteSecurityGroup(secg);
 			DBFactory.getInstance().closeSession();
-		} catch (Exception e) {
-			if (((DBRuntimeException) e).getCause() instanceof PropertyValueException) {
-				r = true;
+
+			// test on deleting a securitygroup that is still referenced by a policy
+			// (referential integrity)
+			boolean r = true;
+			try {
+				baseSecurityManager.deleteSecurityGroup(secg);
+				DBFactory.getInstance().closeSession();
+			} catch (Exception e) {
+				if (((DBRuntimeException) e).getCause() instanceof PropertyValueException) {
+					r = true;
+				}
 			}
+			DBFactory.getInstance().closeSession();
+			assertTrue(r);
+		} catch (NumberFormatException e) {
+			e.printStackTrace();
+		} catch (Error err) {
+			err.printStackTrace();
 		}
-		DBFactory.getInstance().closeSession();
-		assertTrue(r);		
+		System.out.println("stop testPolicy");	
 	}
 	
 	@Test public void testGetIdentitiesByPowerSearch() {
-		Identity ident = getOrCreateIdentity("anIdentity");
-		Identity ident2 = getOrCreateTestIdentity("extremegroovy");
-		Identity deletedIdent = getOrCreateTestIdentity("delete");
-		baseSecurityManager.saveIdentityStatus(deletedIdent, Identity.STATUS_DELETED);
-
-		SecurityGroup admins = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ADMIN);
-		baseSecurityManager.addIdentityToSecurityGroup(deletedIdent, admins);
-
-		
-		// basic query to find all system users without restrictions
-		List<Identity> results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size()>0); 
-		int numberOfAllUsers = results.size();
-		
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null,Identity.STATUS_ACTIV);
-		assertTrue(results.size()>0);
-		int numberOfActiveUsers = results.size();
-		
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_DELETED);
-		assertTrue(results.size() >0);
-		int numberOfDeletedUsers = results.size();
-		assertEquals("Number of all users != activeUsers + deletedUsers" , numberOfAllUsers, numberOfActiveUsers + numberOfDeletedUsers);
-		
-		// user attributes search test
-		DBFactory.getInstance().closeSession();
-		results = baseSecurityManager.getIdentitiesByPowerSearch(ident.getName(), null, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-		assertEquals("Wrong search result (search with username)" + ident.getName() + "' ",ident.getName() , results.get(0).getName());
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(ident.getName(), null, true, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-		assertEquals("Wrong search result (search with username)" + ident.getName() + "' ",ident.getName() , results.get(0).getName());
-		
-		results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch("lalal", null, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("lalal", null, true, null, null, null, null, null);
-		assertTrue(results.size() == 0);
-		
-		Map<String, String> userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.INSTITUTIONALNAME, "*zh2");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		sysoutResults(results);
-		assertEquals("Wrong search result 'UserConstants.INSTITUTIONALNAME='*zh2'", 2, results.size());
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-		assertEquals("Wrong search result for visible 'UserConstants.INSTITUTIONALNAME='*zh2'", 1, results.size());
-
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.INSTITUTIONALNAME, "un");
-		userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "678"); // per default the % is only attached at the end of the query. 
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null);
-		assertTrue(results.size() == 0);
-
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.INSTITUTIONALNAME, "un");
-		userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "%678");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 2);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.INSTITUTIONALNAME, "un");
-		userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "12-345-678");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 2);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.INSTITUTIONALNAME, "un");
-		userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "888");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null);
-		assertTrue(results.size() == 0);
-
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.INSTITUTIONALNAME, "un");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 2);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, Identity.STATUS_ACTIV);
-		assertTrue(results.size() == 1);
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, Identity.STATUS_ACTIV);
-		assertTrue(results.size() == 1);
+		System.out.println("start testGetIdentitiesByPowerSearch");
+		try {
+			Identity ident = getOrCreateIdentity("anIdentity");
+			Identity ident2 = getOrCreateTestIdentity("extremegroovy");
+			Identity deletedIdent = getOrCreateTestIdentity("delete");
+			baseSecurityManager.saveIdentityStatus(deletedIdent, Identity.STATUS_DELETED);
+
+			SecurityGroup admins = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ADMIN);
+			baseSecurityManager.addIdentityToSecurityGroup(deletedIdent, admins);
+
+			
+			// basic query to find all system users without restrictions
+			List<Identity> results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size()>0); 
+			int numberOfAllUsers = results.size();
+			
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null,Identity.STATUS_ACTIV);
+			assertTrue(results.size()>0);
+			int numberOfActiveUsers = results.size();
+			
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_DELETED);
+			assertTrue(results.size() >0);
+			int numberOfDeletedUsers = results.size();
+			assertEquals("Number of all users != activeUsers + deletedUsers" , numberOfAllUsers, numberOfActiveUsers + numberOfDeletedUsers);
+			
+			// user attributes search test
+			DBFactory.getInstance().closeSession();
+			results = baseSecurityManager.getIdentitiesByPowerSearch(ident.getName(), null, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+			assertEquals("Wrong search result (search with username)" + ident.getName() + "' ",ident.getName() , results.get(0).getName());
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(ident.getName(), null, true, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+			assertEquals("Wrong search result (search with username)" + ident.getName() + "' ",ident.getName() , results.get(0).getName());
+			
+			results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch("lalal", null, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("lalal", null, true, null, null, null, null, null);
+			assertTrue(results.size() == 0);
+			
+			Map<String, String> userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.INSTITUTIONALNAME, "*zh2");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			sysoutResults(results);
+			assertEquals("Wrong search result 'UserConstants.INSTITUTIONALNAME='*zh2'", 2, results.size());
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+			assertEquals("Wrong search result for visible 'UserConstants.INSTITUTIONALNAME='*zh2'", 1, results.size());
+
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.INSTITUTIONALNAME, "un");
+			userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "678"); // per default the % is only attached at the end of the query. 
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null);
+			assertTrue(results.size() == 0);
+
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.INSTITUTIONALNAME, "un");
+			userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "%678");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 2);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.INSTITUTIONALNAME, "un");
+			userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "12-345-678");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 2);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.INSTITUTIONALNAME, "un");
+			userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "888");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null);
+			assertTrue(results.size() == 0);
+
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.INSTITUTIONALNAME, "un");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 2);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, Identity.STATUS_ACTIV);
+			assertTrue(results.size() == 1);
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, Identity.STATUS_ACTIV);
+			assertTrue(results.size() == 1);
+		} catch (Exception e) {
+			e.printStackTrace();
+		} catch (Error err) {
+			err.printStackTrace();
+		}
+		System.out.println("stop testGetIdentitiesByPowerSearch");
 		
 	}
 	
 	@Test public void testGetIdentitiesByPowerSearchWithGroups() {
-		Identity ident = getOrCreateIdentity("anIdentity");
-		Identity ident2 = getOrCreateTestIdentity("extremegroovy");
+		System.out.println("start testGetIdentitiesByPowerSearchWithGroups");
+		try {
+			Identity ident = getOrCreateIdentity("anIdentity");
+			Identity ident2 = getOrCreateTestIdentity("extremegroovy");
+
+			// add some stats
+			baseSecurityManager.saveIdentityStatus(ident, Identity.STATUS_ACTIV);
+			baseSecurityManager.saveIdentityStatus(ident2, Identity.STATUS_ACTIV);
+			
+			// check on those four default groups
+			SecurityGroup admins, authors, anonymous;
+			admins = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ADMIN);
+			anonymous = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ANONYMOUS);
+			authors = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_AUTHORS);
+			// test setup: identity is admin and author
+			baseSecurityManager.addIdentityToSecurityGroup(ident, admins);
+			baseSecurityManager.addIdentityToSecurityGroup(ident2, admins);
+			baseSecurityManager.addIdentityToSecurityGroup(ident, authors);
+
+			// security group search test
+			DBFactory.getInstance().closeSession();
+			SecurityGroup[] groups1 = {admins};
+			SecurityGroup[] groups2 = {admins, authors};
+			SecurityGroup[] groups3 = {authors};
+			SecurityGroup[] groupsInvalid = {anonymous};
+
+			// basic query to find all system users without restrictions
+			List<Identity> results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size()>0); 
+			int numberOfAllUsers = results.size();
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_DELETED);
+			assertTrue(results.size() >0);
+			int numberOfDeletedUsers = results.size();
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups1, null, null, null, null, null, null, null);
+			assertTrue(results.size() >0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups1, null, null, null, null);
+			assertTrue(results.size() >0);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups2, null, null, null, null, null, null, null);
+			assertTrue(results.size() >0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups2, null, null, null, null);
+			assertTrue(results.size() >0);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups3, null, null, null, null, null, null, null);
+			assertTrue(results.size() >0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups3, null, null, null, null);
+			assertTrue(results.size() >0);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groupsInvalid, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groupsInvalid, null, null, null, null);
+			assertTrue(results.size() == 0);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups2, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups2, null, null, null, null);
+			assertTrue(results.size() == 1);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups1, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups1, null, null, null, null);
+			assertTrue(results.size() == 1);
+
+			// policy search test
+			DBFactory.getInstance().closeSession();
+			List policies = baseSecurityManager.getPoliciesOfSecurityGroup(admins);
+			PermissionOnResourceable[] adminPermissions = convertPoliciesListToPermissionOnResourceArray(policies);
+			policies = baseSecurityManager.getPoliciesOfSecurityGroup(anonymous);
+			PermissionOnResourceable[] anonymousPermissions = convertPoliciesListToPermissionOnResourceArray(policies);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, adminPermissions, null, null, null, null, null, null);
+			assertTrue(results.size() >0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, adminPermissions, null, null, null);
+			assertTrue(results.size() >0);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, anonymousPermissions, null, null, null, null, null, null);
+			assertTrue(results.size() == 0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, anonymousPermissions, null, null, null);
+			assertTrue(results.size() == 0);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups2, anonymousPermissions, null, null, null, null, null, null);
+			assertTrue(results.size() == 0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups2, anonymousPermissions, null, null, null);
+			assertTrue(results.size() == 0);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups2, adminPermissions, null, null, null, null, null, null);
+			assertTrue(results.size() >0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups2, adminPermissions, null, null, null);
+			assertTrue(results.size() >0);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups3, adminPermissions, null, null, null, null, null, null);
+			assertTrue("Found no identities for group 'authors'",results.size() >0);
+			boolean isAuthor = true;
+			checkIdentitiesHasRoles(results, isAuthor);
+
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups3, adminPermissions, null, null, null);
+			assertTrue("Found no identities for group 'authors'",results.size() >0);
+			checkIdentitiesHasRoles(results, isAuthor);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, null, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, null, null, null);
+			assertTrue(results.size() == 1);
+			
+			results = baseSecurityManager.getIdentitiesByPowerSearch("dontexist", null, true, groups2, adminPermissions, null, null, null, null, null, null);
+			assertTrue(results.size() == 0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("dontexist", null, true, groups2, adminPermissions, null, null, null);
+			assertTrue(results.size() == 0);
+
+			// authentication provider search
+			String[] authProviders = {BaseSecurityModule.getDefaultAuthProviderIdentifier(), "Shib"};
+			String[] authProvidersInvalid = {"nonexist"};// max length 8 !		
+			String[] authProviderNone = { null };
+			String[] authProvidersAll = {BaseSecurityModule.getDefaultAuthProviderIdentifier(), "Shib", null };
+			
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviders, null, null, null, null, null);
+			assertTrue(results.size() >0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviders, null, null);
+			assertTrue(results.size() >0);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProvidersInvalid, null, null, null, null, null);
+			assertTrue(results.size() == 0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProvidersInvalid, null, null);
+			assertTrue(results.size() == 0);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, authProviders, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, authProviders, null, null);
+			assertTrue(results.size() == 1);
+			
+			results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, authProvidersInvalid, null, null, null, null, null);
+			assertTrue(results.size() == 0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, authProvidersInvalid, null, null);
+			assertTrue(results.size() == 0);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch("dontexist", null, true, groups2, adminPermissions, authProviders, null, null, null, null, null);
+			assertTrue(results.size() == 0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("dontexist", null, true, groups2, adminPermissions, authProviders, null, null);
+			assertTrue(results.size() == 0);
+
+			Authentication auth = baseSecurityManager.findAuthentication(ident, BaseSecurityModule.getDefaultAuthProviderIdentifier());
+			baseSecurityManager.deleteAuthentication(auth);
+			DBFactory.getInstance().closeSession();
 
-		// add some stats
-		baseSecurityManager.saveIdentityStatus(ident, Identity.STATUS_ACTIV);
-		baseSecurityManager.saveIdentityStatus(ident2, Identity.STATUS_ACTIV);
-		
-		// check on those four default groups
-		SecurityGroup admins, authors, anonymous;
-		admins = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ADMIN);
-		anonymous = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ANONYMOUS);
-		authors = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_AUTHORS);
-		// test setup: identity is admin and author
-		baseSecurityManager.addIdentityToSecurityGroup(ident, admins);
-		baseSecurityManager.addIdentityToSecurityGroup(ident2, admins);
-		baseSecurityManager.addIdentityToSecurityGroup(ident, authors);
-
-		// security group search test
-		DBFactory.getInstance().closeSession();
-		SecurityGroup[] groups1 = {admins};
-		SecurityGroup[] groups2 = {admins, authors};
-		SecurityGroup[] groups3 = {authors};
-		SecurityGroup[] groupsInvalid = {anonymous};
-
-		// basic query to find all system users without restrictions
-		List<Identity> results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size()>0); 
-		int numberOfAllUsers = results.size();
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_DELETED);
-		assertTrue(results.size() >0);
-		int numberOfDeletedUsers = results.size();
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups1, null, null, null, null, null, null, null);
-		assertTrue(results.size() >0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups1, null, null, null, null);
-		assertTrue(results.size() >0);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups2, null, null, null, null, null, null, null);
-		assertTrue(results.size() >0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups2, null, null, null, null);
-		assertTrue(results.size() >0);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups3, null, null, null, null, null, null, null);
-		assertTrue(results.size() >0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups3, null, null, null, null);
-		assertTrue(results.size() >0);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groupsInvalid, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groupsInvalid, null, null, null, null);
-		assertTrue(results.size() == 0);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups2, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups2, null, null, null, null);
-		assertTrue(results.size() == 1);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups1, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups1, null, null, null, null);
-		assertTrue(results.size() == 1);
-
-		// policy search test
-		DBFactory.getInstance().closeSession();
-		List policies = baseSecurityManager.getPoliciesOfSecurityGroup(admins);
-		PermissionOnResourceable[] adminPermissions = convertPoliciesListToPermissionOnResourceArray(policies);
-		policies = baseSecurityManager.getPoliciesOfSecurityGroup(anonymous);
-		PermissionOnResourceable[] anonymousPermissions = convertPoliciesListToPermissionOnResourceArray(policies);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, adminPermissions, null, null, null, null, null, null);
-		assertTrue(results.size() >0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, adminPermissions, null, null, null);
-		assertTrue(results.size() >0);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, anonymousPermissions, null, null, null, null, null, null);
-		assertTrue(results.size() == 0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, anonymousPermissions, null, null, null);
-		assertTrue(results.size() == 0);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups2, anonymousPermissions, null, null, null, null, null, null);
-		assertTrue(results.size() == 0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups2, anonymousPermissions, null, null, null);
-		assertTrue(results.size() == 0);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups2, adminPermissions, null, null, null, null, null, null);
-		assertTrue(results.size() >0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups2, adminPermissions, null, null, null);
-		assertTrue(results.size() >0);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups3, adminPermissions, null, null, null, null, null, null);
-		assertTrue("Found no identities for group 'authors'",results.size() >0);
-		boolean isAuthor = true;
-		checkIdentitiesHasRoles(results, isAuthor);
-
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups3, adminPermissions, null, null, null);
-		assertTrue("Found no identities for group 'authors'",results.size() >0);
-		checkIdentitiesHasRoles(results, isAuthor);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, null, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, null, null, null);
-		assertTrue(results.size() == 1);
-		
-		results = baseSecurityManager.getIdentitiesByPowerSearch("dontexist", null, true, groups2, adminPermissions, null, null, null, null, null, null);
-		assertTrue(results.size() == 0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("dontexist", null, true, groups2, adminPermissions, null, null, null);
-		assertTrue(results.size() == 0);
-
-		// authentication provider search
-		String[] authProviders = {BaseSecurityModule.getDefaultAuthProviderIdentifier(), "Shib"};
-		String[] authProvidersInvalid = {"nonexist"};// max length 8 !		
-		String[] authProviderNone = { null };
-		String[] authProvidersAll = {BaseSecurityModule.getDefaultAuthProviderIdentifier(), "Shib", null };
-		
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviders, null, null, null, null, null);
-		assertTrue(results.size() >0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviders, null, null);
-		assertTrue(results.size() >0);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProvidersInvalid, null, null, null, null, null);
-		assertTrue(results.size() == 0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProvidersInvalid, null, null);
-		assertTrue(results.size() == 0);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, authProviders, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, authProviders, null, null);
-		assertTrue(results.size() == 1);
-		
-		results = baseSecurityManager.getIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, authProvidersInvalid, null, null, null, null, null);
-		assertTrue(results.size() == 0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("an*tity", null, true, groups2, adminPermissions, authProvidersInvalid, null, null);
-		assertTrue(results.size() == 0);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch("dontexist", null, true, groups2, adminPermissions, authProviders, null, null, null, null, null);
-		assertTrue(results.size() == 0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("dontexist", null, true, groups2, adminPermissions, authProviders, null, null);
-		assertTrue(results.size() == 0);
-
-		Authentication auth = baseSecurityManager.findAuthentication(ident, BaseSecurityModule.getDefaultAuthProviderIdentifier());
-		baseSecurityManager.deleteAuthentication(auth);
-		DBFactory.getInstance().closeSession();
-
-		// ultimate tests
-		//Identity ident = getOrCreateIdentity("anIdentity");
-		Date created = ident.getCreationDate();
-		Calendar cal = Calendar.getInstance();
-		cal.setTime(created);
-		cal.add(Calendar.DAY_OF_MONTH, -5);
-		Date before = cal.getTime();
-
-		DBFactory.getInstance().closeSession();
-		results = baseSecurityManager.getIdentitiesByPowerSearch("groovy", null, true, groups1, adminPermissions, null, before, null, null, null, null);
-		assertTrue(results.size() == 0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("groovy", null, true, groups1, adminPermissions, null, before, null);
-		assertTrue(results.size() == 0);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch("extremegroovy", null, true, groups1, adminPermissions, null, before, null, null, null, null);
-		assertTrue(results.size() == 1);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("extremegroovy", null, true, groups1, adminPermissions, null, before, null);
-		assertTrue(results.size() == 1);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, authProviders, before, null, null, null, null);
-		assertTrue("Found no results", results.size() > 0);
-		checkIdentitiesAreInGroups(results, groups1);
-		checkIdentitiesHasAuthProvider(results,authProviders );
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, authProviders, before, null);
-		assertTrue("Found no results", results.size() > 0);
-		checkIdentitiesAreInGroups(results, groups1);
-		checkIdentitiesHasAuthProvider(results,authProviders );
-		
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, authProviderNone, before, null, null, null, null);
-		assertTrue("Found no results", results.size() > 0);
-		checkIdentitiesAreInGroups(results, groups1);
-		checkIdentitiesHasPermissions(results, adminPermissions);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, authProviderNone, before, null);
-		assertTrue("Found no results", results.size() > 0);
-		checkIdentitiesAreInGroups(results, groups1);
-		checkIdentitiesHasPermissions(results, adminPermissions);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch("%y", null, true, groups1, adminPermissions, authProvidersAll, before, null, null, null, null);
-		assertTrue(results.size() == 2);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("%y", null, true, groups1, adminPermissions, authProvidersAll, before, null);
-		assertTrue(results.size() == 2);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch("%y", null, true, groups1, adminPermissions, authProvidersAll, null, before, null, null, null);
-		assertTrue(results.size() == 0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("%y", null, true, groups1, adminPermissions, authProvidersAll, null, before);
-		assertTrue(results.size() == 0);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, null, before, null, null, null, null);
-		sysoutResults(results);
-		assertTrue("Found no results", results.size() > 0);
-		checkIdentitiesAreInGroups(results, groups1);
-		checkIdentitiesHasPermissions(results, adminPermissions);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, null, before, null);
-		assertTrue("Found no results", results.size() > 0);
-		checkIdentitiesAreInGroups(results, groups1);
-		checkIdentitiesHasPermissions(results, adminPermissions);
-		
-		System.out.println("Tschagaaa, good job!");
-		DBFactory.getInstance().closeSession();
+			// ultimate tests
+			//Identity ident = getOrCreateIdentity("anIdentity");
+			Date created = ident.getCreationDate();
+			Calendar cal = Calendar.getInstance();
+			cal.setTime(created);
+			cal.add(Calendar.DAY_OF_MONTH, -5);
+			Date before = cal.getTime();
+
+			DBFactory.getInstance().closeSession();
+			results = baseSecurityManager.getIdentitiesByPowerSearch("groovy", null, true, groups1, adminPermissions, null, before, null, null, null, null);
+			assertTrue(results.size() == 0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("groovy", null, true, groups1, adminPermissions, null, before, null);
+			assertTrue(results.size() == 0);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch("extremegroovy", null, true, groups1, adminPermissions, null, before, null, null, null, null);
+			assertTrue(results.size() == 1);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("extremegroovy", null, true, groups1, adminPermissions, null, before, null);
+			assertTrue(results.size() == 1);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, authProviders, before, null, null, null, null);
+			assertTrue("Found no results", results.size() > 0);
+			checkIdentitiesAreInGroups(results, groups1);
+			checkIdentitiesHasAuthProvider(results,authProviders );
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, authProviders, before, null);
+			assertTrue("Found no results", results.size() > 0);
+			checkIdentitiesAreInGroups(results, groups1);
+			checkIdentitiesHasAuthProvider(results,authProviders );
+			
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, authProviderNone, before, null, null, null, null);
+			assertTrue("Found no results", results.size() > 0);
+			checkIdentitiesAreInGroups(results, groups1);
+			checkIdentitiesHasPermissions(results, adminPermissions);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, authProviderNone, before, null);
+			assertTrue("Found no results", results.size() > 0);
+			checkIdentitiesAreInGroups(results, groups1);
+			checkIdentitiesHasPermissions(results, adminPermissions);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch("%y", null, true, groups1, adminPermissions, authProvidersAll, before, null, null, null, null);
+			assertTrue(results.size() == 2);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("%y", null, true, groups1, adminPermissions, authProvidersAll, before, null);
+			assertTrue(results.size() == 2);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch("%y", null, true, groups1, adminPermissions, authProvidersAll, null, before, null, null, null);
+			assertTrue(results.size() == 0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch("%y", null, true, groups1, adminPermissions, authProvidersAll, null, before);
+			assertTrue(results.size() == 0);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, null, before, null, null, null, null);
+			sysoutResults(results);
+			assertTrue("Found no results", results.size() > 0);
+			checkIdentitiesAreInGroups(results, groups1);
+			checkIdentitiesHasPermissions(results, adminPermissions);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, groups1, adminPermissions, null, before, null);
+			assertTrue("Found no results", results.size() > 0);
+			checkIdentitiesAreInGroups(results, groups1);
+			checkIdentitiesHasPermissions(results, adminPermissions);
+			
+			System.out.println("Tschagaaa, good job!");
+			DBFactory.getInstance().closeSession();
+		} catch (Exception e) {
+			e.printStackTrace();
+		} catch (Error err) {
+			err.printStackTrace();
+		}
+		System.out.println("stop testGetIdentitiesByPowerSearchWithGroups");
 	}
 	
 	
 	@Test public void testGetIdentitiesByPowerSearchAuthProvider(){
 	
-		
-		//authentication provider search		
-		String[] authProviderNone = { null };
-		String[] authProvidersAll = {BaseSecurityModule.getDefaultAuthProviderIdentifier(), "Shib", null };
-		
-		//check count before adding
-		List<Identity> results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null, null, null, null);
-		int prevProviderNoneCount = results.size();
-		//add two new users with authProviderNone
-		getOrCreateTestIdentityWithAuth("authNoneOne", null);
-		getOrCreateTestIdentityWithAuth("authNoneTwo", null);
-		DBFactory.getInstance().closeSession();
-		// special case: no auth provider
-		// test if 2 new users are found.
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null, null, null, null);
-		assertEquals("Wrong number of identities, search with (authProviderNone)", prevProviderNoneCount, results.size() - 2);
-		
-		
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null);
-		prevProviderNoneCount = results.size();
-		getOrCreateTestIdentityWithAuth("authNoneThree", null);
-		getOrCreateTestIdentityWithAuth("authNoneFour", null);
-		DBFactory.getInstance().closeSession();
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null);
-		assertEquals("Wrong number of visible identities, search with (authProviderNone)", prevProviderNoneCount, results.size() - 2  );
-		
-		
-		
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null, null, null, null);
-		prevProviderNoneCount = results.size();
-		getOrCreateTestIdentityWithAuth("authNoneFive", null);
-		getOrCreateTestIdentityWithAuth("authNoneSix", null);
-		DBFactory.getInstance().closeSession();
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null, null, null, null);
-		assertEquals("Wrong number of identities, search with (authProviderNone)", prevProviderNoneCount, results.size() - 2  );
-		
 
-		
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null);
-		prevProviderNoneCount = results.size();
-		getOrCreateTestIdentityWithAuth("authNoneSeven", null);
-		getOrCreateTestIdentityWithAuth("authNoneEight", null);
-		DBFactory.getInstance().closeSession();
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null);
-		assertEquals("Wrong number of visible identities, search with (authProviderNone)", prevProviderNoneCount, results.size() - 2);
-		
-		
-		
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProvidersAll, null, null, null, null, null);
-		prevProviderNoneCount = results.size();
-		//add a new identity per entry of AuthProvidersAll
-		getOrCreateTestIdentityWithAuth("authTwelve", "Shib");
-		getOrCreateTestIdentityWithAuth("authThirteen", BaseSecurityModule.getDefaultAuthProviderIdentifier());
-		getOrCreateTestIdentityWithAuth("authForteen", null);
-		DBFactory.getInstance().closeSession();
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProvidersAll, null, null, null, null, null);
-		assertTrue(results.size() - prevProviderNoneCount == 3);
-		
-		
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProvidersAll, null, null);
-		prevProviderNoneCount = results.size();
-	//add a new identity per entry of AuthProvidersAll
-		getOrCreateTestIdentityWithAuth("authSixteen", "Shib");
-		getOrCreateTestIdentityWithAuth("authSeventeen", BaseSecurityModule.getDefaultAuthProviderIdentifier());
-		getOrCreateTestIdentityWithAuth("authEighteen", null);
-		DBFactory.getInstance().closeSession();
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProvidersAll, null, null);
-		assertTrue(results.size() - prevProviderNoneCount == 3);
+		System.out.println("start testGetIdentitiesByPowerSearchAuthProvider");
+		try {
+			//authentication provider search		
+			String[] authProviderNone = { null };
+			String[] authProvidersAll = {BaseSecurityModule.getDefaultAuthProviderIdentifier(), "Shib", null };
+			
+			//check count before adding
+			List<Identity> results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null, null, null, null);
+			int prevProviderNoneCount = results.size();
+			//add two new users with authProviderNone
+			getOrCreateTestIdentityWithAuth("authNoneOne", null);
+			getOrCreateTestIdentityWithAuth("authNoneTwo", null);
+			DBFactory.getInstance().closeSession();
+			// special case: no auth provider
+			// test if 2 new users are found.
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null, null, null, null);
+			assertEquals("Wrong number of identities, search with (authProviderNone)", prevProviderNoneCount, results.size() - 2);
+			
+			
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null);
+			prevProviderNoneCount = results.size();
+			getOrCreateTestIdentityWithAuth("authNoneThree", null);
+			getOrCreateTestIdentityWithAuth("authNoneFour", null);
+			DBFactory.getInstance().closeSession();
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null);
+			assertEquals("Wrong number of visible identities, search with (authProviderNone)", prevProviderNoneCount, results.size() - 2  );
+			
+			
+			
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null, null, null, null);
+			prevProviderNoneCount = results.size();
+			getOrCreateTestIdentityWithAuth("authNoneFive", null);
+			getOrCreateTestIdentityWithAuth("authNoneSix", null);
+			DBFactory.getInstance().closeSession();
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null, null, null, null);
+			assertEquals("Wrong number of identities, search with (authProviderNone)", prevProviderNoneCount, results.size() - 2  );
+			
+
+			
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null);
+			prevProviderNoneCount = results.size();
+			getOrCreateTestIdentityWithAuth("authNoneSeven", null);
+			getOrCreateTestIdentityWithAuth("authNoneEight", null);
+			DBFactory.getInstance().closeSession();
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProviderNone, null, null);
+			assertEquals("Wrong number of visible identities, search with (authProviderNone)", prevProviderNoneCount, results.size() - 2);
+			
+			
+			
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProvidersAll, null, null, null, null, null);
+			prevProviderNoneCount = results.size();
+			//add a new identity per entry of AuthProvidersAll
+			getOrCreateTestIdentityWithAuth("authTwelve", "Shib");
+			getOrCreateTestIdentityWithAuth("authThirteen", BaseSecurityModule.getDefaultAuthProviderIdentifier());
+			getOrCreateTestIdentityWithAuth("authForteen", null);
+			DBFactory.getInstance().closeSession();
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, authProvidersAll, null, null, null, null, null);
+			assertTrue(results.size() - prevProviderNoneCount == 3);
+			
+			
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProvidersAll, null, null);
+			prevProviderNoneCount = results.size();
+//add a new identity per entry of AuthProvidersAll
+			getOrCreateTestIdentityWithAuth("authSixteen", "Shib");
+			getOrCreateTestIdentityWithAuth("authSeventeen", BaseSecurityModule.getDefaultAuthProviderIdentifier());
+			getOrCreateTestIdentityWithAuth("authEighteen", null);
+			DBFactory.getInstance().closeSession();
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, authProvidersAll, null, null);
+			assertTrue(results.size() - prevProviderNoneCount == 3);
+		} catch (Exception e) {
+			e.printStackTrace();
+		} catch (Error err) {
+			err.printStackTrace();
+		}
+		System.out.println("stop testGetIdentitiesByPowerSearchAuthProvider");
 
 		
 		
@@ -557,151 +604,162 @@ public class BaseSecurityTest extends OlatTestCase {
 	//        Our implementation of powersearch convert search-properties to lowercase ! 
 	@Test public void testGetIdentitiesByPowerSearchWithUserPropertiesAndIntersectionOption() {
 		// create two test users
-		User onePropUser = UserManager.getInstance().createUser("onepropuser", "onepropuser", "onepropuser@lustig.com");
-		onePropUser.setProperty(UserConstants.FIRSTNAME, "one");		
-		Identity onePropeIdentity = baseSecurityManager.createAndPersistIdentityAndUser("onePropUser", onePropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "onepropuser", Encoder.encrypt("ppp"));
-		
-		User twoPropUser = UserManager.getInstance().createUser("twopropuser", "twopropuser", "twopropuser@lustig.com");
-		twoPropUser.setProperty(UserConstants.FIRSTNAME, "two");
-		twoPropUser.setProperty(UserConstants.LASTNAME, "prop");
 
-		Identity twoPropeIdentity = baseSecurityManager.createAndPersistIdentityAndUser("twopropuser", twoPropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "twopropuser", Encoder.encrypt("ppp"));
-		// commit
-		DBFactory.getInstance().closeSession();
+		System.out.println("start testGetIdentitiesByPowerSearchWithUserPropertiesAndIntersectionOption");
+		try {
+			User onePropUser = UserManager.getInstance().createUser("onepropuser", "onepropuser", "onepropuser@lustig.com");
+			onePropUser.setProperty(UserConstants.FIRSTNAME, "one");		
+			Identity onePropeIdentity = baseSecurityManager.createAndPersistIdentityAndUser("onePropUser", onePropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "onepropuser", Encoder.encrypt("ppp"));
+			
+			User twoPropUser = UserManager.getInstance().createUser("twopropuser", "twopropuser", "twopropuser@lustig.com");
+			twoPropUser.setProperty(UserConstants.FIRSTNAME, "two");
+			twoPropUser.setProperty(UserConstants.LASTNAME, "prop");
+
+			Identity twoPropeIdentity = baseSecurityManager.createAndPersistIdentityAndUser("twopropuser", twoPropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "twopropuser", Encoder.encrypt("ppp"));
+			// commit
+			DBFactory.getInstance().closeSession();
 
-		HashMap<String, String> userProperties;
-		List results;
-	
-		// find first
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.FIRSTNAME, "one");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-
-		// no intersection - all properties optional
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.FIRSTNAME, "one");
-		userProperties.put(UserConstants.LASTNAME, "somewrongvalue");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 0);
-
-		// no intersection - all properties optional
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.FIRSTNAME, "one");
-		userProperties.put(UserConstants.LASTNAME, "somewrongvalue");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-
-		// find second
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.FIRSTNAME, "two");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-		
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.FIRSTNAME, "two");
-		userProperties.put(UserConstants.LASTNAME, "somewrongvalue");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 0);
-
-		// no intersection - all properties optional
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.FIRSTNAME, "two");
-		userProperties.put(UserConstants.LASTNAME, "somewrongvalue");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.FIRSTNAME, "two");
-		userProperties.put(UserConstants.LASTNAME, "prop");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-		
-		// find all
-		// 1. basic query to find all system users without restrictions
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size()>0); 
-		int numberOfAllUsers = results.size();
-		
-		userProperties = new HashMap<String, String>();
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		assertEquals("Wrong search result 'empty userProperties'", numberOfAllUsers, results.size());
-		
-		userProperties = new HashMap<String, String>();
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null);
-		assertEquals("Wrong search result 'empty userProperties and intersection=false'", numberOfAllUsers, results.size());
+			HashMap<String, String> userProperties;
+			List results;
+
+			// find first
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.FIRSTNAME, "one");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+
+			// no intersection - all properties optional
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.FIRSTNAME, "one");
+			userProperties.put(UserConstants.LASTNAME, "somewrongvalue");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 0);
+
+			// no intersection - all properties optional
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.FIRSTNAME, "one");
+			userProperties.put(UserConstants.LASTNAME, "somewrongvalue");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+
+			// find second
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.FIRSTNAME, "two");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+			
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.FIRSTNAME, "two");
+			userProperties.put(UserConstants.LASTNAME, "somewrongvalue");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 0);
+
+			// no intersection - all properties optional
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.FIRSTNAME, "two");
+			userProperties.put(UserConstants.LASTNAME, "somewrongvalue");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.FIRSTNAME, "two");
+			userProperties.put(UserConstants.LASTNAME, "prop");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+			
+			// find all
+			// 1. basic query to find all system users without restrictions
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size()>0); 
+			int numberOfAllUsers = results.size();
+			
+			userProperties = new HashMap<String, String>();
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			assertEquals("Wrong search result 'empty userProperties'", numberOfAllUsers, results.size());
+			
+			userProperties = new HashMap<String, String>();
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null);
+			assertEquals("Wrong search result 'empty userProperties and intersection=false'", numberOfAllUsers, results.size());
 
-		DBFactory.getInstance().closeSession();
+			DBFactory.getInstance().closeSession();
+		} catch (Exception e) {
+			e.printStackTrace();
+		} catch (Error err) {
+			err.printStackTrace();
+		}
+		System.out.println("stop testGetIdentitiesByPowerSearchWithUserPropertiesAndIntersectionOption");
 
 	}
 
 	@Test public void testMultipleUserPropertiesSearches() {
+		System.out.println("start testMultipleUserPropertiesSearches");
 		// create two test users
-		User multiPropUser = UserManager.getInstance().createUser("multipropuser", "multipropuser", "multipropuser@lustig.com");
-		multiPropUser.setProperty(UserConstants.FIRSTNAME, "multi");		
-		multiPropUser.setProperty(UserConstants.LASTNAME, "prop");		
-		multiPropUser.setProperty(UserConstants.INSTITUTIONALNAME, "multiinst");		
-		multiPropUser.setProperty(UserConstants.INSTITUTIONALEMAIL, "multiinst@lustig.com");		
-		multiPropUser.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, "multiinst");		
-		multiPropUser.setProperty(UserConstants.CITY, "züri");		
-		Identity onePropeIdentity = baseSecurityManager.createAndPersistIdentityAndUser("multiPropUser", multiPropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "multipropuser", Encoder.encrypt("ppp"));
-
-		// commit
-		DBFactory.getInstance().closeSession();
-
-		HashMap<String, String> userProperties;
-		List results;
-		
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.FIRSTNAME, "multi");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		sysoutResults(results);
-		assertTrue(results.size() == 1);
-
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.FIRSTNAME, "multi");
-		userProperties.put(UserConstants.LASTNAME, "prop");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 1);
-
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.FIRSTNAME, "multi");
-		userProperties.put(UserConstants.LASTNAME, "prop");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 2); // multipropuser and twopropuser
-
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.FIRSTNAME, "multi");
-		userProperties.put(UserConstants.LASTNAME, "prop");
-		userProperties.put(UserConstants.INSTITUTIONALNAME, "multiinst");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 1); 
-
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.FIRSTNAME, "multi");
-		userProperties.put(UserConstants.LASTNAME, "prop");
-		userProperties.put(UserConstants.INSTITUTIONALNAME, "multiinst");
-		userProperties.put(UserConstants.INSTITUTIONALEMAIL, "multiinst@lustig.com");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 1); 
-
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.FIRSTNAME, "multi");
-		userProperties.put(UserConstants.LASTNAME, "prop");
-		userProperties.put(UserConstants.INSTITUTIONALNAME, "multiinst");
-		userProperties.put(UserConstants.INSTITUTIONALEMAIL, "multiinst@lustig.com");
-		userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "multiinst");
-		userProperties.put(UserConstants.CITY, "züri");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 1); 
-
-		// Test to reproduce for OLAT-2820:
-		// multipropuser matches firstname, lastname and city
-		// twopropuser matches lastname and has a firstname but not city
-		// Since it intersection flag is set to false it must find both users!
-		userProperties = new HashMap<String, String>();
-		userProperties.put(UserConstants.FIRSTNAME, "multi"); 
-		userProperties.put(UserConstants.LASTNAME, "prop");
+		try {
+			User multiPropUser = UserManager.getInstance().createUser("multipropuser", "multipropuser", "multipropuser@lustig.com");
+			multiPropUser.setProperty(UserConstants.FIRSTNAME, "multi");		
+			multiPropUser.setProperty(UserConstants.LASTNAME, "prop");		
+			multiPropUser.setProperty(UserConstants.INSTITUTIONALNAME, "multiinst");		
+			multiPropUser.setProperty(UserConstants.INSTITUTIONALEMAIL, "multiinst@lustig.com");		
+			multiPropUser.setProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, "multiinst");		
+			multiPropUser.setProperty(UserConstants.CITY, "züri");		
+			Identity onePropeIdentity = baseSecurityManager.createAndPersistIdentityAndUser("multiPropUser", multiPropUser, BaseSecurityModule.getDefaultAuthProviderIdentifier(), "multipropuser", Encoder.encrypt("ppp"));
+
+			// commit
+			DBFactory.getInstance().closeSession();
+
+			HashMap<String, String> userProperties;
+			List results;
+			
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.FIRSTNAME, "multi");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			sysoutResults(results);
+			assertTrue(results.size() == 1);
+
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.FIRSTNAME, "multi");
+			userProperties.put(UserConstants.LASTNAME, "prop");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 1);
+
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.FIRSTNAME, "multi");
+			userProperties.put(UserConstants.LASTNAME, "prop");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 2); // multipropuser and twopropuser
+
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.FIRSTNAME, "multi");
+			userProperties.put(UserConstants.LASTNAME, "prop");
+			userProperties.put(UserConstants.INSTITUTIONALNAME, "multiinst");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 1); 
+
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.FIRSTNAME, "multi");
+			userProperties.put(UserConstants.LASTNAME, "prop");
+			userProperties.put(UserConstants.INSTITUTIONALNAME, "multiinst");
+			userProperties.put(UserConstants.INSTITUTIONALEMAIL, "multiinst@lustig.com");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 1); 
+
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.FIRSTNAME, "multi");
+			userProperties.put(UserConstants.LASTNAME, "prop");
+			userProperties.put(UserConstants.INSTITUTIONALNAME, "multiinst");
+			userProperties.put(UserConstants.INSTITUTIONALEMAIL, "multiinst@lustig.com");
+			userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "multiinst");
+			userProperties.put(UserConstants.CITY, "züri");
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 1); 
+
+			// Test to reproduce for OLAT-2820:
+			// multipropuser matches firstname, lastname and city
+			// twopropuser matches lastname and has a firstname but not city
+			// Since it intersection flag is set to false it must find both users!
+			userProperties = new HashMap<String, String>();
+			userProperties.put(UserConstants.FIRSTNAME, "multi"); 
+			userProperties.put(UserConstants.LASTNAME, "prop");
 // TODO: fg,cg: Did not found results with empty user-properties	
 //		 twopro has same lastname but different firstname => will be found with userPropertiesInterseactionSearch = true
 //		 twopro has no other user-properties, with current solution no OR-search runs correct with empty user-properties like twopro user has.
@@ -710,72 +768,91 @@ public class BaseSecurityTest extends OlatTestCase {
 //		userProperties.put(UserConstants.INSTITUTIONALEMAIL, "MultiInst@lustig.com");
 //		userProperties.put(UserConstants.INSTITUTIONALUSERIDENTIFIER, "MultiInst");
 //		userProperties.put(UserConstants.CITY, "Züri");
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null);
-		assertTrue(results.size() == 2); // multipropuser and twopropuser
-		DBFactory.getInstance().closeSession();
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, userProperties, false, null, null, null, null, null, null, null, null);
+			assertTrue(results.size() == 2); // multipropuser and twopropuser
+			DBFactory.getInstance().closeSession();
+		} catch (Exception e) {
+			e.printStackTrace();
+		} catch (Error err) {
+			err.printStackTrace();
+		}
+
+		System.out.println("stop testMultipleUserPropertiesSearches");
 	}
 	
 	@Test public void testGetIdentitiesByPowerSearchWithDate() {
-		Identity ident = getOrCreateIdentity("anIdentity");
-		Date created = ident.getCreationDate();
-		Calendar cal = Calendar.getInstance();
-		cal.setTime(created);
-		cal.add(Calendar.DAY_OF_MONTH, -5);
-		Date before = cal.getTime();
-		cal.add(Calendar.DAY_OF_MONTH, 10);
-		Date after = cal.getTime();
-
-		// basic query to find all system users without restrictions
-		List<Identity> results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, null);
-		assertTrue(results.size()>0); 
-		int numberOfAllUsers = results.size();
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_DELETED);
-		assertTrue(results.size() >0);
-		int numberOfDeletedUsers = results.size();
-
-		Date createdAfter = before;
-		Date createdBefore = after;
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, createdAfter, createdBefore, null, null, null);
-		assertEquals("Search with date (createdAfter,createdBefore) delivers not the same number of users", numberOfAllUsers, results.size());
-
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, before, after);
-		assertEquals("Search (visible identities) with date (createdAfter,createdBefore) delivers not the same number of users", (numberOfAllUsers - numberOfDeletedUsers) , results.size()); // One identity is deleted
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, after, null, null, null);
-		assertEquals("Search with date (only after) delivers not the same number of users", numberOfAllUsers, results.size());
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, null, after);
-		assertEquals("Search (visible identities) with date (createdAfter,createdBefore) delivers not the same number of users", (numberOfAllUsers - numberOfDeletedUsers) , results.size()); // One identity is deleted
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, before, null, null, null, null);
-		assertEquals("Search with date (only before) delivers not the same number of users", numberOfAllUsers, results.size());
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, before, null);
-		assertEquals("Search (visible identities) with date (createdAfter,createdBefore) delivers not the same number of users", (numberOfAllUsers - numberOfDeletedUsers) , results.size()); // One identity is deleted
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, after, before, null, null, null);
-		assertTrue(results.size() == 0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, after, before);
-		assertTrue(results.size() == 0);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, after, null, null, null, null);
-		assertTrue(results.size() == 0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, after, null);
-		assertTrue(results.size() == 0);
-
-		results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, before, null, null, null);
-		assertTrue(results.size() == 0);
-		results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, null, before);
-		assertTrue(results.size() == 0);
+		System.out.println("start testGetIdentitiesByPowerSearchWithDate");
+		try {
+			Identity ident = getOrCreateIdentity("anIdentity");
+			Date created = ident.getCreationDate();
+			Calendar cal = Calendar.getInstance();
+			cal.setTime(created);
+			cal.add(Calendar.DAY_OF_MONTH, -5);
+			Date before = cal.getTime();
+			cal.add(Calendar.DAY_OF_MONTH, 10);
+			Date after = cal.getTime();
+
+			// basic query to find all system users without restrictions
+			List<Identity> results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, null);
+			assertTrue(results.size()>0); 
+			int numberOfAllUsers = results.size();
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_DELETED);
+			assertTrue(results.size() >0);
+			int numberOfDeletedUsers = results.size();
+
+			Date createdAfter = before;
+			Date createdBefore = after;
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, createdAfter, createdBefore, null, null, null);
+			assertEquals("Search with date (createdAfter,createdBefore) delivers not the same number of users", numberOfAllUsers, results.size());
+
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, before, after);
+			assertEquals("Search (visible identities) with date (createdAfter,createdBefore) delivers not the same number of users", (numberOfAllUsers - numberOfDeletedUsers) , results.size()); // One identity is deleted
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, after, null, null, null);
+			assertEquals("Search with date (only after) delivers not the same number of users", numberOfAllUsers, results.size());
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, null, after);
+			assertEquals("Search (visible identities) with date (createdAfter,createdBefore) delivers not the same number of users", (numberOfAllUsers - numberOfDeletedUsers) , results.size()); // One identity is deleted
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, before, null, null, null, null);
+			assertEquals("Search with date (only before) delivers not the same number of users", numberOfAllUsers, results.size());
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, before, null);
+			assertEquals("Search (visible identities) with date (createdAfter,createdBefore) delivers not the same number of users", (numberOfAllUsers - numberOfDeletedUsers) , results.size()); // One identity is deleted
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, after, before, null, null, null);
+			assertTrue(results.size() == 0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, after, before);
+			assertTrue(results.size() == 0);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, after, null, null, null, null);
+			assertTrue(results.size() == 0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, after, null);
+			assertTrue(results.size() == 0);
+
+			results = baseSecurityManager.getIdentitiesByPowerSearch(null, null, true, null, null, null, null, before, null, null, null);
+			assertTrue(results.size() == 0);
+			results = baseSecurityManager.getVisibleIdentitiesByPowerSearch(null, null, true, null, null, null, null, before);
+			assertTrue(results.size() == 0);
+		} catch (Exception e) {
+			e.printStackTrace();
+		} catch (Error err) {
+			err.printStackTrace();
+		}
 		
 
-		System.out.println("Tschagaaa, good job! 2");
-		
+		System.out.println("end testGetIdentitiesByPowerSearchWithDate");
 	}
 	
 	
 	@After
 	public void tearDown() throws Exception {
-		DBFactory.getInstance().closeSession();
+		try {
+			DBFactory.getInstance().closeSession();
+		} catch (Exception e) {
+			e.printStackTrace();
+		} catch (Error err) {
+			err.printStackTrace();
+		}
 	}
 
 	////////////////////