diff --git a/src/main/java/org/olat/admin/user/course/CourseOverviewController.java b/src/main/java/org/olat/admin/user/course/CourseOverviewController.java
index a9dc5975dc3c569d443f3651c6fea284c406c8e6..c1d4545bf1b4121e3e1bd6d57ebb643bee58085b 100644
--- a/src/main/java/org/olat/admin/user/course/CourseOverviewController.java
+++ b/src/main/java/org/olat/admin/user/course/CourseOverviewController.java
@@ -161,7 +161,7 @@ public class CourseOverviewController extends BasicController  {
 		//course membership
 		List<RepositoryEntryMembership> memberships = repositoryManager.getRepositoryEntryMembership(null, editedIdentity);
 
-		//group memebership
+		//group membership
 		List<BusinessGroupMembership> groupMemberships =  businessGroupService.getBusinessGroupMembership(Collections.<Long>emptyList(), editedIdentity);
 		Collection<Long> groupKeys = new ArrayList<Long>(groupMemberships.size());
 		for(BusinessGroupMembership membership: groupMemberships) {
diff --git a/src/main/java/org/olat/course/CourseFactory.java b/src/main/java/org/olat/course/CourseFactory.java
index 3fe66fd49d72d9a278e901152c45485170bca6ab..85dde404468c03bce2c3925b57962e47d5f25628 100644
--- a/src/main/java/org/olat/course/CourseFactory.java
+++ b/src/main/java/org/olat/course/CourseFactory.java
@@ -660,7 +660,8 @@ public class CourseFactory extends BasicManager {
 				(CourseEditorTreeNode)course.getEditorTreeModel().getRootNode());
 		// register any references in the run structure. The referenced entries have been 
 		// previousely deplyed (as part of the editor structure deployment process - see above method call)
-		registerReferences(course, course.getRunStructure().getRootNode());
+		registerReferences(course, 
+				(CourseEditorTreeNode)course.getEditorTreeModel().getRootNode());
 		// import shared folder references
 		deployReferencedSharedFolders(courseExportData, course);
 		// import glossary references
@@ -693,12 +694,13 @@ public class CourseFactory extends BasicManager {
 	 * @param course
 	 * @param currentNode
 	 */
-	private static void registerReferences(ICourse course, CourseNode currentNode) {
+	private static void registerReferences(ICourse course, CourseEditorTreeNode currentNode) {
 		for (int i = 0; i < currentNode.getChildCount(); i++) {
-			CourseNode childNode = (CourseNode)currentNode.getChildAt(i);
-			if (childNode.needsReferenceToARepositoryEntry()) {
-				referenceManager.addReference(course,
-					childNode.getReferencedRepositoryEntry().getOlatResource(), childNode.getIdent());
+			CourseEditorTreeNode childNode = (CourseEditorTreeNode)currentNode.getChildAt(i);
+			CourseNode childCourseNode = childNode.getCourseNode();
+			if (childCourseNode.needsReferenceToARepositoryEntry()) {
+				RepositoryEntry re = childCourseNode.getReferencedRepositoryEntry();
+				referenceManager.addReference(course, re.getOlatResource(), childNode.getIdent());
 			}
 			registerReferences(course, childNode);
 		}
diff --git a/src/main/java/org/olat/modules/coach/CoachingService.java b/src/main/java/org/olat/modules/coach/CoachingService.java
index 99a0ee262ca6aec3187e843e94d6c936af49e6f6..ef203b325bc87997b1983e2e6588460a3e158a21 100644
--- a/src/main/java/org/olat/modules/coach/CoachingService.java
+++ b/src/main/java/org/olat/modules/coach/CoachingService.java
@@ -55,7 +55,7 @@ public interface CoachingService {
 	
 	public List<EfficiencyStatementEntry> getGroup(BusinessGroup group);
 	
-	public List<EfficiencyStatementEntry> getCourse(Identity coach, RepositoryEntry entry, int firstResult, int maxResults);
+	public List<EfficiencyStatementEntry> getCourse(Identity coach, RepositoryEntry entry);
 	
 	public EfficiencyStatementEntry getEfficencyStatement(UserEfficiencyStatement statement);
 	
diff --git a/src/main/java/org/olat/modules/coach/manager/CoachingDAO.java b/src/main/java/org/olat/modules/coach/manager/CoachingDAO.java
index 22c42e7390bbd2e63acde1aac9b242c373b10211..f7b26509e04ba743559f46cb6c367a5d155c1fac 100644
--- a/src/main/java/org/olat/modules/coach/manager/CoachingDAO.java
+++ b/src/main/java/org/olat/modules/coach/manager/CoachingDAO.java
@@ -268,7 +268,7 @@ public class CoachingDAO extends BasicManager {
 		return stats;
 	}
 	
-	public List<Long> getStudents(Identity coach, RepositoryEntry entry, int firstResult, int maxResults) {
+	public List<Long> getStudents(Identity coach, RepositoryEntry entry) {
 		StringBuilder sb = new StringBuilder();
 		sb.append("select distinct(participant.identity.key) from repoentrytogroup as relGroup ")
 		  .append(" inner join relGroup.group as baseGroup")
diff --git a/src/main/java/org/olat/modules/coach/manager/CoachingServiceImpl.java b/src/main/java/org/olat/modules/coach/manager/CoachingServiceImpl.java
index 3868dbf4df018db503f34508330386a6f7d358f3..ac7a2a40fe20c13d85b741560d5b29f9de1bf01b 100644
--- a/src/main/java/org/olat/modules/coach/manager/CoachingServiceImpl.java
+++ b/src/main/java/org/olat/modules/coach/manager/CoachingServiceImpl.java
@@ -60,11 +60,13 @@ public class CoachingServiceImpl implements CoachingService {
 	@Autowired
 	private BusinessGroupService businessGroupService;
 	
-	
+
+	@Override
 	public boolean isCoach(Identity coach) {
 		return coachingDao.isCoach(coach);
 	}
-	
+
+	@Override
 	public Map<Long, String> getIdentities(Collection<Long> identityNames) {
 		Map<Long,String> identityMap = new HashMap<Long,String>();
 		
@@ -76,44 +78,53 @@ public class CoachingServiceImpl implements CoachingService {
 		return identityMap;
 	}
 
+	@Override
 	public List<RepositoryEntry> getStudentsCourses(Identity coach, Identity student, int firstResult, int maxResults) {
 		return coachingDao.getStudentsCourses(coach, student, firstResult, maxResults);
 	}
-	
+
+	@Override
 	public List<StudentStatEntry> getStudentsStatistics(Identity coach) {
 		return coachingDao.getStudentsStatistics(coach);
 	}
-	
+
+	@Override
 	public List<CourseStatEntry> getCoursesStatistics(Identity coach) {
 		return coachingDao.getCoursesStatistics(coach);
 	}
-	
+
+	@Override
 	public List<GroupStatEntry> getGroupsStatistics(Identity coach) {
 		return coachingDao.getGroupsStatistics(coach);
 	}
-	
+
+	@Override
 	public List<EfficiencyStatementEntry> getGroup(BusinessGroup group) {
 		List<Identity> students = businessGroupService.getMembers(group, GroupRoles.participant.name());
 		List<RepositoryEntry> courses = businessGroupService.findRepositoryEntries(Collections.singletonList(group), 0, -1);
 		return coachingDao.getEfficencyStatementEntriesAlt(students, courses);
 	}
-	
-	public List<EfficiencyStatementEntry> getCourse(Identity coach, RepositoryEntry entry, int firstResult, int maxResults) {
-		List<Long> studentKeys = coachingDao.getStudents(coach, entry, firstResult, maxResults);
+
+	@Override
+	public List<EfficiencyStatementEntry> getCourse(Identity coach, RepositoryEntry entry) {
+		List<Long> studentKeys = coachingDao.getStudents(coach, entry);
 		List<IdentityShort> students = securityManager.findShortIdentitiesByKey(studentKeys);
 		return coachingDao.getEfficencyStatementEntries(students, Collections.singletonList(entry));
 	}
-	
+
+	@Override
 	public EfficiencyStatementEntry getEfficencyStatement(UserEfficiencyStatement statement) {
 		return coachingDao.getEfficencyStatementEntry(statement);
 	}
-	
+
+	@Override
 	public List<EfficiencyStatementEntry> getEfficencyStatements(Identity student, List<RepositoryEntry> courses) {
 		IdentityShort identity = securityManager.loadIdentityShortByKey(student.getKey());
 		List<IdentityShort> students = Collections.singletonList(identity);
 		return coachingDao.getEfficencyStatementEntries(students, courses);
 	}
 	
+	@Override
 	public List<UserEfficiencyStatement> getEfficencyStatements(Identity student) {
 		return coachingDao.getEfficencyStatementEntries(student);
 	}
diff --git a/src/main/java/org/olat/modules/coach/ui/CourseController.java b/src/main/java/org/olat/modules/coach/ui/CourseController.java
index f16e749c9f65f84d67a8de980679d029729fda02..b86e04ce48e42a96641b74994791321c9fc08ef7 100644
--- a/src/main/java/org/olat/modules/coach/ui/CourseController.java
+++ b/src/main/java/org/olat/modules/coach/ui/CourseController.java
@@ -168,7 +168,7 @@ public class CourseController extends BasicController implements Activateable2 {
 	}
 	
 	public List<EfficiencyStatementEntry> loadModel() {
-		List<EfficiencyStatementEntry> entries = coachingService.getCourse(getIdentity(), course, 0, -1);
+		List<EfficiencyStatementEntry> entries = coachingService.getCourse(getIdentity(), course);
 		TableDataModel<EfficiencyStatementEntry> model = new EfficiencyStatementEntryTableDataModel(entries);
 		tableCtr.setTableDataModel(model);
 		return entries;
diff --git a/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java b/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java
index 117431ef6642c2af3b650a5f66ef961339dce002..4fa41651b68bb02febfa6357dd0967ddcd5c154e 100644
--- a/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java
+++ b/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java
@@ -56,6 +56,12 @@ public class RepositoryEntryRelationDAO {
 	@Autowired
 	private GroupDAO groupDao;
 	
+	/**
+	 * Get roles in the repository entry, with business groups too
+	 * @param identity
+	 * @param re
+	 * @return
+	 */
 	public List<String> getRoles(IdentityRef identity, RepositoryEntryRef re) {
 		StringBuilder sb = new StringBuilder();
 		sb.append("select membership.role from ").append(RepositoryEntry.class.getName()).append(" as v")
@@ -71,12 +77,19 @@ public class RepositoryEntryRelationDAO {
 				.getResultList();
 	}
 
+	/**
+	 * Has role in the repository entry only (without business groups)
+	 * @param identity
+	 * @param re
+	 * @param roles
+	 * @return
+	 */
 	public boolean hasRole(IdentityRef identity, RepositoryEntryRef re, String... roles) {
 		List<String> roleList = GroupRoles.toList(roles);
 		
 		StringBuilder sb = new StringBuilder();
 		sb.append("select count(membership) from ").append(RepositoryEntry.class.getName()).append(" as v")
-		  .append(" inner join v.groups as relGroup")
+		  .append(" inner join v.groups as relGroup on relGroup.defaultGroup=true")
 		  .append(" inner join relGroup.group as baseGroup")
 		  .append(" inner join baseGroup.members as membership")
 		  .append(" where v.key=:repoKey and membership.identity.key=:identityKey");
diff --git a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java
index 78aade40b73d9a6107dfb2bac48187b59f2ad38d..55c57c4e64104ffb48ebe45627c36fd701f39ad0 100644
--- a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java
+++ b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java
@@ -304,11 +304,20 @@ public class RepositoryServiceImpl implements RepositoryService {
 		return reToGroupDao.getDefaultGroup(ref);
 	}
 
+	/**
+	 * Get the role in the specified resource, business group are included in
+	 * the query.
+	 * 
+	 */
 	@Override
 	public List<String> getRoles(Identity identity, RepositoryEntryRef re) {
 		return reToGroupDao.getRoles(identity, re);
 	}
 
+	/**
+	 * Has specific role in the specified resource WITHOUT business groups included in
+	 * the query.
+	 */
 	@Override
 	public boolean hasRole(Identity identity, RepositoryEntryRef re, String... roles) {
 		return reToGroupDao.hasRole(identity, re, roles);
diff --git a/src/main/resources/database/mysql/alter_9_4_0_to_10_0_0.sql b/src/main/resources/database/mysql/alter_9_4_0_to_10_0_0.sql
index eaacd7e0595d371e030db2f3ab2654a73f180f12..a9ba9b1840d6ddf38c2f2b7c1208a018bef0d42b 100644
--- a/src/main/resources/database/mysql/alter_9_4_0_to_10_0_0.sql
+++ b/src/main/resources/database/mysql/alter_9_4_0_to_10_0_0.sql
@@ -235,7 +235,7 @@ create or replace view o_re_membership_v as (
       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)
+   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) 
 );
 
@@ -246,8 +246,8 @@ create or replace view o_as_eff_statement_students_v as (
       sg_coach.fk_identity_id as tutor_id,
       sg_participant.fk_identity_id as student_id,
       sg_statement.id as st_id,
-      (case when sg_statement.passed = true then 1 else 0 end) as st_passed,
-      (case when sg_statement.passed = false then 1 else 0 end) as st_failed,
+      (case when sg_statement.passed = 1 then 1 else 0 end) as st_passed,
+      (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed,
       (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted,
       sg_statement.score as st_score,
       pg_initial_launch.id as pg_id
@@ -257,6 +257,8 @@ create or replace view o_as_eff_statement_students_v as (
    inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 create or replace view o_as_eff_statement_courses_v as (
@@ -266,8 +268,8 @@ create or replace view o_as_eff_statement_courses_v as (
       sg_coach.fk_identity_id as tutor_id,
       sg_participant.fk_identity_id as student_id,
       sg_statement.id as st_id,
-      (case when sg_statement.passed = true then 1 else 0 end) as st_passed,
-      (case when sg_statement.passed = false then 1 else 0 end) as st_failed,
+      (case when sg_statement.passed = 1 then 1 else 0 end) as st_passed,
+      (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed,
       (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted,
       sg_statement.score as st_score,
       pg_initial_launch.id as pg_id
@@ -277,6 +279,8 @@ create or replace view o_as_eff_statement_courses_v as (
    inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 create or replace view o_as_eff_statement_groups_v as (
@@ -288,8 +292,8 @@ create or replace view o_as_eff_statement_groups_v as (
       sg_coach.fk_identity_id as tutor_id,
       sg_participant.fk_identity_id as student_id,
       sg_statement.id as st_id,
-      (case when sg_statement.passed = true then 1 else 0 end) as st_passed,
-      (case when sg_statement.passed = false then 1 else 0 end) as st_failed,
+      (case when sg_statement.passed = 1 then 1 else 0 end) as st_passed,
+      (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed,
       (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted,
       sg_statement.score as st_score,
       pg_initial_launch.id as pg_id
@@ -300,6 +304,9 @@ create or replace view o_as_eff_statement_groups_v as (
    inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_bg.group_id, sg_bg.groupname,
+      sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 -- drop views
diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql
index c9efaf968bbc48f1c94539ec7c6c2228c733df39..def00f1d8404ba0118bc3644b92ca8ead0811e6d 100644
--- a/src/main/resources/database/mysql/setupDatabase.sql
+++ b/src/main/resources/database/mysql/setupDatabase.sql
@@ -1461,7 +1461,7 @@ create or replace view o_re_membership_v as (
       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)
+   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) 
 );
   
@@ -1513,8 +1513,8 @@ create view o_as_eff_statement_students_v as (
       sg_coach.fk_identity_id as tutor_id,
       sg_participant.fk_identity_id as student_id,
       sg_statement.id as st_id,
-      (case when sg_statement.passed = true then 1 else 0 end) as st_passed,
-      (case when sg_statement.passed = false then 1 else 0 end) as st_failed,
+      (case when sg_statement.passed = 1 then 1 else 0 end) as st_passed,
+      (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed,
       (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted,
       sg_statement.score as st_score,
       pg_initial_launch.id as pg_id
@@ -1524,6 +1524,8 @@ create view o_as_eff_statement_students_v as (
    inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 create view o_as_eff_statement_courses_v as (
@@ -1533,8 +1535,8 @@ create view o_as_eff_statement_courses_v as (
       sg_coach.fk_identity_id as tutor_id,
       sg_participant.fk_identity_id as student_id,
       sg_statement.id as st_id,
-      (case when sg_statement.passed = true then 1 else 0 end) as st_passed,
-      (case when sg_statement.passed = false then 1 else 0 end) as st_failed,
+      (case when sg_statement.passed = 1 then 1 else 0 end) as st_passed,
+      (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed,
       (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted,
       sg_statement.score as st_score,
       pg_initial_launch.id as pg_id
@@ -1544,6 +1546,8 @@ create view o_as_eff_statement_courses_v as (
    inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 create view o_as_eff_statement_groups_v as (
@@ -1555,8 +1559,8 @@ create view o_as_eff_statement_groups_v as (
       sg_coach.fk_identity_id as tutor_id,
       sg_participant.fk_identity_id as student_id,
       sg_statement.id as st_id,
-      (case when sg_statement.passed = true then 1 else 0 end) as st_passed,
-      (case when sg_statement.passed = false then 1 else 0 end) as st_failed,
+      (case when sg_statement.passed = 1 then 1 else 0 end) as st_passed,
+      (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed,
       (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted,
       sg_statement.score as st_score,
       pg_initial_launch.id as pg_id
@@ -1567,6 +1571,9 @@ create view o_as_eff_statement_groups_v as (
    inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_bg.group_id, sg_bg.groupname,
+      sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 -- instant messaging
diff --git a/src/main/resources/database/oracle/alter_9_4_0_to_10_0_0.sql b/src/main/resources/database/oracle/alter_9_4_0_to_10_0_0.sql
index 6a484abfcf4fb2b49c87fbd6d0957da255158c4f..d5ac592fe174fc0fa31f04a991ce36444f40780d 100644
--- a/src/main/resources/database/oracle/alter_9_4_0_to_10_0_0.sql
+++ b/src/main/resources/database/oracle/alter_9_4_0_to_10_0_0.sql
@@ -237,7 +237,7 @@ create or replace view o_re_membership_v as (
       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)
+   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) 
 );
 
@@ -248,7 +248,7 @@ create or replace view o_as_eff_statement_students_v as (
       sg_coach.fk_identity_id as tutor_id,
       sg_participant.fk_identity_id as student_id,
       sg_statement.id as st_id,
-      (case when sg_statement.passed > 1 then 1 else 0 end) as st_passed,
+      (case when sg_statement.passed > 0 then 1 else 0 end) as st_passed,
       (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed,
       (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted,
       sg_statement.score as st_score,
@@ -259,6 +259,8 @@ create or replace view o_as_eff_statement_students_v as (
    inner join o_bs_group_member sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.passed, sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 create or replace view o_as_eff_statement_courses_v as (
@@ -279,6 +281,8 @@ create or replace view o_as_eff_statement_courses_v as (
    inner join o_bs_group_member sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.passed, sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 create or replace view o_as_eff_statement_groups_v as (
@@ -302,6 +306,9 @@ create or replace view o_as_eff_statement_groups_v as (
    inner join o_bs_group_member sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_bg.group_id, sg_bg.groupname,
+      sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.passed, sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 -- drop views
diff --git a/src/main/resources/database/oracle/setupDatabase.sql b/src/main/resources/database/oracle/setupDatabase.sql
index b2f7fb326163751918859bfee8ac4deb84ef1995..e48a52819eddb331a20cb63f7d8dca7f96f10d97 100644
--- a/src/main/resources/database/oracle/setupDatabase.sql
+++ b/src/main/resources/database/oracle/setupDatabase.sql
@@ -1513,7 +1513,7 @@ create or replace view o_re_membership_v as (
       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)
+   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) 
 );
 
@@ -1565,7 +1565,7 @@ create view o_as_eff_statement_students_v as (
       sg_coach.fk_identity_id as tutor_id,
       sg_participant.fk_identity_id as student_id,
       sg_statement.id as st_id,
-      (case when sg_statement.passed > 1 then 1 else 0 end) as st_passed,
+      (case when sg_statement.passed > 0 then 1 else 0 end) as st_passed,
       (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed,
       (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted,
       sg_statement.score as st_score,
@@ -1576,6 +1576,8 @@ create view o_as_eff_statement_students_v as (
    inner join o_bs_group_member sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.passed, sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 create view o_as_eff_statement_courses_v as (
@@ -1596,6 +1598,8 @@ create view o_as_eff_statement_courses_v as (
    inner join o_bs_group_member sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.passed, sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 create view o_as_eff_statement_groups_v as (
@@ -1619,6 +1623,9 @@ create view o_as_eff_statement_groups_v as (
    inner join o_bs_group_member sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_bg.group_id, sg_bg.groupname,
+      sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.passed, sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 create or replace view o_im_roster_entry_v as (
diff --git a/src/main/resources/database/postgresql/alter_9_4_0_to_10_0_0.sql b/src/main/resources/database/postgresql/alter_9_4_0_to_10_0_0.sql
index 1da122c77c2c908403b51ec4396fc1735103f79f..0769af2d3703c0535ddb1e448b2a00d31e5a4f53 100644
--- a/src/main/resources/database/postgresql/alter_9_4_0_to_10_0_0.sql
+++ b/src/main/resources/database/postgresql/alter_9_4_0_to_10_0_0.sql
@@ -240,7 +240,7 @@ create or replace view o_re_membership_v as (
       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)
+   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) 
 );
 
@@ -262,6 +262,8 @@ create view o_as_eff_statement_students_v as (
    inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 create view o_as_eff_statement_courses_v as (
@@ -282,6 +284,8 @@ create view o_as_eff_statement_courses_v as (
    inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 drop view o_as_eff_statement_groups_v;
@@ -306,6 +310,9 @@ create view o_as_eff_statement_groups_v as (
    inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_bg.group_id, sg_bg.groupname,
+      sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 -- drop views
diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql
index 467c328313a1e1406e641c0389b58c9763981eb9..170448b3ac0853764ac5bfbac997cf13840b06d1 100644
--- a/src/main/resources/database/postgresql/setupDatabase.sql
+++ b/src/main/resources/database/postgresql/setupDatabase.sql
@@ -1462,7 +1462,7 @@ create or replace view o_re_membership_v as (
       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)
+   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) 
 );
   
@@ -1525,6 +1525,8 @@ create view o_as_eff_statement_students_v as (
    inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 create view o_as_eff_statement_courses_v as (
@@ -1545,6 +1547,8 @@ create view o_as_eff_statement_courses_v as (
    inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 create view o_as_eff_statement_groups_v as (
@@ -1568,6 +1572,9 @@ create view o_as_eff_statement_groups_v as (
    inner join o_bs_group_member as sg_participant on (sg_participant.fk_group_id=sg_coach.fk_group_id and sg_participant.g_role='participant')
    left join o_as_eff_statement as sg_statement on (sg_statement.fk_identity = sg_participant.fk_identity_id and sg_statement.fk_resource_id = sg_re.fk_olatresource)
    left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_re.fk_olatresource and pg_initial_launch.fk_identity = sg_participant.fk_identity_id)
+   group by sg_re.repositoryentry_id, sg_re.displayname, sg_bg.group_id, sg_bg.groupname,
+      sg_coach.fk_identity_id, sg_participant.fk_identity_id,
+      sg_statement.id, sg_statement.score, pg_initial_launch.id
 );
 
 -- instant messaging
diff --git a/src/test/java/org/olat/modules/coach/CoachingCourse.zip b/src/test/java/org/olat/modules/coach/CoachingCourse.zip
new file mode 100644
index 0000000000000000000000000000000000000000..a3963ce7795afa2f5cd700670287848521a13106
Binary files /dev/null and b/src/test/java/org/olat/modules/coach/CoachingCourse.zip differ
diff --git a/src/test/java/org/olat/modules/coach/CoachingDAOTest.java b/src/test/java/org/olat/modules/coach/CoachingDAOTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..11c747222d3e0616a441fce0a95fd45bb366df1e
--- /dev/null
+++ b/src/test/java/org/olat/modules/coach/CoachingDAOTest.java
@@ -0,0 +1,62 @@
+package org.olat.modules.coach;
+
+import java.io.File;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.List;
+import java.util.UUID;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.olat.basesecurity.GroupRoles;
+import org.olat.core.commons.persistence.DB;
+import org.olat.core.id.Identity;
+import org.olat.course.CourseFactory;
+import org.olat.course.ICourse;
+import org.olat.modules.coach.manager.CoachingDAO;
+import org.olat.modules.coach.model.StudentStatEntry;
+import org.olat.repository.RepositoryEntry;
+import org.olat.repository.RepositoryService;
+import org.olat.test.JunitTestHelper;
+import org.olat.test.OlatTestCase;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class CoachingDAOTest extends OlatTestCase {
+	
+	@Autowired
+	private DB dbInstance;
+	@Autowired
+	private CoachingDAO coachingDAO;
+	@Autowired
+	private RepositoryService repositoryService;
+	
+	@Test
+	public void getStudents()
+	throws URISyntaxException {
+		URL courseWithForumsUrl = CoachingDAOTest.class.getResource("CoachingCourse.zip");
+		File courseWithForums = new File(courseWithForumsUrl.toURI());
+		String softKey = UUID.randomUUID().toString();
+		RepositoryEntry re = CourseFactory.deployCourseFromZIP(courseWithForums, softKey, 4);
+		Assert.assertNotNull(re);
+
+		dbInstance.commitAndCloseSession();
+		
+		ICourse course = CourseFactory.loadCourse(re.getOlatResource().getResourceableId());			
+		boolean enabled =course.getCourseEnvironment().getCourseConfig().isEfficencyStatementEnabled();
+		Assert.assertTrue(enabled);
+		
+		Identity coach = JunitTestHelper.createAndPersistIdentityAsAuthor("Coach-1-" + UUID.randomUUID());
+		repositoryService.addRole(coach, re, GroupRoles.coach.name());
+		Identity participant1 = JunitTestHelper.createAndPersistIdentityAsRndUser("Coaching-Part-1");
+		repositoryService.addRole(participant1, re, GroupRoles.participant.name());
+		Identity participant2 = JunitTestHelper.createAndPersistIdentityAsRndUser("Coaching-Part-2");
+		repositoryService.addRole(participant2, re, GroupRoles.participant.name());
+		dbInstance.commitAndCloseSession();
+		
+		
+		List<StudentStatEntry> stats = coachingDAO.getStudentsStatistics(coach);
+		Assert.assertNotNull(stats);
+		Assert.assertEquals(2, stats.size());
+	}
+
+}
diff --git a/src/test/java/org/olat/modules/coach/CoachingServiceTest.java b/src/test/java/org/olat/modules/coach/CoachingServiceTest.java
index b74397f7077d5a6a4b03383da3e8d13e14d9c28b..d62511e9afb54346abf9bfb43024072039fb4dfc 100644
--- a/src/test/java/org/olat/modules/coach/CoachingServiceTest.java
+++ b/src/test/java/org/olat/modules/coach/CoachingServiceTest.java
@@ -315,7 +315,7 @@ public class CoachingServiceTest extends OlatTestCase {
 		List<Long> myCourses = coachToCourseMap.get(coach10.getKey());
 		assertNotNull(myCourses);
 
-		List<EfficiencyStatementEntry> statEntries = coachingService.getCourse(coach10, course10, 0, -1);
+		List<EfficiencyStatementEntry> statEntries = coachingService.getCourse(coach10, course10);
 		assertNotNull(statEntries);
 		assertFalse(statEntries.isEmpty());
 		assertTrue(myCourses.contains(course10.getKey()));