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 65278e558fc38eeb83372886c4e81e57dcb7470e..d9356bed3f6d10e14bcb7ea13dcace3c96ef8b3d 100644
--- a/src/main/java/org/olat/group/ui/edit/BusinessGroupEditResourceController.java
+++ b/src/main/java/org/olat/group/ui/edit/BusinessGroupEditResourceController.java
@@ -49,6 +49,7 @@ import org.olat.core.gui.control.generic.closablewrapper.CloseableModalControlle
 import org.olat.core.gui.control.generic.modal.DialogBoxController;
 import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory;
 import org.olat.core.gui.translator.Translator;
+import org.olat.core.id.Roles;
 import org.olat.core.util.Util;
 import org.olat.course.CourseModule;
 import org.olat.group.BusinessGroup;
@@ -92,6 +93,8 @@ public class BusinessGroupEditResourceController extends BasicController impleme
 
 	private BusinessGroup group;
 	private final boolean managed;
+	private final boolean hasAuthorRight;
+	
 	@Autowired
 	private BusinessGroupService businessGroupService;
 
@@ -108,6 +111,9 @@ public class BusinessGroupEditResourceController extends BasicController impleme
 		this.group = group;
 		managed = BusinessGroupManagedFlag.isManaged(group, BusinessGroupManagedFlag.resources);
 		
+		Roles roles = ureq.getUserSession().getRoles();
+		hasAuthorRight =  roles.isAdministrator() || roles.isLearnResourceManager() || roles.isAuthor();
+		
 		Translator resourceTrans = Util.createPackageTranslator(RepositoryService.class, getLocale(), getTranslator());
 		TableGuiConfiguration tableConfig = new TableGuiConfiguration();
 		tableConfig.setTableEmptyMessage(translate("resources.noresources"));
@@ -130,24 +136,10 @@ public class BusinessGroupEditResourceController extends BasicController impleme
 		putInitialPanel(mainVC);
 	}
 
-	/**
-	 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest,
-	 *      org.olat.core.gui.components.Component, org.olat.core.gui.control.Event)
-	 */
 	@Override
 	public void event(UserRequest ureq, Component source, Event event) {
 		if (source == addTabResourcesButton) {
-			removeAsListenerAndDispose(repoSearchCtr);
-			removeAsListenerAndDispose(cmc);
-			
-			RepositoryEntryFilter filter = new ManagedEntryfilter();
-			repoSearchCtr = new ReferencableEntriesSearchController(getWindowControl(), ureq,
-					new String[]{ CourseModule.getCourseTypeName() }, filter,
-					translate("resources.add"), true, true, true, false, true, Can.referenceable);
-			listenTo(repoSearchCtr);
-			cmc = new CloseableModalController(getWindowControl(), translate("close"), repoSearchCtr.getInitialComponent(), true, translate("resources.add.title"));
-			listenTo(cmc);
-			cmc.activate();
+			doAddRepositoryEntry(ureq);
 		}
 	}
 
@@ -197,6 +189,20 @@ public class BusinessGroupEditResourceController extends BasicController impleme
 		}
 	}
 	
+	private void doAddRepositoryEntry(UserRequest ureq) {
+		removeAsListenerAndDispose(repoSearchCtr);
+		removeAsListenerAndDispose(cmc);
+		
+		RepositoryEntryFilter filter = new ManagedEntryfilter();
+		repoSearchCtr = new ReferencableEntriesSearchController(getWindowControl(), ureq,
+				new String[]{ CourseModule.getCourseTypeName() }, filter,
+				translate("resources.add"), hasAuthorRight, hasAuthorRight, true, false, true, Can.referenceable);
+		listenTo(repoSearchCtr);
+		cmc = new CloseableModalController(getWindowControl(), translate("close"), repoSearchCtr.getInitialComponent(), true, translate("resources.add.title"));
+		listenTo(cmc);
+		cmc.activate();
+	}
+	
 	private void doOpenInfos(UserRequest ureq, RepositoryEntry repositoryEntry, int rowId) {
 		removeAsListenerAndDispose(calloutCtrl);
 		removeAsListenerAndDispose(infosCtrl);
diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/metadata/AssessmentItemEditorMetadataSecurityCallback.java b/src/main/java/org/olat/ims/qti21/ui/editor/metadata/AssessmentItemEditorMetadataSecurityCallback.java
index 87ad3163934830a36c2cac5fe64b6e8fd38c5a98..044e3c22ad19421152a124632d206da0990dd85e 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/metadata/AssessmentItemEditorMetadataSecurityCallback.java
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/metadata/AssessmentItemEditorMetadataSecurityCallback.java
@@ -43,7 +43,7 @@ class AssessmentItemEditorMetadataSecurityCallback implements MetadataSecurityCa
 
 	@Override
 	public boolean canRemoveTaxonomy() {
-		return !readOnly;
+		return true;
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/metadata/MetadataController.java b/src/main/java/org/olat/ims/qti21/ui/editor/metadata/MetadataController.java
index 9f3bda553b96efc116285cf5ded6c28b5d212e4f..e52275c4332f197f5e3b50885bae6a43f27d961e 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/metadata/MetadataController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/metadata/MetadataController.java
@@ -44,8 +44,7 @@ import org.olat.modules.qpool.ui.metadata.MetadatasController;
  */
 public class MetadataController extends BasicController {
 	
-	private MetadatasController metadataCtrl;
-	
+	private final MetadatasController metadataCtrl;
 	
 	public MetadataController(UserRequest ureq, WindowControl wControl,
 			ManifestMetadataBuilder metadataBuilder, boolean readOnly) {