From e276bb443f4a6526ac81b27a904e1bf93603a5b4 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Fri, 20 Dec 2013 12:19:07 +0100
Subject: [PATCH] OO-912: better check the assessed users in the end zip file

---
 .../bps/course/nodes/ChecklistCourseNode.java |  4 +-
 .../olat/course/archiver/ArchiveResource.java | 10 ++--
 .../archiver/GenericArchiveController.java    |  6 ++-
 .../archiver/ScoreAccountingHelper.java       | 15 +++++-
 .../archiver/_i18n/LocalStrings_ar.properties | 13 -----
 .../archiver/_i18n/LocalStrings_bg.properties |  6 ---
 .../archiver/_i18n/LocalStrings_cs.properties |  6 ---
 .../archiver/_i18n/LocalStrings_da.properties |  3 --
 .../archiver/_i18n/LocalStrings_de.properties | 25 +++------
 .../archiver/_i18n/LocalStrings_el.properties | 13 -----
 .../archiver/_i18n/LocalStrings_en.properties | 26 +++------
 .../archiver/_i18n/LocalStrings_es.properties |  6 ---
 .../archiver/_i18n/LocalStrings_fa.properties |  3 --
 .../archiver/_i18n/LocalStrings_fr.properties | 25 +++------
 .../archiver/_i18n/LocalStrings_it.properties | 13 -----
 .../archiver/_i18n/LocalStrings_jp.properties |  7 ---
 .../archiver/_i18n/LocalStrings_lt.properties |  3 --
 .../_i18n/LocalStrings_nl_NL.properties       | 13 -----
 .../archiver/_i18n/LocalStrings_pl.properties | 13 -----
 .../_i18n/LocalStrings_pt_BR.properties       | 13 -----
 .../_i18n/LocalStrings_pt_PT.properties       |  6 ---
 .../archiver/_i18n/LocalStrings_ru.properties |  6 ---
 .../archiver/_i18n/LocalStrings_sq.properties |  6 ---
 .../_i18n/LocalStrings_zh_CN.properties       | 13 -----
 .../_i18n/LocalStrings_zh_TW.properties       |  7 ---
 .../assessment/AssessmentMainController.java  |  9 +++-
 .../nodes/AbstractAccessableCourseNode.java   |  3 +-
 .../org/olat/course/nodes/ArchiveOptions.java | 53 +++++++++++++++++++
 .../course/nodes/AssessableCourseNode.java    |  3 +-
 .../course/nodes/AssessmentToolOptions.java   | 53 +++++++++++++++++++
 .../org/olat/course/nodes/CourseNode.java     |  3 +-
 .../olat/course/nodes/DialogCourseNode.java   |  3 +-
 .../org/olat/course/nodes/FOCourseNode.java   |  3 +-
 .../olat/course/nodes/GenericCourseNode.java  |  3 +-
 .../olat/course/nodes/IQSELFCourseNode.java   |  3 +-
 .../olat/course/nodes/IQSURVCourseNode.java   |  3 +-
 .../olat/course/nodes/IQTESTCourseNode.java   |  3 +-
 .../org/olat/course/nodes/MSCourseNode.java   |  3 +-
 .../course/nodes/ProjectBrokerCourseNode.java |  5 +-
 .../olat/course/nodes/ScormCourseNode.java    |  3 +-
 .../org/olat/course/nodes/TACourseNode.java   | 25 +++++----
 .../org/olat/course/nodes/WikiCourseNode.java |  3 +-
 .../nodes/ta/BulkDownloadToolController.java  | 13 +++--
 .../org/olat/course/site/CourseSiteDef.java   |  4 ++
 44 files changed, 198 insertions(+), 261 deletions(-)
 create mode 100644 src/main/java/org/olat/course/nodes/ArchiveOptions.java
 create mode 100644 src/main/java/org/olat/course/nodes/AssessmentToolOptions.java

diff --git a/src/main/java/de/bps/course/nodes/ChecklistCourseNode.java b/src/main/java/de/bps/course/nodes/ChecklistCourseNode.java
index 5f391a64c43..5d31af9878c 100644
--- a/src/main/java/de/bps/course/nodes/ChecklistCourseNode.java
+++ b/src/main/java/de/bps/course/nodes/ChecklistCourseNode.java
@@ -53,6 +53,7 @@ import org.olat.course.editor.StatusDescription;
 import org.olat.course.groupsandrights.CourseGroupManager;
 import org.olat.course.groupsandrights.CourseRights;
 import org.olat.course.nodes.AbstractAccessableCourseNode;
+import org.olat.course.nodes.ArchiveOptions;
 import org.olat.course.nodes.CourseNode;
 import org.olat.course.nodes.StatusDescriptionHelper;
 import org.olat.course.nodes.TitledWrapperHelper;
@@ -60,7 +61,6 @@ import org.olat.course.properties.CoursePropertyManager;
 import org.olat.course.run.navigation.NodeRunConstructionResult;
 import org.olat.course.run.userview.NodeEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.group.BusinessGroup;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.properties.Property;
 import org.olat.repository.RepositoryEntry;
@@ -315,7 +315,7 @@ public class ChecklistCourseNode extends AbstractAccessableCourseNode {
 	}
 	
 	@Override
-	public boolean archiveNodeData(Locale locale, ICourse course, BusinessGroup group, ZipOutputStream exportStream, String charset) {
+	public boolean archiveNodeData(Locale locale, ICourse course, ArchiveOptions options, ZipOutputStream exportStream, String charset) {
 		String filename = "checklist_"
 				+ StringHelper.transformDisplayNameToFileSystemName(getShortName())
 				+ "_" + Formatter.formatDatetimeFilesystemSave(new Date(System.currentTimeMillis()));
diff --git a/src/main/java/org/olat/course/archiver/ArchiveResource.java b/src/main/java/org/olat/course/archiver/ArchiveResource.java
index 694fecd6b44..afd4f5998fc 100644
--- a/src/main/java/org/olat/course/archiver/ArchiveResource.java
+++ b/src/main/java/org/olat/course/archiver/ArchiveResource.java
@@ -35,8 +35,8 @@ import org.olat.core.util.Formatter;
 import org.olat.core.util.StringHelper;
 import org.olat.course.CourseFactory;
 import org.olat.course.ICourse;
+import org.olat.course.nodes.ArchiveOptions;
 import org.olat.course.nodes.CourseNode;
-import org.olat.group.BusinessGroup;
 
 /**
  * 
@@ -49,13 +49,13 @@ public class ArchiveResource implements MediaResource {
 	
 	private final Locale locale;
 	private final String encoding = "UTF-8";
-	private final BusinessGroup group;
+	private final ArchiveOptions options;
 	private final CourseNode courseNode;
 	private final OLATResourceable courseOres;
 	
 	public ArchiveResource(CourseNode courseNode, OLATResourceable courseOres,
-			BusinessGroup group, Locale locale) {
-		this.group = group;
+			ArchiveOptions options, Locale locale) {
+		this.options = options;
 		this.locale = locale;
 		this.courseNode = courseNode;
 		this.courseOres = courseOres;
@@ -102,7 +102,7 @@ public class ArchiveResource implements MediaResource {
 			zout = new ZipOutputStream(hres.getOutputStream());
 			zout.setLevel(9);
 			ICourse course = CourseFactory.loadCourse(courseOres);
-			courseNode.archiveNodeData(locale, course, group, zout, encoding);
+			courseNode.archiveNodeData(locale, course, options, zout, encoding);
 		} catch (Exception e) {
 			log.error("", e);
 		} finally {
diff --git a/src/main/java/org/olat/course/archiver/GenericArchiveController.java b/src/main/java/org/olat/course/archiver/GenericArchiveController.java
index 38993f05c67..aa1f5b69627 100644
--- a/src/main/java/org/olat/course/archiver/GenericArchiveController.java
+++ b/src/main/java/org/olat/course/archiver/GenericArchiveController.java
@@ -51,6 +51,7 @@ import org.olat.course.assessment.IndentedNodeRenderer;
 import org.olat.course.assessment.NodeTableDataModel;
 import org.olat.course.assessment.NodeTableRow;
 import org.olat.course.groupsandrights.CourseGroupManager;
+import org.olat.course.nodes.ArchiveOptions;
 import org.olat.course.nodes.CourseNode;
 import org.olat.course.nodes.TACourseNode;
 import org.olat.group.BusinessGroup;
@@ -233,9 +234,10 @@ public class GenericArchiveController extends BasicController {
 	}
 
 	private void archiveNode(UserRequest ureq, CourseNode node, BusinessGroup group) {
-		ArchiveResource aResource = new ArchiveResource(node, ores, group, getLocale());
+		ArchiveOptions options = new ArchiveOptions();
+		options.setGroup(group);
+		ArchiveResource aResource = new ArchiveResource(node, ores, options, getLocale());
 		ureq.getDispatchResult().setResultingMediaResource(aResource);
-		showInfo("archive." + nodeType.getType() + ".successfully");
 	}
 
 	/**
diff --git a/src/main/java/org/olat/course/archiver/ScoreAccountingHelper.java b/src/main/java/org/olat/course/archiver/ScoreAccountingHelper.java
index a42d017a550..c835deacaed 100644
--- a/src/main/java/org/olat/course/archiver/ScoreAccountingHelper.java
+++ b/src/main/java/org/olat/course/archiver/ScoreAccountingHelper.java
@@ -52,6 +52,7 @@ import org.olat.course.assessment.AssessmentHelper;
 import org.olat.course.assessment.AssessmentManager;
 import org.olat.course.assessment.manager.UserCourseInformationsManager;
 import org.olat.course.groupsandrights.CourseGroupManager;
+import org.olat.course.nodes.ArchiveOptions;
 import org.olat.course.nodes.AssessableCourseNode;
 import org.olat.course.nodes.CourseNode;
 import org.olat.course.nodes.STCourseNode;
@@ -398,9 +399,19 @@ public class ScoreAccountingHelper {
 		return userList;
 	}
 	
-	public static List<Identity> loadUsers(BusinessGroup group) {
+	public static List<Identity> loadUsers(CourseEnvironment courseEnv, ArchiveOptions options) {
 		BaseSecurity securityManager = BaseSecurityManager.getInstance();
-		return securityManager.getIdentitiesOfSecurityGroup(group.getPartipiciantGroup());
+		List<Identity> users;
+		if(options == null) {
+			users = loadUsers(courseEnv);
+		} else if(options.getGroup() != null) {
+			users = securityManager.getIdentitiesOfSecurityGroup(options.getGroup().getPartipiciantGroup());
+		} else if(options.getIdentities() != null) {
+			users = options.getIdentities();
+		} else {
+			users = loadUsers(courseEnv);
+		}
+		return users;
 	}
 	
 	/**
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_ar.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_ar.properties
index 43ce12308a4..87760ea5e85 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_ar.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_ar.properties
@@ -1,17 +1,4 @@
 #Fri Aug 20 17:52:01 CEST 2010
-archive.dialog.notsuccessfully=\u0645\u0644\u0641 \u0627\u0644\u062D\u0648\u0627\u0631 \u0644\u0627 \u064A\u0645\u0643\u0646 \u062D\u0641\u0638\u0647
-archive.dialog.successfully=\u0645\u0644\u0641 \u0627\u0644\u062D\u0648\u0627\u0631  \u062A\u0645 \u062D\u0641\u0638\u0647 \u0641\u0649 \u0645\u062C\u0644\u062F\u0643 \u0627\u0644\u0634\u062E\u0635\u0649.
-archive.dropbox.notasks=\u0645\u0631\u0628\u0639 \u0627\u0644\u0627\u0641\u0644\u0627\u062A \u0644\u0627 \u064A\u0632\u0627\u0644 \u0641\u0627\u0631\u063A\u0627\u064B.
-archive.dropbox.notsuccessfully=\u0645\u0631\u0628\u0639 \u0627\u0644\u0625\u0641\u0644\u0627\u062A \u0644\u0627 \u064A\u0645\u0643\u0646 \u062D\u0641\u0638\u0647
-archive.dropbox.successfully=\u0645\u0631\u0628\u0639 \u0627\u0644\u0625\u0641\u0644\u0627\u062A \u062A\u0645 \u062D\u0641\u0638\u0647 \u0641\u0649 \u0645\u062C\u0644\u062F\u0643 \u0627\u0644\u0634\u062E\u0635\u0649.
-archive.fo.notsuccessfully=\u0647\u0630\u0627 \u0627\u0644\u0645\u0646\u062A\u062F\u0649 \u0644\u0627 \u064A\u0645\u0643\u0646 \u062D\u0641\u0638\u0647
-archive.fo.successfully=\u0647\u0630\u0627 \u0627\u0644\u0645\u0646\u062A\u062F\u0649 \u062A\u0645 \u062D\u0641\u0638\u0647 \u0641\u0649 \u0645\u062C\u0644\u062F\u0643 \u0627\u0644\u0634\u062E\u0635\u0649.
-archive.projectbroker.notsuccessfully=\u0647\u0630\u0627 \u0627\u0644\u0645\u0648\u0636\u0648\u0639 \u0644\u0627 \u064A\u0645\u0643\u0646 \u062D\u0641\u0638\u0647
-archive.projectbroker.successfully=\u0647\u0630\u0627 \u0627\u0644\u0645\u0634\u0631\u0648\u0639 \u062A\u0645 \u062D\u0641\u0638\u0647 \u0641\u0649 \u0645\u062C\u0644\u062F\u0643 \u0627\u0644\u0634\u062E\u0635\u0649.
-archive.ta.notsuccessfully=\u0647\u0630\u0647 \u0627\u0644\u0645\u0647\u0627\u0645/\u0627\u0644\u062D\u0644\u0648\u0644 \u0644\u0627 \u064A\u0645\u0643\u0646 \u062D\u0641\u0638\u0647\u0627
-archive.ta.successfully=\u0645\u0647\u0627\u0645\u0643/\u062D\u0644\u0648\u0644\u0643 \u062A\u0645 \u062D\u0641\u0638\u0647\u0627 \u0641\u0649 \u0645\u062C\u0644\u062F\u0643 \u0627\u0644\u0634\u062E\u0635\u0649.
-archive.wiki.notsuccessfully=\u0647\u0630\u0627 \u0627\u0644\u0648\u064A\u0643\u0649 \u0644\u0627 \u064A\u0645\u0643\u0646 \u062D\u0641\u0638\u0647
-archive.wiki.successfully=\u0647\u0630\u0627 \u0627\u0644\u0648\u064A\u0643\u0649 \u062A\u0645 \u062D\u0641\u0638\u0647 \u0641\u0649 \u0645\u062C\u0644\u062F\u0643 \u0627\u0644\u0634\u062E\u0635\u0649.
 chelp.arch-logf.title=\u062A\u0642\u064A\u064A\u0645 \u0645\u0644\u0641\u0627\u062A \u0627\u0644\u062F\u062E\u0648\u0644
 chelp.ass=\u0627\u0644\u062A\u0642\u064A\u064A\u0645
 chelp.cont=\u0633\u064A\u0627\u0642 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_bg.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_bg.properties
index d6c55d3310e..2a4f38dd936 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_bg.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_bg.properties
@@ -1,10 +1,4 @@
 #Wed Jul 28 13:33:31 CEST 2010
-archive.dialog.successfully=\u0422\u043E\u0437\u0438 \u0444\u0430\u0439\u043B\u043E\u0432 \u0434\u0438\u0430\u043B\u043E\u0433 \u0435 \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0430\u043D \u0432\u044A\u0432 \u0432\u0430\u0448\u0430\u0442\u0430 \u043B\u0438\u0447\u043D\u0430 \u043F\u0430\u043F\u043A\u0430.
-archive.dropbox.notasks=\u0422\u0430\u0437\u0438 \u043A\u0443\u0442\u0438\u044F \u0437\u0430 \u043E\u0441\u0442\u0430\u0432\u044F\u043D\u0435 \u0435 \u0432\u0441\u0435 \u043E\u0449\u0435 \u043F\u0440\u0430\u0437\u043D\u0430.
-archive.dropbox.successfully=\u0422\u0430\u0437\u0438 \u043A\u0443\u0442\u0438\u044F \u0437\u0430 \u043E\u0441\u0442\u0430\u0432\u044F\u043D\u0435 \u0435 \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0430\u043D\u0430 \u0432\u044A\u0432 \u0432\u0430\u0448\u0430\u0442\u0430 \u043B\u0438\u0447\u043D\u0430 \u043F\u0430\u043F\u043A\u0430.
-archive.fo.successfully=\u0422\u043E\u0437\u0438 \u0444\u043E\u0440\u0443\u043C \u0435 \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0430\u043D \u0432\u044A\u0432 \u0432\u0430\u0448\u0430\u0442\u0430 \u043B\u0438\u0447\u043D\u0430 \u043F\u0430\u043F\u043A\u0430.
-archive.ta.successfully=\u0412\u0430\u0448\u0438\u0442\u0435 \u0437\u0430\u0434\u0430\u0447\u0438/\u0440\u0435\u0448\u0435\u043D\u0438\u044F \u0441\u0430 \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0430\u043D\u0438 \u0432\u044A\u0432 \u0432\u0430\u0448\u0430\u0442\u0430 \u043B\u0438\u0447\u043D\u0430 \u043F\u0430\u043F\u043A\u0430.
-archive.wiki.successfully=\u0422\u043E\u0432\u0430 \u0423\u0438\u043A\u0438 \u0435 \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0430\u043D\u043E \u0432\u044A\u0432 \u0432\u0430\u0448\u0430\u0442\u0430 \u043B\u0438\u0447\u043D\u0430 \u043F\u0430\u043F\u043A\u0430.
 chelp.arch-logf.title=\u041E\u0446\u0435\u043D\u044F\u0432\u0430\u043D\u0435 \u043D\u0430 \u0444\u0430\u0439\u043B-\u0434\u043D\u0435\u0432\u043D\u0438\u0446\u0438
 chelp.ass=\u041E\u0446\u0435\u043D\u043A\u0430
 chelp.cont=\u0413\u0440\u0443\u043F\u043E\u0432 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_cs.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_cs.properties
index 30c3e8901b7..15c1261f425 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_cs.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_cs.properties
@@ -1,10 +1,4 @@
 #Wed Jul 28 13:33:32 CEST 2010
-archive.dialog.successfully=Tento dialog souboru byl archivov\u00E1n ve va\u0161\u00ED osobn\u00ED slo\u017Ece.
-archive.dropbox.notasks=Po\u0161tovn\u00ED schr\u00E1nka je st\u00E1le pr\u00E1zdn\u00E1.
-archive.dropbox.successfully=Po\u0161tovn\u00ED schr\u00E1nka byla zaz\u00E1lohov\u00E1na do Va\u0161\u00ED osobn\u00ED slo\u017Eky.
-archive.fo.successfully=Toto f\u00F3rum bylo archivov\u00E1no do Va\u0161\u00ED osobn\u00ED slo\u017Eky.
-archive.ta.successfully=Tento \u00FAkol/\u0159e\u0161en\u00ED bylo archivov\u00E1no do Va\u0161\u00ED osobn\u00ED slo\u017Eky.
-archive.wiki.successfully=Toto Wiki bylo archivov\u00E1no do Va\u0161\u00ED osobn\u00ED slo\u017Eky.
 chelp.arch-logf.title=Vyhodnocov\u00E1n\u00ED log soubor\u016F
 chelp.ass=Hodnocen\u00ED
 chelp.cont=Kontext skupiny
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_da.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_da.properties
index 22e24c74827..0706298d28d 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_da.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_da.properties
@@ -1,7 +1,4 @@
 #Wed Jul 28 13:33:31 CEST 2010
-archive.dialog.successfully=Denne filudveksling er arkiveret i din personlige mappe
-archive.dropbox.notasks=Denne drop-boks er stadig tom
-archive.dropbox.successfully=Denne drop-boks blev arkiveret i din personlige mappe
 chelp.ass=Vurdering
 chelp.cont=Gruppekontekst
 chelp.course-log.title=Beskrivelse af logfil indholdet
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_de.properties
index 8203c8d4f70..0fb1d5a606c 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_de.properties
@@ -1,17 +1,4 @@
 #Mon Mar 02 09:54:04 CET 2009
-archive.dialog.successfully=Die Dateidiskussion wurde in Ihrem pers\u00F6nlichen Ordner archiviert.
-archive.dialog.notsuccessfully=Die Dateidiskussion konnte nicht archiviert werden.
-archive.dropbox.notasks=Der Abgabeordner ist noch leer.
-archive.dropbox.successfully=Der Abgabeordner wurde in Ihrem pers\u00F6nlichen Ordner archiviert.
-archive.dropbox.notsuccessfully=Der Abgabeordner konnte nicht archiviert werden.
-archive.fo.successfully=Das Forum wurde in Ihrem pers\u00F6nlichen Ordner archiviert.
-archive.fo.notsuccessfully=Das Forum konnte nicht archiviert werden.
-archive.ta.successfully=Die Aufgaben/L\u00F6sungen wurden in Ihrem pers\u00F6nlichen Ordner archiviert.
-archive.ta.notsuccessfully=Die Aufgaben/L\u00F6sungen konnten nicht archiviert werden.
-archive.wiki.successfully=Das Wiki wurde in Ihrem pers\u00F6nlichen Ordner archiviert.
-archive.wiki.notsuccessfully=Das Wiki konnte nicht archiviert werden.
-archive.projectbroker.successfully=Die Themenvergabe wurde in Ihrem pers\u00F6nlichen Ordner archiviert.
-archive.projectbroker.notsuccessfully=Die Themenvergabe konnte nicht archiviert werden.
 chelp.arch-logf.title=Logfiles: Auswertung
 chelp.ass=Bewertung
 chelp.cont=Gruppenkontext
@@ -110,12 +97,12 @@ menu.scorm=SCORM Resultate
 menu.scorm.alt=SCORM Resultate
 menu.projectbroker=Themenvergabe
 menu.projectbroker.alt=Daten der Bausteine "Themenvergabe" archivieren
-nodechoose.intro.dialog=W\u00E4hlen Sie einen Kursbaustein aus, um dessen Dateidiskussion zu archivieren. Die archivierte Dateidiskussion finden Sie in Ihrem pers\u00F6nlichen Ordner unter private/archive/[Kursname]/Dateidiskussion_[forum_id]
-nodechoose.intro.fo=W\u00E4hlen Sie einen Kursbaustein aus, um dessen Forum zu archivieren. Das archivierte Forum finden Sie in Ihrem pers\u00F6nlichen Ordner unter private/archive/[Kursname]/forum_[forum_id]
-nodechoose.intro.ta=W\u00E4hlen Sie einen Kursbaustein aus, um dessen Aufgaben/L\u00F6sungen zu archivieren. Die archivierten Aufgaben/L\u00F6sungen finden Sie in Ihrem pers\u00F6nlichem Ordner unter private/archive/[Kursname]/task_[Bausteinname] als ZIP-Datei.
-nodechoose.intro.wiki=W\u00E4hlen Sie einen Kursbaustein aus, um dessen Wikis zu archivieren. Die archivierten Wikis finden Sie in Ihrem pers\u00F6nlichem Ordner unter private/archive/[Kursname]/Bausteinname_[Datum] als ZIP-Datei.
-nodechoose.intro.projectbroker=W\u00E4hlen Sie einen Kursbaustein aus, um dessen Themenvergabe zu archivieren. Die archivierte Themenvergabe finden Sie in Ihrem pers\u00F6nlichen Ordner unter private/archive/[Kursname]/projectbroker_[id]
-nodechoose.intro.scorm=W\u00E4hlen Sie im folgenden Dialog den SCORM Baustein aus, der ausgewertet werden soll. Die archivierten Resultate finden Sie in Ihrem pers\u00F6nlichen Ordner unter private/archive/[Kursname]/[Dateiname].
+nodechoose.intro.dialog=W\u00E4hlen Sie einen Kursbaustein aus, um dessen Dateidiskussion zu archivieren.
+nodechoose.intro.fo=W\u00E4hlen Sie einen Kursbaustein aus, um dessen Forum zu archivieren.
+nodechoose.intro.ta=W\u00E4hlen Sie einen Kursbaustein aus, um dessen Aufgaben/L\u00F6sungen zu archivieren.
+nodechoose.intro.wiki=W\u00E4hlen Sie einen Kursbaustein aus, um dessen Wikis zu archivieren.
+nodechoose.intro.projectbroker=W\u00E4hlen Sie einen Kursbaustein aus, um dessen Themenvergabe zu archivieren.
+nodechoose.intro.scorm=W\u00E4hlen Sie im folgenden Dialog den SCORM Baustein aus, der ausgewertet werden soll
 overview.nonodes.dialog=Dieser Kurs enth\u00E4lt keine Dateidiskussionen.
 overview.nonodes.fo=Dieser Kurs enth\u00E4lt keine Foren
 overview.nonodes.ta=Dieser Kurs enth\u00E4lt keine Aufgabenkursbausteine
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_el.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_el.properties
index dd7c84f1034..a6581a6d072 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_el.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_el.properties
@@ -1,17 +1,4 @@
 #Wed Sep 15 09:59:00 CEST 2010
-archive.dialog.notsuccessfully=\u039F \u03B4\u03B9\u03AC\u03BB\u03BF\u03B3\u03BF\u03C2 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03B4\u03B5\u03BD \u03B1\u03C1\u03C7\u03B5\u03B9\u03BF\u03B8\u03B5\u03C4\u03AE\u03B8\u03B7\u03BA\u03B5.
-archive.dialog.successfully=\u039F \u03B4\u03B9\u03AC\u03BB\u03BF\u03B3\u03BF\u03C2 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03B1\u03C1\u03C7\u03B5\u03B9\u03BF\u03B8\u03B5\u03C4\u03AE\u03B8\u03B7\u03BA\u03B5 \u03C3\u03C4\u03BF\u03BD \u03C0\u03C1\u03BF\u03C3\u03C9\u03C0\u03B9\u03BA\u03CC \u03C3\u03B1\u03C2 \u03C6\u03AC\u03BA\u03B5\u03BB\u03BF.
-archive.dropbox.notasks=\u0397 \u03B8\u03C5\u03C1\u03AF\u03B4\u03B1 \u03C0\u03B1\u03C1\u03AC\u03B4\u03BF\u03C3\u03B7\u03C2 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03AC\u03B4\u03B5\u03B9\u03B1.
-archive.dropbox.notsuccessfully=H \u03B8\u03C5\u03C1\u03AF\u03B4\u03B1 \u03C0\u03B1\u03C1\u03AC\u03B4\u03BF\u03C3\u03B7\u03C2 \u03B4\u03B5\u03BD \u03B1\u03C1\u03C7\u03B5\u03B9\u03BF\u03B8\u03B5\u03C4\u03AE\u03B8\u03B7\u03BA\u03B5.
-archive.dropbox.successfully=\u0397 \u03B8\u03C5\u03C1\u03AF\u03B4\u03B1 \u03C0\u03B1\u03C1\u03AC\u03B4\u03BF\u03C3\u03B7\u03C2 \u03B1\u03C1\u03C7\u03B5\u03B9\u03BF\u03B8\u03B5\u03C4\u03AE\u03B8\u03B7\u03BA\u03B5 \u03C3\u03C4\u03BF\u03BD \u03C0\u03C1\u03BF\u03C3\u03C9\u03C0\u03B9\u03BA\u03CC \u03C3\u03B1\u03C2 \u03C6\u03AC\u03BA\u03B5\u03BB\u03BF.
-archive.fo.notsuccessfully=\u03A4\u03BF forum \u03B4\u03B5\u03BD \u03B1\u03C1\u03C7\u03B5\u03B9\u03BF\u03B8\u03B5\u03C4\u03AE\u03B8\u03B7\u03BA\u03B5.
-archive.fo.successfully=\u03A4\u03BF forum \u03B1\u03C1\u03C7\u03B5\u03B9\u03BF\u03B8\u03B5\u03C4\u03AE\u03B8\u03B7\u03BA\u03B5 \u03C3\u03C4\u03BF\u03BD \u03C0\u03C1\u03BF\u03C3\u03C9\u03C0\u03B9\u03BA\u03CC \u03C3\u03B1\u03C2 \u03C6\u03AC\u03BA\u03B5\u03BB\u03BF.
-archive.projectbroker.notsuccessfully=\u0397 \u03B1\u03BD\u03AC\u03B8\u03B5\u03C3\u03B7 \u03B8\u03AD\u03BC\u03B1\u03C4\u03BF\u03C2 \u03B4\u03B5\u03BD \u03B1\u03C1\u03C7\u03B5\u03B9\u03BF\u03B8\u03B5\u03C4\u03AE\u03B8\u03B7\u03BA\u03B5.
-archive.projectbroker.successfully=\u0391\u03C5\u03C4\u03AE \u03B7 \u03B1\u03BD\u03AC\u03B8\u03B5\u03C3\u03B7 \u03B8\u03AD\u03BC\u03B1\u03C4\u03BF\u03C2 \u03AD\u03C7\u03B5\u03B9 \u03B1\u03C1\u03C7\u03B5\u03B9\u03BF\u03B8\u03B5\u03C4\u03B7\u03B8\u03B5\u03AF \u03C3\u03C4\u03BF\u03BD \u03C0\u03C1\u03BF\u03C3\u03C9\u03C0\u03B9\u03BA\u03CC \u03C6\u03AC\u03BA\u03B5\u03BB\u03BB\u03CC \u03C3\u03B1\u03C2.
-archive.ta.notsuccessfully=\u039F\u03B9 \u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B5\u03C2/\u03BB\u03CD\u03C3\u03B5\u03B9\u03C2 \u03B1\u03C5\u03C4\u03AD\u03C2 \u03B4\u03B5\u03BD \u03B1\u03C1\u03C7\u03B5\u03B9\u03BF\u03B8\u03B5\u03C4\u03AE\u03B8\u03B7\u03BA\u03B1\u03BD.
-archive.ta.successfully=\u039F\u03B9 \u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B5\u03C2 /\u03BB\u03CD\u03C3\u03B5\u03B9\u03C2 \u03C3\u03B1\u03C2 \u03B1\u03C1\u03C7\u03B5\u03B9\u03BF\u03B8\u03B5\u03C4\u03AE\u03B8\u03B7\u03BA\u03B1\u03BD \u03C3\u03C4\u03BF\u03BD \u03C0\u03C1\u03BF\u03C3\u03C9\u03C0\u03B9\u03BA\u03CC \u03C3\u03B1\u03C2 \u03C6\u03AC\u03BA\u03B5\u03BB\u03BF.
-archive.wiki.notsuccessfully=\u03A4\u03BF Wiki \u03B1\u03C5\u03C4\u03CC \u03B4\u03B5\u03BD \u03B1\u03C1\u03C7\u03B5\u03B9\u03BF\u03B8\u03B5\u03C4\u03AE\u03B8\u03B7\u03BA\u03B5.
-archive.wiki.successfully=\u03A4\u03BF Wiki \u03B1\u03C1\u03C7\u03B5\u03B9\u03BF\u03B8\u03B5\u03C4\u03AE\u03B8\u03B7\u03BA\u03B5 \u03C3\u03C4\u03BF\u03BD \u03C0\u03C1\u03BF\u03C3\u03C9\u03C0\u03B9\u03BA\u03CC \u03C3\u03B1\u03C2 \u03C6\u03AC\u03BA\u03B5\u03BB\u03BF.
 chelp.arch-logf.title=\u0391\u03BE\u03B9\u03BF\u03BB\u03CC\u03B3\u03B7\u03C3\u03B7 \u03C6\u03B1\u03BA\u03AD\u03BB\u03C9\u03BD \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD
 chelp.ass=\u0391\u03BE\u03B9\u03BF\u03BB\u03CC\u03B3\u03B7\u03C3\u03B7
 chelp.cont=\u03A0\u03B5\u03C1\u03B9\u03B2\u03AC\u03BB\u03BB\u03BF\u03BD \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_en.properties
index b83b879d03b..b6bf43dd2e1 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_en.properties
@@ -1,18 +1,4 @@
-
 #Mon May 16 17:10:05 CEST 2011
-archive.dialog.notsuccessfully=This file dialog could not be archived.
-archive.dialog.successfully=This file dialog has been archived in your personal folder.
-archive.dropbox.notasks=This drop box is still empty.
-archive.dropbox.notsuccessfully=This drop box could not be archived.
-archive.dropbox.successfully=This drop box was archived in your personal folder.
-archive.fo.notsuccessfully=This forum could not be archived.
-archive.fo.successfully=This forum has been archived in your personal folder.
-archive.projectbroker.notsuccessfully=This topic assignment could not be archived.
-archive.projectbroker.successfully=This topic assignment has been archived in your personal folder.
-archive.ta.notsuccessfully=These tasks/solutions could not be archived.
-archive.ta.successfully=Your tasks/solutions have been archived in your personal folder.
-archive.wiki.notsuccessfully=This Wiki could not be archived.
-archive.wiki.successfully=This Wiki has been archived in your personal folder.
 chelp.arch-logf.title=Log files\: evaluation
 chelp.ass=Assessment
 chelp.cont=Group context
@@ -111,12 +97,12 @@ menu.wikis=Wikis
 menu.wikis.alt=Archive Wikis
 menu.scorm=SCORM results
 menu.scorm.alt=SCORM results
-nodechoose.intro.dialog=Select a course element to archive its file dialog. This archived dialog can be found in your personal folder, section private/archive/[course name]/file dialog_[forum_id].
-nodechoose.intro.fo=Select a course element to archive its forum. This archived forum can be found in your personal folder, section private/archive/[course name]/forum_[forum_id].
-nodechoose.intro.projectbroker=Please select a course element to archive its topic assignment. Archived topic assignment can be found in your personal folder, section private/archive/[course's name]/topic assignment_[id]
-nodechoose.intro.ta=Select a course element in order to archive its tasks/solutions. These archived tasks/solutions are saved in your personal folder in the section private/archive/[course name]/task_[name of course element] as zip file.
-nodechoose.intro.wiki=Select a course element to archive its Wiki. This archived Wiki can be found in your personal folder, section private/archive/[course name]/wiki_[date] as zip file.
-nodechoose.intro.scorm=In the following dialog please select the SCORM element to be assessed. Archived results can be found in your personal folder, section private/archive/[course name]/[file name].
+nodechoose.intro.dialog=Select a course element to archive its file dialog.
+nodechoose.intro.fo=Select a course element to archive its forum.
+nodechoose.intro.projectbroker=Please select a course element to archive its topic assignment.
+nodechoose.intro.ta=Select a course element in order to archive its tasks/solutions.
+nodechoose.intro.wiki=Select a course element to archive its Wiki.
+nodechoose.intro.scorm=In the following dialog please select the SCORM element to be assessed.
 overview.nonodes.dialog=This course does not contain any file dialogs.
 overview.nonodes.fo=This course does not contain any forums.
 overview.nonodes.projectbroker=This course does not contain any topic assignments.
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_es.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_es.properties
index 485bb3f5ee9..cc76833269f 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_es.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_es.properties
@@ -1,10 +1,4 @@
 #Wed Jul 28 13:33:33 CEST 2010
-archive.dialog.successfully=El di\u00E1logo de archivo ha sido archivado en tu carpeta personal.
-archive.dropbox.notasks=La carpeta de entrega est\u00E1 vac\u00EDa todav\u00EDa.
-archive.dropbox.successfully=La carpeta de entrega se ha archivado en tu carpeta personal.
-archive.fo.successfully=El foro ha sido archivado en tu carpeta personal.
-archive.ta.successfully=Las tareas/soluciones han sido archivado en tu carpeta personal.
-archive.wiki.successfully=El Wiki ha sido archivado en tu carpeta personal.
 chelp.arch-logf.title=Evaluaci\u00F3n de archivos de log
 chelp.ass=Evaluaci\u00F3n
 chelp.cont=Contexto de grupo
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_fa.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_fa.properties
index 21ad539e157..3ee38eba282 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_fa.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_fa.properties
@@ -1,7 +1,4 @@
 #Mon Mar 02 09:54:12 CET 2009
-archive.dialog.successfully=\u0627\u06CC\u0646 \u0641\u0627\u06CC\u0644 \u0645\u062D\u0627\u0648\u0631\u0647 \u0627\u06CC \u062F\u0631 \u067E\u0648\u0634\u0647 \u062E\u0635\u0648\u0635\u06CC \u0634\u0645\u0627 \u0628\u0627\u06CC\u06AF\u0627\u0646\u06CC \u0634\u062F
-archive.dropbox.notasks=This drop box is still empty.
-archive.dropbox.successfully=This drop box was archived in your personal folder.
 cmd.start=\u0634\u0631\u0648\u0639
 column.field.missing=-
 column.field.no=\u062E\u06CC\u0631
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_fr.properties
index e846f364e3d..39fbbc033df 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_fr.properties
@@ -1,17 +1,4 @@
 #Sun Oct 27 16:55:30 CET 2013
-archive.dialog.notsuccessfully=L'archivage de la discussion de fichier n'a pas \u00E9t\u00E9 possible.
-archive.dialog.successfully=Le fichier discut\u00E9 a \u00E9t\u00E9 archiv\u00E9 dans votre dossier personnel.
-archive.dropbox.notasks=Le dossier de remise est encore vide.
-archive.dropbox.notsuccessfully=L'archivage du dossier de remise n'a pas \u00E9t\u00E9 possible.
-archive.dropbox.successfully=Le dossier de remise a \u00E9t\u00E9 archiv\u00E9 dans votre dossier personnel.
-archive.fo.notsuccessfully=L'archivage du forum n'a pas \u00E9t\u00E9 possible.
-archive.fo.successfully=Le forum a \u00E9t\u00E9 archiv\u00E9 dans votre dossier personnel.
-archive.projectbroker.notsuccessfully=L'archivage de l'affectation des sujets n'a pas \u00E9t\u00E9 possible.
-archive.projectbroker.successfully=L'affectation des sujets a \u00E9t\u00E9 archiv\u00E9e dans votre dossier personnel.
-archive.ta.notsuccessfully=L'archivage des devoirs/solutions n'a pas \u00E9t\u00E9 possible.
-archive.ta.successfully=Les devoirs/solutions ont \u00E9t\u00E9 archiv\u00E9es dans votre dossier personnel.
-archive.wiki.notsuccessfully=L'archivage du wiki n'a pas \u00E9t\u00E9 possible.
-archive.wiki.successfully=Le wiki a \u00E9t\u00E9 archiv\u00E9 dans votre dossier personnel.
 chelp.arch-logf.title=Analyse des fichiers log
 chelp.ass=Evaluation
 chelp.cont=Contexte de groupe
@@ -110,12 +97,12 @@ menu.wikis=Wikis
 menu.wikis.alt=Archiver Wikis
 menu.scorm=R\u00E9sultats SCORM
 menu.scorm.alt=R\u00E9sultats SCORM
-nodechoose.intro.dialog=S\u00E9lectionnez un \u00E9l\u00E9ment de cours pour archiver ses discussions de fichiers. Les fichiers discut\u00E9s archiv\u00E9s se trouvent sous format zip dans votre dossier personnel sous private/archive/[nom_du_cours]/Dateidiskussion_[forum_id]
-nodechoose.intro.fo=S\u00E9lectionnez un \u00E9l\u00E9ment de cours pour archiver son forum. zu archivieren. Les forums archiv\u00E9s se trouvent sous format zip dans votre dossier personnel sous private/archive/[nom_du_cours]/forum_[forum_id]
-nodechoose.intro.projectbroker=S\u00E9lectionner un \u00E9l\u00E9ment de cours pour archiver son affectation des sujets. L'affectation des sujets archiv\u00E9e peut \u00EAtre trouv\u00E9e dans votre dossier personnel sous private/archive/[Kursname]/projectbroker_[id]
-nodechoose.intro.ta=S\u00E9lectionnez un \u00E9l\u00E9ment de cours pour archiver ses devoirs/solutions. Vous trouvez les devoirs/solutions achiv\u00E9es dans votre dossier personnel comme fichier zip sous private/archive/[nom_du_cours]/task_[nom de l'\u00E9l\u00E9ment].
-nodechoose.intro.wiki=S\u00E9lectionnez un \u00E9l\u00E9ment de cours pour archiver ses Wikis. Les Wikis archiv\u00E9s se trouvent sous format zip dans votre dossier personnel sous private/archive/[nom_du_cours]/Bausteinname_[date].
-nodechoose.intro.scorm=Choisir dans le dialogue suivant l'\u00E9l\u00E9ment SCORM qui doit \u00EAtre \u00E9valu\u00E9. Les r\u00E9sultats archiv\u00E9s sont d\u00E9pos\u00E9s dans votre dossier personnel sous private/archive/[nom du cours]/[nom du fichier].
+nodechoose.intro.dialog=S\u00E9lectionnez un \u00E9l\u00E9ment de cours pour archiver ses discussions de fichiers.
+nodechoose.intro.fo=S\u00E9lectionnez un \u00E9l\u00E9ment de cours pour archiver son forum.
+nodechoose.intro.projectbroker=S\u00E9lectionner un \u00E9l\u00E9ment de cours pour archiver son affectation des sujets.
+nodechoose.intro.ta=S\u00E9lectionnez un \u00E9l\u00E9ment de cours pour archiver ses devoirs/solutions.
+nodechoose.intro.wiki=S\u00E9lectionnez un \u00E9l\u00E9ment de cours pour archiver ses Wikis
+nodechoose.intro.scorm=Choisir dans le dialogue suivant l'\u00E9l\u00E9ment SCORM qui doit \u00EAtre \u00E9valu\u00E9.
 overview.nonodes.dialog=Dieser Kurs enth\u00E4lt keine Dateidiskussionen.
 overview.nonodes.fo=Dieser Kurs enth\u00E4lt keine Foren
 overview.nonodes.projectbroker=Ce cours ne contient pas d'affectation des sujets.
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_it.properties
index b8f5fee228e..45ec3ffd062 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_it.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_it.properties
@@ -1,17 +1,4 @@
 #Mon Jan 10 13:13:08 CET 2011
-archive.dialog.notsuccessfully=Non \u00E8 stato possibile archiviare la discussione documentata.
-archive.dialog.successfully=La discussione documentata \u00E8 stata archiviata nella Sua cartella personale.
-archive.dropbox.notasks=La cartella di consegna \u00E8 ancora vuota.
-archive.dropbox.notsuccessfully=Non \u00E8 stato possibile archiviare la cartella di consegna.
-archive.dropbox.successfully=La cartella di consegna \u00E8 stata archiviata nella Sua cartella personale.
-archive.fo.notsuccessfully=Non \u00E8 stato possibile archiviare il forum.
-archive.fo.successfully=Il forum \u00E8 stato archiviato nella Sua cartella personale.
-archive.projectbroker.notsuccessfully=Non \u00E8 stato possibile archiviare l'assegnazione dei temi.
-archive.projectbroker.successfully=L'assegnazione dei temi \u00E8 stata archiviata della Sua cartella personale.
-archive.ta.notsuccessfully=Non \u00E8 stato possibile archiviare i compiti/le soluzioni.
-archive.ta.successfully=I compiti/Le soluzioni sono state archiviate nella Sua cartella personale.
-archive.wiki.notsuccessfully=Non \u00E8 stato possibile archiviare il wiki.
-archive.wiki.successfully=Il wiki \u00E8 stato archiviato nella Sua cartella personale.
 chelp.arch-logf.title=Analisi dei logfile
 chelp.ass=Valutazione
 chelp.cont=Contesto di gruppo
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_jp.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_jp.properties
index 555d5bf2592..d43cbb18863 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_jp.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_jp.properties
@@ -1,11 +1,4 @@
 #Wed Jul 28 13:33:30 CEST 2010
-archive.dialog.successfully=\u3053\u306E\u30D5\u30A1\u30A4\u30EB\u30C0\u30A4\u30A2\u30ED\u30B0\u306F\u3001\u3042\u306A\u305F\u306E\u30D1\u30FC\u30BD\u30CA\u30EB\u30D5\u30A9\u30EB\u30C0\u306B\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u307E\u3057\u305F\u3002
-archive.dropbox.notasks=\u307E\u3060\u3001\u3053\u306E\u30C9\u30ED\u30C3\u30D7\u30DC\u30C3\u30AF\u30B9\u306F\u7A7A\u3067\u3059\u3002
-archive.dropbox.successfully=\u3053\u306E\u30C9\u30ED\u30C3\u30D7\u30DC\u30C3\u30AF\u30B9\u306F\u3001\u3042\u306A\u305F\u306E\u30D1\u30FC\u30BD\u30CA\u30EB\u30D5\u30A9\u30EB\u30C0\u306B\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u307E\u3057\u305F\u3002
-archive.fo.successfully=\u3053\u306E\u30D5\u30A9\u30FC\u30E9\u30E0\u306F\u3001\u3042\u306A\u305F\u306E\u30D1\u30FC\u30BD\u30CA\u30EB\u30D5\u30A9\u30EB\u30C0\u306B\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u307E\u3057\u305F\u3002
-archive.projectbroker.successfully=\u3053\u306E\u30C8\u30D4\u30C3\u30AF\u8AB2\u984C\u306F\u3001\u3042\u306A\u305F\u306E\u30D1\u30FC\u30BD\u30CA\u30EB\u30D5\u30A9\u30EB\u30C0\u5185\u3067\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u307E\u3057\u305F\u3002
-archive.ta.successfully=\u3042\u306A\u305F\u306E\u30BF\u30B9\u30AF/\u30BD\u30EA\u30E5\u30FC\u30B7\u30E7\u30F3\u306F\u3001\u3042\u306A\u305F\u306E\u30D1\u30FC\u30BD\u30CA\u30EB\u30D5\u30A9\u30EB\u30C0\u306B\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u307E\u3057\u305F\u3002
-archive.wiki.successfully=\u3053\u306EWiki\u306F\u3001\u3042\u306A\u305F\u306E\u30D1\u30FC\u30BD\u30CA\u30EB\u30D5\u30A9\u30EB\u30C0\u306B\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u307E\u3057\u305F\u3002
 chelp.arch-logf.title=\u30ED\u30B0\u30D5\u30A1\u30A4\u30EB\u306E\u8A55\u4FA1
 chelp.ass=\u8A55\u4FA1
 chelp.cont=\u30B0\u30EB\u30FC\u30D7\u30B3\u30F3\u30C6\u30AF\u30B9\u30C8
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_lt.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_lt.properties
index f486fbf5202..768611c5f29 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_lt.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_lt.properties
@@ -1,7 +1,4 @@
 #Wed Jul 28 13:33:30 CEST 2010
-archive.dialog.successfully=\u0160is dialogo rinkmena buvo suarchyvuota j\u016Bs\u0173 asmeniniame aplanke.
-archive.dropbox.notasks=\u0160is i\u0161skleid\u017Eiamasis langelis kol kas yra tu\u0161\u010Dias.
-archive.dropbox.successfully=\u0160is i\u0161skleid\u017Eiamasis langeli buvo suarchyvuotas j\u016Bs\u0173 asmeniniame aplanke.
 chelp.arch-logf.title=\u017Durnalini\u0173 fail\u0173 per\u017Ei\u016Bra
 chelp.ass=\u012Evertinimas
 chelp.cont=Grup\u0117s turinys
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_nl_NL.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_nl_NL.properties
index ad5a141acfb..bb37587f43f 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_nl_NL.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_nl_NL.properties
@@ -1,17 +1,4 @@
 #Thu Sep 08 16:42:43 CEST 2011
-archive.dialog.notsuccessfully=Dit bestandsdialoog kon niet gearchiveerd worden.
-archive.dialog.successfully=Dit bestandsdialoog werd gearchiveerd in uw persoonlijke map.
-archive.dropbox.notasks=De drop box is nog steeds leeg.
-archive.dropbox.notsuccessfully=Deze drop box kon niet gearchiveerd worden.
-archive.dropbox.successfully=Deze drop box werd gearchiveerd in uw persoonlijke map.
-archive.fo.notsuccessfully=Het forum kon niet gearchiveerd worden.
-archive.fo.successfully=Het forum is gearchiveerd in uw persoonlijke map.
-archive.projectbroker.notsuccessfully=Deze onderwerpstaak kon niet gearchiveerd worden.
-archive.projectbroker.successfully=Deze onderwerpstaak werd gearchiveerd in uw persoonlijke map.
-archive.ta.notsuccessfully=Deze taken/oplossingen konden niet gearchiveerd worden.
-archive.ta.successfully=Uw taken/oplossingen werden gearchiveerd in uw persoonlijke map.
-archive.wiki.notsuccessfully=Deze Wiki kon niet gearchiveerd worden.
-archive.wiki.successfully=Deze Wiki werd gearchiveerd in uw persoonlijke map.
 chelp.arch-logf.title=Log files\: evaluatie
 chelp.ass=Beoordeling
 chelp.cont=Groepscontext
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_pl.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_pl.properties
index 28c2b5f1cab..be30c91265e 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_pl.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_pl.properties
@@ -1,17 +1,4 @@
 #Mon Aug 30 11:18:12 CEST 2010
-archive.dialog.notsuccessfully=To okno pliku nie mo\u017Ce zosta\u0107 zarchiwizowane.
-archive.dialog.successfully=Zawarto\u015B\u0107 elementu kursu\: <b>Okno pliku</b> zosta\u0142a zarchiwizowana w Twoim osobistym folderze.
-archive.dropbox.notasks=Ten pojemnik na rozwi\u0105zania zada\u0144 jest pusty.
-archive.dropbox.notsuccessfully=Ten folder nie mo\u017Ce zosta\u0107 zarchiwizowany.
-archive.dropbox.successfully=Zawarto\u015B\u0107 elementu kursu\: <b>Pojemnik na rozwi\u0105zania zada\u0144</b> zosta\u0142a zarchiwizowana w Twoim osobistym folderze.
-archive.fo.notsuccessfully=To forum nie mo\u017Ce zosta\u0107 zarchiwizowane.
-archive.fo.successfully=Zawarto\u015B\u0107 elementu kursu\: <b>Forum</b> zosta\u0142a zarchiwizowana w Twoim osobistym folderze.
-archive.projectbroker.notsuccessfully=Ten temat nie mo\u017Ce zosta\u0107 zarchiwizowany.
-archive.projectbroker.successfully=Zadanie zosta\u0142o zarchiwizowane w twoim folderze osobistym.
-archive.ta.notsuccessfully=Te zadania/rozwi\u0105zania nie mog\u0105 zosta\u0107 zarchiwizowane.
-archive.ta.successfully=Zawarto\u015B\u0107 elementu kursu\: <b>Zadanie/rozwi\u0105zania</b> zosta\u0142a zarchiwizowana w Twoim osobistym folderze.
-archive.wiki.notsuccessfully=Ta Wiki nie mo\u017Ce zosta\u0107 zarchiwizowana.
-archive.wiki.successfully=Zawarto\u015B\u0107 elementu kursu\: <b>Wiki</b> zosta\u0142a zarchiwizowana w Twoim osobistym folderze.
 chelp.arch-logf.title=Ocena plik\u00F3w LOG
 chelp.ass=Ocena
 chelp.cont=Kontekst grupy
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_pt_BR.properties
index 5f6cb7ec71e..c5c06d05d1b 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_pt_BR.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_pt_BR.properties
@@ -1,17 +1,4 @@
 #Fri Sep 06 00:04:20 CEST 2013
-archive.dialog.notsuccessfully=Esta arquivo de di\u00E1logo n\u00E3o pode ser arquivado.
-archive.dialog.successfully=Este arquivo de di\u00E1logo foi arquivado em sua pasta pessoal.
-archive.dropbox.notasks=Esta caixa de resolu\u00E7\u00E3o de tarefas ainda est\u00E1 vazia.
-archive.dropbox.notsuccessfully=Este menu n\u00E3o pode ser arquivado.
-archive.dropbox.successfully=Esta caixa de resolu\u00E7\u00E3o de tarefas foi arquivada em sua pasta pessoal.
-archive.fo.notsuccessfully=Este f\u00F3rum n\u00E3o pode ser arquivado.
-archive.fo.successfully=Este f\u00F3rum foi arquivado na sua pasta pessoal.
-archive.projectbroker.notsuccessfully=Este t\u00F3pico n\u00E3o poder ser arquivado.
-archive.projectbroker.successfully=Esta atribui\u00E7\u00E3o de t\u00F3pico foi arquivado em sua pasta pessoal.
-archive.ta.notsuccessfully=Estas tarefas/solu\u00E7\u00F5es n\u00E3o puderam ser arquivados.
-archive.ta.successfully=Suas resolu\u00E7\u00F5es de tarefas foram arquivadas na sua pasta pessoal.
-archive.wiki.notsuccessfully=Este Wiki n\u00E3o pode ser arquivado.
-archive.wiki.successfully=Este Wiki foi arquivado na sua pasta pessoal.
 chelp.arch-logf.title=Avaliando arquivos de hist\u00F3rico
 chelp.ass=Avalia\u00E7\u00E3o
 chelp.cont=Contexto do grupo
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_pt_PT.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_pt_PT.properties
index 0a7e82b0490..8254bfb32a3 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_pt_PT.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_pt_PT.properties
@@ -1,10 +1,4 @@
 #Wed Jul 28 13:33:30 CEST 2010
-archive.dialog.successfully=Este arquivo de di\u00E1logo foi arquivado em sua pasta pessoal.
-archive.dropbox.notasks=Esta caixa de resolu\u00E7\u00E3o de tarefas ainda est\u00E1 vazia.
-archive.dropbox.successfully=Esta caixa de resolu\u00E7\u00E3o de tarefas foi arquivada em sua pasta pessoal.
-archive.fo.successfully=Este f\u00F3rum foi arquivado na sua pasta pessoal.
-archive.ta.successfully=Suas resolu\u00E7\u00F5es de tarefas foram arquivadas na sua pasta pessoal.
-archive.wiki.successfully=Este Wiki foi arquivado na sua pasta pessoal.
 chelp.arch-logf.title=Avaliando arquivos de hist\u00F3rico
 chelp.ass=Avalia\u00E7\u00E3o
 chelp.cont=Contexto do grupo
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_ru.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_ru.properties
index 6ead22512e5..0f15233019f 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_ru.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_ru.properties
@@ -1,10 +1,4 @@
 #Wed Jul 28 13:33:33 CEST 2010
-archive.dialog.successfully=\u041E\u0431\u0441\u0443\u0436\u0434\u0435\u043D\u0438\u0435 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430 \u0431\u044B\u043B\u043E \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u0432 \u0412\u0430\u0448\u0435\u0439 \u043B\u0438\u0447\u043D\u043E\u0439 \u043F\u0430\u043F\u043A\u0435.
-archive.dropbox.notasks=\u041F\u0430\u043F\u043A\u0430 \u0441\u0434\u0430\u0447\u0438 \u0435\u0449\u0451 \u043F\u0443\u0441\u0442\u0430.
-archive.dropbox.successfully=\u041F\u0430\u043F\u043A\u0430 \u0441\u0434\u0430\u0447\u0438 \u0431\u044B\u043B\u0430 \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D\u0430 \u0432 \u0412\u0430\u0448\u0435\u0439 \u043B\u0438\u0447\u043D\u043E\u0439 \u043F\u0430\u043F\u043A\u0435.
-archive.fo.successfully=\u0424\u043E\u0440\u0443\u043C \u0431\u044B\u043B \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D \u0432 \u0412\u0430\u0448\u0435\u0439 \u043B\u0438\u0447\u043D\u043E\u0439 \u043F\u0430\u043F\u043A\u0435.
-archive.ta.successfully=\u0417\u0430\u0434\u0430\u043D\u0438\u044F/\u0420\u0435\u0448\u0435\u043D\u0438\u044F \u0431\u044B\u043B\u0438 \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D\u044B \u0432 \u0412\u0430\u0448\u0435\u0439 \u043B\u0438\u0447\u043D\u043E\u0439 \u043F\u0430\u043F\u043A\u0435. 
-archive.wiki.successfully=\u0412\u0438\u043A\u0438 \u0431\u044B\u043B\u0430 \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u043D\u0430 \u0432 \u0412\u0430\u0448\u0435\u0439 \u043B\u0438\u0447\u043D\u043E\u0439 \u043F\u0430\u043F\u043A\u0435.
 chelp.arch-logf.title=\u0410\u043D\u0430\u043B\u0438\u0437 \u043B\u043E\u0433-\u0444\u0430\u0439\u043B\u043E\u0432
 chelp.ass=\u041E\u0446\u0435\u043D\u043A\u0430
 chelp.cont=\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442 \u0433\u0440\u0443\u043F\u043F\u044B
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_sq.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_sq.properties
index df4be94f26a..02c3c673091 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_sq.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_sq.properties
@@ -1,10 +1,4 @@
 #Wed Jul 28 13:33:32 CEST 2010
-archive.dialog.successfully=Ky dialog i skedar\u00EBve \u00EBsht\u00EB arkivuar n\u00EB dosjen tuaj personale.
-archive.dropbox.notasks=Kutia e hedhjes \u00EBsht\u00EB ende e zbrazt\u00EB.
-archive.dropbox.successfully=Kutia e hedhjes \u00EBsht\u00EB arkivuar n\u00EB shtegun tuaj personal.
-archive.fo.successfully=Ky form \u00EBsht\u00EB arkivuar n\u00EB dosjen tuaj personal.
-archive.ta.successfully=Detyrat/zgjidhjet tuaja jan\u00EB arkivuar n\u00EB dosjen tuaj personale.
-archive.wiki.successfully=Ky Wiki \u00EBsht\u00EB arkivuar n\u00EB dosjen tuaj personale.
 chelp.arch-logf.title=Vler\u00EBsimi i llog skedar\u00EBve
 chelp.logf1=N\u00EB OLAT, ka disa llog skedar\u00EB n\u00EB dispozicionin tuaj (var\u00EBsisht nga t\u00EB drejtat tuaja t\u00EB shfryt\u00EBzuesit)\:
 chelp.logf2=<b>$\:logfilechooserform.logadmin</b>. Ky llog skedar regjistron t\u00EB gjitha aktivitetet p\u00EBr t\u00EB gjith\u00EB autor\u00EBt e kursit(cilat ndryshimet nga ata gjat\u00EB kursit?)
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_zh_CN.properties
index 916325adcfd..b9fb057f363 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_zh_CN.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_zh_CN.properties
@@ -1,17 +1,4 @@
 #Mon Aug 30 05:29:58 CEST 2010
-archive.dialog.notsuccessfully=\u65E0\u6CD5\u4FDD\u5B58\u6587\u4EF6\u5BF9\u8BDD\u7684\u5185\u5BB9
-archive.dialog.successfully=\u8BE5\u6587\u4EF6\u8BA8\u8BBA\u4E2D\u7684\u6570\u636E\u5DF2\u5F52\u6863\u5B58\u653E\u5728\u4F60\u4E2A\u4EBA\u6587\u4EF6\u5939\u4E2D
-archive.dropbox.notasks=\u8BE5\u63D0\u4EA4\u7BB1\u4ECD\u7136\u662F\u7A7A\u7684
-archive.dropbox.notsuccessfully=\u65E0\u6CD5\u4FDD\u5B58\u6B64\u4E0B\u62C9\u6846
-archive.dropbox.successfully=\u8BE5\u63D0\u4EA4\u7BB1\u91CC\u7684\u6570\u636E\u5DF2\u5F52\u6863\u5728\u4F60\u7684\u4E2A\u4EBA\u6587\u4EF6\u5939\u4E2D
-archive.fo.notsuccessfully=\u65E0\u6CD5\u4FDD\u5B58\u6B64\u8BBA\u575B\u3002
-archive.fo.successfully=\u8BE5\u8BBA\u575B\u5DF2\u5F52\u6863\u5728\u4F60\u7684\u4E2A\u4EBA\u6587\u4EF6\u5939\u4E2D
-archive.projectbroker.notsuccessfully=\u65E0\u6CD5\u4FDD\u5B58\u6B64\u4E3B\u9898\u4EFB\u52A1\u3002
-archive.projectbroker.successfully=\u6B64\u9879\u76EE\u7684\u7ECF\u7EAA\u4EBA\u5DF2\u88AB\u5C01\u5B58\u5230\u60A8\u7684\u4E2A\u4EBA\u6587\u4EF6\u5939\u4E2D\u4E86\u3002
-archive.ta.notsuccessfully=\u65E0\u6CD5\u4FDD\u5B58\u8FD9\u4E9B\u4EFB\u52A1\u6216\u89E3\u7B54
-archive.ta.successfully=\u4F60\u7684 tasks/solutions \u5DF2\u5F52\u6863\u5728\u4F60\u7684\u4E2A\u4EBA\u6587\u4EF6\u5939\u4E2D
-archive.wiki.notsuccessfully=\u65E0\u6CD5\u4FDD\u5B58\u6B64Wiki
-archive.wiki.successfully=\u8BE5 wiki \u5DF2\u5F52\u6863\u5728\u4F60\u7684\u4E2A\u4EBA\u6587\u4EF6\u5939\u4E2D.
 chelp.arch-logf.title=\u8BC4\u4F30\u65E5\u5FD7\u6587\u4EF6
 chelp.ass=\u8BC4\u4F30
 chelp.cont=\u7EC4\u80CC\u666F
diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_zh_TW.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_zh_TW.properties
index 980baa6ed6f..604036acae1 100644
--- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_zh_TW.properties
+++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_zh_TW.properties
@@ -1,11 +1,4 @@
 #Wed Jul 28 13:33:31 CEST 2010
-archive.dialog.successfully=\u9019\u500B\u6A94\u6848\u5C0D\u8A71\u6846\u5DF2\u7D93\u88AB\u5099\u4EFD\u5230\u60A8\u7684\u500B\u4EBA\u8CC7\u6599\u593E\u4E86\u3002
-archive.dropbox.notasks=\u9019\u500B drop box \u9084\u662F\u7A7A\u7684\u3002
-archive.dropbox.successfully=\u9019\u500Bdrop box\u5DF2\u7D93\u88AB\u5099\u4EFD\u5230\u60A8\u7684\u500B\u4EBA\u8CC7\u6599\u593E\u4E86\u3002
-archive.fo.successfully=\u9019\u500B\u8AD6\u58C7\u5DF2\u7D93\u88AB\u5099\u4EFD\u5230\u60A8\u7684\u500B\u4EBA\u8CC7\u6599\u593E\u4E86\u3002
-archive.projectbroker.successfully=\u8A72\u5C08\u6848\u7D93\u7D00\u4EBA\u5DF2\u7D93\u88AB\u5C01\u88DD\u5728\u60A8\u7684\u500B\u4EBA\u8CC7\u6599\u593E\u3002
-archive.ta.successfully=\u60A8\u7684\u4EFB\u52D9/\u89E3\u7B54\u5DF2\u7D93\u88AB\u5099\u4EFD\u5230\u60A8\u7684\u500B\u4EBA\u8CC7\u6599\u593E\u4E86\u3002
-archive.wiki.successfully=\u9019\u500B Wiki \u5DF2\u7D93\u88AB\u5099\u4EFD\u5230\u60A8\u7684\u500B\u4EBA\u8CC7\u6599\u593E\u4E86\u3002
 chelp.arch-logf.title=\u8A55\u4F30\u65E5\u8A8C\u6A94\u6848
 chelp.ass=\u8A55\u4F30
 chelp.cont=\u7FA4\u7D44\u80CC\u666F\u74B0\u5883
diff --git a/src/main/java/org/olat/course/assessment/AssessmentMainController.java b/src/main/java/org/olat/course/assessment/AssessmentMainController.java
index 6d668be6d8a..5bf548c52ea 100644
--- a/src/main/java/org/olat/course/assessment/AssessmentMainController.java
+++ b/src/main/java/org/olat/course/assessment/AssessmentMainController.java
@@ -93,6 +93,7 @@ import org.olat.course.condition.interpreter.ConditionExpression;
 import org.olat.course.condition.interpreter.OnlyGroupConditionInterpreter;
 import org.olat.course.groupsandrights.CourseGroupManager;
 import org.olat.course.nodes.AssessableCourseNode;
+import org.olat.course.nodes.AssessmentToolOptions;
 import org.olat.course.nodes.CourseNode;
 import org.olat.course.nodes.CourseNodeFactory;
 import org.olat.course.nodes.ProjectBrokerCourseNode;
@@ -811,7 +812,13 @@ public class AssessmentMainController extends MainLayoutBasicController implemen
 		List<String> toolCmpNames = new ArrayList<>(3);
 		if(courseNode != null) {
 			CourseEnvironment courseEnv = course.getCourseEnvironment();
-			List<Controller> tools = courseNode.createAssessmentTools(ureq, getWindowControl(), courseEnv, group);
+			AssessmentToolOptions options = new AssessmentToolOptions();
+			if(group == null) {
+				options.setIdentities(identities);
+			} else {
+				options.setGroup(group);
+			}
+			List<Controller> tools = courseNode.createAssessmentTools(ureq, getWindowControl(), courseEnv, options);
 			int count = 0;
 			for(Controller tool:tools) {
 				listenTo(tool);
diff --git a/src/main/java/org/olat/course/nodes/AbstractAccessableCourseNode.java b/src/main/java/org/olat/course/nodes/AbstractAccessableCourseNode.java
index 8bc7d7e71ed..40499e55d97 100644
--- a/src/main/java/org/olat/course/nodes/AbstractAccessableCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/AbstractAccessableCourseNode.java
@@ -44,7 +44,6 @@ import org.olat.course.run.environment.CourseEnvironment;
 import org.olat.course.run.navigation.NodeRunConstructionResult;
 import org.olat.course.run.userview.NodeEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.group.BusinessGroup;
 
 import de.bps.course.nodes.CourseNodePasswordManagerImpl;
 
@@ -187,7 +186,7 @@ public abstract class AbstractAccessableCourseNode extends GenericCourseNode {
 	}
 	
 	/** Factory method to launch course element assessment tools. limitToGroup is optional to skip he the group choose step */
-	public List<Controller> createAssessmentTools(UserRequest ureq, WindowControl wControl, CourseEnvironment courseEnv, BusinessGroup limitToGroup) {
+	public List<Controller> createAssessmentTools(UserRequest ureq, WindowControl wControl, CourseEnvironment courseEnv, AssessmentToolOptions options) {
 		return Collections.emptyList();
 	}
 	
diff --git a/src/main/java/org/olat/course/nodes/ArchiveOptions.java b/src/main/java/org/olat/course/nodes/ArchiveOptions.java
new file mode 100644
index 00000000000..a380dbdf94b
--- /dev/null
+++ b/src/main/java/org/olat/course/nodes/ArchiveOptions.java
@@ -0,0 +1,53 @@
+/**
+ * <a href="http://www.openolat.org">
+ * OpenOLAT - Online Learning and Training</a><br>
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); <br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at the
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
+ * <p>
+ * Unless required by applicable law or agreed to in writing,<br>
+ * software distributed under the License is distributed on an "AS IS" BASIS, <br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
+ * See the License for the specific language governing permissions and <br>
+ * limitations under the License.
+ * <p>
+ * Initial code contributed and copyrighted by<br>
+ * frentix GmbH, http://www.frentix.com
+ * <p>
+ */
+package org.olat.course.nodes;
+
+import java.util.List;
+
+import org.olat.core.id.Identity;
+import org.olat.group.BusinessGroup;
+
+/**
+ * 
+ * Initial date: 20.12.2013<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class ArchiveOptions {
+	
+	private BusinessGroup group;
+	private List<Identity> identities;
+	
+	public BusinessGroup getGroup() {
+		return group;
+	}
+	
+	public void setGroup(BusinessGroup group) {
+		this.group = group;
+	}
+	
+	public List<Identity> getIdentities() {
+		return identities;
+	}
+	
+	public void setIdentities(List<Identity> identities) {
+		this.identities = identities;
+	}
+}
diff --git a/src/main/java/org/olat/course/nodes/AssessableCourseNode.java b/src/main/java/org/olat/course/nodes/AssessableCourseNode.java
index c2e4b769a66..bbc15353207 100644
--- a/src/main/java/org/olat/course/nodes/AssessableCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/AssessableCourseNode.java
@@ -35,7 +35,6 @@ import org.olat.core.id.Identity;
 import org.olat.course.run.environment.CourseEnvironment;
 import org.olat.course.run.scoring.ScoreEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.group.BusinessGroup;
 
 
 /**
@@ -151,7 +150,7 @@ public interface AssessableCourseNode extends CourseNode {
 	
 
 	/** Factory method to launch course element assessment tools. limitToGroup is optional to skip he the group choose step */
-	public List<Controller> createAssessmentTools(UserRequest ureq, WindowControl wControl, CourseEnvironment courseEnv, BusinessGroup limitToGroup);
+	public List<Controller> createAssessmentTools(UserRequest ureq, WindowControl wControl, CourseEnvironment courseEnv, AssessmentToolOptions options);
 	
 	
 	/**
diff --git a/src/main/java/org/olat/course/nodes/AssessmentToolOptions.java b/src/main/java/org/olat/course/nodes/AssessmentToolOptions.java
new file mode 100644
index 00000000000..d3d731c47a4
--- /dev/null
+++ b/src/main/java/org/olat/course/nodes/AssessmentToolOptions.java
@@ -0,0 +1,53 @@
+/**
+ * <a href="http://www.openolat.org">
+ * OpenOLAT - Online Learning and Training</a><br>
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); <br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at the
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
+ * <p>
+ * Unless required by applicable law or agreed to in writing,<br>
+ * software distributed under the License is distributed on an "AS IS" BASIS, <br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
+ * See the License for the specific language governing permissions and <br>
+ * limitations under the License.
+ * <p>
+ * Initial code contributed and copyrighted by<br>
+ * frentix GmbH, http://www.frentix.com
+ * <p>
+ */
+package org.olat.course.nodes;
+
+import java.util.List;
+
+import org.olat.core.id.Identity;
+import org.olat.group.BusinessGroup;
+
+/**
+ * 
+ * Initial date: 20.12.2013<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class AssessmentToolOptions {
+	
+	private BusinessGroup group;
+	private List<Identity> identities;
+	
+	public BusinessGroup getGroup() {
+		return group;
+	}
+	
+	public void setGroup(BusinessGroup group) {
+		this.group = group;
+	}
+	
+	public List<Identity> getIdentities() {
+		return identities;
+	}
+	
+	public void setIdentities(List<Identity> identities) {
+		this.identities = identities;
+	}
+}
diff --git a/src/main/java/org/olat/course/nodes/CourseNode.java b/src/main/java/org/olat/course/nodes/CourseNode.java
index 3009e3b6043..47f6333069a 100644
--- a/src/main/java/org/olat/course/nodes/CourseNode.java
+++ b/src/main/java/org/olat/course/nodes/CourseNode.java
@@ -48,7 +48,6 @@ import org.olat.course.run.navigation.NodeRunConstructionResult;
 import org.olat.course.run.userview.NodeEvaluation;
 import org.olat.course.run.userview.TreeEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.group.BusinessGroup;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.repository.RepositoryEntry;
 
@@ -304,7 +303,7 @@ public interface CourseNode extends INode, ShortName {
 	 * @param value of charset property of current user
 	 * @return true if any data to be archived was found, false otherwise.
 	 */
-	public boolean archiveNodeData(Locale locale, ICourse course, BusinessGroup group, ZipOutputStream out, String charset);
+	public boolean archiveNodeData(Locale locale, ICourse course, ArchiveOptions options, ZipOutputStream out, String charset);
 
 	/**
 	 * Export all node user data to the given directory. This might be one file or
diff --git a/src/main/java/org/olat/course/nodes/DialogCourseNode.java b/src/main/java/org/olat/course/nodes/DialogCourseNode.java
index 6c64051c437..2db9ba995e4 100644
--- a/src/main/java/org/olat/course/nodes/DialogCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/DialogCourseNode.java
@@ -62,7 +62,6 @@ import org.olat.course.nodes.dialog.DialogCourseNodeRunController;
 import org.olat.course.run.navigation.NodeRunConstructionResult;
 import org.olat.course.run.userview.NodeEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.group.BusinessGroup;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.modules.dialog.DialogElement;
 import org.olat.modules.dialog.DialogElementsPropertyManager;
@@ -246,7 +245,7 @@ public class DialogCourseNode extends AbstractAccessableCourseNode {
 	}
 	
 	@Override
-	public boolean archiveNodeData(Locale locale, ICourse course, BusinessGroup group, ZipOutputStream exportStream, String charset) {
+	public boolean archiveNodeData(Locale locale, ICourse course, ArchiveOptions options, ZipOutputStream exportStream, String charset) {
 		boolean dataFound = false;
 		List<DialogElement> list = DialogElementsPropertyManager.getInstance()
 				.findDialogElements(course.getCourseEnvironment().getCoursePropertyManager(), this)
diff --git a/src/main/java/org/olat/course/nodes/FOCourseNode.java b/src/main/java/org/olat/course/nodes/FOCourseNode.java
index ac76d8192d4..b5f8d2f3177 100644
--- a/src/main/java/org/olat/course/nodes/FOCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/FOCourseNode.java
@@ -68,7 +68,6 @@ import org.olat.course.run.environment.CourseEnvironment;
 import org.olat.course.run.navigation.NodeRunConstructionResult;
 import org.olat.course.run.userview.NodeEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.group.BusinessGroup;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.modules.fo.Forum;
 import org.olat.modules.fo.ForumCallback;
@@ -365,7 +364,7 @@ public class FOCourseNode extends AbstractAccessableCourseNode {
 	}
 
 	@Override
-	public boolean archiveNodeData(Locale locale, ICourse course, BusinessGroup group, ZipOutputStream exportStream, String charset) {
+	public boolean archiveNodeData(Locale locale, ICourse course, ArchiveOptions options, ZipOutputStream exportStream, String charset) {
 		CoursePropertyManager cpm = course.getCourseEnvironment().getCoursePropertyManager();
 		Property forumKeyProperty = cpm.findCourseNodeProperty(this, null, null, FORUM_KEY);
 		if(forumKeyProperty == null) {
diff --git a/src/main/java/org/olat/course/nodes/GenericCourseNode.java b/src/main/java/org/olat/course/nodes/GenericCourseNode.java
index c63d77c0cb4..39f1bd91f49 100644
--- a/src/main/java/org/olat/course/nodes/GenericCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/GenericCourseNode.java
@@ -57,7 +57,6 @@ import org.olat.course.run.navigation.NodeRunConstructionResult;
 import org.olat.course.run.userview.NodeEvaluation;
 import org.olat.course.run.userview.TreeEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.group.BusinessGroup;
 import org.olat.group.model.BGAreaReference;
 import org.olat.group.model.BusinessGroupReference;
 import org.olat.modules.ModuleConfiguration;
@@ -367,7 +366,7 @@ public abstract class GenericCourseNode extends GenericNode implements CourseNod
 	 *      org.olat.course.ICourse, java.util.zip.ZipOutputStream, String charset)
 	 */
 	@Override
-	public boolean archiveNodeData(Locale locale, ICourse course, BusinessGroup group, ZipOutputStream exportStream, String charset) {
+	public boolean archiveNodeData(Locale locale, ICourse course, ArchiveOptions options, ZipOutputStream exportStream, String charset) {
 		// nothing to do in default implementation
 		return true;
 	}
diff --git a/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java b/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java
index 8a3fea8b381..8909d1ea855 100644
--- a/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java
@@ -55,7 +55,6 @@ import org.olat.course.run.navigation.NodeRunConstructionResult;
 import org.olat.course.run.scoring.ScoreEvaluation;
 import org.olat.course.run.userview.NodeEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.group.BusinessGroup;
 import org.olat.ims.qti.QTIResultManager;
 import org.olat.ims.qti.QTIResultSet;
 import org.olat.ims.qti.export.QTIExportFormatter;
@@ -212,7 +211,7 @@ public class IQSELFCourseNode extends AbstractAccessableCourseNode implements Se
 	}
 
 	@Override
-	public boolean archiveNodeData(Locale locale, ICourse course, BusinessGroup group, ZipOutputStream exportStream, String charset) {
+	public boolean archiveNodeData(Locale locale, ICourse course, ArchiveOptions options, ZipOutputStream exportStream, String charset) {
 		QTIExportManager qem = QTIExportManager.getInstance();
 		String repositorySoftKey = (String) getModuleConfiguration().get(IQEditController.CONFIG_KEY_REPOSITORY_SOFTKEY);
 		RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntryBySoftkey(repositorySoftKey, true);
diff --git a/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java b/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java
index 8754323dcb1..6a3466004fc 100644
--- a/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java
@@ -55,7 +55,6 @@ import org.olat.course.repository.ImportReferencesController;
 import org.olat.course.run.navigation.NodeRunConstructionResult;
 import org.olat.course.run.userview.NodeEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.group.BusinessGroup;
 import org.olat.ims.qti.QTIResultManager;
 import org.olat.ims.qti.export.QTIExportFormatter;
 import org.olat.ims.qti.export.QTIExportFormatterCSVType3;
@@ -209,7 +208,7 @@ public class IQSURVCourseNode extends AbstractAccessableCourseNode implements QT
 	}
 
 	@Override
-	public boolean archiveNodeData(Locale locale, ICourse course, BusinessGroup group, ZipOutputStream exportStream, String charset) {
+	public boolean archiveNodeData(Locale locale, ICourse course, ArchiveOptions options, ZipOutputStream exportStream, String charset) {
 		QTIExportManager qem = QTIExportManager.getInstance();
 		String repositorySoftKey = (String) getModuleConfiguration().get(IQEditController.CONFIG_KEY_REPOSITORY_SOFTKEY);
 		RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntryBySoftkey(repositorySoftKey, true);
diff --git a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
index f8c0c09fbd8..467262d5f73 100644
--- a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java
@@ -59,7 +59,6 @@ import org.olat.course.run.navigation.NodeRunConstructionResult;
 import org.olat.course.run.scoring.ScoreEvaluation;
 import org.olat.course.run.userview.NodeEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.group.BusinessGroup;
 import org.olat.ims.qti.QTIResultManager;
 import org.olat.ims.qti.QTIResultSet;
 import org.olat.ims.qti.export.QTIExportFormatter;
@@ -374,7 +373,7 @@ public class IQTESTCourseNode extends AbstractAccessableCourseNode implements As
 	}
 
 	@Override
-	public boolean archiveNodeData(Locale locale, ICourse course, BusinessGroup group, ZipOutputStream exportStream, String charset) {
+	public boolean archiveNodeData(Locale locale, ICourse course, ArchiveOptions options, ZipOutputStream exportStream, String charset) {
 		String repositorySoftKey = (String)getModuleConfiguration().get(IQEditController.CONFIG_KEY_REPOSITORY_SOFTKEY);
 		Long courseResourceableId = course.getResourceableId();
 
diff --git a/src/main/java/org/olat/course/nodes/MSCourseNode.java b/src/main/java/org/olat/course/nodes/MSCourseNode.java
index b82ccb58411..9e748dc71e4 100644
--- a/src/main/java/org/olat/course/nodes/MSCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/MSCourseNode.java
@@ -60,7 +60,6 @@ import org.olat.course.run.navigation.NodeRunConstructionResult;
 import org.olat.course.run.scoring.ScoreEvaluation;
 import org.olat.course.run.userview.NodeEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.group.BusinessGroup;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.properties.Property;
 import org.olat.repository.RepositoryEntry;
@@ -435,7 +434,7 @@ public class MSCourseNode extends AbstractAccessableCourseNode implements Assess
 	}
 
 	@Override
-	public List<Controller> createAssessmentTools(UserRequest ureq, WindowControl wControl, CourseEnvironment courseEnv, BusinessGroup limitToGroup) {
+	public List<Controller> createAssessmentTools(UserRequest ureq, WindowControl wControl, CourseEnvironment courseEnv, AssessmentToolOptions options) {
 		List<Controller> tools = new ArrayList<>(1);
 		tools.add(new BulkAssessmentToolController(ureq, wControl, courseEnv, this));
 		return tools;
diff --git a/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java b/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java
index 271ba7dcf76..03f7bdef6b3 100644
--- a/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java
@@ -92,7 +92,6 @@ import org.olat.course.run.navigation.NodeRunConstructionResult;
 import org.olat.course.run.scoring.ScoreEvaluation;
 import org.olat.course.run.userview.NodeEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.group.BusinessGroup;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.properties.Property;
 import org.olat.repository.RepositoryEntry;
@@ -670,7 +669,7 @@ public class ProjectBrokerCourseNode extends GenericCourseNode implements Assess
 
 	/** Factory method to launch course element assessment tools. limitToGroup is optional to skip he the group choose step */
 	@Override
-	public List<Controller> createAssessmentTools(UserRequest ureq, WindowControl wControl, CourseEnvironment courseEnv, BusinessGroup limitToGroup) {
+	public List<Controller> createAssessmentTools(UserRequest ureq, WindowControl wControl, CourseEnvironment courseEnv, AssessmentToolOptions options) {
 		List<Controller> tools = new ArrayList<>(1);
 		tools.add(new BulkAssessmentToolController(ureq, wControl, courseEnv, this));
 		return tools;
@@ -717,7 +716,7 @@ public class ProjectBrokerCourseNode extends GenericCourseNode implements Assess
 	}
 	
 	@Override
-	public boolean archiveNodeData(Locale locale, ICourse course, BusinessGroup group, ZipOutputStream exportStream, String charset) {
+	public boolean archiveNodeData(Locale locale, ICourse course, ArchiveOptions options, ZipOutputStream exportStream, String charset) {
 		boolean dataFound = false;
 		String dropboxPath = DropboxController.getDropboxPathRelToFolderRoot(course.getCourseEnvironment(),this);
 		OlatRootFolderImpl dropboxDir = new OlatRootFolderImpl(dropboxPath, null);
diff --git a/src/main/java/org/olat/course/nodes/ScormCourseNode.java b/src/main/java/org/olat/course/nodes/ScormCourseNode.java
index 20095e7d5fc..761fcc36500 100644
--- a/src/main/java/org/olat/course/nodes/ScormCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/ScormCourseNode.java
@@ -63,7 +63,6 @@ import org.olat.course.run.navigation.NodeRunConstructionResult;
 import org.olat.course.run.scoring.ScoreEvaluation;
 import org.olat.course.run.userview.NodeEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.group.BusinessGroup;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.modules.scorm.ScormMainManager;
 import org.olat.modules.scorm.ScormPackageConfig;
@@ -349,7 +348,7 @@ public class ScormCourseNode extends AbstractAccessableCourseNode implements Ass
 	}
 
 	@Override
-	public boolean archiveNodeData(Locale locale, ICourse course, BusinessGroup group, ZipOutputStream exportStream, String charset) {
+	public boolean archiveNodeData(Locale locale, ICourse course, ArchiveOptions options, ZipOutputStream exportStream, String charset) {
 		String fileName = "scorm_"
 				+ StringHelper.transformDisplayNameToFileSystemName(getShortName())
 				+ "_" + Formatter.formatDatetimeFilesystemSave(new Date(System.currentTimeMillis()))
diff --git a/src/main/java/org/olat/course/nodes/TACourseNode.java b/src/main/java/org/olat/course/nodes/TACourseNode.java
index 4180eac948a..36c2039030f 100644
--- a/src/main/java/org/olat/course/nodes/TACourseNode.java
+++ b/src/main/java/org/olat/course/nodes/TACourseNode.java
@@ -30,8 +30,10 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
+import java.util.Set;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 
@@ -90,7 +92,6 @@ import org.olat.course.run.navigation.NodeRunConstructionResult;
 import org.olat.course.run.scoring.ScoreEvaluation;
 import org.olat.course.run.userview.NodeEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.group.BusinessGroup;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.properties.Property;
 import org.olat.repository.RepositoryEntry;
@@ -687,10 +688,10 @@ public class TACourseNode extends GenericCourseNode implements AssessableCourseN
 
 	/** Factory method to launch course element assessment tools. limitToGroup is optional to skip he the group choose step */
 	@Override
-	public List<Controller> createAssessmentTools(UserRequest ureq, WindowControl wControl, CourseEnvironment courseEnv, BusinessGroup limitToGroup) {
+	public List<Controller> createAssessmentTools(UserRequest ureq, WindowControl wControl, CourseEnvironment courseEnv, AssessmentToolOptions options) {
 		List<Controller> tools = new ArrayList<Controller>(1);
 		tools.add(new BulkAssessmentToolController(ureq, wControl, courseEnv, this));
-		tools.add(new BulkDownloadToolController(ureq, wControl, courseEnv, limitToGroup, this));
+		tools.add(new BulkDownloadToolController(ureq, wControl, courseEnv, options, this));
 		return tools;
 	}
 
@@ -767,7 +768,7 @@ public class TACourseNode extends GenericCourseNode implements AssessableCourseN
 	}
 
 	@Override
-	public boolean archiveNodeData(Locale locale, ICourse course, BusinessGroup group, ZipOutputStream exportStream, String charset) {
+	public boolean archiveNodeData(Locale locale, ICourse course, ArchiveOptions options, ZipOutputStream exportStream, String charset) {
 		boolean dataFound = false;
 		String dropboxPath = DropboxController.getDropboxPathRelToFolderRoot(course.getCourseEnvironment(), this);
 		OlatRootFolderImpl dropboxDir = new OlatRootFolderImpl(dropboxPath, null);
@@ -784,9 +785,15 @@ public class TACourseNode extends GenericCourseNode implements AssessableCourseN
 
 		if (dropboxDir.exists() || solutionDir.exists() || returnboxDir.exists() || hasTask.booleanValue()){	
 			// prepare writing course results overview table
-			List<Identity> users = group == null ? ScoreAccountingHelper.loadUsers(course.getCourseEnvironment())
-					: ScoreAccountingHelper.loadUsers(group);
-		
+			List<Identity> users = ScoreAccountingHelper.loadUsers(course.getCourseEnvironment(), options);
+			Set<String> dropboxNames = null;
+			if(options != null && (options.getGroup() != null || options.getIdentities() != null)) {
+				dropboxNames = new HashSet<String>();
+				for(Identity user:users) {
+					dropboxNames.add(user.getName());
+				}
+			}
+			
 			String courseTitle = course.getCourseTitle();
 			String fileName = ExportUtil.createFileNameWithTimeStamp(courseTitle, "xls");
 			List<AssessableCourseNode> nodes = Collections.<AssessableCourseNode>singletonList(this);
@@ -813,7 +820,7 @@ public class TACourseNode extends GenericCourseNode implements AssessableCourseN
 				//OLAT-6362 archive only dropboxes of users that handed in at least one file -> prevent empty folders in archive
 				List<VFSItem> dropBoxContent = dropboxDir.getItems();
 				for (VFSItem file:dropBoxContent) {
-					if(VFSManager.isDirectoryAndNotEmpty(file)){
+					if((dropboxNames == null || dropboxNames.contains(file.getName())) && VFSManager.isDirectoryAndNotEmpty(file)){
 						dataFound = true;
 						ZipUtil.addToZip(file, dirName + "/dropboxes", exportStream);
 					}
@@ -841,7 +848,7 @@ public class TACourseNode extends GenericCourseNode implements AssessableCourseN
 				//OLAT-6362 archive only existing returnboxes -> prevent empty folders in archive
 				List<VFSItem> returnBoxContent = returnboxDir.getItems();
 				for (VFSItem file : returnBoxContent) {
-					if(VFSManager.isDirectoryAndNotEmpty(file)){
+					if((dropboxNames == null || dropboxNames.contains(file.getName())) && VFSManager.isDirectoryAndNotEmpty(file)){
 						dataFound = true;
 						ZipUtil.addToZip(file, dirName + "/returnboxes", exportStream);
 					}
diff --git a/src/main/java/org/olat/course/nodes/WikiCourseNode.java b/src/main/java/org/olat/course/nodes/WikiCourseNode.java
index 0fa7c469709..2affe7b77c6 100644
--- a/src/main/java/org/olat/course/nodes/WikiCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/WikiCourseNode.java
@@ -62,7 +62,6 @@ import org.olat.course.repository.ImportReferencesController;
 import org.olat.course.run.navigation.NodeRunConstructionResult;
 import org.olat.course.run.userview.NodeEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.group.BusinessGroup;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.modules.wiki.Wiki;
 import org.olat.modules.wiki.WikiManager;
@@ -230,7 +229,7 @@ public class WikiCourseNode extends AbstractAccessableCourseNode {
 	}
 
 	@Override
-	public boolean archiveNodeData(Locale locale, ICourse course, BusinessGroup group, ZipOutputStream exportStream, String charset) {
+	public boolean archiveNodeData(Locale locale, ICourse course, ArchiveOptions options, ZipOutputStream exportStream, String charset) {
 		String repoRef = (String)getModuleConfiguration().get("reporef");
 		OLATResourceable ores = RepositoryManager.getInstance().lookupRepositoryEntryBySoftkey(repoRef, true).getOlatResource();
 		
diff --git a/src/main/java/org/olat/course/nodes/ta/BulkDownloadToolController.java b/src/main/java/org/olat/course/nodes/ta/BulkDownloadToolController.java
index 3e3c2172ba7..0c0bfb77a58 100644
--- a/src/main/java/org/olat/course/nodes/ta/BulkDownloadToolController.java
+++ b/src/main/java/org/olat/course/nodes/ta/BulkDownloadToolController.java
@@ -28,9 +28,10 @@ import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.course.archiver.ArchiveResource;
+import org.olat.course.nodes.ArchiveOptions;
 import org.olat.course.nodes.AssessableCourseNode;
+import org.olat.course.nodes.AssessmentToolOptions;
 import org.olat.course.run.environment.CourseEnvironment;
-import org.olat.group.BusinessGroup;
 import org.olat.resource.OLATResource;
 
 /**
@@ -42,14 +43,16 @@ public class BulkDownloadToolController extends BasicController {
 	
 	private final Link downloadButton;
 
-	private final BusinessGroup group;
+	private final ArchiveOptions options;
 	private final OLATResource courseOres;
 	private final AssessableCourseNode courseNode;
 	
 	public BulkDownloadToolController(UserRequest ureq, WindowControl wControl, CourseEnvironment courseEnv,
-			BusinessGroup group, AssessableCourseNode courseNode) {
+			AssessmentToolOptions asOptions, AssessableCourseNode courseNode) {
 		super(ureq, wControl);
-		this.group = group;
+		this.options = new ArchiveOptions();
+		this.options.setGroup(asOptions.getGroup());
+		this.options.setIdentities(asOptions.getIdentities());
 		this.courseNode = courseNode;
 		courseOres = courseEnv.getCourseGroupManager().getCourseResource();
 		
@@ -71,7 +74,7 @@ public class BulkDownloadToolController extends BasicController {
 	}
 	
 	private void doDownload(UserRequest ureq) {
-		ArchiveResource resource = new ArchiveResource(courseNode, courseOres, group, getLocale());
+		ArchiveResource resource = new ArchiveResource(courseNode, courseOres, options, getLocale());
 		ureq.getDispatchResult().setResultingMediaResource(resource);
 	}
 }
diff --git a/src/main/java/org/olat/course/site/CourseSiteDef.java b/src/main/java/org/olat/course/site/CourseSiteDef.java
index 3deaf2a79ad..d1d781c049d 100644
--- a/src/main/java/org/olat/course/site/CourseSiteDef.java
+++ b/src/main/java/org/olat/course/site/CourseSiteDef.java
@@ -94,12 +94,16 @@ public class CourseSiteDef extends AbstractSiteDefinition implements SiteDefinit
 		}
 		
 		LanguageConfiguration langConfig = getLanguageConfiguration(ureq, courseConfig);
+		if(langConfig == null) {
+			return null;
+		}
 		String icon = courseConfig.getNavIconCssClass();
 		return new CourseSite(this, ureq.getLocale(), langConfig.getRepoSoftKey(), showToolController,
 				siteSecCallback, langConfig.getTitle(), icon);
 	}
 	
 	protected LanguageConfiguration getLanguageConfiguration(UserRequest ureq, CourseSiteConfiguration config) {
+		if(config == null || config.getConfigurations() == null) return null;
 		String language = ureq.getUserSession().getLocale().getLanguage();
 
 		LanguageConfiguration myLangConfig = null;
-- 
GitLab