diff --git a/src/main/java/org/olat/course/assessment/AssessmentModeManager.java b/src/main/java/org/olat/course/assessment/AssessmentModeManager.java
index b7dcc657f383fdb06339f203809ee7ce48563eeb..d9df8ceb9c8dae6157e83f01f4ecc191d771cb55 100644
--- a/src/main/java/org/olat/course/assessment/AssessmentModeManager.java
+++ b/src/main/java/org/olat/course/assessment/AssessmentModeManager.java
@@ -80,6 +80,13 @@ public interface AssessmentModeManager {
 	 * @param entry
 	 */
 	public void delete(RepositoryEntryRef entry);
+	
+	/**
+	 * Delete the relations between assessment mode and group for the specified business group and course.
+	 * @param businessGroup
+	 * @param entry
+	 */
+	public void delete(BusinessGroupRef businessGroup, RepositoryEntryRef entry);
 
 	
 	public AssessmentMode getAssessmentModeById(Long key);
diff --git a/src/main/java/org/olat/course/assessment/manager/AssessmentModeManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/AssessmentModeManagerImpl.java
index 5bb36c9be9c8d694a40acd572efbcd8b2e0494ed..1e5b7ba890e20f2ce20bdd7b78aaa30b570c67d5 100644
--- a/src/main/java/org/olat/course/assessment/manager/AssessmentModeManagerImpl.java
+++ b/src/main/java/org/olat/course/assessment/manager/AssessmentModeManagerImpl.java
@@ -410,10 +410,19 @@ public class AssessmentModeManagerImpl implements AssessmentModeManager {
 	}
 
 	@Override
-	public void deleteAssessmentModesToGroup(BusinessGroupRef group) {
+	public void deleteAssessmentModesToGroup(BusinessGroupRef businessGroup) {
 		String q = "delete from courseassessmentmodetogroup as modegrrel where modegrrel.businessGroup.key=:groupKey";
 		dbInstance.getCurrentEntityManager().createQuery(q)
-			.setParameter("groupKey", group.getKey())
+			.setParameter("groupKey", businessGroup.getKey())
+			.executeUpdate();
+	}
+	
+	@Override
+	public void delete(BusinessGroupRef businessGroup, RepositoryEntryRef entry) {
+		String q = "delete from courseassessmentmodetogroup as modegrrel where modegrrel.businessGroup.key=:groupKey and modegrrel.assessmentMode.key in (select amode.key from courseassessmentmode amode where amode.repositoryEntry.key=:repoKey)";
+		dbInstance.getCurrentEntityManager().createQuery(q)
+			.setParameter("groupKey", businessGroup.getKey())
+			.setParameter("repoKey", entry.getKey())
 			.executeUpdate();
 	}
 
diff --git a/src/main/java/org/olat/group/manager/BusinessGroupRelationDAO.java b/src/main/java/org/olat/group/manager/BusinessGroupRelationDAO.java
index 3bc0fd280553298fd7f8580d4270e7da914cc10f..00df8335e39ad81000ea6c41c0272eef7f062bc4 100644
--- a/src/main/java/org/olat/group/manager/BusinessGroupRelationDAO.java
+++ b/src/main/java/org/olat/group/manager/BusinessGroupRelationDAO.java
@@ -39,6 +39,7 @@ import org.olat.core.commons.persistence.DB;
 import org.olat.core.commons.persistence.PersistenceHelper;
 import org.olat.core.id.Identity;
 import org.olat.core.util.StringHelper;
+import org.olat.course.assessment.AssessmentModeManager;
 import org.olat.group.BusinessGroup;
 import org.olat.group.BusinessGroupImpl;
 import org.olat.group.BusinessGroupRef;
@@ -64,6 +65,8 @@ public class BusinessGroupRelationDAO {
 	@Autowired
 	private GroupDAO groupDao;
 	@Autowired
+	private AssessmentModeManager assessmentModeMgr;
+	@Autowired
 	private RepositoryEntryRelationDAO repositoryEntryRelationDao;
 	
 	public void addRelationToResource(BusinessGroup group, RepositoryEntry re) {
@@ -267,6 +270,7 @@ public class BusinessGroupRelationDAO {
 	}
 	
 	public void deleteRelation(BusinessGroup group, RepositoryEntryRef entry) {
+		assessmentModeMgr.delete(group, entry);
 		repositoryEntryRelationDao.removeRelation(group.getBaseGroup(), entry);
 	}
 	
diff --git a/src/test/java/org/olat/course/assessment/manager/AssessmentModeManagerTest.java b/src/test/java/org/olat/course/assessment/manager/AssessmentModeManagerTest.java
index b25e62cae21069e1f29dccc82c5592c4169c1ac7..2b7b7e69ff987dd6dd6a6c3c421e16aa5a975e27 100644
--- a/src/test/java/org/olat/course/assessment/manager/AssessmentModeManagerTest.java
+++ b/src/test/java/org/olat/course/assessment/manager/AssessmentModeManagerTest.java
@@ -696,6 +696,145 @@ public class AssessmentModeManagerTest extends OlatTestCase {
 		boolean notAllowed4 = assessmentModeMgr.isIpAllowed(ipList, "212.203.203.64");
 		Assert.assertFalse(notAllowed4);
 	}
+	
+	@Test
+	public void removeBusinessGroupFromRepositoryEntry() {
+		RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
+		Identity author = JunitTestHelper.createAndPersistIdentityAsRndUser("as-mode-4");
+		Identity participant1 = JunitTestHelper.createAndPersistIdentityAsRndUser("as-mode-5");
+		Identity participant2 = JunitTestHelper.createAndPersistIdentityAsRndUser("as-mode-6");
+		BusinessGroup businessGroup1 = businessGroupService.createBusinessGroup(author, "as-mode-7", "", null, null, null, null, false, false, entry);
+		BusinessGroup businessGroup2 = businessGroupService.createBusinessGroup(author, "as-mode-8", "", null, null, null, null, false, false, entry);
+		businessGroupRelationDao.addRole(participant1, businessGroup1, GroupRoles.participant.name());
+		businessGroupRelationDao.addRole(participant2, businessGroup2, GroupRoles.participant.name());
+		
+		AssessmentMode mode = createMinimalAssessmentmode(entry);
+		mode.setTargetAudience(AssessmentMode.Target.groups);
+		mode.setApplySettingsForCoach(false);
+		mode = assessmentModeMgr.persist(mode);
+		
+		AssessmentModeToGroup modeToGroup1 = assessmentModeMgr.createAssessmentModeToGroup(mode, businessGroup1);
+		AssessmentModeToGroup modeToGroup2 = assessmentModeMgr.createAssessmentModeToGroup(mode, businessGroup2);
+		mode.getGroups().add(modeToGroup1);
+		mode.getGroups().add(modeToGroup2);
+		mode = assessmentModeMgr.merge(mode, true);
+		dbInstance.commitAndCloseSession();
+		Assert.assertNotNull(mode);
+		
+		//check participant 1
+		List<AssessmentMode> currentModes1 = assessmentModeMgr.getAssessmentModeFor(participant1);
+		Assert.assertNotNull(currentModes1);
+		Assert.assertEquals(1, currentModes1.size());
+		Assert.assertTrue(currentModes1.contains(mode));
+		//check participant 2
+		List<AssessmentMode> currentModes2 = assessmentModeMgr.getAssessmentModeFor(participant2);
+		Assert.assertNotNull(currentModes2);
+		Assert.assertEquals(1, currentModes2.size());
+		Assert.assertTrue(currentModes2.contains(mode));
+		
+		//remove business group 1
+		businessGroupRelationDao.deleteRelation(businessGroup1, entry);
+		dbInstance.commitAndCloseSession();
+		
+		//check participant 1
+		List<AssessmentMode> afterDeleteModes1 = assessmentModeMgr.getAssessmentModeFor(participant1);
+		Assert.assertNotNull(afterDeleteModes1);
+		Assert.assertEquals(0, afterDeleteModes1.size());
+		//check participant 2
+		List<AssessmentMode> afterDeleteModes2 = assessmentModeMgr.getAssessmentModeFor(participant2);
+		Assert.assertNotNull(afterDeleteModes2);
+		Assert.assertEquals(1, afterDeleteModes2.size());
+		Assert.assertTrue(afterDeleteModes2.contains(mode));	
+	}
+	
+	@Test
+	public void deleteBusinessGroupFromRepositoryEntry() {
+		RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
+		Identity author = JunitTestHelper.createAndPersistIdentityAsRndUser("as-mode-9");
+		Identity participant1 = JunitTestHelper.createAndPersistIdentityAsRndUser("as-mode-10");
+		Identity participant2 = JunitTestHelper.createAndPersistIdentityAsRndUser("as-mode-11");
+		BusinessGroup businessGroup1 = businessGroupService.createBusinessGroup(author, "as-mode-12", "", null, null, null, null, false, false, entry);
+		BusinessGroup businessGroup2 = businessGroupService.createBusinessGroup(author, "as-mode-13", "", null, null, null, null, false, false, entry);
+		businessGroupRelationDao.addRole(participant1, businessGroup1, GroupRoles.participant.name());
+		businessGroupRelationDao.addRole(participant2, businessGroup2, GroupRoles.participant.name());
+		
+		AssessmentMode mode = createMinimalAssessmentmode(entry);
+		mode.setTargetAudience(AssessmentMode.Target.groups);
+		mode.setApplySettingsForCoach(false);
+		mode = assessmentModeMgr.persist(mode);
+		
+		AssessmentModeToGroup modeToGroup1 = assessmentModeMgr.createAssessmentModeToGroup(mode, businessGroup1);
+		AssessmentModeToGroup modeToGroup2 = assessmentModeMgr.createAssessmentModeToGroup(mode, businessGroup2);
+		mode.getGroups().add(modeToGroup1);
+		mode.getGroups().add(modeToGroup2);
+		mode = assessmentModeMgr.merge(mode, true);
+		dbInstance.commitAndCloseSession();
+		Assert.assertNotNull(mode);
+		
+		//check participant 1
+		List<AssessmentMode> currentModes1 = assessmentModeMgr.getAssessmentModeFor(participant1);
+		Assert.assertNotNull(currentModes1);
+		Assert.assertEquals(1, currentModes1.size());
+		Assert.assertTrue(currentModes1.contains(mode));
+		//check participant 2
+		List<AssessmentMode> currentModes2 = assessmentModeMgr.getAssessmentModeFor(participant2);
+		Assert.assertNotNull(currentModes2);
+		Assert.assertEquals(1, currentModes2.size());
+		Assert.assertTrue(currentModes2.contains(mode));
+		
+		//remove business group 1
+		businessGroupService.deleteBusinessGroup(businessGroup2);
+		dbInstance.commitAndCloseSession();
+
+		//check participant 1
+		List<AssessmentMode> afterDeleteModes1 = assessmentModeMgr.getAssessmentModeFor(participant1);
+		Assert.assertNotNull(afterDeleteModes1);
+		Assert.assertEquals(1, afterDeleteModes1.size());
+		Assert.assertTrue(afterDeleteModes1.contains(mode));
+		//check participant 2
+		List<AssessmentMode> afterDeleteModes2 = assessmentModeMgr.getAssessmentModeFor(participant2);
+		Assert.assertNotNull(afterDeleteModes2);
+		Assert.assertEquals(0, afterDeleteModes2.size());
+	}
+	
+	@Test
+	public void deleteAreaFromRepositoryEntry() {
+		//prepare the setup
+		Identity author = JunitTestHelper.createAndPersistIdentityAsRndUser("as-mode-14");
+		Identity participant = JunitTestHelper.createAndPersistIdentityAsRndUser("as-mode-15");
+		RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
+		
+		AssessmentMode mode = createMinimalAssessmentmode(entry);
+		mode.setTargetAudience(AssessmentMode.Target.groups);
+		mode = assessmentModeMgr.persist(mode);
+		dbInstance.commitAndCloseSession();
+		Assert.assertNotNull(mode);
+
+		BusinessGroup businessGroupForArea = businessGroupService.createBusinessGroup(author, "as_mode_1", "", null, null, null, null, false, false, null);
+		businessGroupRelationDao.addRole(participant, businessGroupForArea, GroupRoles.participant.name());
+		BGArea area = areaMgr.createAndPersistBGArea("little area", "My little secret area", entry.getOlatResource());
+		areaMgr.addBGToBGArea(businessGroupForArea, area);
+		dbInstance.commitAndCloseSession();
+		AssessmentModeToArea modeToArea = assessmentModeMgr.createAssessmentModeToArea(mode, area);
+		mode.getAreas().add(modeToArea);
+		mode = assessmentModeMgr.merge(mode, true);
+		dbInstance.commitAndCloseSession();
+		
+		//check the participant modes
+		List<AssessmentMode> currentModes = assessmentModeMgr.getAssessmentModeFor(participant);
+		Assert.assertNotNull(currentModes);
+		Assert.assertEquals(1, currentModes.size());
+		Assert.assertTrue(currentModes.contains(mode));
+		
+		//delete
+		areaMgr.deleteBGArea(area);
+		dbInstance.commitAndCloseSession();
+
+		//check the participant modes after deleting the area
+		List<AssessmentMode> afterDeleteModes = assessmentModeMgr.getAssessmentModeFor(participant);
+		Assert.assertNotNull(afterDeleteModes);
+		Assert.assertEquals(0, afterDeleteModes.size());
+	}
 
 	/**
 	 * Create a minimal assessment mode which start one hour before now