diff --git a/src/main/java/org/olat/course/assessment/AssessmentManager.java b/src/main/java/org/olat/course/assessment/AssessmentManager.java
index e8bb685131c5396ad38e03324337344fcfe92b09..37be8fc98a2c5abe51606fd418b3e87ac586686e 100644
--- a/src/main/java/org/olat/course/assessment/AssessmentManager.java
+++ b/src/main/java/org/olat/course/assessment/AssessmentManager.java
@@ -207,7 +207,7 @@ public interface AssessmentManager {
 
 	public List<AssessmentEntry> getAssessmentEntries(CourseNode courseNode);
 	
-	public List<AssessmentEntry> getAssessmentEntriesWithStatus(CourseNode courseNode, AssessmentEntryStatus status);
+	public List<AssessmentEntry> getAssessmentEntriesWithStatus(CourseNode courseNode, AssessmentEntryStatus status, boolean excludeZeroScore);
 	
 	public List<AssessmentEntry> getAssessmentEntries(BusinessGroup group, CourseNode courseNode);
 	
diff --git a/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java
index a59ec52b8988e7441f4918111fb3d2983ce689b5..aa1e1d9445a9e80f3265066c51c4ec04cc22a83c 100644
--- a/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java
+++ b/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java
@@ -96,8 +96,8 @@ public class CourseAssessmentManagerImpl implements AssessmentManager {
 	}
 	
 	@Override
-	public List<AssessmentEntry> getAssessmentEntriesWithStatus(CourseNode courseNode, AssessmentEntryStatus status) {
-		return assessmentService.loadAssessmentEntriesBySubIdentWithStatus(cgm.getCourseEntry(), courseNode.getIdent(), status);
+	public List<AssessmentEntry> getAssessmentEntriesWithStatus(CourseNode courseNode, AssessmentEntryStatus status, boolean excludeZeroScore) {
+		return assessmentService.loadAssessmentEntriesBySubIdentWithStatus(cgm.getCourseEntry(), courseNode.getIdent(), status, excludeZeroScore);
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/course/highscore/manager/HighScoreManager.java b/src/main/java/org/olat/course/highscore/manager/HighScoreManager.java
index 60b8b3b4496971efebfb7aa02eb16571c5fd30fc..5e790b6963e5bece6ecdde48a102ced589e2db0a 100644
--- a/src/main/java/org/olat/course/highscore/manager/HighScoreManager.java
+++ b/src/main/java/org/olat/course/highscore/manager/HighScoreManager.java
@@ -74,21 +74,22 @@ public class HighScoreManager {
 //		int rank = 1;
 		double[] allScores = new double[allMembers.size()];
 		for (int j = 0; j < allMembers.size(); j++) {
-			if (allMembers.get(j).getScore() < buffer){
+			HighScoreTableEntry member = allMembers.get(j);
+			if (member.getScore() < buffer){
 				index++;
 //				rank = j + 1;
 			}
-			//first three position are put in separate lists,
-			if (index < 3){
-				allPodium.get(index).add(allMembers.get(j));
+			//first three position are put in separate lists, exclude zero scorers
+			if (index < 3 && member.getScore() > 0) {
+				allPodium.get(index).add(member);
 			}
 			// finding position rank for own id
-			if (allMembers.get(j).getIdentity().equals(ownIdentity)){
+			if (member.getIdentity().equals(ownIdentity)){
 				ownIdIndices.add(j);
 			}
 			//setting rank for each member 
-			allMembers.get(j).setRank(index + 1);
-			buffer = allMembers.get(j).getScore();
+			member.setRank(index + 1);
+			buffer = member.getScore();
 			//adding scores for histogram
 			allScores[j] = buffer;
 		}
diff --git a/src/main/java/org/olat/course/highscore/ui/HighScoreRunController.java b/src/main/java/org/olat/course/highscore/ui/HighScoreRunController.java
index 5a38db2ad820e276f092323875c3be72c5cae25c..fd855171081a490f2a14797c965fc58d16b45275 100644
--- a/src/main/java/org/olat/course/highscore/ui/HighScoreRunController.java
+++ b/src/main/java/org/olat/course/highscore/ui/HighScoreRunController.java
@@ -55,6 +55,7 @@ import org.olat.course.highscore.manager.HighScoreManager;
 import org.olat.course.highscore.model.HighScoreRankingResults;
 import org.olat.course.nodes.CourseNode;
 import org.olat.course.nodes.MSCourseNode;
+import org.olat.course.nodes.STCourseNode;
 import org.olat.course.run.userview.UserCourseEnvironment;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.modules.assessment.AssessmentEntry;
@@ -74,7 +75,7 @@ public class HighScoreRunController extends FormBasicController{
 	private List<Integer> ownIdIndices;
 	private int tableSize;
 	private Identity ownIdentity;
-	private boolean viewTable, viewPosition, viewHistogram, viewPodium, viewHighscore, anonymous;
+	private boolean viewTable, viewPosition, viewHistogram, viewPodium, viewHighscore, anonymous, isSTCourseNode;
 	private double[] allScores;
 	private Link[] links = new Link[3];
 	private CloseableCalloutWindowController calloutCtr;
@@ -108,6 +109,7 @@ public class HighScoreRunController extends FormBasicController{
 			CourseNode courseNode) {
 		super(ureq, wControl, "highscore");
 		this.nodeID = courseNode.getIdent();
+		this.isSTCourseNode = courseNode instanceof STCourseNode;
 		
 		setupContent(ureq, userCourseEnv, courseNode);
 	}
@@ -151,16 +153,8 @@ public class HighScoreRunController extends FormBasicController{
 			return;		
 		}	
 		
-		List<AssessmentEntry>  assessEntries;
-		if ("iqtest".equals(courseNode.getType())) {
-			assessEntries =	assessmentManager.getAssessmentEntriesWithStatus(courseNode, null);
-		} else {
-			assessEntries =	assessmentManager.getAssessmentEntries(courseNode);
-		}
-		// do not take coach or admin results into account
-		if (assessEntries != null && adminORcoach) {
-			assessEntries.remove(ownEntry);
-		}		
+		List<AssessmentEntry> assessEntries = assessmentManager.getAssessmentEntriesWithStatus(courseNode, null, isSTCourseNode);
+
 		// display only if has content
 		if (assessEntries == null || assessEntries.isEmpty()) {
 			viewHighscore = false;
diff --git a/src/main/java/org/olat/course/run/preview/PreviewAssessmentManager.java b/src/main/java/org/olat/course/run/preview/PreviewAssessmentManager.java
index bffe767aeeb2ceda081f01bc2f63afe8693e16d6..1a271f6d2329ad01813fef9be52684eccab368dd 100644
--- a/src/main/java/org/olat/course/run/preview/PreviewAssessmentManager.java
+++ b/src/main/java/org/olat/course/run/preview/PreviewAssessmentManager.java
@@ -69,7 +69,7 @@ final class PreviewAssessmentManager extends BasicManager implements AssessmentM
 	}
 	
 	@Override
-	public List<AssessmentEntry> getAssessmentEntriesWithStatus(CourseNode courseNode, AssessmentEntryStatus status) {
+	public List<AssessmentEntry> getAssessmentEntriesWithStatus(CourseNode courseNode, AssessmentEntryStatus status, boolean excludeZeroScore) {
 		return Collections.emptyList();
 	}
 
diff --git a/src/main/java/org/olat/modules/assessment/AssessmentService.java b/src/main/java/org/olat/modules/assessment/AssessmentService.java
index cbfebb1b093bee1c5e464c7ced836b5e896d3fab..f9b386b069adb0e516ce4b2743b69865bbb588a3 100644
--- a/src/main/java/org/olat/modules/assessment/AssessmentService.java
+++ b/src/main/java/org/olat/modules/assessment/AssessmentService.java
@@ -84,7 +84,7 @@ public interface AssessmentService {
 	
 	public List<AssessmentEntry> loadAssessmentEntriesBySubIdent(RepositoryEntry entry, String subIdent);
 	
-	public List<AssessmentEntry> loadAssessmentEntriesBySubIdentWithStatus(RepositoryEntry entry, String subIdent, AssessmentEntryStatus status);
+	public List<AssessmentEntry> loadAssessmentEntriesBySubIdentWithStatus(RepositoryEntry entry, String subIdent, AssessmentEntryStatus status, boolean excludeZeroScore);
 	
 	public List<AssessmentEntry> loadAssessmentEntriesByAssessedIdentity(Identity assessedIdentity, RepositoryEntry entry);
 	
diff --git a/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java b/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java
index 608418f99871aef94bab55d9f5d86f6c0087b531..9f5e28d17581aa4e3f9d29a55908e9758c663bb7 100644
--- a/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java
+++ b/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java
@@ -32,6 +32,7 @@ import org.olat.core.id.Identity;
 import org.olat.modules.assessment.AssessmentEntry;
 import org.olat.modules.assessment.model.AssessmentEntryImpl;
 import org.olat.modules.assessment.model.AssessmentEntryStatus;
+import org.olat.modules.vitero.model.GroupRole;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryEntryRef;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -232,9 +233,11 @@ public class AssessmentEntryDAO {
 	 * @param entry The entry (mandatory)
 	 * @param subIdent The subIdent (mandatory)
 	 * @param status The status of the assessment entry (optional)
+	 * @param excludeZeroScore disallow zero (0) scores
 	 * @return A list of assessment entries
 	 */
-	public List<AssessmentEntry> loadAssessmentEntryBySubIdentWithStatus(RepositoryEntryRef entry, String subIdent, AssessmentEntryStatus status) {
+	public List<AssessmentEntry> loadAssessmentEntryBySubIdentWithStatus(RepositoryEntryRef entry, String subIdent,
+			AssessmentEntryStatus status, boolean excludeZeroScore) {
 		StringBuilder sb = new StringBuilder();
 		sb.append("select data from assessmententry data ")
 		   .append(" inner join fetch data.identity ident") 
@@ -242,10 +245,17 @@ public class AssessmentEntryDAO {
 		   .append(" where data.repositoryEntry.key=:repositoryEntryKey")
 		   .append(" and data.subIdent=:subIdent")
 		   .append(" and data.userVisibility is true")
-		   .append(" and data.score is not null");
+		   .append(" and data.score is not null")
+		   .append(" and ident.key in ( select membership.identity.key from repoentrytogroup as rel, bgroupmember membership ")
+		   .append(" where rel.entry.key=:repositoryEntryKey and rel.group.key=membership.group.key and membership.role='")
+		   .append(GroupRole.participant).append("'")
+		   .append(" )");
 		
 		if (status != null) {
 			sb.append(" and data.status=:status");
+		}		
+		if(excludeZeroScore) {
+			sb.append(" and data.score > 0");
 		}
 		
 		TypedQuery<AssessmentEntry> typedQuery = dbInstance.getCurrentEntityManager()
diff --git a/src/main/java/org/olat/modules/assessment/manager/AssessmentServiceImpl.java b/src/main/java/org/olat/modules/assessment/manager/AssessmentServiceImpl.java
index bb2c9f7b15d0dd463bdf5f3c812de9364de0cb0d..f9f5890f1d6411a2dc44a7305d6f11858d134252 100644
--- a/src/main/java/org/olat/modules/assessment/manager/AssessmentServiceImpl.java
+++ b/src/main/java/org/olat/modules/assessment/manager/AssessmentServiceImpl.java
@@ -90,8 +90,9 @@ public class AssessmentServiceImpl implements AssessmentService, UserDataDeletab
 	}
 	
 	@Override
-	public List<AssessmentEntry> loadAssessmentEntriesBySubIdentWithStatus(RepositoryEntry entry, String subIdent, AssessmentEntryStatus status) {
-		return assessmentEntryDao.loadAssessmentEntryBySubIdentWithStatus(entry, subIdent, status);
+	public List<AssessmentEntry> loadAssessmentEntriesBySubIdentWithStatus(RepositoryEntry entry, String subIdent,
+			AssessmentEntryStatus status, boolean excludeZeroScore) {
+		return assessmentEntryDao.loadAssessmentEntryBySubIdentWithStatus(entry, subIdent, status, excludeZeroScore);
 	}
 
 	@Override