diff --git a/src/main/java/org/olat/course/run/preview/PreviewCourseGroupManager.java b/src/main/java/org/olat/course/run/preview/PreviewCourseGroupManager.java
index 69b0806b006d92c8e5829cfc8d7be7d9f70de357..f145ce0c2dd545341d2941213ab942a4645888c9 100644
--- a/src/main/java/org/olat/course/run/preview/PreviewCourseGroupManager.java
+++ b/src/main/java/org/olat/course/run/preview/PreviewCourseGroupManager.java
@@ -27,8 +27,11 @@ package org.olat.course.run.preview;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
+import org.olat.basesecurity.GroupRoles;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.id.Identity;
 import org.olat.core.logging.AssertException;
 import org.olat.core.manager.BasicManager;
@@ -36,8 +39,11 @@ import org.olat.course.export.CourseEnvironmentMapper;
 import org.olat.course.groupsandrights.CourseGroupManager;
 import org.olat.course.groupsandrights.CourseRights;
 import org.olat.group.BusinessGroup;
+import org.olat.group.BusinessGroupService;
 import org.olat.group.area.BGArea;
+import org.olat.group.area.BGAreaManager;
 import org.olat.repository.RepositoryEntry;
+import org.olat.repository.RepositoryService;
 import org.olat.resource.OLATResource;
 
 /**
@@ -52,6 +58,10 @@ final class PreviewCourseGroupManager extends BasicManager implements CourseGrou
 	private RepositoryEntry courseResource;
 	private boolean isCoach, isCourseAdmin;
 	
+	private final BGAreaManager areaManager;
+	private final RepositoryService repositoryService;
+	private final BusinessGroupService businessGroupService;
+	
 	/**
 	 * @param groups
 	 * @param areas
@@ -65,6 +75,10 @@ final class PreviewCourseGroupManager extends BasicManager implements CourseGrou
 		this.areas = areas;
 		this.isCourseAdmin = isCourseAdmin;
 		this.isCoach = isCoach;
+
+		areaManager = CoreSpringFactory.getImpl(BGAreaManager.class);
+		repositoryService = CoreSpringFactory.getImpl(RepositoryService.class);
+		businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class);
 	}
 
 	@Override
@@ -90,7 +104,7 @@ final class PreviewCourseGroupManager extends BasicManager implements CourseGrou
 		if (courseRight.equals(CourseRights.RIGHT_COURSEEDITOR)) {
 			return false;
 		}
-		throw new AssertException("unsupported");
+		return false;
 	}
 
 	@Override
@@ -189,7 +203,7 @@ final class PreviewCourseGroupManager extends BasicManager implements CourseGrou
 	 */
 	@Override
 	public List<BusinessGroup> getOwnedBusinessGroups(Identity identity) {
-		throw new AssertException("unsupported");
+		return new ArrayList<>(1);
 	}
 
 	/**
@@ -197,7 +211,7 @@ final class PreviewCourseGroupManager extends BasicManager implements CourseGrou
 	 */
 	@Override
 	public List<BusinessGroup> getParticipatingBusinessGroups(Identity identity) {
-		throw new AssertException("unsupported");
+		return new ArrayList<>(1);
 	}
 	
 	@Override
@@ -218,7 +232,7 @@ final class PreviewCourseGroupManager extends BasicManager implements CourseGrou
 	 */
 	@Override
 	public void deleteCourseGroupmanagement() {
-		throw new AssertException("unsupported");
+		//do nothing in preview
 	}
 
 	/**
@@ -226,7 +240,12 @@ final class PreviewCourseGroupManager extends BasicManager implements CourseGrou
 	 */
 	@Override
 	public List<Integer> getNumberOfMembersFromGroups(List<BusinessGroup> groupList) {
-		throw new AssertException("unsupported");
+		List<Integer> members = new ArrayList<Integer>();
+		for (BusinessGroup group:groups) {
+			int numbMembers = businessGroupService.countMembers(group, GroupRoles.participant.name());
+			members.add(new Integer(numbMembers));
+		}
+		return members;
 	}
 
 	/**
@@ -234,7 +253,16 @@ final class PreviewCourseGroupManager extends BasicManager implements CourseGrou
 	 */
 	@Override
 	public List<String> getUniqueBusinessGroupNames() {
-		throw new AssertException("unsupported");
+		List<String> names = new ArrayList<>();
+		if(groups != null) {
+			for (BusinessGroup group:groups) {
+				if (!names.contains(group.getName())) {
+					names.add(group.getName().trim());
+				}
+			}
+			Collections.sort(names);
+		}
+		return names;
 	}
 
 	/**
@@ -242,57 +270,72 @@ final class PreviewCourseGroupManager extends BasicManager implements CourseGrou
 	 */
 	@Override
 	public List<String> getUniqueAreaNames() {
-		throw new AssertException("unsupported");
+		List<String> areaNames = new ArrayList<>();
+		if(areas != null) {
+			for (BGArea area:areas) {
+				if (!areaNames.contains(area.getName())) {
+					areaNames.add(area.getName().trim());
+				}
+			}
+			Collections.sort(areaNames);
+		}
+		return areaNames;
 	}
 
 	@Override
 	public List<Identity> getCoachesFromBusinessGroups() {
-		throw new AssertException("unsupported");
+		return businessGroupService.getMembers(groups, GroupRoles.coach.name());
 	}
 
 	@Override
 	public List<Identity> getCoachesFromAreas() {
-		throw new AssertException("unsupported");
+		List<BusinessGroup> groups = areaManager.findBusinessGroupsOfAreas(areas);
+		return businessGroupService.getMembers(groups, GroupRoles.coach.name());
 	}
 
 	@Override
 	public List<Identity> getParticipantsFromBusinessGroups() {
-		throw new AssertException("unsupported");
+		return businessGroupService.getMembers(groups, GroupRoles.participant.name());
 	}
 
 	@Override
 	public List<Identity> getCoachesFromBusinessGroups(List<Long> groupKeys) {
-		throw new AssertException("unsupported");
+		List<BusinessGroup> bgs = businessGroupService.loadBusinessGroups(groupKeys);
+		return businessGroupService.getMembers(bgs, GroupRoles.coach.name());
 	}
 
 	@Override
 	public List<Identity> getCoachesFromAreas(List<Long> areaKeys) {
-		throw new AssertException("unsupported");
+		List<BGArea> areas = areaManager.loadAreas(areaKeys);
+		List<BusinessGroup> groups = areaManager.findBusinessGroupsOfAreas(areas);
+		return businessGroupService.getMembers(groups, GroupRoles.coach.name());
 	}
 
 	@Override
 	public List<Identity> getParticipantsFromBusinessGroups(List<Long> groupKeys) {
-		throw new AssertException("unsupported");
+		return businessGroupService.getMembers(groups, GroupRoles.participant.name());
 	}
 
 	@Override
 	public List<Identity> getParticipantsFromAreas(List<Long> areaKeys) {
-		throw new AssertException("unsupported");
+		List<BGArea> areas = areaManager.loadAreas(areaKeys);
+		List<BusinessGroup> groups = areaManager.findBusinessGroupsOfAreas(areas);
+		return businessGroupService.getMembers(groups, GroupRoles.participant.name());
 	}
 
 	@Override
 	public List<Identity> getParticipantsFromAreas() {
-		throw new AssertException("unsupported");
+		return businessGroupService.getMembers(groups, GroupRoles.participant.name());
 	}
 	
 	@Override
 	public List<Identity> getCoaches() {
-		throw new AssertException("unsupported");
+		return repositoryService.getMembers(getCourseEntry(), GroupRoles.coach.name());
 	}
 
 	@Override
 	public List<Identity> getParticipants() {
-		throw new AssertException("unsupported");
+		return repositoryService.getMembers(getCourseEntry(), GroupRoles.participant.name());
 	}
 
 	@Override
@@ -318,6 +361,6 @@ final class PreviewCourseGroupManager extends BasicManager implements CourseGrou
 
 	@Override
 	public List<BusinessGroup> getWaitingListGroups(Identity identity) {
-		throw new AssertException("unsupported");
+		return new ArrayList<>(1);
 	}
 }
\ No newline at end of file