diff --git a/src/main/java/org/olat/commons/memberlist/ui/MembersAvatarDisplayRunController.java b/src/main/java/org/olat/commons/memberlist/ui/MembersAvatarDisplayRunController.java
index a885f67e64e0071efee07e436b51f8f420e6b77c..c91be0cd2cb84ab9777014540e1c035d7a872145 100644
--- a/src/main/java/org/olat/commons/memberlist/ui/MembersAvatarDisplayRunController.java
+++ b/src/main/java/org/olat/commons/memberlist/ui/MembersAvatarDisplayRunController.java
@@ -113,6 +113,7 @@ public class MembersAvatarDisplayRunController extends FormBasicController {
 	private List<Identity> waiting;
 
 	private final boolean canEmail;
+	private final boolean canDownload;
 	private final boolean showOwners;
 	private final boolean showCoaches;
 	private final boolean showParticipants;
@@ -146,8 +147,8 @@ public class MembersAvatarDisplayRunController extends FormBasicController {
 	
 	
 	public MembersAvatarDisplayRunController(UserRequest ureq, WindowControl wControl, Translator translator, CourseEnvironment courseEnv, BusinessGroup businessGroup,
-			List<Identity> owners, List<Identity> coaches, List<Identity> participants, List<Identity> waiting, boolean canEmail, boolean deduplicateList,
-			boolean showOwners, boolean showCoaches, boolean showParticipants, boolean showWaiting, boolean editable) {
+			List<Identity> owners, List<Identity> coaches, List<Identity> participants, List<Identity> waiting, boolean canEmail, boolean canDownload, 
+			  boolean deduplicateList, boolean showOwners, boolean showCoaches, boolean showParticipants, boolean showWaiting, boolean editable) {
 		super(ureq, wControl, "members", translator);
 		setTranslator(translator);
 		
@@ -166,6 +167,7 @@ public class MembersAvatarDisplayRunController extends FormBasicController {
 		this.waiting = waiting;
 		// flags
 		this.canEmail = canEmail;
+		this.canDownload = canDownload;
 		this.showOwners = showOwners;
 		this.showCoaches = showCoaches;
 		this.showParticipants = showParticipants;
@@ -192,8 +194,8 @@ public class MembersAvatarDisplayRunController extends FormBasicController {
 		IdentityEnvironment idEnv = ureq.getUserSession().getIdentityEnvironment();
 		Identity ownId = idEnv.getIdentity();
 		Roles roles = idEnv.getRoles();
-		boolean memberXlsEnabled = businessGroup != null ? businessGroup.isDownloadMembersLists() && !waiting.contains(ownId) : false;
-		if (editable && (roles.isOLATAdmin() || roles.isGroupManager() || owners.contains(ownId) || coaches.contains(ownId) || memberXlsEnabled)) {
+		if (editable && (roles.isOLATAdmin() || roles.isGroupManager() || owners.contains(ownId) || coaches.contains(ownId)
+				|| (canDownload && !waiting.contains(ownId)))) {
 			downloadLink = uifactory.addFormLink("download", "members.download", null, formLayout, Link.BUTTON);
 			downloadLink.setIconLeftCSS("o_icon o_icon_download");
 			if(formLayout instanceof FormLayoutContainer) {
@@ -463,12 +465,12 @@ public class MembersAvatarDisplayRunController extends FormBasicController {
 	
 	private String createBodyTemplate() {
 		if (courseEnv == null) {
-			String courseName = businessGroup.getName();
-			// Build REST URL to business group, use hack via group manager to access
-			StringBuilder courseLink = new StringBuilder();
-			courseLink.append(Settings.getServerContextPathURI())
+			String groupName = businessGroup.getName();
+			// Build REST URL to business group,
+			StringBuilder groupLink = new StringBuilder();
+			groupLink.append(Settings.getServerContextPathURI())
 				.append("/auth/BusinessGroup/").append(businessGroup.getKey());
-			return translate("email.body.template", new String[]{courseName, courseLink.toString()});	
+			return translate("email.body.template", new String[]{groupName, groupLink.toString()});	
 		} else {
 			String courseName = courseEnv.getCourseTitle();
 			// Build REST URL to course element, use hack via group manager to access repo entry
diff --git a/src/main/java/org/olat/commons/memberlist/ui/MembersDisplayRunController.java b/src/main/java/org/olat/commons/memberlist/ui/MembersDisplayRunController.java
index 81847dd9960eaf31b08cdb4cb6536551dece922e..38772303107badb949f7128cc3b53332c6abf4f5 100644
--- a/src/main/java/org/olat/commons/memberlist/ui/MembersDisplayRunController.java
+++ b/src/main/java/org/olat/commons/memberlist/ui/MembersDisplayRunController.java
@@ -63,6 +63,7 @@ public class MembersDisplayRunController extends BasicController {
 	private List<Identity> waiting;
 
 	private final boolean canEmail;
+	private final boolean canDownload;
 	private final boolean showOwners;
 	private final boolean showCoaches;
 	private final boolean showParticipants;
@@ -72,8 +73,8 @@ public class MembersDisplayRunController extends BasicController {
 	
 	
 	public MembersDisplayRunController(UserRequest ureq, WindowControl wControl, Translator translator, CourseEnvironment courseEnv, BusinessGroup businessGroup,
-			List<Identity> owners, List<Identity> coaches, List<Identity> participants, List<Identity> waiting, boolean canEmail, boolean deduplicateList,
-			boolean showOwners, boolean showCoaches, boolean showParticipants, boolean showWaiting, boolean editable) {
+			List<Identity> owners, List<Identity> coaches, List<Identity> participants, List<Identity> waiting, boolean canEmail, boolean canDownload,
+			boolean deduplicateList, boolean showOwners, boolean showCoaches, boolean showParticipants, boolean showWaiting, boolean editable) {
 		super(ureq, wControl);
 		setTranslator(translator);
 		this.courseOrGroupIdentifier = courseEnv == null ? GUIPREF_KEY_GROUPMEMBER + businessGroup.getKey()
@@ -87,6 +88,7 @@ public class MembersDisplayRunController extends BasicController {
 		this.waiting = waiting;
 		// flags
 		this.canEmail = canEmail;
+		this.canDownload = canDownload;
 		this.showOwners = showOwners;
 		this.showCoaches = showCoaches;
 		this.showParticipants = showParticipants;
@@ -135,7 +137,7 @@ public class MembersDisplayRunController extends BasicController {
 	private void doOpenPortraitView(UserRequest ureq) {
 		if (membersAvatarController == null) {
 			membersAvatarController = new MembersAvatarDisplayRunController(ureq, getWindowControl(), getTranslator(), 
-					courseEnv, businessGroup, owners, coaches, participants, waiting, canEmail, deduplicateList, 
+					courseEnv, businessGroup, owners, coaches, participants, waiting, canEmail, canDownload, deduplicateList, 
 					showOwners, showCoaches, showParticipants, showWaiting, editable);
 			listenTo(membersAvatarController);
 		}
@@ -149,7 +151,7 @@ public class MembersDisplayRunController extends BasicController {
 	private void doOpenListView(UserRequest ureq, boolean onClick) {
 		if (membersListController == null) {
 			membersListController = new MembersListDisplayRunController(ureq, getWindowControl(), getTranslator(), 
-					courseEnv, businessGroup, owners, coaches, participants, waiting, canEmail, deduplicateList,
+					courseEnv, businessGroup, owners, coaches, participants, waiting, canEmail, canDownload, deduplicateList,
 					showOwners, showCoaches, showParticipants, showWaiting, editable);
 			listenTo(membersListController);
 		}
diff --git a/src/main/java/org/olat/commons/memberlist/ui/MembersListDisplayRunController.java b/src/main/java/org/olat/commons/memberlist/ui/MembersListDisplayRunController.java
index 78c9887e565a627ce547e5b0ff1e211a41ce54ae..1ed295021d74437e8ab5a3d817aeeb23b31f4ba3 100644
--- a/src/main/java/org/olat/commons/memberlist/ui/MembersListDisplayRunController.java
+++ b/src/main/java/org/olat/commons/memberlist/ui/MembersListDisplayRunController.java
@@ -131,8 +131,8 @@ public class MembersListDisplayRunController extends BasicController {
 
 	
 	public MembersListDisplayRunController(UserRequest ureq, WindowControl wControl, Translator translator, CourseEnvironment courseEnv, BusinessGroup businessGroup,
-			List<Identity> owners, List<Identity> coaches, List<Identity> participants, List<Identity> waiting, boolean canEmail, boolean deduplicateList,
-			boolean showOwners, boolean showCoaches, boolean showParticipants, boolean showWaiting, boolean editable) {
+			List<Identity> owners, List<Identity> coaches, List<Identity> participants, List<Identity> waiting, boolean canEmail, boolean canDownload,
+			boolean deduplicateList, boolean showOwners, boolean showCoaches, boolean showParticipants, boolean showWaiting, boolean editable) {
 		super(ureq, wControl);
 		Translator fallback = userManager.getPropertyHandlerTranslator(getTranslator());		
 		setTranslator(Util.createPackageTranslator(translator, fallback, getLocale()));		
@@ -163,8 +163,8 @@ public class MembersListDisplayRunController extends BasicController {
 		IdentityEnvironment idEnv = ureq.getUserSession().getIdentityEnvironment();
 		Identity ownId = idEnv.getIdentity();
 		Roles roles = idEnv.getRoles();
-		boolean memberXlsEnabled = businessGroup != null ? businessGroup.isDownloadMembersLists() && !waiting.contains(ownId) : false;
-		if (editable && (roles.isOLATAdmin() || roles.isGroupManager() || owners.contains(ownId) || coaches.contains(ownId) || memberXlsEnabled)) {
+		if (editable && (roles.isOLATAdmin() || roles.isGroupManager() || owners.contains(ownId) || coaches.contains(ownId) 
+				|| (canDownload && !waiting.contains(ownId)))) {
 			downloadLink = LinkFactory.createLink(null, "download", "download", "members.download", getTranslator(), mainVC, this, Link.BUTTON);
 			downloadLink.setIconLeftCSS("o_icon o_icon_download");
 			printLink = LinkFactory.createButton("print", mainVC, this);
@@ -296,12 +296,12 @@ public class MembersListDisplayRunController extends BasicController {
 	
 	private String createBodyTemplate() {
 		if (courseEnv == null) {
-			String courseName = businessGroup.getName();
+			String groupName = businessGroup.getName();
 			// Build REST URL to business group, use hack via group manager to access
-			StringBuilder courseLink = new StringBuilder();
-			courseLink.append(Settings.getServerContextPathURI())
+			StringBuilder groupLink = new StringBuilder();
+			groupLink.append(Settings.getServerContextPathURI())
 				.append("/auth/BusinessGroup/").append(businessGroup.getKey());
-			return translate("email.body.template", new String[]{courseName, courseLink.toString()});	
+			return translate("email.body.template", new String[]{groupName, groupLink.toString()});	
 		} else {
 			String courseName = courseEnv.getCourseTitle();
 			// Build REST URL to course element, use hack via group manager to access repo entry
diff --git a/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java b/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java
index 0a5b6146794f8f6ee8fba82bac4e09935cba4256..31ff0ef6ddeab72884286d12e160ae72631a06d1 100644
--- a/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java
+++ b/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java
@@ -113,9 +113,8 @@ public class MembersMailController extends FormBasicController {
 	
 	public MembersMailController(UserRequest ureq, WindowControl wControl, Translator translator, CourseEnvironment courseEnv,
 			List<Member> ownerList, List<Member> coachList, List<Member> participantList, List<Member> waitingList, String bodyTemplate) {
-		super(ureq, wControl, Util.createPackageTranslator(MailHelper.class, ureq.getLocale()));
+		super(ureq, wControl);
 		setTranslator(Util.createPackageTranslator(translator, MailHelper.class, ureq.getLocale()));
-//		setTranslator(translator);
 		
 		this.courseEnv = courseEnv;
 		this.ownerList = ownerList;
@@ -417,7 +416,7 @@ public class MembersMailController extends FormBasicController {
 				showError("FileMoveCopyFailed","");
 			} else {
 				attachmentSize += size;
-				FormLink removeFile = uifactory.addFormLink("delete_" + (++counter), "delete", "", null, uploadCont, Link.LINK);
+				FormLink removeFile = uifactory.addFormLink("delete_" + (++counter), "delete", "delete", null, uploadCont, Link.LINK);
 				removeFile.setIconLeftCSS("o_icon o_icon-fw o_icon_delete");
 				String css = CSSHelper.createFiletypeIconCssClassFor(filename);
 				Attachment wrapper = new Attachment(attachment, attachment.getName(), css, removeFile);
diff --git a/src/main/java/org/olat/course/nodes/members/_content/attachments.html b/src/main/java/org/olat/commons/memberlist/ui/_content/attachments.html
similarity index 100%
rename from src/main/java/org/olat/course/nodes/members/_content/attachments.html
rename to src/main/java/org/olat/commons/memberlist/ui/_content/attachments.html
diff --git a/src/main/java/org/olat/course/nodes/MembersCourseNode.java b/src/main/java/org/olat/course/nodes/MembersCourseNode.java
index c52146bec76d65408787b222563f9760516e3af1..b6e1cd71fadbe1ac044cd28a5dadc32bb90d65bd 100644
--- a/src/main/java/org/olat/course/nodes/MembersCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/MembersCourseNode.java
@@ -71,6 +71,7 @@ public class MembersCourseNode extends AbstractAccessableCourseNode {
 	
 
 	public static final String CONFIG_KEY_EMAIL_FUNCTION = "emailFunction";
+	public static final String CONFIG_KEY_DOWNLOAD_FUNCTION = "downloadFunction";
 	public static final String EMAIL_FUNCTION_ALL = "all";
 	public static final String EMAIL_FUNCTION_COACH_ADMIN = "coachAndAdmin";
 
@@ -175,6 +176,7 @@ public class MembersCourseNode extends AbstractAccessableCourseNode {
 			config.setBooleanEntry(CONFIG_KEY_SHOWCOACHES, true);
 			config.setBooleanEntry(CONFIG_KEY_SHOWPARTICIPANTS, true);
 			config.setStringValue(CONFIG_KEY_EMAIL_FUNCTION, EMAIL_FUNCTION_COACH_ADMIN);
+			config.setStringValue(CONFIG_KEY_DOWNLOAD_FUNCTION, EMAIL_FUNCTION_COACH_ADMIN);
 			config.setConfigurationVersion(3);
 		} 
 		
diff --git a/src/main/java/org/olat/course/nodes/members/MembersConfigForm.java b/src/main/java/org/olat/course/nodes/members/MembersConfigForm.java
index 78108d66c8aa669132ca6e744f6cd92be51aebfa..a55b3d082eba6267bac9620b08f9874e926057db 100755
--- a/src/main/java/org/olat/course/nodes/members/MembersConfigForm.java
+++ b/src/main/java/org/olat/course/nodes/members/MembersConfigForm.java
@@ -58,6 +58,7 @@ public class MembersConfigForm extends FormBasicController {
 	private final ModuleConfiguration config;
 	private MultipleSelectionElement showOwners;
 	private SingleSelection emailFunctionEl;
+	private SingleSelection downloadFunctionEl;
 
 	private final MembersSelectorFormFragment membersFragment;
 	
@@ -130,6 +131,17 @@ public class MembersConfigForm extends FormBasicController {
 		} else if(MembersCourseNode.EMAIL_FUNCTION_ALL.equals(emailFct)) {
 			emailFunctionEl.select(MembersCourseNode.EMAIL_FUNCTION_ALL, true);
 		}
+		String[] downloadFctValues = new String[]{
+				translate("download.function.all"), translate("download.function.coachAndAdmin")
+		};
+		downloadFunctionEl = uifactory.addRadiosVertical("download", "download.function", formLayout, emailFctKeys, downloadFctValues);
+		downloadFunctionEl.addActionListener(FormEvent.ONCLICK);
+		String downloadFct =  config.getStringValue(MembersCourseNode.CONFIG_KEY_DOWNLOAD_FUNCTION, MembersCourseNode.EMAIL_FUNCTION_COACH_ADMIN);
+		if(MembersCourseNode.EMAIL_FUNCTION_COACH_ADMIN.equals(downloadFct)) {
+			downloadFunctionEl.select(MembersCourseNode.EMAIL_FUNCTION_COACH_ADMIN, true);
+		} else if(MembersCourseNode.EMAIL_FUNCTION_ALL.equals(downloadFct)) {
+			downloadFunctionEl.select(MembersCourseNode.EMAIL_FUNCTION_ALL, true);
+		}
 		
 		subm = uifactory.addFormSubmitButton("save", formLayout);
 		
@@ -192,6 +204,14 @@ public class MembersConfigForm extends FormBasicController {
 				}
 				fireEvent(ureq, Event.CHANGED_EVENT);
 			}
+		} else if (downloadFunctionEl == source) {
+			if (downloadFunctionEl.isOneSelected()) {
+				if (downloadFunctionEl.isSelected(0)) {					
+					config.setStringValue(MembersCourseNode.CONFIG_KEY_DOWNLOAD_FUNCTION, MembersCourseNode.EMAIL_FUNCTION_ALL);
+				} else {
+					config.setStringValue(MembersCourseNode.CONFIG_KEY_DOWNLOAD_FUNCTION, MembersCourseNode.EMAIL_FUNCTION_COACH_ADMIN);
+				}
+			}
 		}
 		
 		update();
diff --git a/src/main/java/org/olat/course/nodes/members/MembersCourseNodeRunController.java b/src/main/java/org/olat/course/nodes/members/MembersCourseNodeRunController.java
index 2e9e07277f41bb1736d89e45fc4f9967385da877..e4eafac8c86332c1756733a6784d9742a0803f9f 100644
--- a/src/main/java/org/olat/course/nodes/members/MembersCourseNodeRunController.java
+++ b/src/main/java/org/olat/course/nodes/members/MembersCourseNodeRunController.java
@@ -57,8 +57,6 @@ public class MembersCourseNodeRunController extends BasicController {
 	
 	public static final String USER_PROPS_ID = MembersCourseNodeRunController.class.getName();
 	
-	private CourseEnvironment courseEnv;
-	private boolean canEmail, deduplicateList, showOwners, showCoaches = false, showParticipants = false;
 	private List<Identity> owners, coaches, participants;
 
 	private MembersDisplayRunController membersDisplayRunController;
@@ -73,18 +71,21 @@ public class MembersCourseNodeRunController extends BasicController {
 	public MembersCourseNodeRunController(UserRequest ureq, WindowControl wControl, UserCourseEnvironment userCourseEnv, ModuleConfiguration config) {
 		super(ureq, wControl);
 		
-		courseEnv = userCourseEnv.getCourseEnvironment();
+		CourseEnvironment courseEnv = userCourseEnv.getCourseEnvironment();
 		
 		this.coaches = new ArrayList<>();
 		this.participants = new ArrayList<>();
 
-		showOwners = config.getBooleanSafe(MembersCourseNode.CONFIG_KEY_SHOWOWNER);
+		boolean showOwners = config.getBooleanSafe(MembersCourseNode.CONFIG_KEY_SHOWOWNER);
 		
 		MembersCourseNodeConfiguration nodeConfig = (MembersCourseNodeConfiguration)CourseNodeFactory.getInstance().getCourseNodeConfiguration("cmembers");
-		deduplicateList = nodeConfig.isDeduplicateList();
+		boolean deduplicateList = nodeConfig.isDeduplicateList();
 		
 		String emailFct = config.getStringValue(MembersCourseNode.CONFIG_KEY_EMAIL_FUNCTION, MembersCourseNode.EMAIL_FUNCTION_COACH_ADMIN);
-		canEmail = MembersCourseNode.EMAIL_FUNCTION_ALL.equals(emailFct) || userCourseEnv.isAdmin() || userCourseEnv.isCoach();
+		boolean canEmail = MembersCourseNode.EMAIL_FUNCTION_ALL.equals(emailFct) || userCourseEnv.isAdmin() || userCourseEnv.isCoach();
+		
+		String downloadFct = config.getStringValue(MembersCourseNode.CONFIG_KEY_DOWNLOAD_FUNCTION, MembersCourseNode.EMAIL_FUNCTION_COACH_ADMIN);
+		boolean canDownload = MembersCourseNode.EMAIL_FUNCTION_ALL.equals(downloadFct) || userCourseEnv.isAdmin() || userCourseEnv.isCoach();
 		
 		IModuleConfiguration membersFrag = IModuleConfiguration.fragment("members", config);
 		
@@ -95,6 +96,7 @@ public class MembersCourseNodeRunController extends BasicController {
 			owners = Collections.emptyList();
 		}
 		
+		boolean showCoaches = false;
 		if(membersFrag.anyTrue(MembersCourseNode.CONFIG_KEY_COACHES_ALL, MembersCourseNode.CONFIG_KEY_COACHES_COURSE)		
 				|| membersFrag.hasAnyOf(MembersCourseNode.CONFIG_KEY_COACHES_GROUP, MembersCourseNode.CONFIG_KEY_COACHES_AREA)) {
 			
@@ -104,6 +106,7 @@ public class MembersCourseNodeRunController extends BasicController {
 			showCoaches = true;
 		}
 		
+		boolean showParticipants = false;
 		if(membersFrag.anyTrue(MembersCourseNode.CONFIG_KEY_PARTICIPANTS_ALL, MembersCourseNode.CONFIG_KEY_PARTICIPANTS_COURSE)
 				|| membersFrag.hasAnyOf(MembersCourseNode.CONFIG_KEY_PARTICIPANTS_GROUP, MembersCourseNode.CONFIG_KEY_PARTICIPANTS_AREA)) {
 			
@@ -114,7 +117,7 @@ public class MembersCourseNodeRunController extends BasicController {
 		}
 		
 		membersDisplayRunController = new MembersDisplayRunController(ureq, wControl, getTranslator(), courseEnv, null,
-				owners, coaches, participants, new ArrayList<>(), canEmail, deduplicateList, showOwners, showCoaches,
+				owners, coaches, participants, new ArrayList<>(), canEmail, canDownload, deduplicateList, showOwners, showCoaches,
 				showParticipants, false, true);
 		listenTo(membersDisplayRunController);
 		
diff --git a/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_de.properties
index 3bcdfa30079327a8865a13daa2d429c1a4257520..31b49b9afb9567dcc489e06ef62b9a125cda8222 100644
--- a/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_de.properties
@@ -19,6 +19,9 @@ email.send=Schicken
 email.function=Emailfunktion
 email.function.all=Emailfunktion f\u00FCr alle Benutzer freischalten
 email.function.coachAndAdmin=Emailfunktion nur f\u00FCr Betreuer and Administratoren freischalten
+download.function=Downloadfunktion
+download.function.all=Downloadfunktion f\u00FCr alle Benutzer freischalten
+download.function.coachAndAdmin=Downloadfunktion nur f\u00FCr Betreuer and Administratoren freischalten
 msg.send.ok=$org.olat.modules.co\:msg.send.ok
 error.msg.send.partially.nok=$org.olat.modules.co\:error.msg.send.partially.nok
 error.msg.send.invalid.rcps=$org.olat.modules.co\:error.msg.send.invalid.rcps
@@ -36,7 +39,7 @@ owners.to=Aministratoren von Kurs "{0}"
 pane.tab.accessibility=Zugang
 pane.tab.membersconfig=Konfiguration
 participants.to=Teilnehmer von Kurs "{0}"
-print.title=Fotobuch
+print.title=Mitgliederliste
 select.members=Benutzer ausw\u00E4hlen
 title_info=Teilnehmerliste
 message.want.coaches=Betreuer
diff --git a/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_en.properties
index 8a4f3a68ac47f91d5d96a83108f1e4b19c7b94dc..f6bbfe7b264d2157e90833f56b8089f016ab2083 100644
--- a/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/course/nodes/members/_i18n/LocalStrings_en.properties
@@ -19,6 +19,9 @@ email.send=Send
 email.function=E-mail function
 email.function.all=Unlock e-mail function for all users
 email.function.coachAndAdmin=Unlock e-mail function only for coach and administrators
+download.function=Download function
+download.function.all=Unlock download function for all users
+download.function.coachAndAdmin=Unlock download function only for coach and administrators
 members.coaches=Coach
 members.email.title=Send e-mail
 members.info=Select which user group should be shown in the participant list.
diff --git a/src/main/java/org/olat/group/ui/homepage/GroupMembersDisplayController.java b/src/main/java/org/olat/group/ui/homepage/GroupMembersDisplayController.java
index 78dd158e5b90699d6d92035220bb8b3cee40204c..cbe77b130c2d81b2d54e296350a651abc4d16f46 100644
--- a/src/main/java/org/olat/group/ui/homepage/GroupMembersDisplayController.java
+++ b/src/main/java/org/olat/group/ui/homepage/GroupMembersDisplayController.java
@@ -78,8 +78,8 @@ public class GroupMembersDisplayController extends BasicController {
 			waiting = Collections.emptyList();
 		}	
 		
-		membersDisplayRunController = new MembersDisplayRunController(ureq, wControl, getTranslator(), null, businessGroup,
-				new ArrayList<>(), coaches, participants, waiting, false, true, false, showCoaches, showParticipants, showWaiting, false);
+		membersDisplayRunController = new MembersDisplayRunController(ureq, wControl, getTranslator(), null, businessGroup,	new ArrayList<>(), 
+				coaches, participants, waiting, false, false, true, false, showCoaches, showParticipants, showWaiting, false);
 		listenTo(membersDisplayRunController);
 		
 		putInitialPanel(membersDisplayRunController.getInitialComponent());	
diff --git a/src/main/java/org/olat/group/ui/run/GroupMembersRunController.java b/src/main/java/org/olat/group/ui/run/GroupMembersRunController.java
index 33f35ee9e3fed0bf60dd9e035e077619a4f4afc2..c0f6a22a7cd787165f21dc240dfade54903836ac 100644
--- a/src/main/java/org/olat/group/ui/run/GroupMembersRunController.java
+++ b/src/main/java/org/olat/group/ui/run/GroupMembersRunController.java
@@ -68,9 +68,10 @@ public class GroupMembersRunController extends BasicController {
 			waiting = businessGroupService.getMembers(businessGroup, GroupRoles.waiting.name());
 		} else {
 			waiting = Collections.emptyList();
-		}	
-		membersDisplayRunController = new MembersDisplayRunController(ureq, wControl, getTranslator(), null, businessGroup,
-				new ArrayList<>(), coaches, participants, waiting, canEmail, true, false, showCoaches, showParticipants, showWaiting, true);
+		}
+		boolean canDownload = businessGroup.isDownloadMembersLists();
+		membersDisplayRunController = new MembersDisplayRunController(ureq, wControl, getTranslator(), null, businessGroup, new ArrayList<>(), 
+				coaches, participants, waiting, canEmail, canDownload, true, false, showCoaches, showParticipants, showWaiting, true);
 		listenTo(membersDisplayRunController);
 		
 		putInitialPanel(membersDisplayRunController.getInitialComponent());		
diff --git a/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_de.properties
index b0d9f668220115b0b416143b58dbd53b14397bb0..45ea8a8961e5c1c1d12af5cc1f79227bbbc022bc 100644
--- a/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/group/ui/run/_i18n/LocalStrings_de.properties
@@ -106,4 +106,4 @@ members.toggle=Portrait
 members.download=Herunterladen
 select.members=Benutzer ausw\u00E4hlen
 contact.external.list.example=xyz@olat.com, abc@frentix.com<br/>user@yourcompany.ch
-print.title=Fotobuch
+print.title=Mitgliederliste