diff --git a/src/main/java/org/olat/course/assessment/AssessmentToolManager.java b/src/main/java/org/olat/course/assessment/AssessmentToolManager.java
index 320f1859c7c5dc7634441089113eb105f783dbb0..95da08c25ff9df39063f89d34e735a14a7d6e8c0 100644
--- a/src/main/java/org/olat/course/assessment/AssessmentToolManager.java
+++ b/src/main/java/org/olat/course/assessment/AssessmentToolManager.java
@@ -64,13 +64,6 @@ public interface AssessmentToolManager {
 	 */
 	public AssessmentMembersStatistics getNumberOfParticipants(Identity coach, SearchAssessedIdentityParams params);
 	
-	/**
-	 * The number of user who launched the course / resource
-	 * @param coach
-	 * @param params
-	 * @return
-	 */
-	public int getNumberOfInitialLaunches(Identity coach, SearchAssessedIdentityParams params);
 	
 	public List<Identity> getAssessedIdentities(Identity coach, SearchAssessedIdentityParams params);
 	
diff --git a/src/main/java/org/olat/course/assessment/manager/AssessmentToolManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/AssessmentToolManagerImpl.java
index abea6d518a6e4aa86de7c72546e6e565074a5b93..42b4d777c64a03476ea6c404c6cfaa52377d4b8a 100644
--- a/src/main/java/org/olat/course/assessment/manager/AssessmentToolManagerImpl.java
+++ b/src/main/java/org/olat/course/assessment/manager/AssessmentToolManagerImpl.java
@@ -32,6 +32,7 @@ import org.olat.basesecurity.IdentityRef;
 import org.olat.basesecurity.IdentityShort;
 import org.olat.core.commons.persistence.DB;
 import org.olat.core.commons.persistence.PersistenceHelper;
+import org.olat.core.commons.persistence.QueryBuilder;
 import org.olat.core.id.Identity;
 import org.olat.core.util.StringHelper;
 import org.olat.course.assessment.AssessmentToolManager;
@@ -82,7 +83,7 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
 		int participantLoggedIn = 0;
 		
 		StringBuilder sc = new StringBuilder();
-		sc.append("select infos.identity.key from usercourseinfos as infos ")
+		sc.append("select infos.identity.key from usercourseinfos as infos")
 		  .append(" inner join infos.resource as infosResource on (infosResource.key=:resourceKey)");
 		List<Long> allKeys = dbInstance.getCurrentEntityManager()
 			.createQuery(sc.toString(), Long.class)
@@ -143,46 +144,6 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
 		return new AssessmentMembersStatistics(numOfParticipants, participantLoggedIn, numOfOtherUsers, loggedIn);
 	}
 
-	@Override
-	public int getNumberOfInitialLaunches(Identity coach, SearchAssessedIdentityParams params) {
-		RepositoryEntry courseEntry = params.getEntry();
-
-		StringBuilder sf = new StringBuilder();
-		sf.append("select count(infos.key), infosResource.key from usercourseinfos as infos ")
-		  .append(" inner join infos.resource as infosResource on (infosResource.key=:resourceKey)")
-		  .append(" where (infos.identity in");
-		if(params.isAdmin()) {
-			sf.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant")
-	          .append("    where rel.entry.key=:repoEntryKey and rel.group=participant.group")
-	          .append("      and participant.role='").append(GroupRoles.participant.name()).append("'")
-	          .append("  )");
-			if(params.isNonMembers()) {
-				sf.append(" or not exists (select membership.identity from repoentrytogroup as rel, bgroupmember as membership")
-		          .append("    where rel.entry.key=:repoEntryKey and rel.group.key=membership.group.key and membership.identity.key=infos.identity.key")
-		          .append("  )");
-			}
-		} else if(params.isCoach()) {
-			sf.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant, bgroupmember as coach")
-	          .append("    where rel.entry.key=:repoEntryKey")
-	          .append("      and rel.group.key=coach.group.key and coach.role='").append(GroupRoles.coach.name()).append("' and coach.identity.key=:identityKey")
-	          .append("      and rel.group.key=participant.group.key and participant.role='").append(GroupRoles.participant.name()).append("'")
-	          .append("  )");
-		}
-		sf.append(" ) group by infosResource.key");
-
-		TypedQuery<Object[]> infos = dbInstance.getCurrentEntityManager()
-			.createQuery(sf.toString(), Object[].class)
-			.setParameter("resourceKey", courseEntry.getOlatResource().getKey())
-			.setParameter("repoEntryKey", courseEntry.getKey());
-		if(!params.isAdmin()) {
-			infos.setParameter("identityKey", coach.getKey());
-		}
-
-		List<Object[]> results = infos.getResultList();
-		return results != null && !results.isEmpty() && results.get(0)[0] instanceof Number
-				? ((Number)results.get(0)[0]).intValue(): 0;
-	}
-
 	@Override
 	public List<AssessedBusinessGroup> getBusinessGroupStatistics(Identity coach, SearchAssessedIdentityParams params) {
 		RepositoryEntry courseEntry = params.getEntry();
@@ -252,7 +213,7 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
 	public AssessmentStatistics getStatistics(Identity coach, SearchAssessedIdentityParams params) {
 		RepositoryEntry courseEntry = params.getEntry();
 
-		StringBuilder sf = new StringBuilder();
+		QueryBuilder sf = new QueryBuilder();
 		sf.append("select avg(aentry.score) as scoreAverage, ")
 		  .append(" sum(case when aentry.passed=true then 1 else 0 end) as numOfPassed,")
 		  .append(" sum(case when aentry.passed=false then 1 else 0 end) as numOfFailed,")
@@ -268,22 +229,23 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
 		if(params.getSubIdent() != null) {
 			sf.append(" and aentry.subIdent=:subIdent");
 		}
-		sf.append(" and (aentry.identity in");
+		sf.append(" and (aentry.identity.key in");
 		if(params.isAdmin()) {
-			sf.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant")
-	          .append("    where rel.entry.key=:repoEntryKey and rel.group=participant.group")
+			sf.append(" (select participant.identity.key from repoentrytogroup as rel, bgroupmember as participant")
+	          .append("    where rel.entry.key=:repoEntryKey and rel.group.key=participant.group.key")
 	          .append("      and participant.role='").append(GroupRoles.participant.name()).append("'")
 	          .append("  )");
 			if(params.isNonMembers()) {
-				sf.append(" or aentry.identity not in (select membership.identity from repoentrytogroup as rel, bgroupmember as membership")
-		          .append("    where rel.entry.key=:repoEntryKey and rel.group=membership.group and membership.identity=aentry.identity")
+				sf.append(" or aentry.identity.key not in (select membership.identity.key from repoentrytogroup as rel, bgroupmember as membership")
+		          .append("    where rel.entry.key=:repoEntryKey and rel.group.key=membership.group.key and membership.role ").in(GroupRoles.participant, GroupRoles.coach, GroupRoles.owner)
+		          .append("    and membership.identity.key=aentry.identity.key")
 		          .append(" )");
 			}
 		} else if(params.isCoach()) {
 			sf.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant, bgroupmember as coach")
 	          .append("    where rel.entry.key=:repoEntryKey")
-	          .append("      and rel.group=coach.group and coach.role='").append(GroupRoles.coach.name()).append("' and coach.identity.key=:identityKey")
-	          .append("      and rel.group=participant.group and participant.role='").append(GroupRoles.participant.name()).append("'")
+	          .append("      and rel.group.key=coach.group.key and coach.role='").append(GroupRoles.coach.name()).append("' and coach.identity.key=:identityKey")
+	          .append("      and rel.group.key=participant.group.key and participant.role='").append(GroupRoles.participant.name()).append("'")
 	          .append("  )");
 		}
 		sf.append(" ) group by v.key");
@@ -324,14 +286,13 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
 	}
 	
 	private <T> TypedQuery<T> createAssessedIdentities(Identity coach, SearchAssessedIdentityParams params, Class<T> classResult) {
-		StringBuilder sb = new StringBuilder();
+		QueryBuilder sb = new QueryBuilder();
 		sb.append("select ");
 		if(Identity.class.equals(classResult)) {
-			sb.append("ident").append(" from ").append(IdentityImpl.class.getName()).append(" as ident ")
-			  .append(" inner join fetch ident.user user ");
+			sb.append("ident").append(" from ").append(IdentityImpl.class.getName()).append(" as ident")
+			  .append(" inner join fetch ident.user user");
 		} else {
-			sb.append("count(ident.key)").append(" from ").append(IdentityImpl.class.getName()).append(" as ident ")
-			  .append(" inner join ident.user user ");
+			sb.append("count(ident.key)").append(" from ").append(IdentityImpl.class.getName()).append(" as ident");
 		}
 		sb.append(" where ident.status<").append(Identity.STATUS_DELETED).append(" and");
 		
@@ -339,7 +300,7 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
 			sb.append("(");
 			if(params.hasBusinessGroupKeys()) {
 				sb.append(" ident.key in (select participant.identity.key from repoentrytogroup as rel, businessgroup bgi, bgroupmember as participant")
-		          .append("    where rel.entry.key=:repoEntryKey and rel.group=bgi.baseGroup and rel.group=participant.group and bgi.key in (:businessGroupKeys) ")
+		          .append("    where rel.entry.key=:repoEntryKey and rel.group.key=bgi.baseGroup.key and rel.group.key=participant.group.key and bgi.key in (:businessGroupKeys) ")
 				  .append("    and participant.role='").append(GroupRoles.participant.name()).append("'")
 				  .append("  )");
 			}
@@ -348,21 +309,22 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
 					sb.append(" or ");
 				}
 				sb.append(" ident.key in (select participant.identity.key from repoentrytogroup as rel, curriculumelement curEl, bgroupmember as participant")
-		          .append("    where rel.entry.key=:repoEntryKey and rel.group=curEl.group and rel.group=participant.group and curEl.key in (:curriculumElementKeys) ")
+		          .append("    where rel.entry.key=:repoEntryKey and rel.group.key=curEl.group.key and rel.group.key=participant.group.key and curEl.key in (:curriculumElementKeys) ")
 				  .append("    and participant.role='").append(GroupRoles.participant.name()).append("'")
 				  .append("  )");
 			}
 			sb.append(")");
 		} else if(params.isAdmin()) {
 			sb.append(" (ident.key in (select participant.identity.key from repoentrytogroup as rel, bgroupmember as participant")
-	          .append("    where rel.entry.key=:repoEntryKey and rel.group=participant.group")
+	          .append("    where rel.entry.key=:repoEntryKey and rel.group.key=participant.group.key")
 	          .append("      and participant.role='").append(GroupRoles.participant.name()).append("'")
-	          .append(" )");
+	          .append("  )");
 			if(params.isNonMembers()) {
 				sb.append(" or ident.key in (select aentry.identity.key from assessmententry aentry")
 				  .append("  where aentry.repositoryEntry.key=:repoEntryKey")
-				  .append("  and not exists (select membership.identity from repoentrytogroup as rel, bgroupmember as membership")
-		          .append("    where rel.entry.key=:repoEntryKey and rel.group=membership.group and membership.identity=aentry.identity)")
+				  .append("  and not exists (select membership.key from repoentrytogroup as rel, bgroupmember as membership")
+		          .append("    where rel.entry.key=aentry.repositoryEntry.key and rel.group=membership.group and membership.role ").in(GroupRoles.participant, GroupRoles.coach, GroupRoles.owner)
+		          .append("    and membership.identity.key=aentry.identity.key)")
 		          .append(" )");
 			}
 			sb.append(")");
@@ -370,8 +332,8 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
 			
 			sb.append(" ident.key in (select participant.identity.key from repoentrytogroup as rel, bgroupmember as participant, bgroupmember as coach")
 	          .append("    where rel.entry.key=:repoEntryKey")
-	          .append("      and rel.group=coach.group and coach.role='").append(GroupRoles.coach.name()).append("' and coach.identity.key=:identityKey")
-	          .append("      and rel.group=participant.group and participant.role='").append(GroupRoles.participant.name()).append("'")
+	          .append("      and rel.group.key=coach.group.key and coach.role='").append(GroupRoles.coach.name()).append("' and coach.identity.key=:identityKey")
+	          .append("      and rel.group.key=participant.group.key and participant.role='").append(GroupRoles.participant.name()).append("'")
 	          .append("  )");
 		}
 		
@@ -399,20 +361,21 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
 	
 	@Override
 	public List<IdentityShort> getShortAssessedIdentities(Identity coach, SearchAssessedIdentityParams params, int maxResults) {
-		StringBuilder sb = new StringBuilder();
+		QueryBuilder sb = new QueryBuilder();
 		sb.append("select ident")
 		  .append(" from bidentityshort as ident ")
 		  .append(" where ");
 		if(params.isAdmin()) {
 			sb.append(" (ident.key in (select participant.identity.key from repoentrytogroup as rel, bgroupmember as participant")
-	          .append("    where rel.entry.key=:repoEntryKey and rel.group=participant.group")
+	          .append("    where rel.entry.key=:repoEntryKey and rel.group.key=participant.group.key")
 	          .append("      and participant.role='").append(GroupRoles.participant.name()).append("'")
 	          .append(" )");
 			if(params.isNonMembers()) {
 				sb.append(" or ident.key in (select aentry.identity.key from assessmententry aentry")
 				  .append("  where aentry.repositoryEntry.key=:repoEntryKey")
 				  .append("  and not exists (select membership.identity from repoentrytogroup as rel, bgroupmember as membership")
-		          .append("    where rel.entry.key=:repoEntryKey and rel.group=membership.group and membership.identity=aentry.identity)")
+		          .append("    where rel.entry.key=:repoEntryKey and rel.group.key=membership.group.key and membership.role ").in(GroupRoles.participant, GroupRoles.coach, GroupRoles.owner)
+		          .append("    and membership.identity.key=aentry.identity.key)")
 		          .append(" )");
 			}
 			sb.append(")");
@@ -442,7 +405,7 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
 		return query.getResultList();
 	}
 	
-	private Long appendUserSearchByKey(StringBuilder sb, String search) {
+	private Long appendUserSearchByKey(QueryBuilder sb, String search) {
 		Long identityKey = null;
 		if(StringHelper.containsNonWhitespace(search)) {
 			if(StringHelper.isLong(search)) {
@@ -461,7 +424,7 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
 
 	}
 	
-	private String[] appendUserSearch(StringBuilder sb, String search) {
+	private String[] appendUserSearch(QueryBuilder sb, String search) {
 		String[] searchArr = null;
 
 		if(StringHelper.containsNonWhitespace(search)) {
@@ -494,7 +457,7 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
 		return searchArr;
 	}
 	
-	private String[] appendUserSearchFull(StringBuilder sb, String search, boolean and) {
+	private String[] appendUserSearchFull(QueryBuilder sb, String search, boolean and) {
 		String[] searchArr = null;
 
 		if(StringHelper.containsNonWhitespace(search)) {
diff --git a/src/test/java/org/olat/course/assessment/manager/AssessmentToolManagerTest.java b/src/test/java/org/olat/course/assessment/manager/AssessmentToolManagerTest.java
index 2041750dca22f97ddf7910285607e8618af1f7d9..d6cb1527e990c62525226c5bd5291a66c1e7d34b 100644
--- a/src/test/java/org/olat/course/assessment/manager/AssessmentToolManagerTest.java
+++ b/src/test/java/org/olat/course/assessment/manager/AssessmentToolManagerTest.java
@@ -42,6 +42,7 @@ import org.olat.modules.assessment.model.AssessmentEntryStatus;
 import org.olat.modules.assessment.model.AssessmentMembersStatistics;
 import org.olat.modules.assessment.ui.AssessmentToolSecurityCallback;
 import org.olat.repository.RepositoryEntry;
+import org.olat.repository.manager.RepositoryEntryRelationDAO;
 import org.olat.test.JunitTestHelper;
 import org.olat.test.OlatTestCase;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -65,6 +66,10 @@ public class AssessmentToolManagerTest extends OlatTestCase {
 	private AssessmentToolManager assessmentToolManager;
 	@Autowired
 	private BusinessGroupRelationDAO businessGroupRelationDao;
+	@Autowired
+	private RepositoryEntryRelationDAO repositoryEntryRelationDao;
+	@Autowired
+	private UserCourseInformationsManager userCourseInformationsManager;
 	
 	@Test
 	public void assessmentTool_coach() {
@@ -124,8 +129,6 @@ public class AssessmentToolManagerTest extends OlatTestCase {
 		//check only the queries
 		AssessmentMembersStatistics participantStatistics = assessmentToolManager.getNumberOfParticipants(coach, params);
 		Assert.assertNotNull(participantStatistics);
-		int numOfInitialLanches = assessmentToolManager.getNumberOfInitialLaunches(coach, params);
-		Assert.assertEquals(0, numOfInitialLanches);//not launched, only simulated
 
 		List<IdentityShort> assessedShortIdentities = assessmentToolManager.getShortAssessedIdentities(coach, params, 120);
 		Assert.assertNotNull(assessedShortIdentities);
@@ -161,4 +164,141 @@ public class AssessmentToolManagerTest extends OlatTestCase {
 		Assert.assertNotNull(assessmentEntriesAlt);
 		Assert.assertEquals(0, assessmentEntriesAlt.size());
 	}
+	
+	@Test
+	public void assessmentTool_admin() {
+		//course
+		Identity admin = JunitTestHelper.createAndPersistIdentityAsRndAdmin("ast-admin-1");
+		RepositoryEntry entry = JunitTestHelper.deployBasicCourse(admin);
+		
+		//members as participant and coach
+		Identity assessedIdentity1 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-5");
+		Identity assessedIdentity2 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-6");
+		Identity assessedIdentity3 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-7");
+		Identity assessedIdentity4 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-8");
+		Identity assessedExtIdentity5 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-ext-9");
+		Identity assessedExtIdentity6 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-ext-10");
+		Identity assessedExtIdentity7 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-ext-11");
+		Identity coach = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-coach-9");
+
+		RepositoryEntry refEntry = JunitTestHelper.createAndPersistRepositoryEntry();
+		String subIdent = UUID.randomUUID().toString();
+		
+		BusinessGroup group1 = businessGroupDao.createAndPersist(null, "assessment-tool-bg-1", "assessment-tool-bg-1-desc", -1, -1, false, false, false, false, false);
+		businessGroupRelationDao.addRelationToResource(group1, entry);
+		BusinessGroup group2 = businessGroupDao.createAndPersist(null, "assessment-tool-bg-2", "assessment-tool-bg-2-desc", -1, -1, false, false, false, false, false);
+		businessGroupRelationDao.addRelationToResource(group2, entry);
+		
+		businessGroupRelationDao.addRole(assessedIdentity1, group1, GroupRoles.participant.name());
+		businessGroupRelationDao.addRole(assessedIdentity2, group1, GroupRoles.participant.name());
+		businessGroupRelationDao.addRole(assessedIdentity3, group2, GroupRoles.participant.name());
+		businessGroupRelationDao.addRole(assessedIdentity3, group2, GroupRoles.participant.name());
+		businessGroupRelationDao.addRole(coach, group1, GroupRoles.coach.name());
+		dbInstance.commitAndCloseSession();
+		
+		// some datas
+		assessmentEntryDao.createAssessmentEntry(assessedIdentity1, null, entry, subIdent, refEntry, 3.0f, Boolean.FALSE, null, null);
+		assessmentEntryDao.createAssessmentEntry(assessedIdentity2, null, entry, subIdent, refEntry, 5.0f, Boolean.TRUE, null, null);
+		assessmentEntryDao.createAssessmentEntry(assessedIdentity3, null, entry, subIdent, refEntry, 8.0f, Boolean.TRUE, null, null);
+		assessmentEntryDao.createAssessmentEntry(assessedIdentity4, null, entry, subIdent, refEntry, 9.0f, Boolean.TRUE, null, null);
+		assessmentEntryDao.createAssessmentEntry(assessedExtIdentity5, null, entry, subIdent, refEntry, 3.0f, Boolean.TRUE, null, null);
+		assessmentEntryDao.createAssessmentEntry(assessedExtIdentity6, null, entry, subIdent, refEntry, 4.0f, Boolean.TRUE, null, null);
+		assessmentEntryDao.createAssessmentEntry(assessedExtIdentity7, null, entry, subIdent, refEntry, 5.0f, Boolean.TRUE, null, null);
+		assessmentEntryDao.createAssessmentEntry(null, UUID.randomUUID().toString(), entry, subIdent, refEntry);
+		dbInstance.commitAndCloseSession();
+		
+		// administrator with full access
+		AssessmentToolSecurityCallback assessmentCallback = new AssessmentToolSecurityCallback(true, true, true, true, true, null);
+		SearchAssessedIdentityParams params = new SearchAssessedIdentityParams(entry, subIdent, refEntry, assessmentCallback);
+
+		//check assessed identities list
+		List<Identity> assessedIdentities = assessmentToolManager.getAssessedIdentities(admin, params);
+		Assert.assertNotNull(assessedIdentities);
+		Assert.assertEquals(7, assessedIdentities.size());
+		
+		List<IdentityShort> assessedShortIdentities = assessmentToolManager.getShortAssessedIdentities(admin, params, 120);
+		Assert.assertNotNull(assessedShortIdentities);
+		Assert.assertEquals(7, assessedShortIdentities.size());
+		
+		//number of assessed identities
+		int numOfAssessedIdentities = assessmentToolManager.getNumberOfAssessedIdentities(admin, params);
+		Assert.assertEquals(7, numOfAssessedIdentities);
+		
+		// statistics
+		AssessmentStatistics statistics = assessmentToolManager.getStatistics(admin, params);
+		Assert.assertEquals(5.28571d, statistics.getAverageScore().doubleValue(), 0.0001);
+		Assert.assertEquals(1, statistics.getCountFailed());
+		Assert.assertEquals(6, statistics.getCountPassed());
+		
+		//check only the queries as the statistics need the course infos
+		AssessmentMembersStatistics participantStatistics = assessmentToolManager.getNumberOfParticipants(admin, params);
+		Assert.assertNotNull(participantStatistics);
+	}
+	
+	@Test
+	public void getNumberOfParticipants() {
+		//course
+		Identity admin = JunitTestHelper.createAndPersistIdentityAsRndAdmin("ast-admin-1");
+		RepositoryEntry entry = JunitTestHelper.deployBasicCourse(admin);
+		
+		//members as participant and coach
+		Identity assessedIdentity1 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-5");
+		Identity assessedIdentity2 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-6");
+		Identity assessedIdentity3 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-7");
+		Identity assessedIdentity4 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-8");
+		Identity assessedExtIdentity5 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-ext-9");
+		Identity assessedExtIdentity6 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-ext-10");
+		Identity assessedExtIdentity7 = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-ext-11");
+		Identity coach = JunitTestHelper.createAndPersistIdentityAsRndUser("ast-coach-9");
+
+		RepositoryEntry refEntry = JunitTestHelper.createAndPersistRepositoryEntry();
+		String subIdent = UUID.randomUUID().toString();
+		
+		BusinessGroup group1 = businessGroupDao.createAndPersist(null, "assessment-tool-bg-1", "assessment-tool-bg-1-desc", -1, -1, false, false, false, false, false);
+		businessGroupRelationDao.addRelationToResource(group1, entry);
+		
+		repositoryEntryRelationDao.addRole(coach, entry, GroupRoles.coach.name());
+		repositoryEntryRelationDao.addRole(assessedIdentity3, entry, GroupRoles.participant.name());
+		repositoryEntryRelationDao.addRole(assessedIdentity4, entry, GroupRoles.participant.name());
+		
+		businessGroupRelationDao.addRole(assessedIdentity1, group1, GroupRoles.participant.name());
+		businessGroupRelationDao.addRole(assessedIdentity2, group1, GroupRoles.participant.name());
+		businessGroupRelationDao.addRole(assessedIdentity3, group1, GroupRoles.participant.name());
+		businessGroupRelationDao.addRole(coach, group1, GroupRoles.coach.name());
+		dbInstance.commitAndCloseSession();
+		
+		// some datas
+		assessmentEntryDao.createAssessmentEntry(assessedIdentity1, null, entry, subIdent, refEntry, 3.0f, Boolean.FALSE, null, null);
+		assessmentEntryDao.createAssessmentEntry(assessedIdentity2, null, entry, subIdent, refEntry, 5.0f, Boolean.TRUE, null, null);
+		assessmentEntryDao.createAssessmentEntry(assessedIdentity3, null, entry, subIdent, refEntry, 8.0f, Boolean.TRUE, null, null);
+		assessmentEntryDao.createAssessmentEntry(assessedIdentity4, null, entry, subIdent, refEntry, 9.0f, Boolean.TRUE, null, null);
+		assessmentEntryDao.createAssessmentEntry(assessedExtIdentity5, null, entry, subIdent, refEntry, 3.0f, Boolean.TRUE, null, null);
+		assessmentEntryDao.createAssessmentEntry(assessedExtIdentity6, null, entry, subIdent, refEntry, 4.0f, Boolean.TRUE, null, null);
+		assessmentEntryDao.createAssessmentEntry(assessedExtIdentity7, null, entry, subIdent, refEntry, 5.0f, Boolean.TRUE, null, null);
+		assessmentEntryDao.createAssessmentEntry(null, UUID.randomUUID().toString(), entry, subIdent, refEntry);
+		dbInstance.commitAndCloseSession();
+		
+		// the course infos need to calculate the number of participants
+		userCourseInformationsManager.updateUserCourseInformations(entry.getOlatResource(), assessedIdentity1);
+		userCourseInformationsManager.updateUserCourseInformations(entry.getOlatResource(), assessedIdentity2);
+		userCourseInformationsManager.updateUserCourseInformations(entry.getOlatResource(), assessedIdentity3);
+		userCourseInformationsManager.updateUserCourseInformations(entry.getOlatResource(), assessedIdentity4);
+		userCourseInformationsManager.updateUserCourseInformations(entry.getOlatResource(), assessedExtIdentity5);
+		userCourseInformationsManager.updateUserCourseInformations(entry.getOlatResource(), assessedExtIdentity6);
+		userCourseInformationsManager.updateUserCourseInformations(entry.getOlatResource(), assessedExtIdentity7);
+		dbInstance.commitAndCloseSession();
+		
+		// statistics as admin
+		AssessmentToolSecurityCallback assessmentCallback = new AssessmentToolSecurityCallback(true, true, true, true, true, null);
+		SearchAssessedIdentityParams params = new SearchAssessedIdentityParams(entry, subIdent, refEntry, assessmentCallback);
+
+		AssessmentMembersStatistics statisticsAsAdmin = assessmentToolManager.getNumberOfParticipants(admin, params);
+		Assert.assertNotNull(statisticsAsAdmin);
+		Assert.assertEquals(3, statisticsAsAdmin.getNumOfOtherUsers());
+		Assert.assertEquals(4, statisticsAsAdmin.getNumOfParticipants());
+		Assert.assertEquals(3, statisticsAsAdmin.getLoggedIn());
+		Assert.assertEquals(4, statisticsAsAdmin.getNumOfParticipantsLoggedIn());
+	}
+
+
 }