diff --git a/src/main/java/org/olat/modules/curriculum/manager/CurriculumElementDAO.java b/src/main/java/org/olat/modules/curriculum/manager/CurriculumElementDAO.java
index b3d80fb3be460c8719f5010cba302630cb887263..7a23039ccc73e635291086c63ab0ea688e72e77f 100644
--- a/src/main/java/org/olat/modules/curriculum/manager/CurriculumElementDAO.java
+++ b/src/main/java/org/olat/modules/curriculum/manager/CurriculumElementDAO.java
@@ -589,8 +589,8 @@ public class CurriculumElementDAO {
 			sb.and()
 			  .append("exists (select membership.key from bgroupmember as membership")
 			  .append("  where membership.identity.key=:managerKey")
-			  .append("  and (membership.group.key=baseGroup.key or organis.group.key=baseGroup.key)")
-			  .append("  and role in ('").append(CurriculumRoles.curriculummanager).append("','").append(OrganisationRoles.administrator).append("')")
+			  .append("  and membership.role").in(CurriculumRoles.curriculummanager, CurriculumRoles.owner, OrganisationRoles.administrator)
+			  .append("  and (membership.group.key=baseGroup.key or membership.group.key=organis.group.key)")
 			  .append(")");
 		}
 
diff --git a/src/test/java/org/olat/modules/curriculum/manager/CurriculumElementDAOTest.java b/src/test/java/org/olat/modules/curriculum/manager/CurriculumElementDAOTest.java
index d192662e7df41274a35f8de3b55a1e5ac34f289e..6adeee7cbb1d60d1948dc4c0fa8265517a5e4e14 100644
--- a/src/test/java/org/olat/modules/curriculum/manager/CurriculumElementDAOTest.java
+++ b/src/test/java/org/olat/modules/curriculum/manager/CurriculumElementDAOTest.java
@@ -30,8 +30,10 @@ import java.util.UUID;
 
 import org.junit.Assert;
 import org.junit.Test;
+import org.olat.basesecurity.OrganisationService;
 import org.olat.core.commons.persistence.DB;
 import org.olat.core.id.Identity;
+import org.olat.core.id.Organisation;
 import org.olat.modules.curriculum.Curriculum;
 import org.olat.modules.curriculum.CurriculumCalendars;
 import org.olat.modules.curriculum.CurriculumElement;
@@ -45,6 +47,8 @@ import org.olat.modules.curriculum.CurriculumRoles;
 import org.olat.modules.curriculum.CurriculumService;
 import org.olat.modules.curriculum.model.CurriculumElementImpl;
 import org.olat.modules.curriculum.model.CurriculumElementInfos;
+import org.olat.modules.curriculum.model.CurriculumElementSearchInfos;
+import org.olat.modules.curriculum.model.CurriculumElementSearchParams;
 import org.olat.modules.curriculum.model.CurriculumImpl;
 import org.olat.repository.RepositoryEntry;
 import org.olat.test.JunitTestHelper;
@@ -69,6 +73,8 @@ public class CurriculumElementDAOTest extends OlatTestCase {
 	private CurriculumElementTypeDAO curriculumElementTypeDao;
 	@Autowired
 	private CurriculumService curriculumService;
+	@Autowired
+	private OrganisationService organisationService;
 	
 	@Test
 	public void createCurriculumElement() {
@@ -337,6 +343,68 @@ public class CurriculumElementDAOTest extends OlatTestCase {
 		Assert.assertEquals(element, elementsByKey.get(0));
 	}
 	
+	@Test
+	public void searchElementsWithParams_permissions() {
+		Identity nobody = JunitTestHelper.createAndPersistIdentityAsRndUser("curriculum-nobody");
+		Organisation defOrganisation = organisationService.getDefaultOrganisation();
+		Identity curriculumAdmin = JunitTestHelper.createAndPersistIdentityAsRndAdmin("curriculum-admin");
+		Curriculum curriculum = curriculumDao.createAndPersist("cur-for-el-6", "Curriculum for element", "Curriculum", defOrganisation);
+		String externalId = UUID.randomUUID().toString();
+		String identifier = UUID.randomUUID().toString();
+		CurriculumElement element = curriculumElementDao.createCurriculumElement(identifier, "6.1 Element",
+				CurriculumElementStatus.active, null, null, null, null, CurriculumCalendars.disabled, CurriculumLectures.disabled, curriculum);
+		dbInstance.commit();
+		element.setExternalId(externalId);
+		element = curriculumElementDao.update(element);
+		dbInstance.commitAndCloseSession();
+
+		//search by external id, administrator
+		CurriculumElementSearchParams adminSearchParams = new CurriculumElementSearchParams(curriculumAdmin);
+		adminSearchParams.setElementId(externalId);
+		List<CurriculumElementSearchInfos> elementsByExternalId = curriculumElementDao.searchElements(adminSearchParams);
+		Assert.assertNotNull(elementsByExternalId);
+		Assert.assertEquals(1, elementsByExternalId.size());
+		Assert.assertEquals(element, elementsByExternalId.get(0).getCurriculumElement());
+		
+		//search by identifier 
+		CurriculumElementSearchParams nobodySearchParams = new CurriculumElementSearchParams(nobody);
+		nobodySearchParams.setElementId(externalId);
+		List<CurriculumElementSearchInfos> noElements = curriculumElementDao.searchElements(nobodySearchParams);
+		Assert.assertNotNull(noElements);
+		Assert.assertTrue(noElements.isEmpty());
+	}
+	
+	/**
+	 * The method only checks the query syntax, not the results.
+	 */
+	@Test
+	public void searchElementsWithParams_allParameters() {
+		Organisation defOrganisation = organisationService.getDefaultOrganisation();
+		Identity curriculumAdmin = JunitTestHelper.createAndPersistIdentityAsRndAdmin("curriculum-admin");
+		Curriculum curriculum = curriculumDao.createAndPersist("cur-for-el-6", "Curriculum for element", "Curriculum", defOrganisation);
+		String externalId = UUID.randomUUID().toString();
+		String identifier = UUID.randomUUID().toString();
+		CurriculumElement element = curriculumElementDao.createCurriculumElement(identifier, "6.1 Element",
+				CurriculumElementStatus.active, null, null, null, null, CurriculumCalendars.disabled, CurriculumLectures.disabled, curriculum);
+		dbInstance.commit();
+		element.setExternalId(externalId);
+		element = curriculumElementDao.update(element);
+		dbInstance.commitAndCloseSession();
+
+		//search by external id, administrator
+		CurriculumElementSearchParams adminSearchParams = new CurriculumElementSearchParams(curriculumAdmin);
+		adminSearchParams.setElementId(externalId);
+		adminSearchParams.setElementBeginDate(new Date());
+		adminSearchParams.setElementEndDate(new Date());
+		adminSearchParams.setElementText("Hello");
+		adminSearchParams.setEntryId("734");
+		adminSearchParams.setEntryText("Course");
+		adminSearchParams.setSearchString("Search");
+		List<CurriculumElementSearchInfos> elementsByExternalId = curriculumElementDao.searchElements(adminSearchParams);
+		Assert.assertNotNull(elementsByExternalId);
+
+	}
+	
 	@Test
 	public void getDescendants() {
 		Curriculum curriculum = curriculumDao.createAndPersist("cur-for-el-5", "Curriculum for element", "Curriculum", null);