diff --git a/src/main/java/org/olat/core/commons/services/webdav/WebDAVModule.java b/src/main/java/org/olat/core/commons/services/webdav/WebDAVModule.java
index 7779416fe5a7f8a182109c20b9f9a5dbe0bc3152..6915f57a8e5058694c35af4896934688cf4d7bf9 100644
--- a/src/main/java/org/olat/core/commons/services/webdav/WebDAVModule.java
+++ b/src/main/java/org/olat/core/commons/services/webdav/WebDAVModule.java
@@ -65,6 +65,9 @@ public class WebDAVModule extends AbstractSpringModule implements ConfigOnOff {
 
 	@Value("${webdav.learners.bookmarks.enabled:true}")
 	private boolean enableLearnersBookmarksCourse;
+	/**
+	 * Enable courses in WebDAV for participants and coaches
+	 */
 	@Value("${webdav.learners.participatingCourses.enabled:true}")
 	private boolean enableLearnersParticipatingCourses;
 	
diff --git a/src/main/java/org/olat/core/commons/services/webdav/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/commons/services/webdav/ui/_i18n/LocalStrings_de.properties
index fed9cf9c09159814e4111ad517a3cfe41a9dacf4..84dc0fcb2b3126980f0834de835c3b8c9bdbee03 100644
--- a/src/main/java/org/olat/core/commons/services/webdav/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/core/commons/services/webdav/ui/_i18n/LocalStrings_de.properties
@@ -8,6 +8,6 @@ webdav.link=WebDAV Links anzeigen
 webdav.module=WebDAV Zugang
 webdav.on=ein
 webdav.termsfolders=Kurse nach Semesterdaten gruppieren
-webdav.for.learners.participants=Zugriff für Studenten Kursen
-webdav.for.learners.bookmarks=Zugriff für Studenten Favoriten
+webdav.for.learners.participants=Zugriff für Studenten / Betreuer Kursen
+webdav.for.learners.bookmarks=Zugriff für Studenten / Betreuer Favoriten
 webdav.prepend.reference=Kursreferenz zu Titel voranstellen
\ No newline at end of file
diff --git a/src/main/java/org/olat/core/commons/services/webdav/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/commons/services/webdav/ui/_i18n/LocalStrings_en.properties
index b03f1dc2aea1a59c5a22b974b0f74320d0c524ec..9312c822f53a360c1086398fd475cf8a428c6e58 100644
--- a/src/main/java/org/olat/core/commons/services/webdav/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/core/commons/services/webdav/ui/_i18n/LocalStrings_en.properties
@@ -8,6 +8,6 @@ webdav.link=Show WebDAV links
 webdav.module=WebDAV access
 webdav.on=enabled
 webdav.termsfolders=Group courses by semester terms
-webdav.for.learners.participants=Enable access for courses where user is participant
+webdav.for.learners.participants=Enable access for courses where user is participant or coach
 webdav.for.learners.bookmarks=Enable for courses that users marked as favorite
 webdav.prepend.reference=Prepend course reference to title
\ No newline at end of file
diff --git a/src/main/java/org/olat/core/commons/services/webdav/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/core/commons/services/webdav/ui/_i18n/LocalStrings_fr.properties
index 7505f786497854cca72544c8297b0b2f1c460b18..4766cd4d51b7ea1da3b903886e09e78acfafe955 100644
--- a/src/main/java/org/olat/core/commons/services/webdav/ui/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/core/commons/services/webdav/ui/_i18n/LocalStrings_fr.properties
@@ -4,8 +4,8 @@ admin.menu.title.alt=Acc\u00E8s WebDAV
 admin.webdav.description=Gr\u00E2ce \u00E0 WebDAV, les dossiers OpenOLAT peuvent appara\u00EEtre sur votre bureau local et \u00EAtre utilis\u00E9s. Vous devez configurer cette fonction pour la rendre disponible \u00E0 tous les utilisateurs du syst\u00E8me. S'il vous pla\u00EEt lisez l'aide contextuelle pour plus d'informations.
 core.webdav=WebDAV
 webdav.digest=Utilise l'authentification Digest pour l'acc\u00E8s HTTP
-webdav.for.learners.bookmarks=Acc\u00E8s aux favoris pour les \u00E9tudiants
-webdav.for.learners.participants=Acc\u00E8s aux cours pour les \u00E9tudiants
+webdav.for.learners.bookmarks=Acc\u00E8s aux favoris pour les utilisateurs
+webdav.for.learners.participants=Acc\u00E8s aux cours pour les \u00E9tudiants et coachs
 webdav.link=Montre les liens WebDAV
 webdav.module=Acc\u00E8s WebDAV
 webdav.on=on
diff --git a/src/main/java/org/olat/core/util/Formatter.java b/src/main/java/org/olat/core/util/Formatter.java
index 3c4af27bf598442fc3666cd32f9eae9f691e1478..778f7c48ac69571f6e5fcb6e318d7a78af6090c3 100644
--- a/src/main/java/org/olat/core/util/Formatter.java
+++ b/src/main/java/org/olat/core/util/Formatter.java
@@ -32,6 +32,10 @@ import java.net.URLEncoder;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.Period;
+import java.time.ZoneId;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.GregorianCalendar;
@@ -132,6 +136,21 @@ public class Formatter {
 		}
 	}
 
+	/**
+	 * adds the given period in day/month/years to the baseLineDate and formats it in a short format, e.g. 05.12.2015 or 12/05/2015
+	 *
+	 * @param baseLineDate the date
+	 * @return a String with the formatted date
+	 */
+	public String formatDateRelative(Date baseLineDate, int days, int months, int years) {
+		if (baseLineDate == null) return null;
+		LocalDate date = LocalDateTime.ofInstant(baseLineDate.toInstant(),ZoneId.systemDefault()).toLocalDate();
+		Period period = Period.of(years, months, days);
+		LocalDate relativeDate = date.plus(period);
+		Date result = Date.from(relativeDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
+		return formatDate(result);
+	}
+
 	/**
 	 * Formats the given date in a medium sized format, e.g. 12. Dezember 2015 or December 12, 2015
 	 * 
diff --git a/src/main/java/org/olat/course/CoursefolderWebDAVMergeSource.java b/src/main/java/org/olat/course/CoursefolderWebDAVMergeSource.java
index 59e36413c44249949eee98e8398b5e64e9b21e14..9173659a3d656503ad3f9d17e873e534a4986c07 100644
--- a/src/main/java/org/olat/course/CoursefolderWebDAVMergeSource.java
+++ b/src/main/java/org/olat/course/CoursefolderWebDAVMergeSource.java
@@ -78,10 +78,10 @@ class CoursefolderWebDAVMergeSource extends WebDAVMergeSource {
 		List<RepositoryEntry> editorEntries = repositoryManager.queryByOwner(getIdentity(), "CourseModule");
 		appendCourses(editorEntries, true, containers, useTerms, terms, noTermContainer, prependReference, duplicates);
 		
-		//add courses as participant
+		//add courses as participant and coaches
 		if(webDAVModule.isEnableLearnersParticipatingCourses()) {
-			List<RepositoryEntry> participantEntries = repositoryManager.getLearningResourcesAsStudent(getIdentity(), "CourseModule", 0, -1);
-			appendCourses(participantEntries, false, containers, useTerms, terms, noTermContainer, prependReference, duplicates);
+			List<RepositoryEntry> entries = repositoryManager.getLearningResourcesAsParticipantAndCoach(getIdentity(), "CourseModule");
+			appendCourses(entries, false, containers, useTerms, terms, noTermContainer, prependReference, duplicates);
 		}
 		
 		//add bookmarked courses
diff --git a/src/main/java/org/olat/course/certificate/manager/CertificatePhantomWorker.java b/src/main/java/org/olat/course/certificate/manager/CertificatePhantomWorker.java
index 6dbeba37aa23bacd30980bd593ecc4da08c65be7..2c938cbeca470f39fdc23f62896cb9eebe5a5f03 100644
--- a/src/main/java/org/olat/course/certificate/manager/CertificatePhantomWorker.java
+++ b/src/main/java/org/olat/course/certificate/manager/CertificatePhantomWorker.java
@@ -210,6 +210,7 @@ public class CertificatePhantomWorker {
 	
 	private void fillCertificationInfos(VelocityContext context) {
 		Formatter format = Formatter.getInstance(locale);
+		context.put("dateFormatter", format);
 
 		if(dateCertification == null) {
 			context.put("dateCertification", "");
@@ -218,6 +219,7 @@ public class CertificatePhantomWorker {
 			context.put("dateCertification", formattedDateCertification);
 			String formattedDateCertificationLong= format.formatDateLong(dateCertification);
 			context.put("dateCertificationLong", formattedDateCertificationLong);
+			context.put("dateCertificationRaw", dateCertification);
 		}
 		
 		if(dateFirstCertification == null) {
@@ -227,6 +229,7 @@ public class CertificatePhantomWorker {
 			context.put("dateFirstCertification", formattedDateFirstCertification);
 			String formattedDateFirstCertificationLong = format.formatDate(dateFirstCertification);
 			context.put("dateFirstCertificationLong", formattedDateFirstCertificationLong);
+			context.put("dateFirstCertificationRaw", dateFirstCertification);
 		}
 	}
 	
diff --git a/src/main/java/org/olat/course/nodes/bc/BCCourseNodeEditForm.java b/src/main/java/org/olat/course/nodes/bc/BCCourseNodeEditForm.java
index a5d03ff30963dc8c47f2a3da98225340f4bec791..592a13320f9f117ddf744272e0acf5577be596c4 100644
--- a/src/main/java/org/olat/course/nodes/bc/BCCourseNodeEditForm.java
+++ b/src/main/java/org/olat/course/nodes/bc/BCCourseNodeEditForm.java
@@ -200,7 +200,7 @@ public class BCCourseNodeEditForm extends FormBasicController implements Control
 				VFSContainer selectedContainer = (VFSContainer) course.getCourseFolderContainer().resolve(subpath);
 				updatePublisher(selectedContainer);
 				node.getModuleConfiguration().setStringValue(BCCourseNodeEditController.CONFIG_SUBPATH, subpath);
-				subPath.setValue(event.getCommand());
+				subPath.setValue(subpath);
 				fireEvent(ureq, NodeEditController.NODECONFIG_CHANGED_EVENT);
 			}
 			
diff --git a/src/main/java/org/olat/course/nodes/bc/SelectFolderEvent.java b/src/main/java/org/olat/course/nodes/bc/SelectFolderEvent.java
index 33ca43459d331643e15127abc1ee2ae65eccfef5..bb857364002b7c50cd899c9fbee484b4d73f3114 100644
--- a/src/main/java/org/olat/course/nodes/bc/SelectFolderEvent.java
+++ b/src/main/java/org/olat/course/nodes/bc/SelectFolderEvent.java
@@ -22,7 +22,7 @@ package org.olat.course.nodes.bc;
 import org.olat.core.gui.control.Event;
 
 /**
- * 
+ *
  * Initial date: 26.01.2016<br>
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
@@ -31,7 +31,7 @@ public class SelectFolderEvent extends Event {
 
 	private static final long serialVersionUID = -181496177465081875L;
 	private String subpath;
-	
+
 	public SelectFolderEvent(String subpath) {
 		super("select-folder");
 		this.subpath = subpath;
diff --git a/src/main/java/org/olat/course/run/CourseRuntimeController.java b/src/main/java/org/olat/course/run/CourseRuntimeController.java
index e1d1cadb8e9dc5c5c0ea404a63a5f855e7015eb2..8a293ec85090d55460251c5e2ba26d7c05b43397 100644
--- a/src/main/java/org/olat/course/run/CourseRuntimeController.java
+++ b/src/main/java/org/olat/course/run/CourseRuntimeController.java
@@ -329,6 +329,7 @@ public class CourseRuntimeController extends RepositoryEntryRuntimeController im
 		if(run != null) {
 			addCustomCSS(ureq);
 			run.toolCtrDone(ureq);
+			currentToolCtr = null;
 		}
 	}
 	
diff --git a/src/main/java/org/olat/repository/RepositoryManager.java b/src/main/java/org/olat/repository/RepositoryManager.java
index 777884d6d056bff9a7e0b6b348b4af90f8843665..fd3aefd6ee1f3cb96f67c138e3bb484c68945d05 100644
--- a/src/main/java/org/olat/repository/RepositoryManager.java
+++ b/src/main/java/org/olat/repository/RepositoryManager.java
@@ -1886,6 +1886,36 @@ public class RepositoryManager extends BasicManager {
 		return repoEntries;
 	}
 	
+	/**
+	 * Gets all learning resources where the user is in a learning group as participant.
+	 * @param identity
+	 * @return list of RepositoryEntries
+	 */
+	public List<RepositoryEntry> getLearningResourcesAsParticipantAndCoach(Identity identity, String type) {
+		StringBuilder sb = new StringBuilder(1200);
+		sb.append("select v from ").append(RepositoryEntry.class.getName()).append(" as v ")
+		  .append(" inner join fetch v.olatResource as res ")
+		  .append(" inner join fetch v.statistics as statistics")
+		  .append(" left join fetch v.lifecycle as lifecycle")
+		  .append(" inner join v.groups as relGroup")
+		  .append(" inner join relGroup.group as baseGroup")
+		  .append(" inner join baseGroup.members as membership")
+		  .append(" where (v.access>=3 or (v.access=").append(RepositoryEntry.ACC_OWNERS).append(" and v.membersOnly=true))")
+		  .append(" and membership.identity.key=:identityKey and membership.role in('").append(GroupRoles.participant.name()).append("','").append(GroupRoles.coach.name()).append("')");
+		if(StringHelper.containsNonWhitespace(type)) {
+			sb.append(" and res.resName=:resourceType");
+		}
+
+		TypedQuery<RepositoryEntry> query = dbInstance.getCurrentEntityManager()
+				.createQuery(sb.toString(), RepositoryEntry.class)
+				.setParameter("identityKey", identity.getKey());
+
+		if(StringHelper.containsNonWhitespace(type)) {
+			query.setParameter("resourceType", type);
+		}
+		return query.getResultList();
+	}
+	
 	public List<RepositoryEntry> getLearningResourcesAsBookmark(Identity identity, Roles roles, String type, int firstResult, int maxResults, RepositoryEntryOrder... orderby) {
 		if(roles.isGuestOnly()) {
 			return Collections.emptyList();
diff --git a/src/test/java/org/olat/core/util/FormatterTest.java b/src/test/java/org/olat/core/util/FormatterTest.java
index c403f0869227856751068fcba5d1a4d990edd3fb..57e07a5d505283093d2d1ec45670916d0c44008d 100644
--- a/src/test/java/org/olat/core/util/FormatterTest.java
+++ b/src/test/java/org/olat/core/util/FormatterTest.java
@@ -19,6 +19,9 @@
  */
 package org.olat.core.util;
 
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
 import org.apache.commons.lang.StringEscapeUtils;
 import org.junit.Assert;
 import org.junit.Test;
@@ -56,4 +59,25 @@ public class FormatterTest {
 		String ugly = "guido/\\:? .|*\"\"<><guidoöäü";
 		Assert.assertEquals("guido%2F%5C%3A%3F+.%7C*%22%22%3C%3E%3Cguido%C3%B6%C3%A4%C3%BC", Formatter.makeStringFilesystemSave(ugly));
 	}
+
+	@Test
+	public void testDateRelative() {
+		//zero to add
+		Formatter formatter = Formatter.getInstance(Locale.GERMAN);
+		Date base = new GregorianCalendar(1935, 2, 29).getTime();
+		Assert.assertEquals(formatter.formatDate(base), formatter.formatDateRelative(base, 0,0,0));
+		//add 3 years in the past
+		Date basePlusThreeY = new GregorianCalendar(1938, 2, 29).getTime();
+		Assert.assertEquals(formatter.formatDate(basePlusThreeY), formatter.formatDateRelative(base, 0,0,3));
+		//add 5 days at 29 feb (leap year)
+		base = new GregorianCalendar(2016, 1, 29).getTime();
+		Date basePlusFiveD = new GregorianCalendar(2016, 2, 5).getTime();
+		Assert.assertEquals(formatter.formatDate(basePlusFiveD), formatter.formatDateRelative(base, 5,0,0));
+		//add three moth
+		base = new GregorianCalendar(2016, 4, 15).getTime();
+		Date baseThreeM = new GregorianCalendar(2016, 7, 15).getTime();
+		Assert.assertEquals(formatter.formatDate(baseThreeM), formatter.formatDateRelative(base, 0,3,0));
+	}
+
+
 }