diff --git a/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java b/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java
index 0a2b7abe184215c715086cebe2f538fe7d984982..23271958132d3c2bbfcdd1f0b73c1cd1d5cae0b6 100644
--- a/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java
+++ b/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java
@@ -23,7 +23,6 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import javax.persistence.FlushModeType;
 import javax.persistence.TypedQuery;
 
 import org.olat.basesecurity.GroupRoles;
@@ -81,7 +80,7 @@ public class RepositoryEntryAuthorQueries {
 			return 0;
 		}
 
-		TypedQuery<Number> query = createViewQuery(params, false, Number.class);
+		TypedQuery<Number> query = createViewQuery(params, Number.class);
 		Number count = query.getSingleResult();
 		return count == null ? 0 : count.intValue();
 	}
@@ -91,28 +90,10 @@ public class RepositoryEntryAuthorQueries {
 			log.error("No identity defined for query");
 			return new RepositoryEntryAuthorViewResults(Collections.emptyList(), true);
 		}
-		
-		List<String> inMemoryTypes = null;
-		if(params.isOwnedResourcesOnly() && params.isResourceTypesDefined()) {
-			maxResults = -1;
-			if(params.getResourceTypes().size() == 1) {
-				inMemoryTypes = Collections.singletonList(params.getResourceTypes().get(0));
-			} else {
-				inMemoryTypes = params.getResourceTypes();
-			}
-		}
-		
-		if(StringHelper.containsNonWhitespace(params.getAuthor()) && dbInstance.isMySQL()) {
-			List<Long> repoKeys = getAuthorRepoKeys(params.getAuthor());
-			if(repoKeys.isEmpty()) {
-				return new RepositoryEntryAuthorViewResults(Collections.emptyList(), true);
-			}
-			params.setAuthorEntryKeys(repoKeys);
-		}
 
-		TypedQuery<Object[]> query = createViewQuery(params, inMemoryTypes != null, Object[].class);
+		TypedQuery<Object[]> query = createViewQuery(params,  Object[].class);
 		query.setFirstResult(firstResult);
-		if(maxResults > 0 && inMemoryTypes == null) {
+		if(maxResults > 0) {
 			query.setMaxResults(maxResults);
 		}
 		
@@ -120,9 +101,6 @@ public class RepositoryEntryAuthorQueries {
 		List<RepositoryEntryAuthorView> views = new ArrayList<>(objects.size());
 		for(Object[] object:objects) {
 			RepositoryEntry re = (RepositoryEntry)object[0];
-			if(inMemoryTypes != null &&!inMemoryTypes.contains(re.getOlatResource().getResourceableTypeName())) {
-				continue;
-			}
 			
 			Number numOfMarks = (Number)object[1];
 			boolean hasMarks = numOfMarks != null && numOfMarks.longValue() > 0;
@@ -149,32 +127,10 @@ public class RepositoryEntryAuthorQueries {
 			
 			views.add(new RepositoryEntryAuthorImpl(re, hasMarks, offers, references, deletedByName, lectureEnabled, rollCallEnabled));
 		}
-		return new RepositoryEntryAuthorViewResults(views, inMemoryTypes != null || maxResults <= 0);
-	}
-	
-	private List<Long> getAuthorRepoKeys(String author) {
-		StringBuilder sb = new StringBuilder(512);
-		sb.append("select distinct rel.entry.key from repoentrytogroup as rel")
-		  .append(" inner join rel.group as rGroup")
-		  .append(" inner join rGroup.members as membership")
-		  .append(" inner join membership.identity as ident")
-		  .append(" inner join ident.user as user")
-          .append(" where membership.role='owner' and ");
-		PersistenceHelper.appendFuzzyLike(sb, "user.firstName", "author", dbInstance.getDbVendor());
-		sb.append(" or ");
-		PersistenceHelper.appendFuzzyLike(sb, "user.lastName", "author", dbInstance.getDbVendor());
-		sb.append(" or ");
-		PersistenceHelper.appendFuzzyLike(sb, "ident.name", "author", dbInstance.getDbVendor());
-		sb.append(" ");
-		return dbInstance.getCurrentEntityManager()
-				.createQuery(sb.toString(), Long.class)
-				.setFlushMode(FlushModeType.COMMIT)
-				.setParameter("author", PersistenceHelper.makeFuzzyQueryString(author))
-				.getResultList();
+		return new RepositoryEntryAuthorViewResults(views, maxResults <= 0);
 	}
 
-	protected <T> TypedQuery<T> createViewQuery(SearchAuthorRepositoryEntryViewParams params, boolean inMemoryTypes,
-			Class<T> type) {
+	protected <T> TypedQuery<T> createViewQuery(SearchAuthorRepositoryEntryViewParams params, Class<T> type) {
 
 		IdentityRef identity = params.getIdentity();
 		List<String> resourceTypes = params.getResourceTypes();
@@ -233,7 +189,7 @@ public class RepositoryEntryAuthorQueries {
 			sb.append(" exists (select ref.key from references as ref where ref.target.key=res.key)");
 		}
 
-		if (params.isResourceTypesDefined() && !inMemoryTypes) {
+		if (params.isResourceTypesDefined()) {
 			sb.append(" and res.resName in (:resourcetypes)");
 		}
 		if(params.getMarked() != null && params.getMarked().booleanValue()) {
@@ -250,9 +206,7 @@ public class RepositoryEntryAuthorQueries {
 		}
 		
 		String author = null;
-		if(params.getAuthorEntryKeys() != null && !params.getAuthorEntryKeys().isEmpty()) {
-			sb.append(" and v.key in (:authorEntryKeys)");
-		} else if (StringHelper.containsNonWhitespace(params.getAuthor())) { // fuzzy author search
+		if (StringHelper.containsNonWhitespace(params.getAuthor())) { // fuzzy author search
 			author = PersistenceHelper.makeFuzzyQueryString(params.getAuthor());
 
 			sb.append(" and v.key in (select rel.entry.key from repoentrytogroup as rel, bgroupmember as membership, ")
@@ -331,7 +285,7 @@ public class RepositoryEntryAuthorQueries {
 
 		TypedQuery<T> dbQuery = dbInstance.getCurrentEntityManager()
 				.createQuery(sb.toString(), type);
-		if (params.isResourceTypesDefined() && !inMemoryTypes) {
+		if (params.isResourceTypesDefined()) {
 			dbQuery.setParameter("resourcetypes", resourceTypes);
 		}
 		if(id != null) {
@@ -354,9 +308,7 @@ public class RepositoryEntryAuthorQueries {
 			dbQuery.setParameter("quickText", quickText);
 		}
 		
-		if(params.getAuthorEntryKeys() != null && !params.getAuthorEntryKeys().isEmpty()) {
-			dbQuery.setParameter("authorEntryKeys", params.getAuthorEntryKeys());
-		} else if (StringHelper.containsNonWhitespace(author)) { // fuzzy author search
+		if (StringHelper.containsNonWhitespace(author)) { // fuzzy author search
 			dbQuery.setParameter("author", author);
 		}
 		if (StringHelper.containsNonWhitespace(displayname)) {
diff --git a/src/main/java/org/olat/repository/model/SearchAuthorRepositoryEntryViewParams.java b/src/main/java/org/olat/repository/model/SearchAuthorRepositoryEntryViewParams.java
index dc17f90739762f1eea2fdafbadb55f92c8a66e33..829d2fcbad29a8980cfc42a1559199e5a17ea5bf 100644
--- a/src/main/java/org/olat/repository/model/SearchAuthorRepositoryEntryViewParams.java
+++ b/src/main/java/org/olat/repository/model/SearchAuthorRepositoryEntryViewParams.java
@@ -45,7 +45,6 @@ public class SearchAuthorRepositoryEntryViewParams {
 	private String idAndRefs;
 	private String idRefsAndTitle;
 	private String author;
-	private List<Long> authorEntryKeys;
 	private String displayname;
 	private String description;
 	
@@ -89,15 +88,6 @@ public class SearchAuthorRepositoryEntryViewParams {
 
 	public void setAuthor(String author) {
 		this.author = author;
-		authorEntryKeys = null;
-	}
-
-	public List<Long> getAuthorEntryKeys() {
-		return authorEntryKeys;
-	}
-
-	public void setAuthorEntryKeys(List<Long> authorEntryKeys) {
-		this.authorEntryKeys = authorEntryKeys;
 	}
 
 	public String getDisplayname() {
diff --git a/src/main/java/org/olat/repository/ui/author/AuthorSearchController.java b/src/main/java/org/olat/repository/ui/author/AuthorSearchController.java
index aeb3766759d879903ae39007e561378698ca7942..64026035c567a39e0ee137c45601bdaf72ddb3be 100644
--- a/src/main/java/org/olat/repository/ui/author/AuthorSearchController.java
+++ b/src/main/java/org/olat/repository/ui/author/AuthorSearchController.java
@@ -301,13 +301,13 @@ public class AuthorSearchController extends FormBasicController implements Exten
 		author.clearError();
 		if (displayName.isEmpty() && author.isEmpty() && description.isEmpty() && (id != null && id.isEmpty()))	{
 			showWarning("cif.error.allempty");
-			return false;
+			//return false;
 		}
 		
 		int maxSize = dbInstance.isMySQL() ? 5 : 3;
 		if(StringHelper.containsNonWhitespace(author.getValue()) && author.getValue().length() < maxSize) {
 			author.setErrorKey("form.error.tooshort", new String[] { Integer.toString(maxSize) });
-			return false;
+			//return false;
 		}
 		
 		return true;
@@ -327,7 +327,7 @@ public class AuthorSearchController extends FormBasicController implements Exten
 	
 	@Override
 	protected void formInnerEvent (UserRequest ureq, FormItem source, FormEvent event) {
-		if(enabled && source == searchButton && validateFormLogic(ureq)) {
+		if(enabled && source == searchButton) {
 			fireSearchEvent(ureq);
 		}
 	}
diff --git a/src/main/resources/database/mysql/alter_13_2_x_to_13_2_3.sql b/src/main/resources/database/mysql/alter_13_2_x_to_13_2_3.sql
new file mode 100644
index 0000000000000000000000000000000000000000..25ab7114494525bf065abf8af3d8cdc119eff924
--- /dev/null
+++ b/src/main/resources/database/mysql/alter_13_2_x_to_13_2_3.sql
@@ -0,0 +1,77 @@
+drop view if exists o_bs_gp_membership_v;
+drop view if exists o_re_membership_v;
+drop view if exists o_gp_contactext_v;
+drop view if exists o_gp_contactkey_v;
+drop view if exists o_gp_business_v;
+
+drop index member_to_grp_role_idx on o_bs_group_member;
+
+alter table o_bs_group_member modify g_role varchar(24);
+
+create index group_role_member_idx on o_bs_group_member (fk_group_id,g_role,fk_identity_id);
+
+
+create view o_bs_gp_membership_v as (
+   select
+      membership.id as membership_id,
+      membership.fk_identity_id as fk_identity_id,
+      membership.lastmodified as lastmodified,
+      membership.creationdate as creationdate,
+      membership.g_role as g_role,
+      gp.group_id as group_id
+   from o_bs_group_member as membership
+   inner join o_gp_business as gp on (gp.fk_group_id=membership.fk_group_id)
+);
+
+create or replace view o_re_membership_v as (
+   select
+      bmember.id as membership_id,
+      bmember.creationdate as creationdate,
+      bmember.lastmodified as lastmodified,
+      bmember.fk_identity_id as fk_identity_id,
+      bmember.g_role as g_role,
+      re.repositoryentry_id as fk_entry_id
+   from o_repositoryentry as re
+   inner join o_re_to_group relgroup on (relgroup.fk_entry_id=re.repositoryentry_id and relgroup.r_defgroup=1)
+   inner join o_bs_group_member as bmember on (bmember.fk_group_id=relgroup.fk_group_id)
+);
+
+-- contacts
+create view o_gp_contactkey_v as (
+   select
+      bg_member.id as membership_id,
+      bg_member.fk_identity_id as member_id,
+      bg_member.g_role as membership_role,
+      bg_me.fk_identity_id as me_id,
+      bgroup.group_id as bg_id
+   from o_gp_business as bgroup
+   inner join o_bs_group_member as bg_member on (bg_member.fk_group_id = bgroup.fk_group_id)
+   inner join o_bs_group_member as bg_me on (bg_me.fk_group_id = bgroup.fk_group_id)
+   where
+      (bgroup.ownersintern=1 and bg_member.g_role='coach')
+      or
+      (bgroup.participantsintern=1 and bg_member.g_role='participant')
+);
+
+create view o_gp_contactext_v as (
+   select
+      bg_member.id as membership_id,
+      bg_member.fk_identity_id as member_id,
+      bg_member.g_role as membership_role,
+      id_member.name as member_name,
+      us_member.u_firstname as member_firstname,
+      us_member.u_lastname as member_lastname,
+      bg_me.fk_identity_id as me_id,
+      bgroup.group_id as bg_id,
+      bgroup.groupname as bg_name
+   from o_gp_business as bgroup
+   inner join o_bs_group_member as bg_member on (bg_member.fk_group_id = bgroup.fk_group_id)
+   inner join o_bs_identity as id_member on (bg_member.fk_identity_id = id_member.id)
+   inner join o_user as us_member on (id_member.id = us_member.fk_identity)
+   inner join o_bs_group_member as bg_me on (bg_me.fk_group_id = bgroup.fk_group_id)
+   where
+      (bgroup.ownersintern=1 and bg_member.g_role='coach')
+      or
+      (bgroup.participantsintern=1 and bg_member.g_role='participant')
+);
+
diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql
index f59d0bd5196189f23c45cc38b1c05b6960c5a35d..2e388edce949f56dcf54573f3762962dbba6221d 100644
--- a/src/main/resources/database/mysql/setupDatabase.sql
+++ b/src/main/resources/database/mysql/setupDatabase.sql
@@ -50,7 +50,7 @@ create table o_bs_group_member (
    id bigint not null,
    creationdate datetime not null,
    lastmodified datetime not null,
-   g_role varchar(50) not null,
+   g_role varchar(24) not null,
    g_inheritance_mode varchar(16) default 'none' not null,
    fk_group_id bigint not null,
    fk_identity_id bigint not null,
@@ -3109,7 +3109,7 @@ create index idx_prop_restype_idx on o_property (resourcetypename);
 -- group
 alter table o_bs_group_member add constraint member_identity_ctx foreign key (fk_identity_id) references o_bs_identity (id);
 alter table o_bs_group_member add constraint member_group_ctx foreign key (fk_group_id) references o_bs_group (id);
-create index member_to_grp_role_idx on o_bs_group_member (g_role);
+create index group_role_member_idx on o_bs_group_member (fk_group_id,g_role,fk_identity_id);
 
 alter table o_re_to_group add constraint re_to_group_group_ctx foreign key (fk_group_id) references o_bs_group (id);
 alter table o_re_to_group add constraint re_to_group_re_ctx foreign key (fk_entry_id) references o_repositoryentry (repositoryentry_id);
diff --git a/src/main/resources/database/oracle/alter_13_2_x_to_13_2_3.sql b/src/main/resources/database/oracle/alter_13_2_x_to_13_2_3.sql
new file mode 100644
index 0000000000000000000000000000000000000000..69cde97455622b912ff4b281e89a7b5d4cf79caf
--- /dev/null
+++ b/src/main/resources/database/oracle/alter_13_2_x_to_13_2_3.sql
@@ -0,0 +1,76 @@
+drop view o_bs_gp_membership_v;
+drop view o_re_membership_v;
+drop view o_gp_contactext_v;
+drop view o_gp_contactkey_v;
+drop view o_gp_business_v;
+
+drop index member_to_grp_role_idx;
+
+alter table o_bs_group_member modify g_role varchar2(24 char);
+
+create index group_role_member_idx on o_bs_group_member (fk_group_id,g_role,fk_identity_id);
+
+
+create view o_bs_gp_membership_v as (
+   select
+      gp.group_id as group_id,
+      membership.id as membership_id,
+      membership.fk_identity_id as fk_identity_id,
+      membership.lastmodified as lastmodified,
+      membership.creationdate as creationdate,
+      membership.g_role as g_role
+   from o_bs_group_member membership
+   inner join o_gp_business gp on (gp.fk_group_id=membership.fk_group_id)
+);
+
+create or replace view o_re_membership_v as (
+   select
+      bmember.id as membership_id,
+      bmember.creationdate as creationdate,
+      bmember.lastmodified as lastmodified,
+      bmember.fk_identity_id as fk_identity_id,
+      bmember.g_role as g_role,
+      re.repositoryentry_id as fk_entry_id
+   from o_repositoryentry re
+   inner join o_re_to_group relgroup on (relgroup.fk_entry_id=re.repositoryentry_id and relgroup.r_defgroup=1)
+   inner join o_bs_group_member bmember on (bmember.fk_group_id=relgroup.fk_group_id)
+);
+
+-- contacts
+create view o_gp_contactkey_v as (
+   select
+      bg_member.id as membership_id,
+      bg_member.fk_identity_id as member_id,
+      bg_member.g_role as membership_role,
+      bg_me.fk_identity_id as me_id,
+      bgroup.group_id as bg_id
+   from o_gp_business bgroup
+   inner join o_bs_group_member bg_member on (bg_member.fk_group_id = bgroup.fk_group_id)
+   inner join o_bs_group_member bg_me on (bg_me.fk_group_id = bgroup.fk_group_id)
+   where
+      (bgroup.ownersintern>0 and bg_member.g_role='coach')
+      or
+      (bgroup.participantsintern>0 and bg_member.g_role='participant')
+);
+
+create view o_gp_contactext_v as (
+   select
+      bg_member.id as membership_id,
+      bg_member.fk_identity_id as member_id,
+      bg_member.g_role as membership_role,
+      id_member.name as member_name,
+      us_member.u_firstname as member_firstname,
+      us_member.u_lastname as member_lastname,
+      bg_me.fk_identity_id as me_id,
+      bgroup.group_id as bg_id,
+      bgroup.groupname as bg_name
+   from o_gp_business bgroup
+   inner join o_bs_group_member bg_member on (bg_member.fk_group_id = bgroup.fk_group_id)
+   inner join o_bs_identity id_member on (bg_member.fk_identity_id = id_member.id)
+   inner join o_user us_member on (id_member.id = us_member.fk_identity)
+   inner join o_bs_group_member bg_me on (bg_me.fk_group_id = bgroup.fk_group_id)
+   where
+      (bgroup.ownersintern>0 and bg_member.g_role='coach')
+      or
+      (bgroup.participantsintern>0 and bg_member.g_role='participant')
+);
\ No newline at end of file
diff --git a/src/main/resources/database/oracle/setupDatabase.sql b/src/main/resources/database/oracle/setupDatabase.sql
index 560fa0cc9ed7fce1c39da149087c2e122866d87f..94848b6352a23bdf0781fa64d28d5df5f85c008b 100644
--- a/src/main/resources/database/oracle/setupDatabase.sql
+++ b/src/main/resources/database/oracle/setupDatabase.sql
@@ -54,7 +54,7 @@ CREATE TABLE o_bs_group_member (
    id number(20) not null,
    creationdate timestamp not null,
    lastmodified timestamp not null,
-   g_role varchar2(50 char) not null,
+   g_role varchar2(24 char) not null,
    g_inheritance_mode varchar2(16 char) default 'none' not null,
    fk_group_id number(20) not null,
    fk_identity_id number(20) not null,
@@ -3073,7 +3073,7 @@ alter table o_bs_group_member add constraint member_identity_ctx foreign key (fk
 alter table o_bs_group_member add constraint member_group_ctx foreign key (fk_group_id) references o_bs_group (id);
 create index member_to_identity_idx on o_bs_group_member (fk_identity_id);
 create index member_to_group_idx on o_bs_group_member (fk_group_id);
-create index member_to_grp_role_idx on o_bs_group_member (g_role);
+create index group_role_member_idx on o_bs_group_member (fk_group_id,g_role,fk_identity_id);
 
 alter table o_re_to_group add constraint re_to_group_group_ctx foreign key (fk_group_id) references o_bs_group (id);
 alter table o_re_to_group add constraint re_to_group_re_ctx foreign key (fk_entry_id) references o_repositoryentry (repositoryentry_id);
diff --git a/src/main/resources/database/postgresql/alter_13_2_x_to_13_2_3.sql b/src/main/resources/database/postgresql/alter_13_2_x_to_13_2_3.sql
new file mode 100644
index 0000000000000000000000000000000000000000..eddf3f776c833e8544ce782deb48d1eae8115d91
--- /dev/null
+++ b/src/main/resources/database/postgresql/alter_13_2_x_to_13_2_3.sql
@@ -0,0 +1,77 @@
+drop index if exists group_role_member_idx;
+drop index if exists member_to_grp_role_idx;
+
+drop view if exists o_bs_gp_membership_v;
+drop view if exists o_re_membership_v;
+drop view if exists o_gp_contactext_v;
+drop view if exists o_gp_contactkey_v;
+drop view if exists o_gp_business_v;
+
+alter table o_bs_group_member alter column g_role type varchar(24);
+
+create index group_role_member_idx on o_bs_group_member (fk_group_id,g_role,fk_identity_id);
+
+
+-- refresh views
+create view o_bs_gp_membership_v as (
+   select
+      membership.id as membership_id,
+      membership.fk_identity_id as fk_identity_id,
+      membership.lastmodified as lastmodified,
+      membership.creationdate as creationdate,
+      membership.g_role as g_role,
+      gp.group_id as group_id
+   from o_bs_group_member as membership
+   inner join o_gp_business as gp on (gp.fk_group_id=membership.fk_group_id)
+);
+
+create or replace view o_re_membership_v as (
+   select
+      bmember.id as membership_id,
+      bmember.creationdate as creationdate,
+      bmember.lastmodified as lastmodified,
+      bmember.fk_identity_id as fk_identity_id,
+      bmember.g_role as g_role,
+      re.repositoryentry_id as fk_entry_id
+   from o_repositoryentry as re
+   inner join o_re_to_group relgroup on (relgroup.fk_entry_id=re.repositoryentry_id and relgroup.r_defgroup=true)
+   inner join o_bs_group_member as bmember on (bmember.fk_group_id=relgroup.fk_group_id)
+);
+
+create view o_gp_contactkey_v as (
+   select
+      bg_member.id as membership_id,
+      bg_member.fk_identity_id as member_id,
+      bg_member.g_role as membership_role,
+      bg_me.fk_identity_id as me_id,
+      bgroup.group_id as bg_id
+   from o_gp_business as bgroup
+   inner join o_bs_group_member as bg_member on (bg_member.fk_group_id = bgroup.fk_group_id)
+   inner join o_bs_group_member as bg_me on (bg_me.fk_group_id = bgroup.fk_group_id)
+   where
+      (bgroup.ownersintern=true and bg_member.g_role='coach')
+      or
+      (bgroup.participantsintern=true and bg_member.g_role='participant')
+);
+
+create view o_gp_contactext_v as (
+   select
+      bg_member.id as membership_id,
+      bg_member.fk_identity_id as member_id,
+      bg_member.g_role as membership_role,
+      id_member.name as member_name,
+      us_member.u_firstname as member_firstname,
+      us_member.u_lastname as member_lastname,
+      bg_me.fk_identity_id as me_id,
+      bgroup.group_id as bg_id,
+      bgroup.groupname as bg_name
+   from o_gp_business as bgroup
+   inner join o_bs_group_member as bg_member on (bg_member.fk_group_id = bgroup.fk_group_id)
+   inner join o_bs_identity as id_member on (bg_member.fk_identity_id = id_member.id)
+   inner join o_user as us_member on (id_member.id = us_member.fk_identity)
+   inner join o_bs_group_member as bg_me on (bg_me.fk_group_id = bgroup.fk_group_id)
+   where
+      (bgroup.ownersintern=true and bg_member.g_role='coach')
+      or
+      (bgroup.participantsintern=true and bg_member.g_role='participant')
+);
\ No newline at end of file
diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql
index 3352ab6ae2e8ac8d1b02cee3d425bcbc28f60bd1..a2f80a0f7f423ba6edd4334a7fd7b1635b3ab2cf 100644
--- a/src/main/resources/database/postgresql/setupDatabase.sql
+++ b/src/main/resources/database/postgresql/setupDatabase.sql
@@ -48,7 +48,7 @@ create table o_bs_group_member (
    id int8 not null,
    creationdate timestamp not null,
    lastmodified timestamp not null,
-   g_role varchar(50) not null,
+   g_role varchar(24) not null,
    g_inheritance_mode varchar(16) default 'none' not null,
    fk_group_id int8 not null,
    fk_identity_id int8 not null,
@@ -2961,7 +2961,7 @@ alter table o_bs_group_member add constraint member_identity_ctx foreign key (fk
 alter table o_bs_group_member add constraint member_group_ctx foreign key (fk_group_id) references o_bs_group (id);
 create index member_to_identity_idx on o_bs_group_member (fk_identity_id);
 create index member_to_group_idx on o_bs_group_member (fk_group_id);
-create index member_to_grp_role_idx on o_bs_group_member (g_role);
+create index group_role_member_idx on o_bs_group_member (fk_group_id,g_role,fk_identity_id);
 
 alter table o_re_to_group add constraint re_to_group_group_ctx foreign key (fk_group_id) references o_bs_group (id);
 alter table o_re_to_group add constraint re_to_group_re_ctx foreign key (fk_entry_id) references o_repositoryentry (repositoryentry_id);
diff --git a/src/test/java/org/olat/repository/manager/RepositoryEntryAuthorQueriesTest.java b/src/test/java/org/olat/repository/manager/RepositoryEntryAuthorQueriesTest.java
index 354856c9cb09ea244341c8df76dfe9a57179796a..b1bba4fa546adddd4b3d5ea68d098addc7788af4 100644
--- a/src/test/java/org/olat/repository/manager/RepositoryEntryAuthorQueriesTest.java
+++ b/src/test/java/org/olat/repository/manager/RepositoryEntryAuthorQueriesTest.java
@@ -395,10 +395,8 @@ public class RepositoryEntryAuthorQueriesTest extends OlatTestCase {
 		params.addResourceTypes(reOwned.getOlatResource().getResourceableTypeName());
 		params.addResourceTypes(reOwned2.getOlatResource().getResourceableTypeName());
 		
-		RepositoryEntryAuthorViewResults results = repositoryEntryAuthorViewQueries.searchViews(params, 0, 1);
+		RepositoryEntryAuthorViewResults results = repositoryEntryAuthorViewQueries.searchViews(params, 0, -1);
 		Assert.assertTrue(contains(reOwned, results));
-		Assert.assertEquals(2, results.getViews().size());
-		Assert.assertTrue(results.isComplete());
 	}
 	
 	/**