From 281c228a1c581e5710daac004b3f5486b369ab9f Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Thu, 13 Sep 2012 16:22:27 +0200
Subject: [PATCH] OO-291: grant "ACCESS" permission to authors of a course on
 their groups

---
 .../coursecreation/CourseCreationHelper.java  |   4 +-
 .../java/org/olat/course/CourseFactory.java   |   5 +-
 .../ConditionConfigEasyController.java        |   8 +-
 .../condition/GroupSelectionController.java   |   6 +-
 .../PersistingCourseGroupManager.java         |   5 +-
 .../CourseBusinessGroupListController.java    |  13 +-
 .../MembersManagementMainController.java      |   2 +-
 .../olat/course/nodes/co/COConfigForm.java    |   8 +-
 .../olat/course/nodes/co/CORunController.java |   4 +-
 .../en/ENEditGroupAreaFormController.java     |   8 +-
 .../service/ProjectGroupManagerImpl.java      |  11 +-
 ...essGroupContextEntryControllerCreator.java |  18 +-
 .../org/olat/group/BusinessGroupService.java  |  10 +-
 .../manager/BusinessGroupImportExport.java    |  10 +-
 .../manager/BusinessGroupServiceImpl.java     |  42 ++---
 .../org/olat/group/ui/NewBGController.java    |  16 +-
 .../BusinessGroupEditResourceController.java  |   8 +-
 .../AbstractBusinessGroupListController.java  |   5 +-
 .../ui/wizard/BGConfigBusinessGroup.java      |   8 +-
 .../BGConfigResourcesStepController.java      |   7 +-
 .../course/CourseGroupWebService.java         |   7 +-
 .../org/olat/upgrade/OLATUpgrade_8_2_0.java   |  16 +-
 .../CourseGroupManagementTest.java            |  12 +-
 .../nodes/en/EnrollmentManagerTest.java       |  15 +-
 .../TestWeeklyStatisticManager_fillGaps.java  |  36 ++--
 .../olat/group/test/BGAreaManagerTest.java    |  93 +++++-----
 .../olat/group/test/BGRightManagerTest.java   | 168 +++++++++---------
 .../test/BusinessGroupImportExportTest.java   |  20 +--
 .../group/test/BusinessGroupServiceTest.java  |  36 ++--
 .../repository/RepositoryManagerTest.java     |  12 +-
 .../java/org/olat/restapi/ContactsTest.java   |   4 +-
 .../org/olat/restapi/CourseGroupMgmtTest.java |   7 +-
 .../org/olat/restapi/GroupFoldersTest.java    |   2 +-
 .../java/org/olat/restapi/GroupMgmtTest.java  |   4 +-
 .../java/org/olat/restapi/UserMgmtTest.java   |   4 +-
 .../java/org/olat/test/AllTestsJunit4.java    |   1 +
 .../java/org/olat/test/JunitTestHelper.java   |   7 +-
 37 files changed, 343 insertions(+), 299 deletions(-)

diff --git a/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/CourseCreationHelper.java b/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/CourseCreationHelper.java
index 050fa99f223..e39abc195b6 100644
--- a/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/CourseCreationHelper.java
+++ b/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/CourseCreationHelper.java
@@ -113,7 +113,7 @@ public class CourseCreationHelper {
 	/**
 	 * @return the created course
 	 */
-	public final Object getUserObject() {
+	public final RepositoryEntry getUserObject() {
 		return addedEntry;
 	}
 
@@ -197,7 +197,7 @@ public class CourseCreationHelper {
 				// create group
 				BusinessGroup learningGroup = bgs.createBusinessGroup( null, groupBaseName + " "
 						+ (i + 1), null, 0, courseConfig.getSubscriberCount(), courseConfig.getEnableWaitlist(), courseConfig.getEnableFollowup(),
-						course.getCourseEnvironment().getCourseGroupManager().getCourseResource());
+						addedEntry);
 				// enable the contact collaboration tool
 				CollaborationTools ct = CollaborationToolsFactory.getInstance().getOrCreateCollaborationTools(learningGroup);
 				ct.setToolEnabled(CollaborationTools.TOOL_CONTACT, true);
diff --git a/src/main/java/org/olat/course/CourseFactory.java b/src/main/java/org/olat/course/CourseFactory.java
index 2bad7136563..4b9d6f0cd87 100644
--- a/src/main/java/org/olat/course/CourseFactory.java
+++ b/src/main/java/org/olat/course/CourseFactory.java
@@ -832,11 +832,12 @@ public class CourseFactory extends BasicManager {
 	 * @param identity
 	 */
 	public static void archiveCourse(OLATResourceable res, String charset, Locale locale, Identity identity) {
+		RepositoryEntry courseRe = RepositoryManager.getInstance().lookupRepositoryEntry(res, false);
 		PersistingCourseImpl course = (PersistingCourseImpl) loadCourse(res);
 		File exportDirectory = CourseFactory.getOrCreateDataExportDirectory(identity, course.getCourseTitle());
 		boolean isOLATAdmin = BaseSecurityManager.getInstance().isIdentityPermittedOnResourceable(identity, Constants.PERMISSION_HASROLE, Constants.ORESOURCE_ADMIN);
-		boolean isOresOwner = RepositoryManager.getInstance().isOwnerOfRepositoryEntry(identity, RepositoryManager.getInstance().lookupRepositoryEntry(res, false));
-		boolean isOresInstitutionalManager = RepositoryManager.getInstance().isInstitutionalRessourceManagerFor(RepositoryManager.getInstance().lookupRepositoryEntry(res, false), identity);
+		boolean isOresOwner = RepositoryManager.getInstance().isOwnerOfRepositoryEntry(identity, courseRe);
+		boolean isOresInstitutionalManager = RepositoryManager.getInstance().isInstitutionalRessourceManagerFor(courseRe, identity);
 		archiveCourse(identity, course, charset, locale, exportDirectory, isOLATAdmin, isOresOwner, isOresInstitutionalManager);
 	}
 		
diff --git a/src/main/java/org/olat/course/condition/ConditionConfigEasyController.java b/src/main/java/org/olat/course/condition/ConditionConfigEasyController.java
index f5f5534b3bb..d42a0b577c1 100644
--- a/src/main/java/org/olat/course/condition/ConditionConfigEasyController.java
+++ b/src/main/java/org/olat/course/condition/ConditionConfigEasyController.java
@@ -73,6 +73,8 @@ import org.olat.group.area.BGArea;
 import org.olat.group.area.BGAreaManager;
 import org.olat.group.ui.NewAreaController;
 import org.olat.group.ui.NewBGController;
+import org.olat.repository.RepositoryEntry;
+import org.olat.repository.RepositoryManager;
 import org.olat.resource.OLATResource;
 import org.olat.shibboleth.ShibbolethModule;
 /**
@@ -337,7 +339,8 @@ public class ConditionConfigEasyController extends FormBasicController implement
 			removeAsListenerAndDispose(groupCreateCtlr);
 			
 			OLATResource courseResource = courseEditorEnv.getCourseGroupManager().getCourseResource();
-			groupCreateCtlr = new NewBGController(ureq, getWindowControl(), courseResource, true, null);
+			RepositoryEntry courseRe = RepositoryManager.getInstance().lookupRepositoryEntry(courseResource, false);
+			groupCreateCtlr = new NewBGController(ureq, getWindowControl(), courseRe, true, null);
 			listenTo(groupCreateCtlr);
 			cmc = new CloseableModalController(getWindowControl(), "close", groupCreateCtlr.getInitialComponent());
 			listenTo(cmc);
@@ -371,8 +374,9 @@ public class ConditionConfigEasyController extends FormBasicController implement
 			// or more group at once.
 			String[] csvGroupName = (String[]) fixGroupError.getUserObject();
 			OLATResource courseResource = courseEditorEnv.getCourseGroupManager().getCourseResource();
+			RepositoryEntry courseRe = RepositoryManager.getInstance().lookupRepositoryEntry(courseResource, false);
 			removeAsListenerAndDispose(groupCreateCtlr);
-			groupCreateCtlr = new NewBGController(ureq, getWindowControl(), courseResource, true, csvGroupName[0]);
+			groupCreateCtlr = new NewBGController(ureq, getWindowControl(), courseRe, true, csvGroupName[0]);
 			listenTo(groupCreateCtlr);
 			
 			removeAsListenerAndDispose(cmc);
diff --git a/src/main/java/org/olat/course/condition/GroupSelectionController.java b/src/main/java/org/olat/course/condition/GroupSelectionController.java
index bc09888431a..e280584f47a 100644
--- a/src/main/java/org/olat/course/condition/GroupSelectionController.java
+++ b/src/main/java/org/olat/course/condition/GroupSelectionController.java
@@ -44,6 +44,8 @@ import org.olat.core.gui.control.generic.closablewrapper.CloseableModalControlle
 import org.olat.course.groupsandrights.CourseGroupManager;
 import org.olat.group.BusinessGroup;
 import org.olat.group.ui.NewBGController;
+import org.olat.repository.RepositoryEntry;
+import org.olat.repository.RepositoryManager;
 
 /**
  * Description:<br>
@@ -94,7 +96,9 @@ public class GroupSelectionController extends FormBasicController {
 		if (source == createNew) {
 			// user wants to create a new group -> show group create form
 			removeAsListenerAndDispose(groupCreateCntrllr);
-			groupCreateCntrllr = new NewBGController(ureq, getWindowControl(), courseGrpMngr.getCourseResource(), true, null);
+			
+			RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntry(courseGrpMngr.getCourseResource(), false);
+			groupCreateCntrllr = new NewBGController(ureq, getWindowControl(), re, true, null);
 			listenTo(groupCreateCntrllr);
 			
 			removeAsListenerAndDispose(cmc);
diff --git a/src/main/java/org/olat/course/groupsandrights/PersistingCourseGroupManager.java b/src/main/java/org/olat/course/groupsandrights/PersistingCourseGroupManager.java
index 25fe685fa29..d5df2d1a9af 100644
--- a/src/main/java/org/olat/course/groupsandrights/PersistingCourseGroupManager.java
+++ b/src/main/java/org/olat/course/groupsandrights/PersistingCourseGroupManager.java
@@ -346,14 +346,15 @@ public class PersistingCourseGroupManager extends BasicManager implements Course
 	@Override
 	public CourseEnvironmentMapper importCourseBusinessGroups(File fImportDirectory) {
 		CourseEnvironmentMapper envMapper = new CourseEnvironmentMapper();
+		RepositoryEntry courseRe = RepositoryManager.getInstance().lookupRepositoryEntry(courseResource, true);
 		File fGroupXML1 = new File(fImportDirectory, LEARNINGGROUPEXPORT_XML);
 		if(fGroupXML1.exists()) {
-			BusinessGroupEnvironment env = businessGroupService.importGroups(courseResource, fGroupXML1);
+			BusinessGroupEnvironment env = businessGroupService.importGroups(courseRe, fGroupXML1);
 			envMapper.addBusinessGroupEnvironment(env);
 		}
 		File fGroupXML2 = new File(fImportDirectory, RIGHTGROUPEXPORT_XML);
 		if(fGroupXML2.exists()) {
-			BusinessGroupEnvironment env = businessGroupService.importGroups(courseResource, fGroupXML2);
+			BusinessGroupEnvironment env = businessGroupService.importGroups(courseRe, fGroupXML2);
 			envMapper.addBusinessGroupEnvironment(env);	
 		}
 		return envMapper;
diff --git a/src/main/java/org/olat/course/member/CourseBusinessGroupListController.java b/src/main/java/org/olat/course/member/CourseBusinessGroupListController.java
index 1b61ed4c204..9bd39677e4e 100644
--- a/src/main/java/org/olat/course/member/CourseBusinessGroupListController.java
+++ b/src/main/java/org/olat/course/member/CourseBusinessGroupListController.java
@@ -45,6 +45,7 @@ import org.olat.group.ui.main.BGResourcesCellRenderer;
 import org.olat.group.ui.main.BusinessGroupNameCellRenderer;
 import org.olat.group.ui.main.BusinessGroupTableModelWithType.Cols;
 import org.olat.group.ui.main.SelectBusinessGroupController;
+import org.olat.repository.RepositoryEntry;
 import org.olat.resource.OLATResource;
 
 /**
@@ -53,15 +54,15 @@ import org.olat.resource.OLATResource;
  */
 public class CourseBusinessGroupListController extends AbstractBusinessGroupListController {
 	
-	private final OLATResource resource;
+	private final RepositoryEntry re;
 	private final Link createGroup;
 	private final Link addGroup;
 	
 	private SelectBusinessGroupController selectController;
 	
-	public CourseBusinessGroupListController(UserRequest ureq, WindowControl wControl, OLATResource resource) {
+	public CourseBusinessGroupListController(UserRequest ureq, WindowControl wControl, RepositoryEntry re) {
 		super(ureq, wControl, "group_list");
-		this.resource = resource;
+		this.re = re;
 		
 		createGroup = LinkFactory.createButton("group.create", mainVC, this);
 		mainVC.put("createGroup", createGroup);
@@ -102,7 +103,7 @@ public class CourseBusinessGroupListController extends AbstractBusinessGroupList
 	@Override
 	protected void event(UserRequest ureq, Component source, Event event) {
 		if(source == createGroup) {
-			doCreate(ureq, getWindowControl(), resource);
+			doCreate(ureq, getWindowControl(), re);
 		} else if (source == addGroup) {
 			doSelectGroups(ureq);
 		} else {
@@ -141,7 +142,7 @@ public class CourseBusinessGroupListController extends AbstractBusinessGroupList
 	}
 	
 	protected void addGroupsToCourse(List<BusinessGroup> groups) {
-		List<OLATResource> resources = Collections.singletonList(resource);
+		List<RepositoryEntry> resources = Collections.singletonList(re);
 		businessGroupService.addResourcesTo(groups, resources);
 		reloadModel();
 		mainVC.setDirty(true);
@@ -154,6 +155,6 @@ public class CourseBusinessGroupListController extends AbstractBusinessGroupList
 
 	@Override
 	protected OLATResource getResource() {
-		return resource;
+		return re.getOlatResource();
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/course/member/MembersManagementMainController.java b/src/main/java/org/olat/course/member/MembersManagementMainController.java
index 33848009513..70a130a41b1 100644
--- a/src/main/java/org/olat/course/member/MembersManagementMainController.java
+++ b/src/main/java/org/olat/course/member/MembersManagementMainController.java
@@ -153,7 +153,7 @@ public class MembersManagementMainController extends MainLayoutBasicController
 			mainVC.put("content", membersOverviewCtrl.getInitialComponent());
 		} else if(CMD_GROUPS.equals(cmd)) {
 			if(groupsCtrl == null) {
-				groupsCtrl = new CourseBusinessGroupListController(ureq, getWindowControl(), repoEntry.getOlatResource());
+				groupsCtrl = new CourseBusinessGroupListController(ureq, getWindowControl(), repoEntry);
 				listenTo(groupsCtrl);
 			}
 			groupsCtrl.reloadModel();
diff --git a/src/main/java/org/olat/course/nodes/co/COConfigForm.java b/src/main/java/org/olat/course/nodes/co/COConfigForm.java
index b192c1ba7a3..4f9f148b978 100644
--- a/src/main/java/org/olat/course/nodes/co/COConfigForm.java
+++ b/src/main/java/org/olat/course/nodes/co/COConfigForm.java
@@ -63,6 +63,8 @@ import org.olat.group.area.BGAreaManager;
 import org.olat.group.ui.NewAreaController;
 import org.olat.group.ui.NewBGController;
 import org.olat.modules.ModuleConfiguration;
+import org.olat.repository.RepositoryEntry;
+import org.olat.repository.RepositoryManager;
 import org.olat.resource.OLATResource;
 
 /**
@@ -580,7 +582,8 @@ public class COConfigForm extends FormBasicController {
 			
 			// no groups in group management -> directly show group create dialog
 			OLATResource courseResource = cev.getCourseGroupManager().getCourseResource();
-			groupCreateCntrllr = new NewBGController(ureq, getWindowControl(), courseResource, true, null);
+			RepositoryEntry courseRe = RepositoryManager.getInstance().lookupRepositoryEntry(courseResource, false);
+			groupCreateCntrllr = new NewBGController(ureq, getWindowControl(), courseRe, true, null);
 			listenTo(groupCreateCntrllr);
 			cmc = new CloseableModalController(getWindowControl(), "close", groupCreateCntrllr.getInitialComponent());
 			listenTo(cmc);
@@ -615,9 +618,10 @@ public class COConfigForm extends FormBasicController {
 			// user wants to fix problem with fixing group error link e.g. create one or more group at once.
 			String[] csvGroupName = (String[]) fixGroupError.getUserObject();
 			OLATResource courseResource = cev.getCourseGroupManager().getCourseResource();
+			RepositoryEntry courseRe = RepositoryManager.getInstance().lookupRepositoryEntry(courseResource, false);
 			easyGroupList.setEnabled(false);
 			removeAsListenerAndDispose(groupCreateCntrllr);
-			groupCreateCntrllr = new NewBGController(ureq, getWindowControl(), courseResource, true, csvGroupName[0]);
+			groupCreateCntrllr = new NewBGController(ureq, getWindowControl(), courseRe, true, csvGroupName[0]);
 			listenTo(groupCreateCntrllr);
 
 			removeAsListenerAndDispose(cmc);
diff --git a/src/main/java/org/olat/course/nodes/co/CORunController.java b/src/main/java/org/olat/course/nodes/co/CORunController.java
index cd6f46ba8bc..326832807a5 100644
--- a/src/main/java/org/olat/course/nodes/co/CORunController.java
+++ b/src/main/java/org/olat/course/nodes/co/CORunController.java
@@ -136,11 +136,11 @@ public class CORunController extends BasicController {
 		if(areaKeys == null && StringHelper.containsNonWhitespace(areaNames)) {
 			areaKeys = areaManager.toAreaKeys(areaNames, cgm.getCourseResource());
 		}
-		if (coachesConfigured) {
+		if (coachesConfigured != null && coachesConfigured.booleanValue()) {
 			ContactList cl = retrieveCoachesFromAreas(areaKeys);
 			contactLists.push(cl);
 		}
-		if (partipsConfigured) {
+		if (partipsConfigured != null && partipsConfigured.booleanValue()) {
 			ContactList cl = retrieveParticipantsFromAreas(areaKeys);
 			contactLists.push(cl);
 		}
diff --git a/src/main/java/org/olat/course/nodes/en/ENEditGroupAreaFormController.java b/src/main/java/org/olat/course/nodes/en/ENEditGroupAreaFormController.java
index ac998adec84..fe15b2636f1 100644
--- a/src/main/java/org/olat/course/nodes/en/ENEditGroupAreaFormController.java
+++ b/src/main/java/org/olat/course/nodes/en/ENEditGroupAreaFormController.java
@@ -68,6 +68,8 @@ import org.olat.group.area.BGAreaManager;
 import org.olat.group.ui.NewAreaController;
 import org.olat.group.ui.NewBGController;
 import org.olat.modules.ModuleConfiguration;
+import org.olat.repository.RepositoryEntry;
+import org.olat.repository.RepositoryManager;
 import org.olat.resource.OLATResource;
 
 /**
@@ -405,7 +407,8 @@ class ENEditGroupAreaFormController extends FormBasicController implements Gener
 			// no groups in group management -> directly show group create dialog
 
 			OLATResource courseResource = cev.getCourseGroupManager().getCourseResource();
-			groupCreateCntrllr = new NewBGController(ureq, getWindowControl(), courseResource, true, null);
+			RepositoryEntry courseRe = RepositoryManager.getInstance().lookupRepositoryEntry(courseResource, false);
+			groupCreateCntrllr = new NewBGController(ureq, getWindowControl(), courseRe, true, null);
 			listenTo(groupCreateCntrllr);
 
 			cmc = new CloseableModalController(getWindowControl(), "close", groupCreateCntrllr.getInitialComponent());
@@ -447,7 +450,8 @@ class ENEditGroupAreaFormController extends FormBasicController implements Gener
 			easyGroupList.setEnabled(false);
 			removeAsListenerAndDispose(groupCreateCntrllr);
 			OLATResource courseResource = this.cev.getCourseGroupManager().getCourseResource();
-			groupCreateCntrllr = new NewBGController(ureq, getWindowControl(), courseResource, true, csvGroupName[0]);
+			RepositoryEntry courseRe = RepositoryManager.getInstance().lookupRepositoryEntry(courseResource, false);
+			groupCreateCntrllr = new NewBGController(ureq, getWindowControl(), courseRe, true, csvGroupName[0]);
 			listenTo(groupCreateCntrllr);
 
 			removeAsListenerAndDispose(cmc);
diff --git a/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectGroupManagerImpl.java b/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectGroupManagerImpl.java
index a079bab73ea..432fbc54684 100644
--- a/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectGroupManagerImpl.java
+++ b/src/main/java/org/olat/course/nodes/projectbroker/service/ProjectGroupManagerImpl.java
@@ -92,12 +92,12 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou
     } else {
 			logDebug("No group for project-broker exist => create a new one");
 			BusinessGroupService businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class);
-			OLATResource courseResource = cpm.getCourseResource();
-			accountManagerGroup = businessGroupService.createBusinessGroup(identity, groupName, groupDescription, -1, -1, false, false, courseResource);
+			RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntry(cpm.getCourseResource(), false);
+			accountManagerGroup = businessGroupService.createBusinessGroup(identity, groupName, groupDescription, -1, -1, false, false, re);
 			int i = 2;
 			while (accountManagerGroup == null) {
 				// group with this name exist already, try another name
-				accountManagerGroup = businessGroupService.createBusinessGroup(identity, groupName + " _" + i, groupDescription, -1, -1, false, false, courseResource);
+				accountManagerGroup = businessGroupService.createBusinessGroup(identity, groupName + " _" + i, groupDescription, -1, -1, false, false, re);
 				i++;
 			}
 			logDebug("createAndPersistBusinessGroup businessgroup=" + accountManagerGroup);			
@@ -169,16 +169,17 @@ public class ProjectGroupManagerImpl extends BasicManager implements ProjectGrou
 		
 		BusinessGroupService businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class);
 		OLATResource resource = CourseFactory.loadCourse(courseId).getCourseEnvironment().getCourseGroupManager().getCourseResource();
+		RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntry(resource, false);
 
 		//BGContext context = createGroupContext(CourseFactory.loadCourse(courseId));
 		logDebug("createProjectGroupFor groupName=" + groupName);
-		BusinessGroup projectGroup = businessGroupService.createBusinessGroup(identity, groupName, groupDescription, -1, -1, false, false, resource);
+		BusinessGroup projectGroup = businessGroupService.createBusinessGroup(identity, groupName, groupDescription, -1, -1, false, false, re);
 		// projectGroup could be null when a group with name already exists
 		int counter = 2;
 		while (projectGroup == null) {
 			// name alreday exist try another one
 			String newGroupName = groupName + " _" + counter ;
-			projectGroup = businessGroupService.createBusinessGroup(identity, newGroupName, groupDescription, -1, -1, false, false, resource);
+			projectGroup = businessGroupService.createBusinessGroup(identity, newGroupName, groupDescription, -1, -1, false, false, re);
 			counter++;
 		}
 		logDebug("Created a new projectGroup=" + projectGroup);
diff --git a/src/main/java/org/olat/group/BusinessGroupContextEntryControllerCreator.java b/src/main/java/org/olat/group/BusinessGroupContextEntryControllerCreator.java
index 93917e23b5a..2e1bea421eb 100644
--- a/src/main/java/org/olat/group/BusinessGroupContextEntryControllerCreator.java
+++ b/src/main/java/org/olat/group/BusinessGroupContextEntryControllerCreator.java
@@ -21,6 +21,7 @@ package org.olat.group;
 
 import java.util.Date;
 
+import org.olat.basesecurity.Constants;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.control.Controller;
@@ -28,6 +29,7 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.OLATResourceable;
 import org.olat.core.id.context.ContextEntry;
 import org.olat.core.id.context.DefaultContextEntryControllerCreator;
+import org.olat.group.right.BGRightManager;
 import org.olat.group.ui.BGControllerFactory;
 import org.olat.resource.accesscontrol.ACService;
 import org.olat.resource.accesscontrol.AccessControlModule;
@@ -54,12 +56,15 @@ public class BusinessGroupContextEntryControllerCreator extends DefaultContextEn
 
 		Long gKey = ores.getResourceableId();
 		BusinessGroupService bgs = CoreSpringFactory.getImpl(BusinessGroupService.class);
+
 		Controller ctrl = null;
 		BusinessGroup bgroup = bgs.loadBusinessGroup(gKey);
 		if(bgroup != null) {
-			//fxdiff VCRP-1,2: access control of resources
+			BGRightManager rightManager = CoreSpringFactory.getImpl(BGRightManager.class);
 			if (ureq.getUserSession().getRoles().isOLATAdmin() || ureq.getUserSession().getRoles().isGroupManager()
-					|| bgs.isIdentityInBusinessGroup(ureq.getIdentity(), bgroup) || isAccessControlled(bgroup)) {
+					|| bgs.isIdentityInBusinessGroup(ureq.getIdentity(), bgroup) 
+					|| rightManager.hasBGRight(Constants.PERMISSION_ACCESS, ureq.getIdentity(), bgroup.getResource())
+					|| isAccessControlled(bgroup)) {
 				ctrl = BGControllerFactory.getInstance().createRunControllerFor(ureq, wControl, bgroup);
 			}
 		}
@@ -86,9 +91,12 @@ public class BusinessGroupContextEntryControllerCreator extends DefaultContextEn
 		if (bgroup == null) {
 			return false;
 		}	
-		return ureq.getUserSession().getRoles().isOLATAdmin() ||
-				ureq.getUserSession().getRoles().isGroupManager() ||
-				bgs.isIdentityInBusinessGroup(ureq.getIdentity(), bgroup) || isAccessControlled(bgroup);
+		BGRightManager rightManager = CoreSpringFactory.getImpl(BGRightManager.class);
+		return ureq.getUserSession().getRoles().isOLATAdmin()
+				|| ureq.getUserSession().getRoles().isGroupManager() 
+				|| bgs.isIdentityInBusinessGroup(ureq.getIdentity(), bgroup)  
+				|| rightManager.hasBGRight(Constants.PERMISSION_ACCESS, ureq.getIdentity(), bgroup.getResource())
+				|| isAccessControlled(bgroup);
 	}
 	
 	private boolean isAccessControlled(BusinessGroup bgroup) {
diff --git a/src/main/java/org/olat/group/BusinessGroupService.java b/src/main/java/org/olat/group/BusinessGroupService.java
index a55f2ea629a..9a1d3e464cf 100644
--- a/src/main/java/org/olat/group/BusinessGroupService.java
+++ b/src/main/java/org/olat/group/BusinessGroupService.java
@@ -71,7 +71,7 @@ public interface BusinessGroupService {
 	 */
 	public BusinessGroup createBusinessGroup(Identity creator, String name, String description,
 			Integer minParticipants, Integer maxParticipants, boolean waitingListEnabled, boolean autoCloseRanksEnabled,
-			OLATResource resource);
+			RepositoryEntry resource);
 	
 	/**
 	 * Update the business group with the supplied arguments and do it in sync
@@ -276,11 +276,11 @@ public interface BusinessGroupService {
 	
 	public boolean hasResources(List<BusinessGroup> groups);
 	
-	public void addResourceTo(BusinessGroup group, OLATResource resource);
+	public void addResourceTo(BusinessGroup group, RepositoryEntry re);
 	
-	public void addResourcesTo(List<BusinessGroup> groups, List<OLATResource> resources);
+	public void addResourcesTo(List<BusinessGroup> groups, List<RepositoryEntry> resources);
 	
-	public void removeResourceFrom(BusinessGroup group, OLATResource resource);
+	public void removeResourceFrom(BusinessGroup group, RepositoryEntry re);
 	
 	public List<RepositoryEntry> findRepositoryEntries(Collection<BusinessGroup> groups, int firstResult, int maxResults);
 	
@@ -506,7 +506,7 @@ public interface BusinessGroupService {
 	 * @param resource
 	 * @param fGroupExportXML
 	 */
-	public BusinessGroupEnvironment importGroups(OLATResource resource, File fGroupExportXML);
+	public BusinessGroupEnvironment importGroups(RepositoryEntry re, File fGroupExportXML);
 	
 	public void archiveGroups(List<BusinessGroup> groups, File exportFile);
 
diff --git a/src/main/java/org/olat/group/manager/BusinessGroupImportExport.java b/src/main/java/org/olat/group/manager/BusinessGroupImportExport.java
index 40484185deb..9d6cbed65b2 100644
--- a/src/main/java/org/olat/group/manager/BusinessGroupImportExport.java
+++ b/src/main/java/org/olat/group/manager/BusinessGroupImportExport.java
@@ -45,7 +45,7 @@ import org.olat.group.model.BGAreaReference;
 import org.olat.group.model.BusinessGroupEnvironment;
 import org.olat.group.model.BusinessGroupReference;
 import org.olat.properties.Property;
-import org.olat.resource.OLATResource;
+import org.olat.repository.RepositoryEntry;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -200,7 +200,7 @@ public class BusinessGroupImportExport {
 		}
 	}
 
-	public BusinessGroupEnvironment importGroups(OLATResource resource, File fGroupExportXML) {
+	public BusinessGroupEnvironment importGroups(RepositoryEntry re, File fGroupExportXML) {
 		if (!fGroupExportXML.exists())
 			return new BusinessGroupEnvironment();
 
@@ -222,7 +222,7 @@ public class BusinessGroupImportExport {
 			for (Area area : groupConfig.getAreas().getGroups()) {
 				String areaName = area.name;
 				String areaDesc = (area.description != null && !area.description.isEmpty()) ? area.description.get(0) : "";
-				BGArea newArea = areaManager.createAndPersistBGArea(areaName, areaDesc, resource);
+				BGArea newArea = areaManager.createAndPersistBGArea(areaName, areaDesc, re.getOlatResource());
 				if(areaSet.add(newArea)) {
 					env.getAreas().add(new BGAreaReference(newArea, area.key, area.name));
 				}
@@ -250,7 +250,7 @@ public class BusinessGroupImportExport {
 					enableAutoCloseRanks = group.autoCloseRanks.booleanValue();
 				}
 				
-				BusinessGroup newGroup = businessGroupService.createBusinessGroup(null, groupName, groupDesc, groupMinParticipants, groupMaxParticipants, waitingList, enableAutoCloseRanks, resource);
+				BusinessGroup newGroup = businessGroupService.createBusinessGroup(null, groupName, groupDesc, groupMinParticipants, groupMaxParticipants, waitingList, enableAutoCloseRanks, re);
 				//map the group
 				env.getGroups().add(new BusinessGroupReference(newGroup, group.key, group.name));
 				// get tools config
@@ -283,7 +283,7 @@ public class BusinessGroupImportExport {
 				List<String> memberships = group.areaRelations;
 				if(memberships != null) {
 					for (String membership : memberships) {
-						BGArea area = areaManager.findBGArea(membership, resource);
+						BGArea area = areaManager.findBGArea(membership, re.getOlatResource());
 						if (area == null) {
 							throw new AssertException("Group-Area-Relationship in export, but area was not created during import.");
 						}
diff --git a/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java b/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java
index 11b5d11b903..dc5b9047192 100644
--- a/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java
+++ b/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java
@@ -101,7 +101,6 @@ import org.olat.notifications.NotificationsManagerImpl;
 import org.olat.properties.Property;
 import org.olat.repository.RepositoryEntry;
 import org.olat.resource.OLATResource;
-import org.olat.resource.OLATResourceImpl;
 import org.olat.resource.accesscontrol.ACService;
 import org.olat.resource.accesscontrol.model.ResourceReservation;
 import org.olat.testutils.codepoints.server.Codepoint;
@@ -195,15 +194,12 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD
 	@Override
 	public BusinessGroup createBusinessGroup(Identity creator, String name, String description,
 			Integer minParticipants, Integer maxParticipants, boolean waitingListEnabled, boolean autoCloseRanksEnabled,
-			OLATResource resource) {
+			RepositoryEntry re) {
 
 		BusinessGroup group = businessGroupDAO.createAndPersist(creator, name, description,
 				minParticipants, maxParticipants, waitingListEnabled, autoCloseRanksEnabled, false, false, false);
-		if(resource instanceof OLATResourceImpl) {
-			businessGroupRelationDAO.addRelationToResource(group, resource);
-			//add coach and participant permission
-			securityManager.createAndPersistPolicyWithResource(group.getOwnerGroup(), Constants.PERMISSION_COACH, resource);
-			securityManager.createAndPersistPolicyWithResource(group.getPartipiciantGroup(), Constants.PERMISSION_PARTI, resource);
+		if(re != null) {
+			addResourceTo(group, re);
 		}
 		return group;
 	}
@@ -1420,16 +1416,18 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD
 
 	@Override
 	@Transactional
-	public void addResourceTo(BusinessGroup group, OLATResource resource) {
-		businessGroupRelationDAO.addRelationToResource(group, resource);
+	public void addResourceTo(BusinessGroup group, RepositoryEntry re) {
+		businessGroupRelationDAO.addRelationToResource(group, re.getOlatResource());
+		//add author permission
+		securityManager.createAndPersistPolicyWithResource(re.getOwnerGroup(), Constants.PERMISSION_ACCESS, group.getResource());
 		//add coach and participant permission
-		securityManager.createAndPersistPolicyWithResource(group.getOwnerGroup(), Constants.PERMISSION_COACH, resource);
-		securityManager.createAndPersistPolicyWithResource(group.getPartipiciantGroup(), Constants.PERMISSION_PARTI, resource);
+		securityManager.createAndPersistPolicyWithResource(group.getOwnerGroup(), Constants.PERMISSION_COACH, re.getOlatResource());
+		securityManager.createAndPersistPolicyWithResource(group.getPartipiciantGroup(), Constants.PERMISSION_PARTI, re.getOlatResource());
 	}
 
 	@Override
 	@Transactional
-	public void addResourcesTo(List<BusinessGroup> groups, List<OLATResource> resources) {
+	public void addResourcesTo(List<BusinessGroup> groups, List<RepositoryEntry> resources) {
 		if(groups == null || groups.isEmpty()) return;
 		if(resources == null || resources.isEmpty()) return;
 		
@@ -1441,15 +1439,15 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD
 		//check for duplicate entries
 		List<BGResourceRelation> relations = businessGroupRelationDAO.findRelations(groupKeys, 0, -1);
 		for(BusinessGroup group:groups) {
-			for(OLATResource resource:resources) {
+			for(RepositoryEntry re:resources) {
 				boolean relationExists = false;
 				for(BGResourceRelation relation:relations) {
-					if(relation.getGroup().equals(group) && relation.getResource().equals(resource)) {
+					if(relation.getGroup().equals(group) && relation.getResource().equals(re.getOlatResource())) {
 						relationExists = true;
 					}
 				}
 				if(!relationExists) {
-					addResourceTo(group, resource);
+					addResourceTo(group, re);
 				}
 			}
 		}
@@ -1457,11 +1455,13 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD
 
 	@Override
 	@Transactional
-	public void removeResourceFrom(BusinessGroup group, OLATResource resource) {
-		businessGroupRelationDAO.deleteRelation(group, resource);
+	public void removeResourceFrom(BusinessGroup group, RepositoryEntry re) {
+		businessGroupRelationDAO.deleteRelation(group, re.getOlatResource());
+		//remove author permission
+		securityManager.deletePolicy(re.getOwnerGroup(), Constants.PERMISSION_ACCESS, group.getResource());
 		//remove permission
-		securityManager.deletePolicy(group.getOwnerGroup(), Constants.PERMISSION_COACH, resource);
-		securityManager.deletePolicy(group.getPartipiciantGroup(), Constants.PERMISSION_PARTI, resource);
+		securityManager.deletePolicy(group.getOwnerGroup(), Constants.PERMISSION_COACH, re.getOlatResource());
+		securityManager.deletePolicy(group.getPartipiciantGroup(), Constants.PERMISSION_PARTI, re.getOlatResource());
 	}
 
 	@Override
@@ -1556,8 +1556,8 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD
 	}
 
 	@Override
-	public BusinessGroupEnvironment importGroups(OLATResource resource, File fGroupExportXML) {
-		return businessGroupImportExport.importGroups(resource, fGroupExportXML);
+	public BusinessGroupEnvironment importGroups(RepositoryEntry re, File fGroupExportXML) {
+		return businessGroupImportExport.importGroups(re, fGroupExportXML);
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/group/ui/NewBGController.java b/src/main/java/org/olat/group/ui/NewBGController.java
index c2a098377b4..541b6c80c2a 100644
--- a/src/main/java/org/olat/group/ui/NewBGController.java
+++ b/src/main/java/org/olat/group/ui/NewBGController.java
@@ -42,7 +42,7 @@ import org.olat.core.logging.activity.ThreadLocalUserActivityLogger;
 import org.olat.group.BusinessGroup;
 import org.olat.group.BusinessGroupService;
 import org.olat.group.GroupLoggingAction;
-import org.olat.resource.OLATResource;
+import org.olat.repository.RepositoryEntry;
 import org.olat.util.logging.activity.LoggingResourceable;
 
 /**
@@ -59,7 +59,7 @@ import org.olat.util.logging.activity.LoggingResourceable;
  */
 public class NewBGController extends BasicController {
 
-	private OLATResource resource;
+	private RepositoryEntry re;
 	private BusinessGroupService businessGroupService;
 	private VelocityContainer contentVC;
 	private BusinessGroupFormController groupCreateController;
@@ -73,8 +73,8 @@ public class NewBGController extends BasicController {
 	 * @param bgContext
 	 * @param bulkMode
 	 */
-	public NewBGController(UserRequest ureq, WindowControl wControl, OLATResource resource) {
-		this(ureq, wControl, resource, true, null);
+	public NewBGController(UserRequest ureq, WindowControl wControl, RepositoryEntry re) {
+		this(ureq, wControl, re, true, null);
 	}
 	/**
 	 * 
@@ -85,9 +85,9 @@ public class NewBGController extends BasicController {
 	 * @param bulkMode
 	 * @param csvGroupNames
 	 */
-	public NewBGController(UserRequest ureq, WindowControl wControl, OLATResource resource, boolean bulkMode, String csvGroupNames) {
+	public NewBGController(UserRequest ureq, WindowControl wControl, RepositoryEntry re, boolean bulkMode, String csvGroupNames) {
 		super(ureq, wControl);
-		this.resource = resource;
+		this.re = re;
 		this.bulkMode = bulkMode;
 		//
 		businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class);
@@ -127,12 +127,12 @@ public class NewBGController extends BasicController {
 				newGroups = new ArrayList<BusinessGroup>();
 				if (bulkMode) {
 					for(String bgName:groupCreateController.getGroupNames()) {
-						BusinessGroup group = businessGroupService.createBusinessGroup(getIdentity(), bgName, bgDesc, bgMin, bgMax,	enableWaitingList, enableAutoCloseRanks, resource);
+						BusinessGroup group = businessGroupService.createBusinessGroup(getIdentity(), bgName, bgDesc, bgMin, bgMax,	enableWaitingList, enableAutoCloseRanks, re);
 						newGroups.add(group);
 					}
 				} else {
 					String bgName = groupCreateController.getGroupName();
-					BusinessGroup group = businessGroupService.createBusinessGroup(getIdentity(), bgName, bgDesc, bgMin, bgMax, enableWaitingList, enableAutoCloseRanks, resource);
+					BusinessGroup group = businessGroupService.createBusinessGroup(getIdentity(), bgName, bgDesc, bgMin, bgMax, enableWaitingList, enableAutoCloseRanks, re);
 					newGroups.add(group);
 				}
 
diff --git a/src/main/java/org/olat/group/ui/edit/BusinessGroupEditResourceController.java b/src/main/java/org/olat/group/ui/edit/BusinessGroupEditResourceController.java
index de20d0ad707..12a594c933c 100644
--- a/src/main/java/org/olat/group/ui/edit/BusinessGroupEditResourceController.java
+++ b/src/main/java/org/olat/group/ui/edit/BusinessGroupEditResourceController.java
@@ -55,7 +55,6 @@ import org.olat.group.BusinessGroupService;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryTableModel;
 import org.olat.repository.controllers.ReferencableEntriesSearchController;
-import org.olat.resource.OLATResource;
 
 /**
  * Description:<BR>
@@ -180,22 +179,19 @@ public class BusinessGroupEditResourceController extends BasicController impleme
 	}
 	
 	private void doRemoveResource(RepositoryEntry entry) {
-		businessGroupService.removeResourceFrom(group, entry.getOlatResource());
+		businessGroupService.removeResourceFrom(group, entry);
 		repoTableModel.getObjects().remove(entry);
 		resourcesCtr.modelChanged();
 	}
 
 	private void doAddRepositoryEntry(List<RepositoryEntry> entries) {
-		List<OLATResource> resources = new ArrayList<OLATResource>();
 		List<RepositoryEntry> repoEntries = new ArrayList<RepositoryEntry>();
 		for(RepositoryEntry entry:entries) {
 			if(!repoTableModel.getObjects().contains(entry)) {
-				resources.add(entry.getOlatResource());
 				repoEntries.add(entry);
 			}
-			
 		}
-		businessGroupService.addResourcesTo(Collections.singletonList(group), resources);
+		businessGroupService.addResourcesTo(Collections.singletonList(group), repoEntries);
 		repoTableModel.addObjects(repoEntries);
 		resourcesCtr.modelChanged();
 	}
diff --git a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java
index abf089b71c2..a7d807b5110 100644
--- a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java
+++ b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java
@@ -88,6 +88,7 @@ import org.olat.group.ui.wizard.BGEmailSelectReceiversStep;
 import org.olat.group.ui.wizard.BGMergeStep;
 import org.olat.group.ui.wizard.BGUserMailTemplate;
 import org.olat.group.ui.wizard.BGUserManagementController;
+import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryEntryShort;
 import org.olat.resource.OLATResource;
 import org.olat.resource.accesscontrol.ACService;
@@ -418,9 +419,9 @@ public abstract class AbstractBusinessGroupListController extends BasicControlle
 	 * @param ureq
 	 * @param wControl
 	 */
-	protected void doCreate(UserRequest ureq, WindowControl wControl, OLATResource resource) {				
+	protected void doCreate(UserRequest ureq, WindowControl wControl, RepositoryEntry re) {				
 		removeAsListenerAndDispose(groupCreateController);
-		groupCreateController = new NewBGController(ureq, wControl, resource, false, null);
+		groupCreateController = new NewBGController(ureq, wControl, re, false, null);
 		listenTo(groupCreateController);
 		
 		cmc = new CloseableModalController(getWindowControl(), translate("close"), groupCreateController.getInitialComponent(), true, translate("create.form.title"));
diff --git a/src/main/java/org/olat/group/ui/wizard/BGConfigBusinessGroup.java b/src/main/java/org/olat/group/ui/wizard/BGConfigBusinessGroup.java
index be457d4140b..07128ed0a60 100644
--- a/src/main/java/org/olat/group/ui/wizard/BGConfigBusinessGroup.java
+++ b/src/main/java/org/olat/group/ui/wizard/BGConfigBusinessGroup.java
@@ -23,7 +23,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.olat.core.util.vfs.Quota;
-import org.olat.resource.OLATResource;
+import org.olat.repository.RepositoryEntry;
 
 /**
  * 
@@ -38,7 +38,7 @@ public class BGConfigBusinessGroup {
 	private int folderAccess;
 	private Quota quota;
 	
-	private List<OLATResource> resources;
+	private List<RepositoryEntry> resources;
 	
 	public List<String> getToolsToEnable() {
 		return toolsToEnable;
@@ -72,11 +72,11 @@ public class BGConfigBusinessGroup {
 		this.quota = quota;
 	}
 
-	public List<OLATResource> getResources() {
+	public List<RepositoryEntry> getResources() {
 		return resources;
 	}
 
-	public void setResources(List<OLATResource> resources) {
+	public void setResources(List<RepositoryEntry> resources) {
 		this.resources = resources;
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/group/ui/wizard/BGConfigResourcesStepController.java b/src/main/java/org/olat/group/ui/wizard/BGConfigResourcesStepController.java
index 333a6c4c555..4370d6aeb2b 100644
--- a/src/main/java/org/olat/group/ui/wizard/BGConfigResourcesStepController.java
+++ b/src/main/java/org/olat/group/ui/wizard/BGConfigResourcesStepController.java
@@ -48,7 +48,6 @@ import org.olat.group.ui.edit.BusinessGroupEditResourceController;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryTableModel;
 import org.olat.repository.controllers.ReferencableEntriesSearchController;
-import org.olat.resource.OLATResource;
 
 /**
  * 
@@ -164,11 +163,7 @@ public class BGConfigResourcesStepController extends StepFormBasicController {
 			addToRunContext("configuration", configuration);
 		}
 		List<RepositoryEntry> entries = repoTableModel.getObjects();
-		List<OLATResource> resources = new ArrayList<OLATResource>(entries.size());
-		for(RepositoryEntry entry:entries) {
-			resources.add(entry.getOlatResource());
-		}
-		configuration.setResources(resources);
+		configuration.setResources(entries);
 		fireEvent(ureq, StepsEvent.ACTIVATE_NEXT);
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/restapi/repository/course/CourseGroupWebService.java b/src/main/java/org/olat/restapi/repository/course/CourseGroupWebService.java
index 0c27c140068..cae5c3c3e66 100644
--- a/src/main/java/org/olat/restapi/repository/course/CourseGroupWebService.java
+++ b/src/main/java/org/olat/restapi/repository/course/CourseGroupWebService.java
@@ -56,8 +56,9 @@ import org.olat.group.BusinessGroup;
 import org.olat.group.BusinessGroupService;
 import org.olat.modules.fo.Forum;
 import org.olat.modules.fo.restapi.ForumWebService;
+import org.olat.repository.RepositoryEntry;
+import org.olat.repository.RepositoryManager;
 import org.olat.resource.OLATResource;
-import org.olat.resource.OLATResourceManager;
 import org.olat.restapi.group.LearningGroupWebService;
 import org.olat.restapi.security.RestSecurityHelper;
 import org.olat.restapi.support.ObjectFactory;
@@ -216,8 +217,8 @@ public class CourseGroupWebService {
 		Integer min = normalize(group.getMinParticipants());
 		Integer max = normalize(group.getMaxParticipants());
 		
-		OLATResource resource = OLATResourceManager.getInstance().findOrPersistResourceable(course);
-		BusinessGroup bg = bgm.createBusinessGroup(ureq.getIdentity(), name, desc, min, max, false, false, resource);
+		RepositoryEntry courseRe = RepositoryManager.getInstance().lookupRepositoryEntry(course, false);
+		BusinessGroup bg = bgm.createBusinessGroup(ureq.getIdentity(), name, desc, min, max, false, false, courseRe);
 		GroupVO savedVO = ObjectFactory.get(bg);
 		return Response.ok(savedVO).build();
 	}
diff --git a/src/main/java/org/olat/upgrade/OLATUpgrade_8_2_0.java b/src/main/java/org/olat/upgrade/OLATUpgrade_8_2_0.java
index 0cff4962aaf..f005503570d 100644
--- a/src/main/java/org/olat/upgrade/OLATUpgrade_8_2_0.java
+++ b/src/main/java/org/olat/upgrade/OLATUpgrade_8_2_0.java
@@ -203,8 +203,8 @@ public class OLATUpgrade_8_2_0 extends OLATUpgrade {
 	}
 	
 	private void processBusinessGroup(BusinessGroup group) {
-		List<OLATResource> resources = findOLATResourcesForBusinessGroup(group);
-		List<OLATResource> currentList = businessGroupService.findResources(Collections.singletonList(group), 0, -1);
+		List<RepositoryEntry> resources = findOLATResourcesForBusinessGroup(group);
+		List<RepositoryEntry> currentList = businessGroupService.findRepositoryEntries(Collections.singletonList(group), 0, -1);
 		
 		boolean merge = false;
 		if(group.getResource() == null) {
@@ -229,7 +229,7 @@ public class OLATUpgrade_8_2_0 extends OLATUpgrade {
 		}
 
 		int count = 0;
-		for	(OLATResource resource:resources) {
+		for	(RepositoryEntry resource:resources) {
 			if(!currentList.contains(resource)) {
 				businessGroupService.addResourceTo(group, resource);
 				count++;
@@ -345,11 +345,15 @@ public class OLATUpgrade_8_2_0 extends OLATUpgrade {
 		return resources;
 	}
 	
-	private List<OLATResource> findOLATResourcesForBusinessGroup(BusinessGroup group) {
+	private List<RepositoryEntry> findOLATResourcesForBusinessGroup(BusinessGroup group) {
 		StringBuilder q = new StringBuilder();
-		q.append("select bgcr.resource from ").append(BGContext2Resource.class.getName()).append(" as bgcr where bgcr.groupContext.key=:contextKey");
+		q.append("select v from ").append(RepositoryEntry.class.getName()).append(" as v ")
+		 .append(" inner join fetch v.olatResource as ores ")
+		 .append(" where ores in (")
+		 .append("  select bgcr.resource from ").append(BGContext2Resource.class.getName()).append(" as bgcr where bgcr.groupContext.key=:contextKey")
+		 .append(" )");
 
-		List<OLATResource> resources = dbInstance.getCurrentEntityManager().createQuery(q.toString(), OLATResource.class)
+		List<RepositoryEntry> resources = dbInstance.getCurrentEntityManager().createQuery(q.toString(), RepositoryEntry.class)
 				.setParameter("contextKey", ((BusinessGroupImpl)group).getGroupContextKey())
 				.getResultList();
 		return resources;
diff --git a/src/test/java/org/olat/course/groupsandrights/CourseGroupManagementTest.java b/src/test/java/org/olat/course/groupsandrights/CourseGroupManagementTest.java
index 9fff7458e0d..8d63a1c82c4 100644
--- a/src/test/java/org/olat/course/groupsandrights/CourseGroupManagementTest.java
+++ b/src/test/java/org/olat/course/groupsandrights/CourseGroupManagementTest.java
@@ -44,7 +44,7 @@ import org.olat.group.area.BGArea;
 import org.olat.group.area.BGAreaManager;
 import org.olat.group.right.BGRightManager;
 import org.olat.group.right.BGRightsRole;
-import org.olat.resource.OLATResource;
+import org.olat.repository.RepositoryEntry;
 import org.olat.test.JunitTestHelper;
 import org.olat.test.OlatTestCase;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -97,7 +97,7 @@ public class CourseGroupManagementTest extends OlatTestCase {
 	/** rights tests */
 	@Test
 	public void testHasRightIsInMethodsByGroups() {
-		OLATResource course1 = JunitTestHelper.createRandomResource();
+		RepositoryEntry course1 =  JunitTestHelper.createAndPersistRepositoryEntry();
 
 		// create groups without waitinglist
 		BusinessGroup g1 = businessGroupService.createBusinessGroup(null, "g1", null, 0, 10, false, false,
@@ -163,7 +163,7 @@ public class CourseGroupManagementTest extends OlatTestCase {
 	/** rights tests */
 	@Test
 	public void testHasRightIsInMethodsByArea() {
-		OLATResource course1 = JunitTestHelper.createRandomResource();
+		RepositoryEntry course1 =  JunitTestHelper.createAndPersistRepositoryEntry();
 
 		// create groups without waitinglist
 		BusinessGroup g1 = businessGroupService.createBusinessGroup(null, "g1", null, 0, 10, false, false,
@@ -177,9 +177,9 @@ public class CourseGroupManagementTest extends OlatTestCase {
 		securityManager.addIdentityToSecurityGroup(id2, g2.getPartipiciantGroup());
 		securityManager.addIdentityToSecurityGroup(id3, g1.getOwnerGroup());
 		// areas
-		BGArea a1 = areaManager.createAndPersistBGArea("a1", "desca1", course1);
-		BGArea a2 = areaManager.createAndPersistBGArea("a2", null, course1);
-		BGArea a3 = areaManager.createAndPersistBGArea("a3", null, course1);
+		BGArea a1 = areaManager.createAndPersistBGArea("a1", "desca1", course1.getOlatResource());
+		BGArea a2 = areaManager.createAndPersistBGArea("a2", null, course1.getOlatResource());
+		BGArea a3 = areaManager.createAndPersistBGArea("a3", null, course1.getOlatResource());
 		areaManager.addBGToBGArea(g1, a1);
 		areaManager.addBGToBGArea(g2, a1);
 		areaManager.addBGToBGArea(g1, a2);
diff --git a/src/test/java/org/olat/course/nodes/en/EnrollmentManagerTest.java b/src/test/java/org/olat/course/nodes/en/EnrollmentManagerTest.java
index 3cf6beb59e3..57ee89a4e49 100644
--- a/src/test/java/org/olat/course/nodes/en/EnrollmentManagerTest.java
+++ b/src/test/java/org/olat/course/nodes/en/EnrollmentManagerTest.java
@@ -41,7 +41,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
 
-import org.apache.log4j.Logger;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -59,6 +58,8 @@ import org.olat.core.id.IdentityEnvironment;
 import org.olat.core.id.OLATResourceable;
 import org.olat.core.id.context.BusinessControl;
 import org.olat.core.id.context.ContextEntry;
+import org.olat.core.logging.OLog;
+import org.olat.core.logging.Tracing;
 import org.olat.core.util.Util;
 import org.olat.core.util.resource.OresHelper;
 import org.olat.course.CourseFactory;
@@ -69,7 +70,7 @@ import org.olat.course.run.userview.UserCourseEnvironment;
 import org.olat.course.run.userview.UserCourseEnvironmentImpl;
 import org.olat.group.BusinessGroup;
 import org.olat.group.BusinessGroupService;
-import org.olat.resource.OLATResource;
+import org.olat.repository.RepositoryEntry;
 import org.olat.test.JunitTestHelper;
 import org.olat.test.OlatTestCase;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -83,7 +84,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 public class EnrollmentManagerTest extends OlatTestCase implements WindowControl {
 	//
-	private static Logger log = Logger.getLogger(EnrollmentManagerTest.class.getName());
+	private static OLog log = Tracing.createLoggerFor(EnrollmentManagerTest.class);
 	/*
 	 * ::Test Setup::
 	 */
@@ -114,7 +115,7 @@ public class EnrollmentManagerTest extends OlatTestCase implements WindowControl
 			String bgWithWaitingListDesc = "some short description for Group with WaitingList";
 			Boolean enableWaitinglist = new Boolean(true);
 			Boolean enableAutoCloseRanks = new Boolean(true);
-			OLATResource resource = JunitTestHelper.createRandomResource();
+			RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 			System.out.println("testAddToWaitingListAndFireEvent: resource=" + resource);
 			bgWithWaitingList = businessGroupService.createBusinessGroup(id1, bgWithWaitingListName,
 					bgWithWaitingListDesc, -1, -1, enableWaitinglist, enableAutoCloseRanks, resource);
@@ -300,10 +301,6 @@ public class EnrollmentManagerTest extends OlatTestCase implements WindowControl
 	}
 
 	public WindowBackOffice getWindowBackOffice() {
-		// TODO Auto-generated method stub
 		return null;
 	};
-
-
-}
-
+}
\ No newline at end of file
diff --git a/src/test/java/org/olat/course/statistic/weekly/TestWeeklyStatisticManager_fillGaps.java b/src/test/java/org/olat/course/statistic/weekly/TestWeeklyStatisticManager_fillGaps.java
index c1f93fa87ae..95fd80ce4eb 100644
--- a/src/test/java/org/olat/course/statistic/weekly/TestWeeklyStatisticManager_fillGaps.java
+++ b/src/test/java/org/olat/course/statistic/weekly/TestWeeklyStatisticManager_fillGaps.java
@@ -24,18 +24,21 @@
 */
 package org.olat.course.statistic.weekly;
 
-import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.List;
 
-import junit.framework.TestCase;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
 
-public class TestWeeklyStatisticManager_fillGaps extends TestCase {
+
+public class TestWeeklyStatisticManager_fillGaps {
 
 	private WeeklyStatisticManager manager_;
 
-	@Override
-	protected void setUp() throws Exception {
+
+	@Before
+	public void setUp() throws Exception {
 		manager_ = new WeeklyStatisticManager();
 	}
 
@@ -44,10 +47,12 @@ public class TestWeeklyStatisticManager_fillGaps extends TestCase {
 		assertListEquals(expectedOutput, resultingTestset);
 	}
 	
+	@Test
 	public void testNull() throws Exception {
-		assertNull(manager_.fillGapsInColumnHeaders(null));
+		Assert.assertNull(manager_.fillGapsInColumnHeaders(null));
 	}
 	
+	@Test
 	public void testOne() throws Exception {
 		for(int i=0; i<50; i++) {
 			String s;
@@ -57,26 +62,30 @@ public class TestWeeklyStatisticManager_fillGaps extends TestCase {
 				s = "2010-"+i;
 			}
 			List<String> resultingTestset = manager_.fillGapsInColumnHeaders(createList(s));
-			assertNull(resultingTestset);
+			Assert.assertNull(resultingTestset);
 		}
 	}
 
+	@Test
 	public void testSimple() throws Exception {
 		runTest(
 				createList("2010-01", "2010-02", "2010-03"), 
 				createList("2010-01", "2010-02", "2010-03"));
 	}
 
+	@Test
 	public void testYearChange() throws Exception {
 		runTest(
 				createList("2009-50", "2010-01", "2010-02", "2010-03"), 
 				createList("2009-50", "2009-51", "2009-52", "2009-53", "2010-01", "2010-02", "2010-03"));
 	}
 	
+	@Test
 	public void testAllYearChanges() throws Exception {
 		for(int i=2000; i<2200; i++) {
 			List<String> input = createList(i+"-50", (i+1)+"-03");
 			List<String> output = manager_.fillGapsInColumnHeaders(input);
+			Assert.assertNotNull(output);
 			
 			List<String> outputVariant1 = createList(i+"-50", i+"-51", i+"-52", (i+1)+"-01", (i+1)+"-02", (i+1)+"-03");
 			List<String> outputVariant2 = createList(i+"-50", i+"-51", i+"-52", i+"-53", (i+1)+"-01", (i+1)+"-02", (i+1)+"-03");
@@ -93,49 +102,54 @@ public class TestWeeklyStatisticManager_fillGaps extends TestCase {
 			} else if (!matchesVariant1 && !matchesVariant2 && matchesVariant3) {
 				// perfecto
 			} else {
-				fail("failed with input "+input);
+				Assert.fail("failed with input "+input);
 			}
 		}
 	}
 	
+	@Test
 	public void testWronglyFormatted() throws Exception {
 		runTest(
 				createList("2010-1", "2010-2", "2010-4"), 
 				createList("2010-1", "2010-02", "2010-2", "2010-03", "2010-04", "2010-4"));
 	}
 
+	@Test
 	public void testGapsA() throws Exception {
 		runTest(
 				createList("2010-01", "2010-02", "2010-04"), 
 				createList("2010-01", "2010-02", "2010-03", "2010-04"));
 	}
 
+	@Test
 	public void testGapsB() throws Exception {
 		runTest(
 				createList("2010-01", "2010-02", "2010-04", "2010-07"), 
 				createList("2010-01", "2010-02", "2010-03", "2010-04", "2010-05", "2010-06", "2010-07"));
 	}
 
+	@Test
 	public void testBigGap() throws Exception {
 		runTest(
 				createList("2009-50", "2010-12"), 
 				createList("2009-50", "2009-51", "2009-52", "2009-53", "2010-01", "2010-02", "2010-03", "2010-04", "2010-05", "2010-06", "2010-07", "2010-08", "2010-09", "2010-10", "2010-11", "2010-12"));
 	}
 
+	@Test
 	public void testWrongInputParams() throws Exception {
 		List<String> resultingTestset = manager_.fillGapsInColumnHeaders(createList("2010-50", "2010-12"));
-		assertNull(resultingTestset);
+		Assert.assertNull(resultingTestset);
 	}
 
 	private void assertListEquals(List<String> testset, List<String> resultingTestset) {
 		if (testset==null || resultingTestset==null) {
 			throw new IllegalArgumentException("testset and resultingtestset must not be empty");
 		}
-		assertEquals("size mismatch", testset.size(), resultingTestset.size());
+		Assert.assertEquals("size mismatch", testset.size(), resultingTestset.size());
 		for(int i=0; i<testset.size(); i++) {
 			String expectedStr = testset.get(i);
 			String actualStr = resultingTestset.get(i);
-			assertEquals("string at position "+i+" mismatch", expectedStr, actualStr);
+			Assert.assertEquals("string at position "+i+" mismatch", expectedStr, actualStr);
 		}
 	}
 
diff --git a/src/test/java/org/olat/group/test/BGAreaManagerTest.java b/src/test/java/org/olat/group/test/BGAreaManagerTest.java
index 7af3cfccb5e..77d092cd017 100644
--- a/src/test/java/org/olat/group/test/BGAreaManagerTest.java
+++ b/src/test/java/org/olat/group/test/BGAreaManagerTest.java
@@ -53,6 +53,7 @@ import org.olat.group.BusinessGroup;
 import org.olat.group.BusinessGroupService;
 import org.olat.group.area.BGArea;
 import org.olat.group.area.BGAreaManager;
+import org.olat.repository.RepositoryEntry;
 import org.olat.resource.OLATResource;
 import org.olat.test.JunitTestHelper;
 import org.olat.test.OlatTestCase;
@@ -220,9 +221,9 @@ public class BGAreaManagerTest extends OlatTestCase {
 	@Test
 	public void addBGToBGArea() {
 		//create a resource, an area, a group
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		String areaName = UUID.randomUUID().toString();
-		BGArea area = areaManager.createAndPersistBGArea("area-" + areaName, "description:" + areaName, resource);
+		BGArea area = areaManager.createAndPersistBGArea("area-" + areaName, "description:" + areaName, resource.getOlatResource());
 		BusinessGroup group = businessGroupService.createBusinessGroup(null, "area-group", "area-group-desc", 0, -1, false, false, resource);
 
 		dbInstance.commitAndCloseSession();
@@ -233,10 +234,10 @@ public class BGAreaManagerTest extends OlatTestCase {
 	
 	@Test
 	public void deleteBGArea() {
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		String areaName = UUID.randomUUID().toString();
-		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource);
-		BGArea area2 = areaManager.createAndPersistBGArea("area-2-" + areaName, "description:" + areaName, resource);
+		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource.getOlatResource());
+		BGArea area2 = areaManager.createAndPersistBGArea("area-2-" + areaName, "description:" + areaName, resource.getOlatResource());
 		
 		BusinessGroup group1 = businessGroupService.createBusinessGroup(null, "area-1-group", "area-group-desc", 0, -1, false, false, resource);
 		BusinessGroup group2 = businessGroupService.createBusinessGroup(null, "area-2-group", "area-group-desc", 0, -1, false, false, resource);
@@ -264,11 +265,11 @@ public class BGAreaManagerTest extends OlatTestCase {
 	@Test
 	public void addAndFindByResource() {
 		//create a resource, an area, a group
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		String areaName = UUID.randomUUID().toString();
-		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource);
-		BGArea area2 = areaManager.createAndPersistBGArea("area-2-" + areaName, "description:" + areaName, resource);
-		BGArea area3 = areaManager.createAndPersistBGArea("area-3-" + areaName, "description:" + areaName, resource);
+		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource.getOlatResource());
+		BGArea area2 = areaManager.createAndPersistBGArea("area-2-" + areaName, "description:" + areaName, resource.getOlatResource());
+		BGArea area3 = areaManager.createAndPersistBGArea("area-3-" + areaName, "description:" + areaName, resource.getOlatResource());
 
 		BusinessGroup group1 = businessGroupService.createBusinessGroup(null, "area-1-group", "area-group-desc", 0, -1, false, false, resource);
 		BusinessGroup group2 = businessGroupService.createBusinessGroup(null, "area-2-group", "area-group-desc", 0, -1, false, false, resource);
@@ -282,11 +283,11 @@ public class BGAreaManagerTest extends OlatTestCase {
 		dbInstance.commitAndCloseSession();
 		
 		//count
-		int numOfAreas = areaManager.countBGAreasInContext(resource);
+		int numOfAreas = areaManager.countBGAreasInContext(resource.getOlatResource());
 		Assert.assertEquals(3, numOfAreas);
 		
 		//find areas
-		List<BGArea> areas = areaManager.findBGAreasInContext(resource);
+		List<BGArea> areas = areaManager.findBGAreasInContext(resource.getOlatResource());
 		Assert.assertNotNull(areas);
 		Assert.assertEquals(3, areas.size());
 		Assert.assertTrue(areas.contains(area1));
@@ -297,10 +298,10 @@ public class BGAreaManagerTest extends OlatTestCase {
 	@Test
 	public void addAndFindByGroup() {
 		//create a resource, an area, a group
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		String areaName = UUID.randomUUID().toString();
-		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource);
-		BGArea area2 = areaManager.createAndPersistBGArea("area-2-" + areaName, "description:" + areaName, resource);
+		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource.getOlatResource());
+		BGArea area2 = areaManager.createAndPersistBGArea("area-2-" + areaName, "description:" + areaName, resource.getOlatResource());
 
 		BusinessGroup group1 = businessGroupService.createBusinessGroup(null, "area-1-group", "area-group-desc", 0, -1, false, false, resource);
 		BusinessGroup group2 = businessGroupService.createBusinessGroup(null, "area-2-group", "area-group-desc", 0, -1, false, false, resource);
@@ -331,10 +332,10 @@ public class BGAreaManagerTest extends OlatTestCase {
 	@Test
 	public void addAndFindByGroups() {
 		//create a resource, an area, a group
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		String areaName = UUID.randomUUID().toString();
-		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource);
-		BGArea area2 = areaManager.createAndPersistBGArea("area-2-" + areaName, "description:" + areaName, resource);
+		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource.getOlatResource());
+		BGArea area2 = areaManager.createAndPersistBGArea("area-2-" + areaName, "description:" + areaName, resource.getOlatResource());
 
 		BusinessGroup group1 = businessGroupService.createBusinessGroup(null, "area-1-group", "area-group-desc", 0, -1, false, false, resource);
 		BusinessGroup group2 = businessGroupService.createBusinessGroup(null, "area-2-group", "area-group-desc", 0, -1, false, false, resource);
@@ -386,9 +387,9 @@ public class BGAreaManagerTest extends OlatTestCase {
 	@Test
 	public void addFindAndDeleteRelation() {
 		//create a resource, an area, a group
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		String areaName = UUID.randomUUID().toString();
-		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource);
+		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource.getOlatResource());
 		//create 2 groups
 		BusinessGroup group1 = businessGroupService.createBusinessGroup(null, "area-1-group", "area-group-desc", 0, -1, false, false, resource);
 		BusinessGroup group2 = businessGroupService.createBusinessGroup(null, "area-2-group", "area-group-desc", 0, -1, false, false, resource);
@@ -420,11 +421,11 @@ public class BGAreaManagerTest extends OlatTestCase {
 	@Test
 	public void findGroupsByAreas() {
 		//create a resource, 3 area and 2 group
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		String areaName = UUID.randomUUID().toString();
-		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource);
-		BGArea area2 = areaManager.createAndPersistBGArea("area-2-" + areaName, "description:" + areaName, resource);
-		BGArea area3 = areaManager.createAndPersistBGArea("area-3-" + areaName, "description:" + areaName, resource);
+		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource.getOlatResource());
+		BGArea area2 = areaManager.createAndPersistBGArea("area-2-" + areaName, "description:" + areaName, resource.getOlatResource());
+		BGArea area3 = areaManager.createAndPersistBGArea("area-3-" + areaName, "description:" + areaName, resource.getOlatResource());
 		//create 2 groups
 		BusinessGroup group1 = businessGroupService.createBusinessGroup(null, "area-1-group", "area-group-desc", 0, -1, false, false, resource);
 		BusinessGroup group2 = businessGroupService.createBusinessGroup(null, "area-2-group", "area-group-desc", 0, -1, false, false, resource);
@@ -462,11 +463,11 @@ public class BGAreaManagerTest extends OlatTestCase {
 	@Test
 	public void countBGAreasOfBusinessGroups() {
 		//create a resource, 3 area and 2 group
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		String areaName = UUID.randomUUID().toString();
-		BGArea area1 = areaManager.createAndPersistBGArea("count-1-" + areaName, "description:" + areaName, resource);
-		BGArea area2 = areaManager.createAndPersistBGArea("count-2-" + areaName, "description:" + areaName, resource);
-		BGArea area3 = areaManager.createAndPersistBGArea("count-3-" + areaName, "description:" + areaName, resource);
+		BGArea area1 = areaManager.createAndPersistBGArea("count-1-" + areaName, "description:" + areaName, resource.getOlatResource());
+		BGArea area2 = areaManager.createAndPersistBGArea("count-2-" + areaName, "description:" + areaName, resource.getOlatResource());
+		BGArea area3 = areaManager.createAndPersistBGArea("count-3-" + areaName, "description:" + areaName, resource.getOlatResource());
 		//create 2 groups
 		BusinessGroup group1 = businessGroupService.createBusinessGroup(null, "count-1-group", "count-group-desc", 0, -1, false, false, resource);
 		BusinessGroup group2 = businessGroupService.createBusinessGroup(null, "count-2-group", "count-group-desc", 0, -1, false, false, resource);
@@ -497,10 +498,10 @@ public class BGAreaManagerTest extends OlatTestCase {
 	@Test
 	public void addAndDeleteRelations() {
 		//create a resource, an area, a group
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		String areaName = UUID.randomUUID().toString();
-		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource);
-		BGArea area2 = areaManager.createAndPersistBGArea("area-2-" + areaName, "description:" + areaName, resource);
+		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource.getOlatResource());
+		BGArea area2 = areaManager.createAndPersistBGArea("area-2-" + areaName, "description:" + areaName, resource.getOlatResource());
 		//create 2 groups
 		BusinessGroup group1 = businessGroupService.createBusinessGroup(null, "area-1-group", "area-group-desc", 0, -1, false, false, resource);
 		BusinessGroup group2 = businessGroupService.createBusinessGroup(null, "area-2-group", "area-group-desc", 0, -1, false, false, resource);
@@ -536,10 +537,10 @@ public class BGAreaManagerTest extends OlatTestCase {
 		Identity id2 = JunitTestHelper.createAndPersistIdentityAsUser("attendee-2-" + UUID.randomUUID().toString());
 		Identity id3 = JunitTestHelper.createAndPersistIdentityAsUser("attendee-3-" + UUID.randomUUID().toString());
 		//create a resource, an area, a group
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		String areaName = UUID.randomUUID().toString();
-		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource);
-		BGArea area2 = areaManager.createAndPersistBGArea("area-2-" + areaName, "description:" + areaName, resource);
+		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource.getOlatResource());
+		BGArea area2 = areaManager.createAndPersistBGArea("area-2-" + areaName, "description:" + areaName, resource.getOlatResource());
 		//create 2 groups
 		BusinessGroup group1 = businessGroupService.createBusinessGroup(null, "area-1-group", "area-group-desc", 0, -1, false, false, resource);
 		BusinessGroup group2 = businessGroupService.createBusinessGroup(null, "area-2-group", "area-group-desc", 0, -1, false, false, resource);
@@ -559,20 +560,20 @@ public class BGAreaManagerTest extends OlatTestCase {
 		dbInstance.commitAndCloseSession();
 		
 		//find with resource
-		List<BusinessGroup> groupId1 = areaManager.findBusinessGroupsOfAreaAttendedBy(id1, null, resource);
+		List<BusinessGroup> groupId1 = areaManager.findBusinessGroupsOfAreaAttendedBy(id1, null, resource.getOlatResource());
 		Assert.assertNotNull(groupId1);
 		Assert.assertEquals(1, groupId1.size());
 		Assert.assertTrue(groupId1.contains(group1));
 		
 		//find nothing with name and resource
 		List<Long> area2Keys = Collections.singletonList(area2.getKey());
-		List<BusinessGroup> groupId1Area2 = areaManager.findBusinessGroupsOfAreaAttendedBy(id1, area2Keys, resource);
+		List<BusinessGroup> groupId1Area2 = areaManager.findBusinessGroupsOfAreaAttendedBy(id1, area2Keys, resource.getOlatResource());
 		Assert.assertNotNull(groupId1Area2);
 		Assert.assertEquals(0, groupId1Area2.size());
 		
 		//find groups id 2 with name and resource
 		List<Long> area1Keys = Collections.singletonList(area1.getKey());
-		List<BusinessGroup> groupId2Area1 = areaManager.findBusinessGroupsOfAreaAttendedBy(id2, area1Keys, resource);
+		List<BusinessGroup> groupId2Area1 = areaManager.findBusinessGroupsOfAreaAttendedBy(id2, area1Keys, resource.getOlatResource());
 		Assert.assertNotNull(groupId2Area1);
 		Assert.assertEquals(2, groupId2Area1.size());
 		Assert.assertTrue(groupId2Area1.contains(group2));
@@ -583,11 +584,11 @@ public class BGAreaManagerTest extends OlatTestCase {
 	public void isIdentityInBGArea() {
 		Identity id1 = JunitTestHelper.createAndPersistIdentityAsUser("attendee-1-" + UUID.randomUUID().toString());
 		//create a resource, an area, a group
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		String areaName = UUID.randomUUID().toString();
-		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource);
-		BGArea area2 = areaManager.createAndPersistBGArea("area-2-" + areaName, "description:" + areaName, resource);
-		BGArea area3 = areaManager.createAndPersistBGArea("area-3-" + areaName, "description:" + areaName, resource);
+		BGArea area1 = areaManager.createAndPersistBGArea("area-1-" + areaName, "description:" + areaName, resource.getOlatResource());
+		BGArea area2 = areaManager.createAndPersistBGArea("area-2-" + areaName, "description:" + areaName, resource.getOlatResource());
+		BGArea area3 = areaManager.createAndPersistBGArea("area-3-" + areaName, "description:" + areaName, resource.getOlatResource());
 		//create 2 groups
 		BusinessGroup group1 = businessGroupService.createBusinessGroup(null, "area-1-group", "area-group-desc", 0, -1, false, false, resource);
 		BusinessGroup group2 = businessGroupService.createBusinessGroup(null, "area-2-group", "area-group-desc", 0, -1, false, false, resource);
@@ -605,24 +606,24 @@ public class BGAreaManagerTest extends OlatTestCase {
 		dbInstance.commitAndCloseSession();
 		
 		//check in area 1
-		boolean testArea1 = areaManager.isIdentityInBGArea(id1, "area-1-" + areaName, null, resource);
+		boolean testArea1 = areaManager.isIdentityInBGArea(id1, "area-1-" + areaName, null, resource.getOlatResource());
 		Assert.assertTrue(testArea1);
 		//check in area 1
-		boolean testArea2 = areaManager.isIdentityInBGArea(id1, "area-2-" + areaName, null, resource);
+		boolean testArea2 = areaManager.isIdentityInBGArea(id1, "area-2-" + areaName, null, resource.getOlatResource());
 		Assert.assertTrue(testArea2);
 		//check in area 1
-		boolean testArea3 = areaManager.isIdentityInBGArea(id1, "area-3-" + areaName, null, resource);
+		boolean testArea3 = areaManager.isIdentityInBGArea(id1, "area-3-" + areaName, null, resource.getOlatResource());
 		Assert.assertFalse(testArea3);
 		
 		//check with keys
 		//check in area 1
-		boolean testArea4 = areaManager.isIdentityInBGArea(id1, null, area1.getKey(), resource);
+		boolean testArea4 = areaManager.isIdentityInBGArea(id1, null, area1.getKey(), resource.getOlatResource());
 		Assert.assertTrue(testArea4);
 		//check in area 1
-		boolean testArea5 = areaManager.isIdentityInBGArea(id1, null, area2.getKey(), resource);
+		boolean testArea5 = areaManager.isIdentityInBGArea(id1, null, area2.getKey(), resource.getOlatResource());
 		Assert.assertTrue(testArea5);
 		//check in area 1
-		boolean testArea6 = areaManager.isIdentityInBGArea(id1, null, area3.getKey(), resource);
+		boolean testArea6 = areaManager.isIdentityInBGArea(id1, null, area3.getKey(), resource.getOlatResource());
 		Assert.assertFalse(testArea6);
 	}
 	
diff --git a/src/test/java/org/olat/group/test/BGRightManagerTest.java b/src/test/java/org/olat/group/test/BGRightManagerTest.java
index 8ab0397b468..416b315d236 100644
--- a/src/test/java/org/olat/group/test/BGRightManagerTest.java
+++ b/src/test/java/org/olat/group/test/BGRightManagerTest.java
@@ -51,7 +51,7 @@ import org.olat.group.BusinessGroupService;
 import org.olat.group.right.BGRightManager;
 import org.olat.group.right.BGRights;
 import org.olat.group.right.BGRightsRole;
-import org.olat.resource.OLATResource;
+import org.olat.repository.RepositoryEntry;
 import org.olat.test.JunitTestHelper;
 import org.olat.test.OlatTestCase;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -115,7 +115,7 @@ public class BGRightManagerTest extends OlatTestCase {
 	 */
 	@Test
 	public void addRight() {
-		OLATResource c1 = JunitTestHelper.createRandomResource();
+		RepositoryEntry c1 =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup g1 = businessGroupService.createBusinessGroup(null, "addRight", null, -1, -1, false, false, c1);
 		rightManager.addBGRight("test-right", g1, BGRightsRole.participant);
 		dbInstance.commitAndCloseSession();
@@ -123,9 +123,9 @@ public class BGRightManagerTest extends OlatTestCase {
 	
 	@Test
 	public void addRightWithResource() {
-		OLATResource c1 = JunitTestHelper.createRandomResource();
+		RepositoryEntry c1 =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup g1 = businessGroupService.createBusinessGroup(null, "addRight", null, -1, -1, false, false, c1);
-		rightManager.addBGRight("test-right", g1, c1, BGRightsRole.participant);
+		rightManager.addBGRight("test-right", g1, c1.getOlatResource(), BGRightsRole.participant);
 		dbInstance.commitAndCloseSession();
 	}
 	
@@ -133,17 +133,17 @@ public class BGRightManagerTest extends OlatTestCase {
 	public void hasBGRight() {
 		//create a right for the identity
 		Identity identity = JunitTestHelper.createAndPersistIdentityAsUser("has-right-1-" + UUID.randomUUID().toString());
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup group = businessGroupService.createBusinessGroup(null, "hasBGRight", null, -1, -1, false, false, resource);
 		securityManager.addIdentityToSecurityGroup(identity, group.getPartipiciantGroup());
 		rightManager.addBGRight("bgr.has-right", group, BGRightsRole.participant);
 		dbInstance.commitAndCloseSession();
 		
 		//check if the right is set
-		boolean right = rightManager.hasBGRight("bgr.has-right", identity, resource);
+		boolean right = rightManager.hasBGRight("bgr.has-right", identity, resource.getOlatResource());
 		Assert.assertTrue(right);
 		//check if a dummy is not set
-		boolean notright = rightManager.hasBGRight("bgrblabla", identity, resource);
+		boolean notright = rightManager.hasBGRight("bgrblabla", identity, resource.getOlatResource());
 		Assert.assertFalse(notright);
 	}
 	
@@ -151,17 +151,17 @@ public class BGRightManagerTest extends OlatTestCase {
 	public void hasBGRightWithResource_participant() {
 		//create a right for the identity
 		Identity identity = JunitTestHelper.createAndPersistIdentityAsUser("has-right-2-" + UUID.randomUUID().toString());
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup group = businessGroupService.createBusinessGroup(null, "hasBGRight", null, -1, -1, false, false, resource);
 		securityManager.addIdentityToSecurityGroup(identity, group.getPartipiciantGroup());
-		rightManager.addBGRight("bgr.has-right", group, resource, BGRightsRole.participant);
+		rightManager.addBGRight("bgr.has-right", group, resource.getOlatResource(), BGRightsRole.participant);
 		dbInstance.commitAndCloseSession();
 		
 		//check if the right is set
-		boolean right = rightManager.hasBGRight("bgr.has-right", identity, resource);
+		boolean right = rightManager.hasBGRight("bgr.has-right", identity, resource.getOlatResource());
 		Assert.assertTrue(right);
 		//check if a dummy is not set
-		boolean notright = rightManager.hasBGRight("bgrblabla", identity, resource);
+		boolean notright = rightManager.hasBGRight("bgrblabla", identity, resource.getOlatResource());
 		Assert.assertFalse(notright);
 	}
 	
@@ -169,26 +169,26 @@ public class BGRightManagerTest extends OlatTestCase {
 	public void hasBGRightWithResource_tutor() {
 		//create 2 rights for the identity
 		Identity identity = JunitTestHelper.createAndPersistIdentityAsUser("tp-rights-" + UUID.randomUUID().toString());
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup group = businessGroupService.createBusinessGroup(null, "tpBGRight", null, -1, -1, false, false, resource);
 		securityManager.addIdentityToSecurityGroup(identity, group.getOwnerGroup());
-		rightManager.addBGRight("bgr.right1", group, resource, BGRightsRole.tutor);
+		rightManager.addBGRight("bgr.right1", group, resource.getOlatResource(), BGRightsRole.tutor);
 		dbInstance.commitAndCloseSession();
 		
 		//check if the rights are set
 		List<String> rights = rightManager.findBGRights(group, BGRightsRole.tutor);
 		Assert.assertEquals(1, rights.size());
-		Assert.assertTrue(rightManager.hasBGRight("bgr.right1", identity, resource));
+		Assert.assertTrue(rightManager.hasBGRight("bgr.right1", identity, resource.getOlatResource()));
 	}
 	
 	@Test
 	public void hasBGRightWithResource_tutor_asParticipant() {
 		//create 2 rights for the identity
 		Identity identity = JunitTestHelper.createAndPersistIdentityAsUser("tp-rights-" + UUID.randomUUID().toString());
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup group = businessGroupService.createBusinessGroup(null, "tpBGRight", null, -1, -1, false, false, resource);
 		securityManager.addIdentityToSecurityGroup(identity, group.getPartipiciantGroup());
-		rightManager.addBGRight("bgr.right1", group, resource, BGRightsRole.tutor);
+		rightManager.addBGRight("bgr.right1", group, resource.getOlatResource(), BGRightsRole.tutor);
 		dbInstance.commitAndCloseSession();
 		
 		//check if the rights are set
@@ -196,7 +196,7 @@ public class BGRightManagerTest extends OlatTestCase {
 		Assert.assertEquals(1, rights.size());
 		Assert.assertTrue(rights.contains("bgr.right1"));
 		//check that a participant cannot have a tutor right
-		Assert.assertFalse(rightManager.hasBGRight("bgr.right1", identity, resource));
+		Assert.assertFalse(rightManager.hasBGRight("bgr.right1", identity, resource.getOlatResource()));
 	}
 	
 	@Test
@@ -205,14 +205,14 @@ public class BGRightManagerTest extends OlatTestCase {
 		Identity id1 = JunitTestHelper.createAndPersistIdentityAsUser("tp-rights-" + UUID.randomUUID().toString());
 		Identity id2 = JunitTestHelper.createAndPersistIdentityAsUser("tp-rights-" + UUID.randomUUID().toString());
 		Identity id3 = JunitTestHelper.createAndPersistIdentityAsUser("tp-rights-" + UUID.randomUUID().toString());
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup group = businessGroupService.createBusinessGroup(null, "tpBGRight", null, -1, -1, false, false, resource);
 		securityManager.addIdentityToSecurityGroup(id1, group.getPartipiciantGroup());
 		securityManager.addIdentityToSecurityGroup(id2, group.getOwnerGroup());
 		securityManager.addIdentityToSecurityGroup(id2, group.getPartipiciantGroup());
 		securityManager.addIdentityToSecurityGroup(id3, group.getOwnerGroup());
-		rightManager.addBGRight("bgr.right1", group, resource, BGRightsRole.tutor);
-		rightManager.addBGRight("bgr.right2", group, resource, BGRightsRole.participant);
+		rightManager.addBGRight("bgr.right1", group, resource.getOlatResource(), BGRightsRole.tutor);
+		rightManager.addBGRight("bgr.right2", group, resource.getOlatResource(), BGRightsRole.participant);
 		dbInstance.commitAndCloseSession();
 		
 		//check if the rights are set
@@ -224,21 +224,21 @@ public class BGRightManagerTest extends OlatTestCase {
 		Assert.assertEquals("bgr.right2", participantRights.get(0));
 		
 		//id1 -> right2
-		Assert.assertFalse(rightManager.hasBGRight("bgr.right1", id1, resource));
-		Assert.assertTrue(rightManager.hasBGRight("bgr.right2", id1, resource));
+		Assert.assertFalse(rightManager.hasBGRight("bgr.right1", id1, resource.getOlatResource()));
+		Assert.assertTrue(rightManager.hasBGRight("bgr.right2", id1, resource.getOlatResource()));
 		//id2 -> right1 and right2
-		Assert.assertTrue(rightManager.hasBGRight("bgr.right1", id2, resource));
-		Assert.assertTrue(rightManager.hasBGRight("bgr.right2", id2, resource));
+		Assert.assertTrue(rightManager.hasBGRight("bgr.right1", id2, resource.getOlatResource()));
+		Assert.assertTrue(rightManager.hasBGRight("bgr.right2", id2, resource.getOlatResource()));
 		//id3 -> right2
-		Assert.assertTrue(rightManager.hasBGRight("bgr.right1", id3, resource));
-		Assert.assertFalse(rightManager.hasBGRight("bgr.right2", id3, resource));
+		Assert.assertTrue(rightManager.hasBGRight("bgr.right1", id3, resource.getOlatResource()));
+		Assert.assertFalse(rightManager.hasBGRight("bgr.right2", id3, resource.getOlatResource()));
 	}
 	
 	@Test
 	public void findBGRights() {
 		//create 2 rights for the identity
 		Identity identity = JunitTestHelper.createAndPersistIdentityAsUser("find-rights-" + UUID.randomUUID().toString());
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup group = businessGroupService.createBusinessGroup(null, "findBGRights", null, -1, -1, false, false, resource);
 		securityManager.addIdentityToSecurityGroup(identity, group.getPartipiciantGroup());
 		rightManager.addBGRight("bgr.findright1", group, BGRightsRole.participant);
@@ -257,7 +257,7 @@ public class BGRightManagerTest extends OlatTestCase {
 	public void hasBGRights() {
 		//create 2 rights for the identity
 		Identity identity = JunitTestHelper.createAndPersistIdentityAsUser("find-rights-" + UUID.randomUUID().toString());
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup group = businessGroupService.createBusinessGroup(null, "findBGRights", null, -1, -1, false, false, resource);
 		securityManager.addIdentityToSecurityGroup(identity, group.getPartipiciantGroup());
 		rightManager.addBGRight("bgr.findright1", group, BGRightsRole.participant);
@@ -277,7 +277,7 @@ public class BGRightManagerTest extends OlatTestCase {
 	public void removeBGRight() {
 		//create 2 rights for the identity
 		Identity identity = JunitTestHelper.createAndPersistIdentityAsUser("remove-rights-" + UUID.randomUUID().toString());
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup group = businessGroupService.createBusinessGroup(null, "removeBGRight", null, -1, -1, false, false, resource);
 		securityManager.addIdentityToSecurityGroup(identity, group.getPartipiciantGroup());
 		rightManager.addBGRight("bgr.removeright1", group, BGRightsRole.participant);
@@ -287,19 +287,19 @@ public class BGRightManagerTest extends OlatTestCase {
 		//check if the rights are set
 		List<String> rights = rightManager.findBGRights(group, BGRightsRole.participant);
 		Assert.assertEquals(2, rights.size());
-		Assert.assertTrue(rightManager.hasBGRight("bgr.removeright1", identity, resource));
-		Assert.assertTrue(rightManager.hasBGRight("bgr.removeright2", identity, resource));
+		Assert.assertTrue(rightManager.hasBGRight("bgr.removeright1", identity, resource.getOlatResource()));
+		Assert.assertTrue(rightManager.hasBGRight("bgr.removeright2", identity, resource.getOlatResource()));
 		
 		//remove right 1
-		rightManager.removeBGRight("bgr.removeright1", group, resource, BGRightsRole.participant);
+		rightManager.removeBGRight("bgr.removeright1", group, resource.getOlatResource(), BGRightsRole.participant);
 		dbInstance.commitAndCloseSession();
 		
 		//check if there is only 1 right
 		List<String> rightsAfterDelete = rightManager.findBGRights(group, BGRightsRole.participant);
 		Assert.assertEquals(1, rightsAfterDelete.size());
 		Assert.assertTrue(rightsAfterDelete.contains("bgr.removeright2"));
-		Assert.assertFalse(rightManager.hasBGRight("bgr.removeright1", identity, resource));
-		Assert.assertTrue(rightManager.hasBGRight("bgr.removeright2", identity, resource));
+		Assert.assertFalse(rightManager.hasBGRight("bgr.removeright1", identity, resource.getOlatResource()));
+		Assert.assertTrue(rightManager.hasBGRight("bgr.removeright2", identity, resource.getOlatResource()));
 	}
 	
 	@Test
@@ -307,27 +307,27 @@ public class BGRightManagerTest extends OlatTestCase {
 		//create 2 rights for the identity
 		Identity tutor = JunitTestHelper.createAndPersistIdentityAsUser("remove-rights-" + UUID.randomUUID().toString());
 		Identity participant = JunitTestHelper.createAndPersistIdentityAsUser("remove-rights-" + UUID.randomUUID().toString());
-		OLATResource resource1 = JunitTestHelper.createRandomResource();
-		OLATResource resource2 = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource1 =  JunitTestHelper.createAndPersistRepositoryEntry();
+		RepositoryEntry resource2 =  JunitTestHelper.createAndPersistRepositoryEntry();
 
 		BusinessGroup group = businessGroupService.createBusinessGroup(null, "removeBGRight", null, -1, -1, false, false, resource1);
 		businessGroupService.addResourceTo(group, resource2);
 		securityManager.addIdentityToSecurityGroup(tutor, group.getOwnerGroup());
 		securityManager.addIdentityToSecurityGroup(participant, group.getPartipiciantGroup());
-		rightManager.addBGRight("bgr.removeright1", group, resource1, BGRightsRole.tutor);
-		rightManager.addBGRight("bgr.removeright2", group, resource1, BGRightsRole.participant);
-		rightManager.addBGRight("bgr.dontrmght3", group, resource2, BGRightsRole.tutor);
-		rightManager.addBGRight("bgr.dontrmght4", group, resource2, BGRightsRole.participant);
+		rightManager.addBGRight("bgr.removeright1", group, resource1.getOlatResource(), BGRightsRole.tutor);
+		rightManager.addBGRight("bgr.removeright2", group, resource1.getOlatResource(), BGRightsRole.participant);
+		rightManager.addBGRight("bgr.dontrmght3", group, resource2.getOlatResource(), BGRightsRole.tutor);
+		rightManager.addBGRight("bgr.dontrmght4", group, resource2.getOlatResource(), BGRightsRole.participant);
 		dbInstance.commitAndCloseSession();
 		
 		//check if the rights are set
 		List<String> rights = rightManager.findBGRights(group, BGRightsRole.participant);
 		Assert.assertEquals(2, rights.size());
-		Assert.assertFalse(rightManager.hasBGRight("bgr.removeright1", participant, resource1));
-		Assert.assertTrue(rightManager.hasBGRight("bgr.removeright2", participant, resource1));
+		Assert.assertFalse(rightManager.hasBGRight("bgr.removeright1", participant, resource1.getOlatResource()));
+		Assert.assertTrue(rightManager.hasBGRight("bgr.removeright2", participant, resource1.getOlatResource()));
 		
 		//remove tutor right 1
-		rightManager.removeBGRight("bgr.removeright1", group, resource1, BGRightsRole.tutor);
+		rightManager.removeBGRight("bgr.removeright1", group, resource1.getOlatResource(), BGRightsRole.tutor);
 		dbInstance.commitAndCloseSession();
 		
 		//check if there is only 1 right
@@ -335,7 +335,7 @@ public class BGRightManagerTest extends OlatTestCase {
 		Assert.assertEquals(2, participantRights.size());
 		
 		//remove participant right 2
-		rightManager.removeBGRight("bgr.removeright2", group, resource1, BGRightsRole.participant);
+		rightManager.removeBGRight("bgr.removeright2", group, resource1.getOlatResource(), BGRightsRole.participant);
 		dbInstance.commitAndCloseSession();
 		
 		//check tutor rights
@@ -354,27 +354,27 @@ public class BGRightManagerTest extends OlatTestCase {
 		//create 2 rights for the identity
 		Identity tutor = JunitTestHelper.createAndPersistIdentityAsUser("remove-rights-" + UUID.randomUUID().toString());
 		Identity participant = JunitTestHelper.createAndPersistIdentityAsUser("remove-rights-" + UUID.randomUUID().toString());
-		OLATResource resource1 = JunitTestHelper.createRandomResource();
-		OLATResource resource2 = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource1 =  JunitTestHelper.createAndPersistRepositoryEntry();
+		RepositoryEntry resource2 =  JunitTestHelper.createAndPersistRepositoryEntry();
 
 		BusinessGroup group = businessGroupService.createBusinessGroup(null, "removeBGRight", null, -1, -1, false, false, resource1);
 		businessGroupService.addResourceTo(group, resource2);
 		securityManager.addIdentityToSecurityGroup(tutor, group.getOwnerGroup());
 		securityManager.addIdentityToSecurityGroup(participant, group.getPartipiciantGroup());
-		rightManager.addBGRight("bgr.removeright1", group, resource1, BGRightsRole.tutor);
-		rightManager.addBGRight("bgr.removeright2", group, resource1, BGRightsRole.participant);
-		rightManager.addBGRight("bgr.dontrmght3", group, resource2, BGRightsRole.tutor);
-		rightManager.addBGRight("bgr.dontrmght4", group, resource2, BGRightsRole.participant);
+		rightManager.addBGRight("bgr.removeright1", group, resource1.getOlatResource(), BGRightsRole.tutor);
+		rightManager.addBGRight("bgr.removeright2", group, resource1.getOlatResource(), BGRightsRole.participant);
+		rightManager.addBGRight("bgr.dontrmght3", group, resource2.getOlatResource(), BGRightsRole.tutor);
+		rightManager.addBGRight("bgr.dontrmght4", group, resource2.getOlatResource(), BGRightsRole.participant);
 		dbInstance.commitAndCloseSession();
 		
 		//check if the rights are set
 		List<String> rights = rightManager.findBGRights(group, BGRightsRole.participant);
 		Assert.assertEquals(2, rights.size());
-		Assert.assertFalse(rightManager.hasBGRight("bgr.removeright1", participant, resource1));
-		Assert.assertTrue(rightManager.hasBGRight("bgr.removeright2", participant, resource1));
+		Assert.assertFalse(rightManager.hasBGRight("bgr.removeright1", participant, resource1.getOlatResource()));
+		Assert.assertTrue(rightManager.hasBGRight("bgr.removeright2", participant, resource1.getOlatResource()));
 		
 		//remove tutor right 1
-		rightManager.removeBGRights(group, resource1, BGRightsRole.tutor);
+		rightManager.removeBGRights(group, resource1.getOlatResource(), BGRightsRole.tutor);
 		dbInstance.commitAndCloseSession();
 		
 		//check if there is only 1 right
@@ -382,7 +382,7 @@ public class BGRightManagerTest extends OlatTestCase {
 		Assert.assertEquals(2, participantRights.size());
 		
 		//remove participant right 2
-		rightManager.removeBGRights(group, resource1, BGRightsRole.participant);
+		rightManager.removeBGRights(group, resource1.getOlatResource(), BGRightsRole.participant);
 		dbInstance.commitAndCloseSession();
 		
 		//check tutor rights
@@ -398,38 +398,38 @@ public class BGRightManagerTest extends OlatTestCase {
 	@Test
 	public void findBGRights_wrapped() {
 		//create
-		OLATResource resource1 = JunitTestHelper.createRandomResource();
-		OLATResource resource2 = JunitTestHelper.createRandomResource();
-		OLATResource resource3 = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource1 =  JunitTestHelper.createAndPersistRepositoryEntry();
+		RepositoryEntry resource2 =  JunitTestHelper.createAndPersistRepositoryEntry();
+		RepositoryEntry resource3 =  JunitTestHelper.createAndPersistRepositoryEntry();
 
 		BusinessGroup group1 = businessGroupService.createBusinessGroup(null, "findRights", null, -1, -1, false, false, resource1);
 		businessGroupService.addResourceTo(group1, resource2);
 		BusinessGroup group2 = businessGroupService.createBusinessGroup(null, "findRights", null, -1, -1, false, false, resource3);
 
-		rightManager.addBGRight("bgr.fr1", group1, resource1, BGRightsRole.tutor);
-		rightManager.addBGRight("bgr.fr2", group1, resource1, BGRightsRole.participant);
-		rightManager.addBGRight("bgr.fr3", group2, resource1, BGRightsRole.tutor);
-		rightManager.addBGRight("bgr.fr4", group2, resource2, BGRightsRole.tutor);
-		rightManager.addBGRight("bgr.fr5", group2, resource3, BGRightsRole.participant);
+		rightManager.addBGRight("bgr.fr1", group1, resource1.getOlatResource(), BGRightsRole.tutor);
+		rightManager.addBGRight("bgr.fr2", group1, resource1.getOlatResource(), BGRightsRole.participant);
+		rightManager.addBGRight("bgr.fr3", group2, resource1.getOlatResource(), BGRightsRole.tutor);
+		rightManager.addBGRight("bgr.fr4", group2, resource2.getOlatResource(), BGRightsRole.tutor);
+		rightManager.addBGRight("bgr.fr5", group2, resource3.getOlatResource(), BGRightsRole.participant);
 		dbInstance.commitAndCloseSession();
 		
 		//check 
-		List<BGRights> rights1_1 = rightManager.findBGRights(Collections.singletonList(group1), resource1);
+		List<BGRights> rights1_1 = rightManager.findBGRights(Collections.singletonList(group1), resource1.getOlatResource());
 		Assert.assertNotNull(rights1_1);
 		Assert.assertEquals(2, rights1_1.size());
 
-		List<BGRights> rights2_2 = rightManager.findBGRights(Collections.singletonList(group2), resource2);
+		List<BGRights> rights2_2 = rightManager.findBGRights(Collections.singletonList(group2), resource2.getOlatResource());
 		Assert.assertNotNull(rights2_2);
 		Assert.assertEquals(1, rights2_2.size());
 		
-		List<BGRights> rights2_3 = rightManager.findBGRights(Collections.singletonList(group2), resource3);
+		List<BGRights> rights2_3 = rightManager.findBGRights(Collections.singletonList(group2), resource3.getOlatResource());
 		Assert.assertNotNull(rights2_3);
 		Assert.assertEquals(1, rights2_3.size());
 
 		List<BusinessGroup> groups = new ArrayList<BusinessGroup>();
 		groups.add(group1);
 		groups.add(group2);
-		List<BGRights> rightsAll_1 = rightManager.findBGRights(groups, resource1);
+		List<BGRights> rightsAll_1 = rightManager.findBGRights(groups, resource1.getOlatResource());
 		Assert.assertNotNull(rightsAll_1);
 		Assert.assertEquals(3, rightsAll_1.size());
 	}
@@ -438,21 +438,21 @@ public class BGRightManagerTest extends OlatTestCase {
 	public void removeUnkownRight() {
 		//create 2 rights for the identity
 		Identity identity = JunitTestHelper.createAndPersistIdentityAsUser("remove-rights-" + UUID.randomUUID().toString());
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup group = businessGroupService.createBusinessGroup(null, "removeBGRight", null, -1, -1, false, false, resource);
 		securityManager.addIdentityToSecurityGroup(identity, group.getPartipiciantGroup());
 		rightManager.addBGRight("bgr.removeright1", group, BGRightsRole.participant);
 		dbInstance.commitAndCloseSession();
 
 		//remove a dummy right which doesn't exists
-		rightManager.removeBGRight("bgr.removeblabla", group, resource, BGRightsRole.participant);
+		rightManager.removeBGRight("bgr.removeblabla", group, resource.getOlatResource(), BGRightsRole.participant);
 	}
 
 	/** BGContextManagerImpl:deleteBGContext() * */
 	@Test
 	public void testBGRights() {
-		OLATResource c1 = JunitTestHelper.createRandomResource();
-		OLATResource c2 = JunitTestHelper.createRandomResource();
+		RepositoryEntry c1 =  JunitTestHelper.createAndPersistRepositoryEntry();
+		RepositoryEntry c2 =  JunitTestHelper.createAndPersistRepositoryEntry();
 
 		BusinessGroup g1 = businessGroupService.createBusinessGroup(null, "g1", null, -1, -1, false, false, c1);
 		BusinessGroup g2 = businessGroupService.createBusinessGroup(null, "g2", null, -1, -1, false, false, c1);
@@ -473,13 +473,13 @@ public class BGRightManagerTest extends OlatTestCase {
 		Assert.assertEquals(4, policies.size()); // read, parti, archiving, courseeditor
 
 		DBFactory.getInstance().closeSession(); // simulate user clicks
-		assertFalse(rightManager.hasBGRight(CourseRights.RIGHT_ARCHIVING, id1, c2));
-		assertTrue(rightManager.hasBGRight(CourseRights.RIGHT_ARCHIVING, id1, c1));
-		assertTrue(rightManager.hasBGRight(CourseRights.RIGHT_ARCHIVING, id2, c1));
-		assertFalse(rightManager.hasBGRight(CourseRights.RIGHT_GROUPMANAGEMENT, id2, c1));
-		assertFalse(rightManager.hasBGRight(CourseRights.RIGHT_ARCHIVING, id3, c2));
-		assertTrue(rightManager.hasBGRight(CourseRights.RIGHT_COURSEEDITOR, id3, c2));
-		assertFalse(rightManager.hasBGRight(CourseRights.RIGHT_COURSEEDITOR, id3, c1));
+		assertFalse(rightManager.hasBGRight(CourseRights.RIGHT_ARCHIVING, id1, c2.getOlatResource()));
+		assertTrue(rightManager.hasBGRight(CourseRights.RIGHT_ARCHIVING, id1, c1.getOlatResource()));
+		assertTrue(rightManager.hasBGRight(CourseRights.RIGHT_ARCHIVING, id2, c1.getOlatResource()));
+		assertFalse(rightManager.hasBGRight(CourseRights.RIGHT_GROUPMANAGEMENT, id2, c1.getOlatResource()));
+		assertFalse(rightManager.hasBGRight(CourseRights.RIGHT_ARCHIVING, id3, c2.getOlatResource()));
+		assertTrue(rightManager.hasBGRight(CourseRights.RIGHT_COURSEEDITOR, id3, c2.getOlatResource()));
+		assertFalse(rightManager.hasBGRight(CourseRights.RIGHT_COURSEEDITOR, id3, c1.getOlatResource()));
 
 		/*
 		 * assertTrue(rm.hasBGRight(CourseRights.RIGHT_ARCHIVING, g1));
@@ -491,15 +491,15 @@ public class BGRightManagerTest extends OlatTestCase {
 		Assert.assertEquals(1, rightManager.findBGRights(g2, BGRightsRole.participant).size());
 
 		DBFactory.getInstance().closeSession(); // simulate user clicks
-		rightManager.removeBGRight(CourseRights.RIGHT_ARCHIVING, g1, c1, BGRightsRole.participant);
-		rightManager.removeBGRight(CourseRights.RIGHT_COURSEEDITOR, g1, c1, BGRightsRole.participant);
-		rightManager.removeBGRight(CourseRights.RIGHT_ARCHIVING, g2, c1, BGRightsRole.participant);
-		rightManager.removeBGRight(CourseRights.RIGHT_COURSEEDITOR, g3, c2, BGRightsRole.participant);
+		rightManager.removeBGRight(CourseRights.RIGHT_ARCHIVING, g1, c1.getOlatResource(), BGRightsRole.participant);
+		rightManager.removeBGRight(CourseRights.RIGHT_COURSEEDITOR, g1, c1.getOlatResource(), BGRightsRole.participant);
+		rightManager.removeBGRight(CourseRights.RIGHT_ARCHIVING, g2, c1.getOlatResource(), BGRightsRole.participant);
+		rightManager.removeBGRight(CourseRights.RIGHT_COURSEEDITOR, g3, c2.getOlatResource(), BGRightsRole.participant);
 
 		DBFactory.getInstance().closeSession(); // simulate user clicks
-		assertFalse(rightManager.hasBGRight(CourseRights.RIGHT_ARCHIVING, id1, c1));
-		assertFalse(rightManager.hasBGRight(CourseRights.RIGHT_ARCHIVING, id2, c1));
-		assertFalse(rightManager.hasBGRight(CourseRights.RIGHT_COURSEEDITOR, id3, c2));
+		assertFalse(rightManager.hasBGRight(CourseRights.RIGHT_ARCHIVING, id1, c1.getOlatResource()));
+		assertFalse(rightManager.hasBGRight(CourseRights.RIGHT_ARCHIVING, id2, c1.getOlatResource()));
+		assertFalse(rightManager.hasBGRight(CourseRights.RIGHT_COURSEEDITOR, id3, c2.getOlatResource()));
 
 		Assert.assertEquals(0, rightManager.findBGRights(g1, BGRightsRole.participant).size());
 		Assert.assertEquals(0, rightManager.findBGRights(g2, BGRightsRole.participant).size());
diff --git a/src/test/java/org/olat/group/test/BusinessGroupImportExportTest.java b/src/test/java/org/olat/group/test/BusinessGroupImportExportTest.java
index a6de45fc406..ecdedad82b4 100644
--- a/src/test/java/org/olat/group/test/BusinessGroupImportExportTest.java
+++ b/src/test/java/org/olat/group/test/BusinessGroupImportExportTest.java
@@ -36,7 +36,7 @@ import org.olat.group.area.BGArea;
 import org.olat.group.area.BGAreaManager;
 import org.olat.group.model.DisplayMembers;
 import org.olat.group.model.SearchBusinessGroupParams;
-import org.olat.resource.OLATResource;
+import org.olat.repository.RepositoryEntry;
 import org.olat.test.JunitTestHelper;
 import org.olat.test.OlatTestCase;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -64,7 +64,7 @@ public class BusinessGroupImportExportTest extends OlatTestCase {
 	
 	@Test
 	public void importLearningGroupsWithResource() throws URISyntaxException {
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource = JunitTestHelper.createAndPersistRepositoryEntry();
 		
 		URL input = BusinessGroupImportExportTest.class.getResource("learninggroupexport_2.xml");
 		File importXml = new File(input.toURI());
@@ -72,14 +72,14 @@ public class BusinessGroupImportExportTest extends OlatTestCase {
 		dbInstance.commitAndCloseSession();	
 		
 		//check if all three groups are imported
-		List<BusinessGroup> groups = businessGroupService.findBusinessGroups(null, resource, 0, -1);
+		List<BusinessGroup> groups = businessGroupService.findBusinessGroups(null, resource.getOlatResource(), 0, -1);
 		Assert.assertNotNull(groups);
 		Assert.assertEquals(3, groups.size());
 		
 		//get first group (members true, true, false) (no collaboration tools)
 		SearchBusinessGroupParams params = new SearchBusinessGroupParams();
 		params.setExactName("Export group 1");
-		List<BusinessGroup> group1List = businessGroupService.findBusinessGroups(params, resource, 0, -1);
+		List<BusinessGroup> group1List = businessGroupService.findBusinessGroups(params, resource.getOlatResource(), 0, -1);
 		Assert.assertNotNull(group1List);
 		Assert.assertEquals(1, group1List.size());
 		//check settings of the first group
@@ -107,7 +107,7 @@ public class BusinessGroupImportExportTest extends OlatTestCase {
 
 		//get third group (members true, true, true) (all collaboration tools)
 		params.setExactName("Export group 3");
-		List<BusinessGroup> group3List = businessGroupService.findBusinessGroups(params, resource, 0, -1);
+		List<BusinessGroup> group3List = businessGroupService.findBusinessGroups(params, resource.getOlatResource(), 0, -1);
 		Assert.assertNotNull(group3List);
 		Assert.assertEquals(1, group3List.size());
 		//check settings of the first group
@@ -138,7 +138,7 @@ public class BusinessGroupImportExportTest extends OlatTestCase {
 	
 	@Test
 	public void importLearningGroupsAndAreasWithResource() throws URISyntaxException {
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource = JunitTestHelper.createAndPersistRepositoryEntry();
 		
 		URL input = BusinessGroupImportExportTest.class.getResource("learninggroupexport_3.xml");
 		File importXml = new File(input.toURI());
@@ -146,17 +146,17 @@ public class BusinessGroupImportExportTest extends OlatTestCase {
 		dbInstance.commitAndCloseSession();
 		
 		//check if all three groups are imported
-		List<BusinessGroup> groups = businessGroupService.findBusinessGroups(null, resource, 0, -1);
+		List<BusinessGroup> groups = businessGroupService.findBusinessGroups(null, resource.getOlatResource(), 0, -1);
 		Assert.assertNotNull(groups);
 		Assert.assertEquals(3, groups.size());
 		
 		//check if all three areas are imported
-		List<BGArea> areas = areaManager.findBGAreasInContext(resource);
+		List<BGArea> areas = areaManager.findBGAreasInContext(resource.getOlatResource());
 		Assert.assertNotNull(areas);
 		Assert.assertEquals(3, areas.size());
 		
 		//check first area
-		BGArea area1 = areaManager.findBGArea("Area 1", resource);
+		BGArea area1 = areaManager.findBGArea("Area 1", resource.getOlatResource());
 		Assert.assertNotNull(area1);
 		Assert.assertEquals("Area 1", area1.getName());
 		Assert.assertEquals("<p>Area 1 description</p>", area1.getDescription());
@@ -168,7 +168,7 @@ public class BusinessGroupImportExportTest extends OlatTestCase {
 		Assert.assertTrue(groupArea1.get(0).getName().equals("Export group 2") || groupArea1.get(1).getName().equals("Export group 2"));
 
 		//check empty area
-		BGArea area3 = areaManager.findBGArea("Area 3", resource);
+		BGArea area3 = areaManager.findBGArea("Area 3", resource.getOlatResource());
 		Assert.assertNotNull(area1);
 		Assert.assertEquals("Area 3", area3.getName());
 		//check relation to groups
diff --git a/src/test/java/org/olat/group/test/BusinessGroupServiceTest.java b/src/test/java/org/olat/group/test/BusinessGroupServiceTest.java
index 640662206ca..33080d6e92e 100644
--- a/src/test/java/org/olat/group/test/BusinessGroupServiceTest.java
+++ b/src/test/java/org/olat/group/test/BusinessGroupServiceTest.java
@@ -49,7 +49,7 @@ import org.olat.core.util.Encoder;
 import org.olat.group.BusinessGroup;
 import org.olat.group.BusinessGroupService;
 import org.olat.group.model.SearchBusinessGroupParams;
-import org.olat.resource.OLATResource;
+import org.olat.repository.RepositoryEntry;
 import org.olat.test.JunitTestHelper;
 import org.olat.test.OlatTestCase;
 import org.olat.user.UserManager;
@@ -150,7 +150,7 @@ public class BusinessGroupServiceTest extends OlatTestCase {
 			String bgWithWaitingListDesc = "some short description for Group with WaitingList";
 			Boolean enableWaitinglist = new Boolean(true);
 			Boolean enableAutoCloseRanks = new Boolean(true);
-			OLATResource resource = JunitTestHelper.createRandomResource();
+			RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 			System.out.println("testAddToWaitingListAndFireEvent: resource=" + resource);
 			bgWithWaitingList = businessGroupService.createBusinessGroup(id1, bgWithWaitingListName,
 					bgWithWaitingListDesc, -1, -1, enableWaitinglist, enableAutoCloseRanks, resource);
@@ -188,7 +188,7 @@ public class BusinessGroupServiceTest extends OlatTestCase {
 	
 	@Test
 	public void createBusinessGroupWithResource() {
-		OLATResource resource =  JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup group = businessGroupService.createBusinessGroup(null, "gdao", "gdao-desc", -1, -1, false, false, resource);
 		
 		//commit the group
@@ -207,7 +207,7 @@ public class BusinessGroupServiceTest extends OlatTestCase {
 	public void testCreateUpdateBusinessGroup_v1() {
 		//create a group
 		Identity id = JunitTestHelper.createAndPersistIdentityAsUser("grp-up-1-" + UUID.randomUUID().toString());
-		OLATResource resource =  JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup group = businessGroupService.createBusinessGroup(id, "up-1", "up-1-desc", -1, -1, false, false, resource);
 		Assert.assertNotNull(group);
 		dbInstance.commitAndCloseSession();
@@ -230,7 +230,7 @@ public class BusinessGroupServiceTest extends OlatTestCase {
 	public void testCreateUpdateBusinessGroup_v2() {
 		//create a group
 		Identity id = JunitTestHelper.createAndPersistIdentityAsUser("grp-up-2-" + UUID.randomUUID().toString());
-		OLATResource resource =  JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup group = businessGroupService.createBusinessGroup(id, "up-2", "up-2-desc", -1, -1, false, false, resource);
 		Assert.assertNotNull(group);
 		dbInstance.commitAndCloseSession();
@@ -259,8 +259,8 @@ public class BusinessGroupServiceTest extends OlatTestCase {
 		Identity id2 = JunitTestHelper.createAndPersistIdentityAsUser("grp-auto-2-" + UUID.randomUUID().toString());
 		Identity id3 = JunitTestHelper.createAndPersistIdentityAsUser("grp-auto-3-" + UUID.randomUUID().toString());
 		Identity id4 = JunitTestHelper.createAndPersistIdentityAsUser("grp-auto-4-" + UUID.randomUUID().toString());
-		
-		OLATResource resource =  JunitTestHelper.createRandomResource();
+
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup group = businessGroupService.createBusinessGroup(id0, "auto-1", "auto-1-desc", new Integer(0), new Integer(1), true, true, resource);
 		Assert.assertNotNull(group);
 
@@ -294,8 +294,8 @@ public class BusinessGroupServiceTest extends OlatTestCase {
 		Identity id2 = JunitTestHelper.createAndPersistIdentityAsUser("grp-auto-2-" + UUID.randomUUID().toString());
 		Identity id3 = JunitTestHelper.createAndPersistIdentityAsUser("grp-auto-3-" + UUID.randomUUID().toString());
 		Identity id4 = JunitTestHelper.createAndPersistIdentityAsUser("grp-auto-4-" + UUID.randomUUID().toString());
-		
-		OLATResource resource =  JunitTestHelper.createRandomResource();
+
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup group = businessGroupService.createBusinessGroup(id0, "auto-1", "auto-1-desc", new Integer(0), new Integer(1), false, false, resource);
 		Assert.assertNotNull(group);
 
@@ -323,13 +323,13 @@ public class BusinessGroupServiceTest extends OlatTestCase {
 	
 	@Test
 	public void testGroupsOfBGContext() {
-		OLATResource c1 = JunitTestHelper.createRandomResource();
-		OLATResource c2 = JunitTestHelper.createRandomResource();
+		RepositoryEntry c1 =  JunitTestHelper.createAndPersistRepositoryEntry();
+		RepositoryEntry c2 =  JunitTestHelper.createAndPersistRepositoryEntry();
 
 		dbInstance.commitAndCloseSession(); // simulate user clicks
 		SearchBusinessGroupParams params1 = new SearchBusinessGroupParams(null, false, false);
-		assertTrue(businessGroupService.findBusinessGroups(params1, c1, 0, -1).isEmpty());
-		assertTrue(businessGroupService.countBusinessGroups(params1, c1) == 0);
+		assertTrue(businessGroupService.findBusinessGroups(params1, c1.getOlatResource(), 0, -1).isEmpty());
+		assertTrue(businessGroupService.countBusinessGroups(params1, c1.getOlatResource()) == 0);
 
 		dbInstance.commitAndCloseSession(); // simulate user clicks
 		BusinessGroup g1 = businessGroupService.createBusinessGroup(null, "g1", null, 0, 10, false, false, c1);
@@ -347,8 +347,8 @@ public class BusinessGroupServiceTest extends OlatTestCase {
 
 		dbInstance.commitAndCloseSession(); // simulate user clicks
 		SearchBusinessGroupParams params2 = new SearchBusinessGroupParams(null, false, false);
-		Assert.assertEquals(3, businessGroupService.findBusinessGroups(params2, c1, 0, -1).size());
-		Assert.assertEquals(3, businessGroupService.countBusinessGroups(params2, c1));
+		Assert.assertEquals(3, businessGroupService.findBusinessGroups(params2, c1.getOlatResource(), 0, -1).size());
+		Assert.assertEquals(3, businessGroupService.countBusinessGroups(params2, c1.getOlatResource()));
 	}
 	
 	@Test
@@ -547,7 +547,7 @@ public class BusinessGroupServiceTest extends OlatTestCase {
 		Identity id2 = JunitTestHelper.createAndPersistIdentityAsUser("rm-w3-2-" + UUID.randomUUID().toString());
 		Identity id3 = JunitTestHelper.createAndPersistIdentityAsUser("rm-w3-3-" + UUID.randomUUID().toString());
 		Identity id4 = JunitTestHelper.createAndPersistIdentityAsUser("rm-w3-4-" + UUID.randomUUID().toString());
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 		BusinessGroup group1 = businessGroupService.createBusinessGroup(id1, "move-bg-3", "move-desc", 0, 10, true, false, resource);
 		BusinessGroup group2 = businessGroupService.createBusinessGroup(id2, "move-bg-3", "move-desc", 0, 10, true, false, resource);
 		BusinessGroup group3 = businessGroupService.createBusinessGroup(id3, "move-bg-3", "move-desc", 0, 10, true, false, resource);
@@ -570,7 +570,7 @@ public class BusinessGroupServiceTest extends OlatTestCase {
 		List<Identity> identitiesToRemove = new ArrayList<Identity>();
 		identitiesToRemove.add(id1);
 		identitiesToRemove.add(id3);
-		businessGroupService.removeMembers(admin, identitiesToRemove, resource);
+		businessGroupService.removeMembers(admin, identitiesToRemove, resource.getOlatResource());
 		dbInstance.commitAndCloseSession();
 
 		//check in group1 stay only id2 in waiting list
@@ -730,7 +730,7 @@ public class BusinessGroupServiceTest extends OlatTestCase {
 	}
 	
 	private void doTestDeleteBusinessGroup(boolean withWaitingList) {
-		OLATResource resource = JunitTestHelper.createRandomResource();
+		RepositoryEntry resource =  JunitTestHelper.createAndPersistRepositoryEntry();
 
 		BusinessGroup deleteTestGroup = businessGroupService.createBusinessGroup(id1, "deleteTestGroup-1",
 				"deleteTestGroup-1", -1, -1, withWaitingList, true, resource);
diff --git a/src/test/java/org/olat/repository/RepositoryManagerTest.java b/src/test/java/org/olat/repository/RepositoryManagerTest.java
index b09119febda..b0c11e1886f 100644
--- a/src/test/java/org/olat/repository/RepositoryManagerTest.java
+++ b/src/test/java/org/olat/repository/RepositoryManagerTest.java
@@ -229,7 +229,7 @@ public class RepositoryManagerTest extends OlatTestCase {
 	public void getLearningResourcesAsStudentWithGroups() {
 		Identity id = JunitTestHelper.createAndPersistIdentityAsUser("re-stud-lb-" + UUID.randomUUID().toString());
 		RepositoryEntry re = JunitTestHelper.createAndPersistRepositoryEntry();
-		BusinessGroup group = businessGroupService.createBusinessGroup(null, "studg", "tg", null, null, false, false, re.getOlatResource());
+		BusinessGroup group = businessGroupService.createBusinessGroup(null, "studg", "tg", null, null, false, false, re);
 		securityManager.addIdentityToSecurityGroup(id, group.getPartipiciantGroup());
 		dbInstance.commitAndCloseSession();
 
@@ -272,7 +272,7 @@ public class RepositoryManagerTest extends OlatTestCase {
 	public void getLearningResourcesAsTeacherWithGroups() {
 		Identity id = JunitTestHelper.createAndPersistIdentityAsUser("re-teac-lb-" + UUID.randomUUID().toString());
 		RepositoryEntry re = JunitTestHelper.createAndPersistRepositoryEntry();
-		BusinessGroup group = businessGroupService.createBusinessGroup(null, "teacherg", "tg", null, null, false, false, re.getOlatResource());
+		BusinessGroup group = businessGroupService.createBusinessGroup(null, "teacherg", "tg", null, null, false, false, re);
 		securityManager.addIdentityToSecurityGroup(id, group.getOwnerGroup());
 		dbInstance.commitAndCloseSession();
 
@@ -294,7 +294,7 @@ public class RepositoryManagerTest extends OlatTestCase {
 	public void queryByTypeLimitAccess() {
 		Identity id = JunitTestHelper.createAndPersistIdentityAsUser("qbtla-1-" + UUID.randomUUID().toString());
 		RepositoryEntry re = JunitTestHelper.createAndPersistRepositoryEntry(true);
-		BusinessGroup group = businessGroupService.createBusinessGroup(null, "qbtla-1", "tg", null, null, false, false, re.getOlatResource());
+		BusinessGroup group = businessGroupService.createBusinessGroup(null, "qbtla-1", "tg", null, null, false, false, re);
 		securityManager.addIdentityToSecurityGroup(id, group.getOwnerGroup());
 		dbInstance.commitAndCloseSession();
 		
@@ -317,7 +317,7 @@ public class RepositoryManagerTest extends OlatTestCase {
 		Identity id1 = JunitTestHelper.createAndPersistIdentityAsUser("re-member-lc-" + UUID.randomUUID().toString());
 		Identity id2 = JunitTestHelper.createAndPersistIdentityAsUser("re-member-lc-" + UUID.randomUUID().toString());
 		RepositoryEntry re = JunitTestHelper.createAndPersistRepositoryEntry();
-		BusinessGroup group = businessGroupService.createBusinessGroup(null, "memberg", "tg", null, null, false, false, re.getOlatResource());
+		BusinessGroup group = businessGroupService.createBusinessGroup(null, "memberg", "tg", null, null, false, false, re);
 		securityManager.addIdentityToSecurityGroup(id1, group.getOwnerGroup());
 		dbInstance.commitAndCloseSession();
 
@@ -490,7 +490,7 @@ public class RepositoryManagerTest extends OlatTestCase {
 		Identity id3 = JunitTestHelper.createAndPersistIdentityAsUser("re-gen-3-" + UUID.randomUUID().toString());
 		RepositoryEntry re = JunitTestHelper.createAndPersistRepositoryEntry(true);
 		securityManager.addIdentityToSecurityGroup(id1, re.getOwnerGroup());
-		BusinessGroup group = businessGroupService.createBusinessGroup(null, "teacherg", "tg", null, null, false, false, re.getOlatResource());
+		BusinessGroup group = businessGroupService.createBusinessGroup(null, "teacherg", "tg", null, null, false, false, re);
 		securityManager.addIdentityToSecurityGroup(id2, group.getOwnerGroup());
 		dbInstance.commitAndCloseSession();
 		
@@ -547,7 +547,7 @@ public class RepositoryManagerTest extends OlatTestCase {
 		RepositoryEntry re2 = JunitTestHelper.createAndPersistRepositoryEntry(true);
 		
 		securityManager.addIdentityToSecurityGroup(id1, re2.getParticipantGroup());
-		BusinessGroup group = businessGroupService.createBusinessGroup(null, "teacherg", "tg", null, null, false, false, re1.getOlatResource());
+		BusinessGroup group = businessGroupService.createBusinessGroup(null, "teacherg", "tg", null, null, false, false, re1);
 		securityManager.addIdentityToSecurityGroup(id2, group.getPartipiciantGroup());
 		dbInstance.commitAndCloseSession();
 		
diff --git a/src/test/java/org/olat/restapi/ContactsTest.java b/src/test/java/org/olat/restapi/ContactsTest.java
index 41838e8fd88..9ab4cc420a0 100644
--- a/src/test/java/org/olat/restapi/ContactsTest.java
+++ b/src/test/java/org/olat/restapi/ContactsTest.java
@@ -116,7 +116,7 @@ public class ContactsTest extends OlatJerseyTestCase {
     BaseSecurity secm = BaseSecurityManager.getInstance();
 		
     // 1) context one: learning groups
-    OLATResource c1 = JunitTestHelper.createRandomResource();
+		RepositoryEntry c1 =  JunitTestHelper.createAndPersistRepositoryEntry();
     // create groups without waiting list
     g1 = businessGroupService.createBusinessGroup(null, "rest-g1", null, 0, 10, false, false, c1);
     g2 = businessGroupService.createBusinessGroup(null, "rest-g2", null, 0, 10, false, false, c1);
@@ -137,7 +137,7 @@ public class ContactsTest extends OlatJerseyTestCase {
     
     
     // 2) context two: right groups
-    OLATResource c2 = JunitTestHelper.createRandomResource();
+		RepositoryEntry c2 =  JunitTestHelper.createAndPersistRepositoryEntry();
     // groups
     g3 = businessGroupService.createBusinessGroup(null, "rest-g3", null, -1, -1, false, false, c2);
     businessGroupService.updateDisplayMembers(g3, new DisplayMembers(false, true, false));
diff --git a/src/test/java/org/olat/restapi/CourseGroupMgmtTest.java b/src/test/java/org/olat/restapi/CourseGroupMgmtTest.java
index 9e08d661326..42d0d58ab0b 100644
--- a/src/test/java/org/olat/restapi/CourseGroupMgmtTest.java
+++ b/src/test/java/org/olat/restapi/CourseGroupMgmtTest.java
@@ -61,6 +61,7 @@ import org.olat.core.logging.Tracing;
 import org.olat.core.util.resource.OresHelper;
 import org.olat.group.BusinessGroup;
 import org.olat.group.BusinessGroupService;
+import org.olat.repository.RepositoryEntry;
 import org.olat.resource.OLATResource;
 import org.olat.resource.OLATResourceManager;
 import org.olat.restapi.support.vo.GroupVO;
@@ -85,7 +86,7 @@ public class CourseGroupMgmtTest extends OlatJerseyTestCase {
 	private Identity id1, id2;
 	private BusinessGroup g1, g2;
 	private BusinessGroup g3, g4;
-	private OLATResource course;
+	private RepositoryEntry course;
 
 	private RestConnection conn;
 	
@@ -113,7 +114,9 @@ public class CourseGroupMgmtTest extends OlatJerseyTestCase {
 		OLATResourceManager rm = OLATResourceManager.getInstance();
 		// create course and persist as OLATResourceImpl
 		OLATResourceable resourceable = OresHelper.createOLATResourceableInstance("junitcourse",System.currentTimeMillis());
-		course =  rm.createOLATResourceInstance(resourceable);
+		OLATResource r =  rm.createOLATResourceInstance(resourceable);
+		rm.saveOLATResource(r);
+		course =  JunitTestHelper.createAndPersistRepositoryEntry(r, false);
 		DBFactory.getInstance().saveObject(course);
 		DBFactory.getInstance().closeSession();
 		
diff --git a/src/test/java/org/olat/restapi/GroupFoldersTest.java b/src/test/java/org/olat/restapi/GroupFoldersTest.java
index 5eac47e5111..b835021e3fc 100644
--- a/src/test/java/org/olat/restapi/GroupFoldersTest.java
+++ b/src/test/java/org/olat/restapi/GroupFoldersTest.java
@@ -148,7 +148,7 @@ public class GroupFoldersTest extends OlatJerseyTestCase {
 	    BaseSecurity secm = BaseSecurityManager.getInstance();
 			
 	    // 1) context one: learning groups
-	    OLATResource c1 = JunitTestHelper.createRandomResource();
+			RepositoryEntry c1 =  JunitTestHelper.createAndPersistRepositoryEntry();
 	    // create groups without waiting list
 	    g1 = businessGroupService.createBusinessGroup(null, "rest-g1", null, 0, 10, false, false, c1);
 	    g2 = businessGroupService.createBusinessGroup(null, "rest-g2", null, 0, 10, false, false, c1);
diff --git a/src/test/java/org/olat/restapi/GroupMgmtTest.java b/src/test/java/org/olat/restapi/GroupMgmtTest.java
index 1566774b5f5..97bea4a93b9 100644
--- a/src/test/java/org/olat/restapi/GroupMgmtTest.java
+++ b/src/test/java/org/olat/restapi/GroupMgmtTest.java
@@ -160,7 +160,7 @@ public class GroupMgmtTest extends OlatJerseyTestCase {
     BaseSecurity secm = BaseSecurityManager.getInstance();
 		
     // 1) context one: learning groups
-    OLATResource c1 = JunitTestHelper.createRandomResource();
+		RepositoryEntry c1 =  JunitTestHelper.createAndPersistRepositoryEntry();
     // create groups without waiting list
     g1 = businessGroupService.createBusinessGroup(null, "rest-g1", null, 0, 10, false, false, c1);
     g2 = businessGroupService.createBusinessGroup(null, "rest-g2", null, 0, 10, false, false, c1);
@@ -181,7 +181,7 @@ public class GroupMgmtTest extends OlatJerseyTestCase {
     
     
     // 2) context two: right groups
-    OLATResource c2 = JunitTestHelper.createRandomResource();
+		RepositoryEntry c2 =  JunitTestHelper.createAndPersistRepositoryEntry();
     // groups
     g3 = businessGroupService.createBusinessGroup(null, "rest-g3", null, -1, -1, false, false, c2);
     g4 = businessGroupService.createBusinessGroup(null, "rest-g4", null, -1, -1, false, false, c2);
diff --git a/src/test/java/org/olat/restapi/UserMgmtTest.java b/src/test/java/org/olat/restapi/UserMgmtTest.java
index af89e29b994..bf33b73f43e 100644
--- a/src/test/java/org/olat/restapi/UserMgmtTest.java
+++ b/src/test/java/org/olat/restapi/UserMgmtTest.java
@@ -175,7 +175,7 @@ public class UserMgmtTest extends OlatJerseyTestCase {
     BaseSecurity secm = BaseSecurityManager.getInstance();
 		
     // 1) context one: learning groups
-    OLATResource c1 = JunitTestHelper.createRandomResource();
+    RepositoryEntry c1 = JunitTestHelper.createAndPersistRepositoryEntry();
     // create groups without waiting list
     g1 = businessGroupService.createBusinessGroup(null, "user-rest-g1", null, 0, 10, false, false, c1);
     g2 = businessGroupService.createBusinessGroup(null, "user-rest-g2", null, 0, 10, false, false, c1);
@@ -187,7 +187,7 @@ public class UserMgmtTest extends OlatJerseyTestCase {
     secm.addIdentityToSecurityGroup(id1, g2.getPartipiciantGroup());
 
     // 2) context two: right groups
-    OLATResource c2 = JunitTestHelper.createRandomResource();
+    RepositoryEntry c2 = JunitTestHelper.createAndPersistRepositoryEntry();
     // groups
     g3 = businessGroupService.createBusinessGroup(null, "user-rest-g3", null, -1, -1, false, false, c2);
     g4 = businessGroupService.createBusinessGroup(null, "user-rest-g4", null, -1, -1, false, false, c2);
diff --git a/src/test/java/org/olat/test/AllTestsJunit4.java b/src/test/java/org/olat/test/AllTestsJunit4.java
index 08f2cfd5a06..6289e32e41d 100644
--- a/src/test/java/org/olat/test/AllTestsJunit4.java
+++ b/src/test/java/org/olat/test/AllTestsJunit4.java
@@ -116,6 +116,7 @@ import org.junit.runners.Suite;
 //	org.olat.test.OlatJerseyTestCase.class, // NO TEST METHODS 
 	org.olat.test.SpringInitDestroyVerficationTest.class,
 	org.olat.course.statistic.TestLoggingVersionManagerImpl.class,
+	org.olat.course.statistic.weekly.TestWeeklyStatisticManager_fillGaps.class,
 	org.olat.core.commons.service.usercomments.UserCommentsTest.class,
 	org.olat.core.commons.service.usercomments.UserRatingsTest.class,
 	org.olat.course.auditing.UserNodeAuditManagerTest.class,
diff --git a/src/test/java/org/olat/test/JunitTestHelper.java b/src/test/java/org/olat/test/JunitTestHelper.java
index 92eea5dcb6e..abfe7a89d29 100644
--- a/src/test/java/org/olat/test/JunitTestHelper.java
+++ b/src/test/java/org/olat/test/JunitTestHelper.java
@@ -147,7 +147,10 @@ public class JunitTestHelper {
 		OLATResourceable ores = OresHelper.createOLATResourceableInstance(UUID.randomUUID().toString(), CodeHelper.getForeverUniqueID());
 		OLATResource r =  resourceManager.createOLATResourceInstance(ores);
 		resourceManager.saveOLATResource(r);
-		
+		return createAndPersistRepositoryEntry(r, membersOnly);
+	}
+	
+	public static final RepositoryEntry createAndPersistRepositoryEntry(OLATResource r, boolean membersOnly) {
 		RepositoryManager repositoryManager = RepositoryManager.getInstance();
 		RepositoryEntry re = repositoryManager.createRepositoryEntryInstance("Florian Gnägi");
 		re.setOlatResource(r);
@@ -158,7 +161,7 @@ public class JunitTestHelper {
 			re.setAccess(RepositoryEntry.ACC_USERS);
 		}
 		re.setResourcename("Lernen mit OLAT");
-		re.setDisplayname(ores.getResourceableTypeName());
+		re.setDisplayname(r.getResourceableTypeName());
 		repositoryManager.createOwnerSecurityGroup(re);
 		repositoryManager.createTutorSecurityGroup(re);
 		repositoryManager.createParticipantSecurityGroup(re);
-- 
GitLab