diff --git a/src/main/java/org/olat/core/commons/persistence/DB.java b/src/main/java/org/olat/core/commons/persistence/DB.java
index 3e69bd5b28c91a8082df917a4314f058a6d0046f..0798c848fb0847d32b8732140d7937f897fd3912 100644
--- a/src/main/java/org/olat/core/commons/persistence/DB.java
+++ b/src/main/java/org/olat/core/commons/persistence/DB.java
@@ -111,7 +111,7 @@ public interface DB {
 	 * @param key
 	 * @return Object, if any found. or null otherwise
 	 */
-	public Object findObject(Class theClass, Long key);
+	public <U> U findObject(Class<U> theClass, Long key);
 
 	/**
 	 * Find objects based on query
@@ -128,7 +128,7 @@ public interface DB {
 	 * @param key
 	 * @return Object.
 	 */
-	public Object loadObject(Class<?> theClass, Long key);
+	public <U> U loadObject(Class<U> theClass, Long key);
 
 	/**
 	 * Save an object.
diff --git a/src/main/java/org/olat/core/commons/persistence/DBImpl.java b/src/main/java/org/olat/core/commons/persistence/DBImpl.java
index 7e1b53ffea6a1ef0f164a87bc8cace92798ad6f4..cf64d687ba56f076d0b0797a69dd2d7981331e5b 100644
--- a/src/main/java/org/olat/core/commons/persistence/DBImpl.java
+++ b/src/main/java/org/olat/core/commons/persistence/DBImpl.java
@@ -60,8 +60,6 @@ import org.olat.core.logging.DBRuntimeException;
 import org.olat.core.logging.LogDelegator;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
-import org.olat.group.BusinessGroup;
-import org.olat.group.BusinessGroupImpl;
 import org.olat.testutils.codepoints.server.Codepoint;
 import org.springframework.beans.factory.NoSuchBeanDefinitionException;
 import org.springframework.jmx.support.MBeanServerFactoryBean;
@@ -525,9 +523,9 @@ public class DBImpl extends LogDelegator implements DB, Destroyable {
 	 * @param key
 	 * @return Object, if any found. Null, if non exist. 
 	 */
-	public Object findObject(Class theClass, Long key) {
+	public <U> U findObject(Class<U> theClass, Long key) {
 		beginTransaction(key);
-		return getDBManager().findObject(theClass, key);
+		return getCurrentEntityManager().find(theClass, key);
 	}
 	
 	/**
@@ -537,7 +535,7 @@ public class DBImpl extends LogDelegator implements DB, Destroyable {
 	 * @param key
 	 * @return Object.
 	 */
-	public Object loadObject(Class theClass, Long key) {
+	public <U> U loadObject(Class<U> theClass, Long key) {
 		beginTransaction(key);
 		return getDBManager().loadObject(getTransaction(), theClass, key);
 	}
@@ -561,16 +559,6 @@ public class DBImpl extends LogDelegator implements DB, Destroyable {
 		beginTransaction(object);
 		getDBManager().updateObject(getTransaction(), object);
 	}
-	
-	public void updateObject(BusinessGroup object) {
-		beginTransaction(object);
-		getDBManager().updateObject(getTransaction(), object);
-	}
-	
-	public void updateObject(BusinessGroupImpl object) {
-		beginTransaction(object);
-		getDBManager().updateObject(getTransaction(), object);
-	}
 
 	/**
 	 * Get any errors from a previous DB call.
diff --git a/src/main/java/org/olat/core/commons/persistence/DBManager.java b/src/main/java/org/olat/core/commons/persistence/DBManager.java
index 086298f2b6ab0100409b3cf3f97525daec81039d..5fd88c2058c05207b54dab2282b3da52e51e454b 100644
--- a/src/main/java/org/olat/core/commons/persistence/DBManager.java
+++ b/src/main/java/org/olat/core/commons/persistence/DBManager.java
@@ -139,10 +139,10 @@ class DBManager extends BasicManager {
 	 * @param theClass The class for the object to be loaded
 	 * @param pK The primary key for the object
 	 */	
-	Object loadObject(DBTransaction trx, Class theClass, Long pK) {
-		Object o = null;
+	<U> U loadObject(DBTransaction trx, Class<U> theClass, Long pK) {
+		U o = null;
 		try {
-			o = getSession().load(theClass, pK);
+			o = getEntityManager().find(theClass, pK);
 			if (isLogDebugEnabled()) {
 				logDebug("load (res " +(o == null? "null": "ok")+")(trans "+trx.hashCode()+") key "+pK+" class "+theClass.getName());	
 			}
@@ -258,9 +258,13 @@ class DBManager extends BasicManager {
 	Session getSession() {
 		return getDbSession().getHibernateSession();
 	}
+	
+	EntityManager getEntityManager() {
+		return getDbSession().getEntityManager();
+	}
 
 	DBTransaction beginTransaction() {
-		return this.getDbSession().beginDbTransaction();
+		return getDbSession().beginDbTransaction();
 	}
 	
 	/**
@@ -271,7 +275,7 @@ class DBManager extends BasicManager {
 		Query q = null;
 		DBQuery dbq = null;
 		try {
-			q = this.getSession().createQuery(query);
+			q = getSession().createQuery(query);
 			dbq = new DBQueryImpl(q);
 		} catch (HibernateException he) {
 			setError(he);
diff --git a/src/main/java/org/olat/repository/RepositoryManager.java b/src/main/java/org/olat/repository/RepositoryManager.java
index d37afc14f4cbf245a338af1facc322993fb52bf3..f0d1ba57b1d50d721979cf36fd68bd3add8ba342 100644
--- a/src/main/java/org/olat/repository/RepositoryManager.java
+++ b/src/main/java/org/olat/repository/RepositoryManager.java
@@ -380,7 +380,7 @@ public class RepositoryManager extends BasicManager {
 	 */
 	public RepositoryEntry lookupRepositoryEntry(Long key) {
 		if (key == null) return null;
-		return (RepositoryEntry)DBFactory.getInstance().findObject(RepositoryEntry.class, key);
+		return dbInstance.getCurrentEntityManager().find(RepositoryEntry.class, key);
 	}
 	
 	/**