diff --git a/src/main/java/org/olat/admin/user/SystemRolesAndRightsController.java b/src/main/java/org/olat/admin/user/SystemRolesAndRightsController.java
index 0335af9bf6443a170a23ca6d1ab34a38f5a5b404..85c05bd0453b3d3ce8f3f7ac74e4e7584a98a1c8 100644
--- a/src/main/java/org/olat/admin/user/SystemRolesAndRightsController.java
+++ b/src/main/java/org/olat/admin/user/SystemRolesAndRightsController.java
@@ -179,8 +179,7 @@ public class SystemRolesAndRightsController extends BasicController {
 			updateSecurityGroup(myIdentity, secMgr, adminGroup, hasBeenAdmin, isAdmin);		
 		}
 		if (iAmOlatAdmin &&  !myIdentity.getStatus().equals(form.getStatus()) ) {
-			secMgr.saveIdentityStatus(myIdentity, form.getStatus());
-			identity.setStatus(form.getStatus());
+			identity = secMgr.saveIdentityStatus(myIdentity, form.getStatus());
 		}
 	}
 
diff --git a/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeManager.java b/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeManager.java
index d375d3831d9cbb90ba54e9cc22ec34675e11fa4c..2fff30465fdacc0980bc6230668c17a51e15144c 100644
--- a/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeManager.java
+++ b/src/main/java/org/olat/admin/user/bulkChange/UserBulkChangeManager.java
@@ -191,8 +191,7 @@ public class UserBulkChangeManager extends BasicManager {
 			// set status
 			if (roleChangeMap.containsKey("Status")) {
 				Integer status = Integer.parseInt(roleChangeMap.get("Status"));
-				secMgr.saveIdentityStatus(identity, status);
-				identity = (Identity) db.loadObject(identity);
+				identity = secMgr.saveIdentityStatus(identity, status);
 			}
 
 			// persist changes:
diff --git a/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java b/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java
index cf16fb278c4ea60cccdae5574ac1aa6cf054eb95..1dba1513ceddad19f1e5f969e2675fa08e2e7a6a 100644
--- a/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java
+++ b/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java
@@ -70,6 +70,7 @@ import org.olat.repository.delete.service.DeletionModule;
 import org.olat.user.UserDataDeletable;
 import org.olat.user.UserManager;
 import org.olat.user.propertyhandlers.UserPropertyHandler;
+import org.springframework.beans.factory.annotation.Autowired;
 
 
 /**
@@ -101,6 +102,9 @@ public class UserDeletionManager extends BasicManager {
 	private boolean managersInitialized = false;
 	private DeletionModule deletionModule;
 	private CoordinatorManager coordinatorManager;
+	
+	@Autowired
+	private BaseSecurity securityManager;
 
 	/**
 	 * [used by spring]
@@ -166,9 +170,7 @@ public class UserDeletionManager extends BasicManager {
 	}
 	
 	private void markSendEmailEvent(Identity identity) {
-		identity = (Identity)DBFactory.getInstance().loadObject(identity);
 		LifeCycleManager.createInstanceFor(identity).markTimestampFor(SEND_DELETE_EMAIL_ACTION);
-		DBFactory.getInstance().updateObject(identity);
 	}
 	
 	/**
@@ -297,7 +299,7 @@ public class UserDeletionManager extends BasicManager {
 		logInfo("deleteUserProperties user=" + identity.getUser());
 		UserManager.getInstance().deleteUserProperties(identity.getUser());
 		// Delete all authentications for certain identity
-		List<Authentication> authentications = BaseSecurityManager.getInstance().getAuthentications(identity);
+		List<Authentication> authentications = securityManager.getAuthentications(identity);
 		for (Iterator<Authentication> iter = authentications.iterator(); iter.hasNext();) {
 			Authentication auth = iter.next();
 			logInfo("deleteAuthentication auth=" + auth);
@@ -306,10 +308,9 @@ public class UserDeletionManager extends BasicManager {
 		}
 		
 		//remove identity from its security groups
-		BaseSecurity secMgr = BaseSecurityManager.getInstance();
-		List<SecurityGroup> securityGroups = BaseSecurityManager.getInstance().getSecurityGroupsForIdentity(identity);
+		List<SecurityGroup> securityGroups = securityManager.getSecurityGroupsForIdentity(identity);
 		for (SecurityGroup secGroup : securityGroups) {
-			secMgr.removeIdentityFromSecurityGroup(identity, secGroup);
+			securityManager.removeIdentityFromSecurityGroup(identity, secGroup);
 			logInfo("Removing user=" + identity + " from security group="  + secGroup.toString());
 		}
 		
@@ -321,47 +322,39 @@ public class UserDeletionManager extends BasicManager {
 			rm.deleteTemporaryKey(tempKey);
 		}		
 		
-		// can be used, if there is once the possibility to delete identities without db-constraints...
-		//if neither email nor login should be kept, REALLY DELETE Identity
-		/*if (!keepUserEmailAfterDeletion & !keepUserLoginAfterDeletion){
-			identity = (Identity)DBFactory.getInstance().loadObject(identity);
-			DBFactory.getInstance().deleteObject(identity.getUser());
-			DBFactory.getInstance().deleteObject(identity);
-		}
-		else { */
-			identity = (Identity)DBFactory.getInstance().loadObject(identity);
-			//keep login-name only -> change email
-			if (!keepUserEmailAfterDeletion){
-				List<UserPropertyHandler> userPropertyHandlers = UserManager.getInstance().getUserPropertyHandlersFor("org.olat.admin.user.UsermanagerUserSearchForm", true);
-				User persistedUser = identity.getUser();
-				String actualProperty;
-				for (UserPropertyHandler userPropertyHandler : userPropertyHandlers) {
-					actualProperty = userPropertyHandler.getName(); 
-					if (actualProperty.equals(UserConstants.EMAIL)){
-						String oldEmail = userPropertyHandler.getUserProperty(persistedUser, null);
-						String newEmail = "";
-						if (StringHelper.containsNonWhitespace(oldEmail)){ 
-							newEmail = getBackupStringWithDate(oldEmail);
-						}
-						logInfo("Update user-property user=" + persistedUser);
-						userPropertyHandler.setUserProperty(persistedUser, newEmail);
+
+		identity = securityManager.loadIdentityByKey(identity.getKey());
+		//keep login-name only -> change email
+		if (!keepUserEmailAfterDeletion){
+			List<UserPropertyHandler> userPropertyHandlers = UserManager.getInstance().getUserPropertyHandlersFor("org.olat.admin.user.UsermanagerUserSearchForm", true);
+			User persistedUser = identity.getUser();
+			String actualProperty;
+			for (UserPropertyHandler userPropertyHandler : userPropertyHandlers) {
+				actualProperty = userPropertyHandler.getName(); 
+				if (actualProperty.equals(UserConstants.EMAIL)){
+					String oldEmail = userPropertyHandler.getUserProperty(persistedUser, null);
+					String newEmail = "";
+					if (StringHelper.containsNonWhitespace(oldEmail)){ 
+						newEmail = getBackupStringWithDate(oldEmail);
 					}
+					logInfo("Update user-property user=" + persistedUser);
+					userPropertyHandler.setUserProperty(persistedUser, newEmail);
 				}
 			}
-			
-			//keep email only -> change login-name
-			if (!keepUserLoginAfterDeletion){
-				identity.setName(newName);
-			}
-			
-			//keep everything, change identity.status to deleted
-			logInfo("Change stater identity=" + identity);
-			identity.setStatus(Identity.STATUS_DELETED);
-			DBFactory.getInstance().updateObject(identity);
-			LifeCycleManager.createInstanceFor(identity).deleteTimestampFor(SEND_DELETE_EMAIL_ACTION);
-			LifeCycleManager.createInstanceFor(identity).markTimestampFor(USER_DELETED_ACTION, createLifeCycleLogDataFor(identity));
-		// } 
+		}
 		
+		//keep email only -> change login-name
+		if (!keepUserLoginAfterDeletion){
+			identity.setName(newName);
+		}
+		
+		//keep everything, change identity.status to deleted
+		logInfo("Change stater identity=" + identity);
+		identity = securityManager.saveIdentityStatus(identity, Identity.STATUS_DELETED);
+		
+		LifeCycleManager.createInstanceFor(identity).deleteTimestampFor(SEND_DELETE_EMAIL_ACTION);
+		LifeCycleManager.createInstanceFor(identity).markTimestampFor(USER_DELETED_ACTION, createLifeCycleLogDataFor(identity));
+
 		// TODO: chg: ev. logAudit at another place
 		logAudit("User-Deletion: Delete all userdata for identity=" + identity);
 	}
@@ -387,24 +380,22 @@ public class UserDeletionManager extends BasicManager {
 	 * Re-activate an identity, lastLogin = now, reset deleteemaildate = null.
 	 * @param identity
 	 */
-	public void setIdentityAsActiv(final Identity anIdentity) {
+	public Identity setIdentityAsActiv(final Identity anIdentity) {
+		final Identity reloadedIdentity = securityManager.setIdentityLastLogin(anIdentity);
+
 		coordinatorManager.getCoordinator().getSyncer().doInSync(OresHelper.createOLATResourceableInstance(anIdentity.getClass(), anIdentity.getKey()) , 
 			new SyncerExecutor(){
 				public void execute() {
 					 //o_clusterOK by:fj : must be fast
-					Identity identity = (Identity)DBFactory.getInstance().loadObject(anIdentity, true);
-					if (isLogDebugEnabled()) logDebug("setIdentityAsActiv beginSingleTransaction identity=" + identity);
-					identity.setLastLogin(new Date());
-					LifeCycleManager lifeCycleManagerForIdenitiy = LifeCycleManager.createInstanceFor(identity);
+					LifeCycleManager lifeCycleManagerForIdenitiy = LifeCycleManager.createInstanceFor(reloadedIdentity);
 					if (lifeCycleManagerForIdenitiy.lookupLifeCycleEntry(SEND_DELETE_EMAIL_ACTION) != null) {
-						logAudit("User-Deletion: Remove from delete-list identity=" + identity);
+						logAudit("User-Deletion: Remove from delete-list identity=" + reloadedIdentity);
 						lifeCycleManagerForIdenitiy.deleteTimestampFor(SEND_DELETE_EMAIL_ACTION);
 					}
-					if (isLogDebugEnabled()) logDebug("setIdentityAsActiv updateObject identity=" + identity);
-					DBFactory.getInstance().updateObject(identity);
-					if (isLogDebugEnabled()) logDebug("setIdentityAsActiv committed identity=" + identity);
 				}
 		});
+		
+		return reloadedIdentity;
 	}
 
 	/**
diff --git a/src/main/java/org/olat/basesecurity/BaseSecurity.java b/src/main/java/org/olat/basesecurity/BaseSecurity.java
index b4b2350d812828d331247c9ee8b4a70361528fb0..dbe4ef76df39da9a1bb715bd28a8a5635e4d2ba9 100644
--- a/src/main/java/org/olat/basesecurity/BaseSecurity.java
+++ b/src/main/java/org/olat/basesecurity/BaseSecurity.java
@@ -573,7 +573,14 @@ public interface BaseSecurity {
 	/** Save an identity
 	 * @param identity  Save this identity
 	 */
-	public void saveIdentityStatus(Identity identity, Integer status);
+	public Identity saveIdentityStatus(Identity identity, Integer status);
+	
+	/**
+	 * Set the date of the last login
+	 * @param identity
+	 * @return
+	 */
+	public Identity setIdentityLastLogin(Identity identity);
 	
 	/**
 	 * Check if identity is visible. Deleted or login-denied users are not visible.
diff --git a/src/main/java/org/olat/basesecurity/BaseSecurityManager.java b/src/main/java/org/olat/basesecurity/BaseSecurityManager.java
index 098ed788f5509b11b460eebf513f5a5fa160ffa1..5c23cae531073f3aa76e14b9106aefe73dfdbcee 100644
--- a/src/main/java/org/olat/basesecurity/BaseSecurityManager.java
+++ b/src/main/java/org/olat/basesecurity/BaseSecurityManager.java
@@ -36,6 +36,7 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.UUID;
 
+import javax.persistence.LockModeType;
 import javax.persistence.TypedQuery;
 
 import org.hibernate.type.StandardBasicTypes;
@@ -69,6 +70,7 @@ import org.olat.resource.OLATResourceManager;
 import org.olat.user.ChangePasswordController;
 import org.olat.user.PersonalSettingsController;
 import org.olat.user.UserManager;
+import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * <h3>Description:</h3>
@@ -86,6 +88,9 @@ public class BaseSecurityManager extends BasicManager implements BaseSecurity {
 	private static String GUEST_USERNAME_PREFIX = "guest_";
 	public static final OLATResourceable IDENTITY_EVENT_CHANNEL = OresHelper.lookupType(Identity.class);
 
+	@Autowired
+	private DB dbInstance;
+	
 	/**
 	 * [used by spring]
 	 */
@@ -331,42 +336,6 @@ public class BaseSecurityManager extends BasicManager implements BaseSecurity {
 				.setParameter("resname", oresName)
 				.getSingleResult();
 		return count.longValue() > 0;
-		
-		
-		
-/*
-		String queryString;
-		if (checkTypeRight) {
-			queryString = 
-				"select count(poi) from" 
-			+ " org.olat.basesecurity.SecurityGroupMembershipImpl as sgmsi,"
-			+ " org.olat.basesecurity.PolicyImpl as poi," 
-			+ " org.olat.resource.OLATResourceImpl as ori"
-			+ " where sgmsi.identity = :identitykey and sgmsi.securityGroup =  poi.securityGroup"
-			+ " and poi.permission = :permission and poi.olatResource = ori"
-			+ " and (ori.resId = :resid or ori.resId = 0) and ori.resName = :resname";
-		} else {
-			queryString = 
-				"select count(poi) from" 
-			+ " org.olat.basesecurity.SecurityGroupMembershipImpl as sgmsi,"
-			+ " org.olat.basesecurity.PolicyImpl as poi," 
-			+ " org.olat.resource.OLATResourceImpl as ori"
-			+ " where sgmsi.identity = :identitykey and sgmsi.securityGroup =  poi.securityGroup"
-			+ " and poi.permission = :permission and poi.olatResource = ori"
-			+ " and (ori.resId = :resid) and ori.resName = :resname";
-		}
-		
-		DBQuery query = DBFactory.getInstance().createQuery(queryString);
-		query.setLong("identitykey", iimpl.getKey());
-		query.setString("permission", permission);		
-		query.setLong("resid", oresid);
-		query.setString("resname", oresName);
-		query.setCacheable(true);
-		List res = query.list();
-		Long cntL = (Long) res.get(0);
-		return (cntL.longValue() > 0); // can be > 1 if identity is in more the one group having
-		// the permission on the olatresourceable
-		*/
 	}
 
 	/**
@@ -893,7 +862,7 @@ public class BaseSecurityManager extends BasicManager implements BaseSecurity {
 	 */
 	public Identity createAndPersistIdentity(String username, User user, String provider, String authusername, String credential) {
 		IdentityImpl iimpl = new IdentityImpl(username, user);
-		DBFactory.getInstance().saveObject(iimpl);
+		dbInstance.getCurrentEntityManager().persist(iimpl);
 		if (provider != null) { 
 			createAndPersistAuthentication(iimpl, provider, authusername, credential);
 		}
@@ -912,9 +881,9 @@ public class BaseSecurityManager extends BasicManager implements BaseSecurity {
 	 * @return Identity
 	 */
 	public Identity createAndPersistIdentityAndUser(String username, User user, String provider, String authusername, String credential) {
-		DBFactory.getInstance().saveObject(user);
+		dbInstance.getCurrentEntityManager().persist(user);
 		IdentityImpl iimpl = new IdentityImpl(username, user);
-		DBFactory.getInstance().saveObject(iimpl);
+		dbInstance.getCurrentEntityManager().persist(iimpl);
 		if (provider != null) { 
 			createAndPersistAuthentication(iimpl, provider, authusername, credential);
 		}
@@ -1260,7 +1229,7 @@ public class BaseSecurityManager extends BasicManager implements BaseSecurity {
 	 */
 	public Authentication createAndPersistAuthentication(Identity ident, String provider, String authUserName, String credential) {
 		AuthenticationImpl authImpl = new AuthenticationImpl(ident, provider, authUserName, credential);
-		DBFactory.getInstance().saveObject(authImpl);
+		dbInstance.getCurrentEntityManager().persist(authImpl);
 		return authImpl;
 	}
 
@@ -1737,11 +1706,36 @@ public class BaseSecurityManager extends BasicManager implements BaseSecurity {
 	/**
 	 * @see org.olat.basesecurity.Manager#saveIdentityStatus(org.olat.core.id.Identity)
 	 */
-	public void saveIdentityStatus(Identity identity, Integer status) {
-		//FIXME: cg: would be nice if the updated identity is returned. no loading required afterwards.
-		identity = (Identity)DBFactory.getInstance().loadObject(identity.getClass(), identity.getKey());
-		identity.setStatus(status);
-		DBFactory.getInstance().updateObject(identity);
+	@Override
+	public Identity saveIdentityStatus(Identity identity, Integer status) {
+		Identity reloadedIdentity = loadForUpdate(identity.getKey()); 
+		reloadedIdentity.setStatus(status);
+		return dbInstance.getCurrentEntityManager().merge(reloadedIdentity);
+	}
+	
+	@Override
+	public Identity setIdentityLastLogin(Identity identity) {
+		Identity reloadedIdentity = loadForUpdate(identity.getKey()); 
+		reloadedIdentity.setLastLogin(new Date());
+		return dbInstance.getCurrentEntityManager().merge(reloadedIdentity);
+	}
+	
+	private IdentityImpl loadForUpdate(Long identityKey) {
+		StringBuilder sb = new StringBuilder();
+		sb.append("select id from ").append(IdentityImpl.class.getName()).append(" as id")
+		  .append(" inner join fetch id.user user ")
+		  .append(" where id.key=:identityKey");
+		
+		List<IdentityImpl> identity = dbInstance.getCurrentEntityManager()
+	  		.createQuery(sb.toString(), IdentityImpl.class)
+	  		.setParameter("identityKey", identityKey)
+	  		.setLockMode(LockModeType.PESSIMISTIC_WRITE)
+	  		.getResultList();
+		
+		if(identity.isEmpty()) {
+			return null;
+		}
+		return identity.get(0);
 	}
 
 	@Override
@@ -1774,15 +1768,12 @@ public class BaseSecurityManager extends BasicManager implements BaseSecurity {
 			guestIdentity = createAndPersistIdentityAndUser(guestUsername, guestUser, null, null, null);
 			SecurityGroup anonymousGroup = findSecurityGroupByName(Constants.GROUP_ANONYMOUS);
 			addIdentityToSecurityGroup(guestIdentity, anonymousGroup);
-			return guestIdentity;
-		} else {
-			// Check if guest name has been updated in the i18n tool
-			if ( ! guestIdentity.getUser().getProperty(UserConstants.FIRSTNAME, locale).equals(trans.translate("user.guest"))) {
-				guestIdentity.getUser().setProperty(UserConstants.FIRSTNAME, trans.translate("user.guest"));
-				DBFactory.getInstance().updateObject(guestIdentity);
-			}
-			return guestIdentity;
+		} else if (!guestIdentity.getUser().getProperty(UserConstants.FIRSTNAME, locale).equals(trans.translate("user.guest"))) {
+			//Check if guest name has been updated in the i18n tool
+			guestIdentity.getUser().setProperty(UserConstants.FIRSTNAME, trans.translate("user.guest"));
+			guestIdentity = dbInstance.getCurrentEntityManager().merge(guestIdentity);
 		}
+		return guestIdentity;
 	}
 
 
diff --git a/src/main/java/org/olat/core/util/i18n/ui/I18nConfigSubNewLangController.java b/src/main/java/org/olat/core/util/i18n/ui/I18nConfigSubNewLangController.java
index 2ffee1c510523d72f82b09bccddcfed51c2d5a60..e937514971f25e9c38c7fda9968775b96e1b04ad 100644
--- a/src/main/java/org/olat/core/util/i18n/ui/I18nConfigSubNewLangController.java
+++ b/src/main/java/org/olat/core/util/i18n/ui/I18nConfigSubNewLangController.java
@@ -28,8 +28,6 @@ import java.util.HashSet;
 import java.util.Locale;
 import java.util.Set;
 
-import org.olat.core.commons.persistence.DB;
-import org.olat.core.commons.persistence.DBFactory;
 import org.olat.core.dispatcher.DispatcherAction;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.form.flexible.FormItem;
@@ -52,6 +50,7 @@ import org.olat.core.util.StringHelper;
 import org.olat.core.util.Util;
 import org.olat.core.util.i18n.I18nManager;
 import org.olat.core.util.i18n.I18nModule;
+import org.olat.user.UserManager;
 
 /**
  * Description:<br>
@@ -213,10 +212,9 @@ class I18nConfigSubNewLangController extends FormBasicController {
 		User currUser = ureq.getIdentity().getUser();
 		// direct DB calls have to be made here because the 
 		// user manager is not available in the core
-		DB db = DBFactory.getInstance();
-		currUser = (User) db.loadObject(currUser);
+		currUser = UserManager.getInstance().loadUserByKey(currUser.getKey());
 		currUser.getPreferences().setLanguage(localeKey);
-		db.saveObject(currUser);
+		UserManager.getInstance().updateUser(currUser);
 		DispatcherAction.redirectToDefaultDispatcher(ureq.getHttpResp());
 	}
 
diff --git a/src/main/java/org/olat/login/auth/AuthenticationController.java b/src/main/java/org/olat/login/auth/AuthenticationController.java
index 5eeab51bfb7cc862edf361b89dac760db2b78410..a1a8603ad0de1ea24fb9bc3bd7f0291fbfe4d94f 100644
--- a/src/main/java/org/olat/login/auth/AuthenticationController.java
+++ b/src/main/java/org/olat/login/auth/AuthenticationController.java
@@ -56,7 +56,7 @@ public abstract class AuthenticationController extends BasicController {
 	 * @param identity
 	 */
 	public void authenticated(UserRequest ureq, Identity identity) {
-		UserDeletionManager.getInstance().setIdentityAsActiv(identity);
+		identity = UserDeletionManager.getInstance().setIdentityAsActiv(identity);
 		fireEvent(ureq, new AuthenticationEvent(identity));
 	}
 	
diff --git a/src/main/java/org/olat/user/UserManager.java b/src/main/java/org/olat/user/UserManager.java
index a4559252b0e3ba6ad20c0c3dd418ede962a6fa29..8d6876f4e5e6deadc55d7e5b420b5f19b776e0a7 100644
--- a/src/main/java/org/olat/user/UserManager.java
+++ b/src/main/java/org/olat/user/UserManager.java
@@ -139,11 +139,6 @@ public abstract class UserManager extends BasicManager {
 	 */
 	public abstract void updateUser(User usr);
 
-	/**
-	 * @param user The user to be saved
-	 */
-	public abstract void saveUser(User user);
-
 	/**
 	 * Updates the user object for a given identity
 	 * 
diff --git a/src/main/java/org/olat/user/UserManagerImpl.java b/src/main/java/org/olat/user/UserManagerImpl.java
index 9f369ff6ddcd066c94f781c1e5ab6199302d2380..c0351b4d22eca001b319b2ebe25fde084a5a1aa4 100644
--- a/src/main/java/org/olat/user/UserManagerImpl.java
+++ b/src/main/java/org/olat/user/UserManagerImpl.java
@@ -42,6 +42,7 @@ import org.olat.core.util.mail.MailHelper;
 import org.olat.properties.Property;
 import org.olat.properties.PropertyManager;
 import org.olat.user.propertyhandlers.UserPropertyHandler;
+import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * <h3>Description:</h3>
@@ -57,6 +58,9 @@ public class UserManagerImpl extends UserManager {
   private static final String CHARSET = "charset";
   private UserDisplayNameCreator userDisplayNameCreator;
   
+  @Autowired
+  private DB dbInstance;
+  
 	/**
 	 * Use UserManager.getInstance(), this is a spring factory method to load the
 	 * correct user manager
@@ -92,7 +96,7 @@ public class UserManagerImpl extends UserManager {
 	 */
 	public User createAndPersistUser(String firstName, String lastName, String email) {
 		User user = new UserImpl(firstName, lastName, email);
-		DBFactory.getInstance().saveObject(user);
+		dbInstance.getCurrentEntityManager().persist(user);
 		return user;
 	}
 	
@@ -266,20 +270,13 @@ public class UserManagerImpl extends UserManager {
 	public void updateUser(User usr) {
 		if (usr == null) throw new AssertException("User object is null!");
 		DBFactory.getInstance().updateObject(usr);
-		}
-
-	/**
-	 * @see org.olat.user.UserManager#saveUser(org.olat.core.id.User)
-	 */
-	public void saveUser(User user) {
-		DBFactory.getInstance().saveObject(user);
 	}
 
 	/**
 	 * @see org.olat.user.UserManager#updateUserFromIdentity(org.olat.core.id.Identity)
 	 */
 	public boolean updateUserFromIdentity(Identity identity) {
-		this.updateUser(identity.getUser());
+		updateUser(identity.getUser());
 		return true;
 	}
 
diff --git a/src/test/java/org/olat/basesecurity/BaseSecurityTest.java b/src/test/java/org/olat/basesecurity/BaseSecurityTest.java
index 1509406a3ac4e3d644f4f3585e325db0a354c8c9..a40b8aee7b765e0138d7199eb4f5321703fba50e 100644
--- a/src/test/java/org/olat/basesecurity/BaseSecurityTest.java
+++ b/src/test/java/org/olat/basesecurity/BaseSecurityTest.java
@@ -73,7 +73,7 @@ public class BaseSecurityTest extends OlatTestCase {
 			Identity ident = getOrCreateIdentity("anIdentity");
 			Identity ident2 = getOrCreateTestIdentity("extremegroovy");
 			Identity deletedIdent = getOrCreateTestIdentity("delete");
-			baseSecurityManager.saveIdentityStatus(deletedIdent, Identity.STATUS_DELETED);
+			deletedIdent = baseSecurityManager.saveIdentityStatus(deletedIdent, Identity.STATUS_DELETED);
 
 			SecurityGroup admins = baseSecurityManager.findSecurityGroupByName(Constants.GROUP_ADMIN);
 			baseSecurityManager.addIdentityToSecurityGroup(deletedIdent, admins);
@@ -179,8 +179,8 @@ public class BaseSecurityTest extends OlatTestCase {
 			Identity ident2 = getOrCreateTestIdentity("extremegroovy");
 
 			// add some stats
-			baseSecurityManager.saveIdentityStatus(ident, Identity.STATUS_ACTIV);
-			baseSecurityManager.saveIdentityStatus(ident2, Identity.STATUS_ACTIV);
+			ident = baseSecurityManager.saveIdentityStatus(ident, Identity.STATUS_ACTIV);
+			ident2 = baseSecurityManager.saveIdentityStatus(ident2, Identity.STATUS_ACTIV);
 			
 			// check on those four default groups
 			SecurityGroup admins, authors, anonymous;