diff --git a/src/main/java/org/olat/core/commons/modules/bc/FolderRunController.java b/src/main/java/org/olat/core/commons/modules/bc/FolderRunController.java
index ae68059814243b09a184c19d0289b26fdaa25756..8389485e6b748216eb35e55c8ab14f11a01d22da 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/FolderRunController.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/FolderRunController.java
@@ -565,6 +565,13 @@ public class FolderRunController extends BasicController implements Activateable
 			}
 		}
 	}
+	
+	public String getCurrentContainerPath() {
+		if(folderComponent != null) {
+			return folderComponent.getCurrentContainerPath();
+		}
+		return null;
+	}
 
 	public void activatePath(UserRequest ureq, String path) {
 		if(folderCommandController != null) {
diff --git a/src/main/java/org/olat/course/nodes/pf/ui/PFParticipantController.java b/src/main/java/org/olat/course/nodes/pf/ui/PFParticipantController.java
index 1927cc95b84aaa131e8bffa02b124a7b0344289f..f30c68108d556b1da6f600b55334e4b1d41c1a72 100644
--- a/src/main/java/org/olat/course/nodes/pf/ui/PFParticipantController.java
+++ b/src/main/java/org/olat/course/nodes/pf/ui/PFParticipantController.java
@@ -26,6 +26,7 @@ import org.olat.core.commons.services.notifications.ui.ContextualSubscriptionCon
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.velocity.VelocityContainer;
+import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
@@ -50,16 +51,27 @@ public class PFParticipantController extends BasicController {
 	private FolderRunController folderRunController;
 	private ContextualSubscriptionController contextualSubscriptionCtr;
 	
+	private final PFView pfView;
+	private final boolean isCoach;
+	private final boolean readOnly;
+	private final PFCourseNode pfNode;
+	private final CourseEnvironment courseEnv;
+	private final Identity assessedIdentity;
+
 	@Autowired
 	private PFManager pfManager;
 
-	@SuppressWarnings("incomplete-switch")
 	public PFParticipantController(UserRequest ureq, WindowControl wControl, PFCourseNode pfNode,
-			UserCourseEnvironment userCourseEnv, Identity identity, boolean isCoach, boolean readOnly) {
+			UserCourseEnvironment userCourseEnv, Identity assessedIdentity, boolean isCoach, boolean readOnly) {
+
 		super(ureq, wControl);	
 		mainVC = createVelocityContainer("participant");
 		
-		CourseEnvironment courseEnv = userCourseEnv.getCourseEnvironment();
+		this.pfNode = pfNode;
+		this.isCoach = isCoach;
+		this.assessedIdentity = assessedIdentity;
+		courseEnv = userCourseEnv.getCourseEnvironment();
+		this.readOnly = readOnly || userCourseEnv.isCourseReadOnly();
 		
 		if (pfNode.hasLimitCountConfigured()){
 			mainVC.contextPut("limit", pfNode.getLimitCount());			
@@ -77,39 +89,59 @@ public class PFParticipantController extends BasicController {
 			mainVC.put("contextualSubscription", contextualSubscriptionCtr.getInitialComponent());			
 		}
 		//CourseFreeze
-		readOnly = readOnly ? true : userCourseEnv.isCourseReadOnly();
+
+		pfView = pfManager.providePFView(pfNode);
+		String path = null;
+		switch(pfView) {
+			case displayDrop:
+				path = translate("drop.box");
+				break;
+			case displayReturn:
+				path = translate("return.box");
+				break;
+			default:
+				path = translate("drop.box");
+				break;
+		}
+		initFolderController(ureq, path);
 		
-		PFView pfView = pfManager.providePFView(pfNode);
-		VFSContainer frc = pfManager.provideParticipantFolder(pfNode, pfView, getTranslator(),courseEnv,
-				identity, isCoach, readOnly);
-		folderRunController = new FolderRunController(frc, false, false, false, false, ureq, wControl, null, null, null);
+		putInitialPanel(mainVC);	
+	}
+	
+	private void initFolderController(UserRequest ureq, String path) {
+		removeAsListenerAndDispose(folderRunController);
+
+		VFSContainer frc = pfManager.provideParticipantFolder(pfNode, pfView, getTranslator(), courseEnv,
+				assessedIdentity, isCoach, readOnly);
+		folderRunController = new FolderRunController(frc, false, false, false, false, ureq, getWindowControl(), null, null, null);
+
 		folderRunController.disableSubscriptionController();
 		listenTo(folderRunController);
 		mainVC.put("folder", folderRunController.getInitialComponent());
-		
-		switch (pfView) {
-		case displayDrop:
-			folderRunController.activatePath(ureq, translate("drop.box"));
-			break;
-		case displayReturn:
-			folderRunController.activatePath(ureq, translate("return.box"));
-			break;
-		}
-		
-		putInitialPanel(mainVC);
-		
+		folderRunController.activatePath(ureq, path);
 	}
 
 	@Override
 	protected void doDispose() {
-		
+		//
 	}
 
 	@Override
 	protected void event(UserRequest ureq, Component source, Event event) {
-		
+		//
 	}
 	
+	@Override
+	protected void event(UserRequest ureq, Controller source, Event event) {
+		if(folderRunController == source) {
+			recalculatSecurityCallback(ureq);
+		}
+	}
+	
+	private void recalculatSecurityCallback(UserRequest ureq) {
+		String path = folderRunController.getCurrentContainerPath();
+		initFolderController(ureq, path);
+	}
 
 	/**
 	 * Remove the subscription panel but let the subscription context active
@@ -118,7 +150,5 @@ public class PFParticipantController extends BasicController {
 		if (contextualSubscriptionCtr != null) {
 			mainVC.remove(contextualSubscriptionCtr.getInitialComponent());
 		}
-	}
-	
-		
+	}	
 }
diff --git a/src/main/java/org/olat/course/nodes/pf/ui/PFPreviewController.java b/src/main/java/org/olat/course/nodes/pf/ui/PFPreviewController.java
index b29d627307f1355b6a0483f960440869fdc2f32d..93145a792c15ae9d6a323843c53f116ac9716308 100644
--- a/src/main/java/org/olat/course/nodes/pf/ui/PFPreviewController.java
+++ b/src/main/java/org/olat/course/nodes/pf/ui/PFPreviewController.java
@@ -26,18 +26,13 @@ import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.course.nodes.PFCourseNode;
-import org.olat.course.nodes.pf.manager.PFManager;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.springframework.beans.factory.annotation.Autowired;
 /**
 *
 * @author Fabian Kiefer, fabian.kiefer@frentix.com, http://www.frentix.com
 *
 */
 public class PFPreviewController extends BasicController {
-	
-	@Autowired
-	private PFManager pfManager;
 
 	public PFPreviewController(UserRequest ureq, WindowControl wControl) {
 		super(ureq, wControl);
@@ -67,12 +62,12 @@ public class PFPreviewController extends BasicController {
 
 	@Override
 	protected void event(UserRequest ureq, Component source, Event event) {
-
+		//
 	}
 
 	@Override
 	protected void doDispose() {
-
+		//
 	}
 
 }
diff --git a/src/main/java/org/olat/restapi/system/VFSStatsWebService.java b/src/main/java/org/olat/restapi/system/VFSStatsWebService.java
index 02721e961623752e0a36258d625dc5bf08bc75e7..1f0acad61abe1881d2b1966036cb1f783b81583d 100644
--- a/src/main/java/org/olat/restapi/system/VFSStatsWebService.java
+++ b/src/main/java/org/olat/restapi/system/VFSStatsWebService.java
@@ -19,8 +19,6 @@
  */
 package org.olat.restapi.system;
 
-import java.util.List;
-
 import javax.ws.rs.GET;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
@@ -28,6 +26,7 @@ import javax.ws.rs.core.Response;
 
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.persistence.DB;
+import org.olat.core.commons.services.vfs.manager.VFSRevisionDAO;
 import org.olat.restapi.system.vo.VFSStatsVO;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -42,6 +41,8 @@ public class VFSStatsWebService {
 	
 	@Autowired
 	private DB dbInstance;
+	@Autowired
+	private VFSRevisionDAO vfsRevisionDAO;
 	
 	public VFSStatsWebService() {
 		CoreSpringFactory.autowireObject(this);
@@ -50,19 +51,10 @@ public class VFSStatsWebService {
 	@GET
 	@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
 	public Response getRevisionSizeXML() {
-		StringBuilder sb = new StringBuilder(256);
-		sb.append("select SUM(size) from vfsrevision");
-		
-		List<Long> revisionsSize = dbInstance.getCurrentEntityManager()
-				.createQuery(sb.toString(), Long.class)
-				.getResultList();
-		
-		Long size = revisionsSize == null || revisionsSize.isEmpty() ? Long.valueOf(0) : revisionsSize.get(0);		
-		
+		long size = vfsRevisionDAO.calculateRevisionsSize();
 		dbInstance.commitAndCloseSession();
 		
 		VFSStatsVO vo = new VFSStatsVO(size);
-		
 		return Response.ok(vo).build();
 	}
 }
\ No newline at end of file