diff --git a/src/main/java/org/olat/admin/quota/QuotaManagerImpl.java b/src/main/java/org/olat/admin/quota/QuotaManagerImpl.java
index 1077de8f0f304552e5715ca5bffd762af5bcc862..4650ac70331b9996057f6b6f6fda2427a3acbdaf 100644
--- a/src/main/java/org/olat/admin/quota/QuotaManagerImpl.java
+++ b/src/main/java/org/olat/admin/quota/QuotaManagerImpl.java
@@ -96,7 +96,7 @@ public class QuotaManagerImpl extends QuotaManager {
 	public void init() {
 		quotaResource = resourceManager.findOrPersistResourceable(OresHelper.lookupType(Quota.class));
 		initDefaultQuotas(); // initialize default quotas
-		DBFactory.getInstance(false).intermediateCommit();
+		DBFactory.getInstance().intermediateCommit();
 		log.info("Successfully initialized Quota Manager");
 	}
 
diff --git a/src/main/java/org/olat/admin/sysinfo/HibernateStatisticsController.java b/src/main/java/org/olat/admin/sysinfo/HibernateStatisticsController.java
index 5703801fa77728cbd0030bde221f919c9dc20660..7f38b5f08fdefe9ece45f5353d77e31164b2a338 100644
--- a/src/main/java/org/olat/admin/sysinfo/HibernateStatisticsController.java
+++ b/src/main/java/org/olat/admin/sysinfo/HibernateStatisticsController.java
@@ -19,7 +19,8 @@
  */
 package org.olat.admin.sysinfo;
 
-import org.olat.core.commons.persistence.DBFactory;
+import org.hibernate.stat.Statistics;
+import org.olat.core.commons.persistence.DB;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.link.Link;
@@ -28,6 +29,7 @@ import org.olat.core.gui.components.velocity.VelocityContainer;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
+import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * 
@@ -40,6 +42,9 @@ public class HibernateStatisticsController extends BasicController {
 	private Link disableLink;
 	private Link clearLink;
 	private VelocityContainer mainVC;
+	
+	@Autowired
+	private DB dbInstance;
 
 	public HibernateStatisticsController(UserRequest ureq, WindowControl wControl) {
 		super(ureq, wControl);
@@ -54,8 +59,9 @@ public class HibernateStatisticsController extends BasicController {
 	}
 	
 	public void loadModel() {
-		mainVC.contextPut("isStatisticsEnabled", DBFactory.getInstance(false).getStatistics().isStatisticsEnabled());
-		mainVC.contextPut("hibernateStatistics", DBFactory.getInstance(false).getStatistics());
+		Statistics statistics = dbInstance.getStatistics();
+		mainVC.contextPut("isStatisticsEnabled", statistics.isStatisticsEnabled());
+		mainVC.contextPut("hibernateStatistics", statistics);
 	}
 	
 	@Override
@@ -65,18 +71,19 @@ public class HibernateStatisticsController extends BasicController {
 
 	@Override
 	protected void event(UserRequest ureq, Component source, Event event) {
+		Statistics statistics = dbInstance.getStatistics();
 		if (source == enableLink){
-			DBFactory.getInstance(false).getStatistics().setStatisticsEnabled(true);
-			mainVC.contextPut("isStatisticsEnabled", DBFactory.getInstance(false).getStatistics().isStatisticsEnabled());
+			statistics.setStatisticsEnabled(true);
+			mainVC.contextPut("isStatisticsEnabled",statistics.isStatisticsEnabled());
 			getWindowControl().setInfo("Hibernate statistics enabled.");
 			loadModel();
 		} else if (source == disableLink){
-			DBFactory.getInstance(false).getStatistics().setStatisticsEnabled(false);
-			mainVC.contextPut("isStatisticsEnabled", DBFactory.getInstance(false).getStatistics().isStatisticsEnabled());
+			statistics.setStatisticsEnabled(false);
+			mainVC.contextPut("isStatisticsEnabled", statistics.isStatisticsEnabled());
 			getWindowControl().setInfo("Hibernate statistics disabled.");
 			loadModel();
 		} else if (source == clearLink){
-			DBFactory.getInstance(false).getStatistics().clear();
+			statistics.clear();
 			getWindowControl().setInfo("Hibernate statistics clear done.");
 			loadModel();
 		}
diff --git a/src/main/java/org/olat/commons/servlets/RSSServlet.java b/src/main/java/org/olat/commons/servlets/RSSServlet.java
index f1b0a4a6397d656da998e14a7e7aa117d58a29b1..ba93d88d7b737962def168e082c48a88c9c6e543 100644
--- a/src/main/java/org/olat/commons/servlets/RSSServlet.java
+++ b/src/main/java/org/olat/commons/servlets/RSSServlet.java
@@ -150,7 +150,7 @@ public class RSSServlet extends HttpServlet {
 			DispatcherModule.sendNotFound("none", response);
 		} finally {
 			IOUtils.closeQuietly(writer);
-			DBFactory.getInstance(false).commitAndCloseSession();
+			DBFactory.getInstance().commitAndCloseSession();
 		}
 	}
 
diff --git a/src/main/java/org/olat/core/commons/persistence/DBFactory.java b/src/main/java/org/olat/core/commons/persistence/DBFactory.java
index 98cd414b808773f5c8e557c1ec615bf06bf8f2d1..10ca638baa9ba6a6c92d5eec2f78ddb0e17187f2 100644
--- a/src/main/java/org/olat/core/commons/persistence/DBFactory.java
+++ b/src/main/java/org/olat/core/commons/persistence/DBFactory.java
@@ -39,14 +39,4 @@ public class DBFactory {
 	public static DB getInstance() {
 		return DBImpl.getInstance();
 	}
-
-    public static DB getInstance(boolean initialize) {
-        return DBImpl.getInstance();
-    }
-
-    public static DB getInstanceForClosing() {
-      return DBImpl.getInstance();
-  }
-
-
 }
diff --git a/src/main/java/org/olat/core/logging/activity/UserActivityLoggerImpl.java b/src/main/java/org/olat/core/logging/activity/UserActivityLoggerImpl.java
index 1fe3a82f29e6669d7ed92f68633a59349a0de190..3b5695aedf44c629b8ad6fabc42f2b333b797928 100644
--- a/src/main/java/org/olat/core/logging/activity/UserActivityLoggerImpl.java
+++ b/src/main/java/org/olat/core/logging/activity/UserActivityLoggerImpl.java
@@ -833,7 +833,7 @@ public class UserActivityLoggerImpl implements IUserActivityLogger {
 		logObj.setUserProperties(tmpUserProperties);
 		
 		// and store it
-		DB db = DBFactory.getInstanceForClosing();
+		DB db = DBFactory.getInstance();
 		if (db!=null && db.isError()) {
 			// then we would run into an ERROR when we'd do more with this DB
 			// hence we just issue a log.info here with the details
diff --git a/src/main/java/org/olat/course/CourseFactory.java b/src/main/java/org/olat/course/CourseFactory.java
index b093e15444435507648cd695e5d5d281e434bac5..f5d967e4756c53d182775e42b4f55f1654152295 100644
--- a/src/main/java/org/olat/course/CourseFactory.java
+++ b/src/main/java/org/olat/course/CourseFactory.java
@@ -442,7 +442,7 @@ public class CourseFactory extends BasicManager {
 		File fTargetCourseBasePath = targetCourse.getCourseBaseContainer().getBasefile();
 		
 		//close connection before file copy
-		DBFactory.getInstance(false).commitAndCloseSession();
+		DBFactory.getInstance().commitAndCloseSession();
 		
 		synchronized (sourceCourse) { // o_clusterNOK - cannot be solved with doInSync since could take too long (leads to error: "Lock wait timeout exceeded")
 			// copy configuration
@@ -474,7 +474,7 @@ public class CourseFactory extends BasicManager {
 			for (Reference ref: refs) {
 				referenceManager.addReference(targetCourse, ref.getTarget(), ref.getUserdata());
 				if(count % 20 == 0) {
-					DBFactory.getInstance(false).intermediateCommit();
+					DBFactory.getInstance().intermediateCommit();
 				}
 			}
 			
@@ -723,7 +723,7 @@ public class CourseFactory extends BasicManager {
 		// cause db connection timeout to be triggered
 		//@TODO transactions/backgroundjob:
 		// rework when backgroundjob infrastructure exists
-		DBFactory.getInstance(false).intermediateCommit();
+		DBFactory.getInstance().intermediateCommit();
 		AsyncExportManager.getInstance().asyncArchiveCourseLogFiles(archiveOnBehalfOf, new Runnable() {
 			public void run() {
 				// that's fine, I dont need to do anything here
diff --git a/src/main/java/org/olat/course/CourseModule.java b/src/main/java/org/olat/course/CourseModule.java
index 655082193e5a44683db7651374c1253f865a3807..1bcb4acee2c6dae66fdd41c746f4cc45cadb6625 100644
--- a/src/main/java/org/olat/course/CourseModule.java
+++ b/src/main/java/org/olat/course/CourseModule.java
@@ -109,7 +109,7 @@ public class CourseModule extends AbstractOLATModule {
 			deployCoursesFromCourseExportFiles();
 		}
 		//also in startup event processing intermediateCommit
-		DBFactory.getInstance(false).intermediateCommit();
+		DBFactory.getInstance().intermediateCommit();
 	}
 
 	
@@ -140,14 +140,7 @@ public class CourseModule extends AbstractOLATModule {
 	 */
 	@Override
 	public void init() {
-		// skip all the expensive course demo setup and deployment when we are in junit mode.
-		if (Settings.isJUnitTest()) return;
-		
-		logInfo("Initializing the OpenOLAT course system");		
-		
-		// Cleanup, otherwise this subjects will have problems in normal OLAT
-		// operation
-		DBFactory.getInstance(false).intermediateCommit();		
+		//
 	}
 
 	private void deployCoursesFromCourseExportFiles( ) {
diff --git a/src/main/java/org/olat/course/assessment/AssessmentMainController.java b/src/main/java/org/olat/course/assessment/AssessmentMainController.java
index 2c91ee1e4a3636c2703c4a51bb1d738fd77920ae..1389a38f11905aaf344544eb30f103cee402add3 100644
--- a/src/main/java/org/olat/course/assessment/AssessmentMainController.java
+++ b/src/main/java/org/olat/course/assessment/AssessmentMainController.java
@@ -1408,11 +1408,11 @@ public class AssessmentMainController extends MainLayoutBasicController implemen
 							+ "ms");
 				}
 				// finished in this thread, close database session of this thread!
-				DBFactory.getInstance(false).commitAndCloseSession();
+				DBFactory.getInstance().commitAndCloseSession();
 				success = true;
 			} finally {
 				if (!success) {
-					DBFactory.getInstance(false).rollbackAndCloseSession();
+					DBFactory.getInstance().rollbackAndCloseSession();
 				}
 			}
 		}
diff --git a/src/main/java/org/olat/course/assessment/UpdateEfficiencyStatementsWorker.java b/src/main/java/org/olat/course/assessment/UpdateEfficiencyStatementsWorker.java
index feff25fbf0fd879bb34cb6527617893874425525..e96eacc631176a7f012f13ea8e8ad24252aef9f3 100644
--- a/src/main/java/org/olat/course/assessment/UpdateEfficiencyStatementsWorker.java
+++ b/src/main/java/org/olat/course/assessment/UpdateEfficiencyStatementsWorker.java
@@ -66,7 +66,7 @@ public class UpdateEfficiencyStatementsWorker implements Runnable {
 			List<Identity> identities = EfficiencyStatementManager.getInstance().findIdentitiesWithEfficiencyStatements(re.getKey());
 			esm.updateEfficiencyStatements(ores, identities);
 			// close db session in this thread
-			DBFactory.getInstance(false).commitAndCloseSession();
+			DBFactory.getInstance().commitAndCloseSession();
 			success = true;
 			
 			EfficiencyStatementEvent finishedEvent = new EfficiencyStatementEvent(EfficiencyStatementEvent.CMD_FINISHED, ores.getResourceableId());
@@ -76,7 +76,7 @@ public class UpdateEfficiencyStatementsWorker implements Runnable {
 		} finally {
 			// close db session in this thread
 			if (!success) {
-				DBFactory.getInstance(false).rollbackAndCloseSession();
+				DBFactory.getInstance().rollbackAndCloseSession();
 			}
 		}
 	}
diff --git a/src/main/java/org/olat/modules/dialog/DialogElement.java b/src/main/java/org/olat/modules/dialog/DialogElement.java
index 53a053d9c83103c8b8ee3fa855c0b36e12e91098..96fe65da58913977df379fd1d72d77d60db1a114 100644
--- a/src/main/java/org/olat/modules/dialog/DialogElement.java
+++ b/src/main/java/org/olat/modules/dialog/DialogElement.java
@@ -78,10 +78,10 @@ public class DialogElement {
 		} catch (NumberFormatException nEx) {
 			return author;
 		} catch (ObjectNotFoundException oEx) {
-			DBFactory.getInstanceForClosing().rollbackAndCloseSession();
+			DBFactory.getInstance().rollbackAndCloseSession();
 			return author;
 		} catch (Throwable th) {
-			DBFactory.getInstanceForClosing().rollbackAndCloseSession();
+			DBFactory.getInstance().rollbackAndCloseSession();
 			return author;
 		}
 	}
diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/paypal/PaypalIPNFilter.java b/src/main/java/org/olat/resource/accesscontrol/provider/paypal/PaypalIPNFilter.java
index 4b1b0700c5e50f1efb34dd1cb9a68072c3575700..1d2bbc241c9eec64423fe295f5afac3337f74f6c 100644
--- a/src/main/java/org/olat/resource/accesscontrol/provider/paypal/PaypalIPNFilter.java
+++ b/src/main/java/org/olat/resource/accesscontrol/provider/paypal/PaypalIPNFilter.java
@@ -75,7 +75,7 @@ public class PaypalIPNFilter implements Filter {
 			//we must log all errors, it's critical for this part of the payment
 			log.error("Paypal IPN unexpected error", t);
 		} finally {
-			DBFactory.getInstanceForClosing().closeSession();
+			DBFactory.getInstance().closeSession();
 		}
 	}
 
diff --git a/src/main/java/org/olat/search/service/indexer/group/GroupIndexer.java b/src/main/java/org/olat/search/service/indexer/group/GroupIndexer.java
index efe7ba3203e3b1c1d8861bded9f22448793fb695..752bdedd116c4df4d5eaa77fb93dc2c28e772dce 100644
--- a/src/main/java/org/olat/search/service/indexer/group/GroupIndexer.java
+++ b/src/main/java/org/olat/search/service/indexer/group/GroupIndexer.java
@@ -89,10 +89,10 @@ public class GroupIndexer extends AbstractHierarchicalIndexer {
 			  super.doIndex(searchResourceContext, businessGroup, indexWriter);
 			} catch(Exception ex) {
 				logError("Exception indexing group=" + businessGroup, ex);
-				DBFactory.getInstance(false).rollbackAndCloseSession();
+				DBFactory.getInstance().rollbackAndCloseSession();
 			} catch (Error err) {
 				logError("Error indexing group=" + businessGroup, err);
-				DBFactory.getInstance(false).rollbackAndCloseSession();
+				DBFactory.getInstance().rollbackAndCloseSession();
 			}
 	  }
 		long indexTime = System.currentTimeMillis() - startTime;
diff --git a/src/main/java/org/olat/search/service/indexer/identity/IdentityIndexer.java b/src/main/java/org/olat/search/service/indexer/identity/IdentityIndexer.java
index 6349ddc886cf52da1bc8e61f4032e98ae49a472d..259a99e783b621a933c47c64551304b00ced0365 100644
--- a/src/main/java/org/olat/search/service/indexer/identity/IdentityIndexer.java
+++ b/src/main/java/org/olat/search/service/indexer/identity/IdentityIndexer.java
@@ -85,7 +85,7 @@ public class IdentityIndexer extends AbstractHierarchicalIndexer {
 				counter++;
 			} catch (Exception ex) {
 				logWarn("Exception while indexing identity::" + identityKey + ". Skipping this user, try next one.", ex);
-				DBFactory.getInstance(false).rollbackAndCloseSession();
+				DBFactory.getInstance().rollbackAndCloseSession();
 			}
 		}
 		if (isLogDebugEnabled()) logDebug("IdentityIndexer finished with counter::" + counter);
diff --git a/src/main/java/org/olat/upgrade/UpgradeManagerImpl.java b/src/main/java/org/olat/upgrade/UpgradeManagerImpl.java
index c4641b6cbd8889cd243e178e67e6041d1e71d53d..7485c4ab0d3d53167e2891f64a8c87ec56a7c9af 100644
--- a/src/main/java/org/olat/upgrade/UpgradeManagerImpl.java
+++ b/src/main/java/org/olat/upgrade/UpgradeManagerImpl.java
@@ -78,10 +78,10 @@ public class UpgradeManagerImpl extends UpgradeManager {
 				if (upgrade.doPostSystemInitUpgrade(this))
 					logAudit("Successfully installed PostSystemInitUpgrade::" + upgrade.getVersion());
 				//just in case a doPostSystemInitUpgrade did forget it.
-				DBFactory.getInstance(false).commitAndCloseSession();
+				DBFactory.getInstance().commitAndCloseSession();
 			}
 		} catch (Throwable e) {
-			DBFactory.getInstance(false).rollbackAndCloseSession();
+			DBFactory.getInstance().rollbackAndCloseSession();
 			logWarn("Error upgrading PostSystemInitUpgrade::" + upgrade.getVersion(), e);
 			abort(e);
 		}