diff --git a/src/main/java/org/olat/commons/calendar/manager/ICalFileCalendarManager.java b/src/main/java/org/olat/commons/calendar/manager/ICalFileCalendarManager.java
index d302b09cf4e2eeb305f1d4995549a7554479982e..b2ea7a4f9b83eb42a56236d9672847b40db11f92 100644
--- a/src/main/java/org/olat/commons/calendar/manager/ICalFileCalendarManager.java
+++ b/src/main/java/org/olat/commons/calendar/manager/ICalFileCalendarManager.java
@@ -982,6 +982,7 @@ public class ICalFileCalendarManager implements CalendarManager, InitializingBea
 				Kalendar loadedCal = getCalendarFromCache(cal.getType(),cal.getCalendarID());
 				for(KalendarEvent kalendarEvent:kalendarEvents) {
 					loadedCal.addEvent(kalendarEvent);
+					kalendarEvent.resetImmutableDates();
 				}
 				boolean successfullyPersist = persistCalendar(loadedCal);
 				return new Boolean(successfullyPersist);
@@ -1204,9 +1205,8 @@ public class ICalFileCalendarManager implements CalendarManager, InitializingBea
 		}
 
 		reloadedCal.removeEvent(kalendarEvent); // remove old event
-		// clone the event to initialize the immutable date used to control moving events
-		KalendarEvent clonedEvent = getKalendarEvent(getVEvent(kalendarEvent));
-		reloadedCal.addEvent(clonedEvent); // add changed event
+		kalendarEvent.resetImmutableDates();
+		reloadedCal.addEvent(kalendarEvent); // add changed event
 
 		boolean successfullyPersist = persistCalendar(reloadedCal);
 		// inform all controller about calendar change for reload
diff --git a/src/main/java/org/olat/commons/calendar/model/KalendarEvent.java b/src/main/java/org/olat/commons/calendar/model/KalendarEvent.java
index 3c565c6939fe5c36d4408ac25f68173429df4822..5862e952620554ce961b89c043a870d1094900bf 100644
--- a/src/main/java/org/olat/commons/calendar/model/KalendarEvent.java
+++ b/src/main/java/org/olat/commons/calendar/model/KalendarEvent.java
@@ -389,6 +389,14 @@ public class KalendarEvent implements Cloneable, Comparable<KalendarEvent> {
 		setRecurrenceExc(excRule);
 	}
 	
+	/**
+	 * Set the immutable dates equals to the begin and end dates.
+	 */
+	public void resetImmutableDates() {
+		immutableBegin = begin;
+		immutableEnd = end;
+	}
+	
 	@Override
 	public KalendarEvent clone() {
 		Object c = null;
@@ -399,7 +407,8 @@ public class KalendarEvent implements Cloneable, Comparable<KalendarEvent> {
 		}
 		return (KalendarEvent)c;
 	}
-	
+
+	@Override
 	public int compareTo(KalendarEvent event1) {
 		if(event1 == null) {
 			return -1;
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java
index 0d52ac8954f9a1998026e4afe02b7e62597c16f4..5829dd9002661a2ee0b4718776c2774189ab4cf8 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java
@@ -721,7 +721,7 @@ public class GTACoachController extends GTAAbstractController implements Assessm
 			File documentsDir = gtaManager.getSubmitDirectory(courseEnv, gtaNode, assessedGroup);
 			submittedDocuments = documentsDir.listFiles(new SystemFilenameFilter(true, false));
 		} else {
-			File documentsDir = gtaManager.getSubmitDirectory(courseEnv, gtaNode, getIdentity());
+			File documentsDir = gtaManager.getSubmitDirectory(courseEnv, gtaNode, assessedIdentity);
 			submittedDocuments = documentsDir.listFiles(new SystemFilenameFilter(true, false));
 		}
 		
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantRevisionAndCorrectionsController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantRevisionAndCorrectionsController.java
index 1ba44f5b0f3d7cbb4d2bc7dd97d17d1bf19e2717..66f9681d3480cacf5157dfffaeaa4772e11aefe8 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantRevisionAndCorrectionsController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantRevisionAndCorrectionsController.java
@@ -177,6 +177,9 @@ public class GTAParticipantRevisionAndCorrectionsController extends BasicControl
 		
 		Date deadline = task == null ? null : task.getRevisionsDueDate();
 		int maxDocs = gtaNode.getModuleConfiguration().getIntegerSafe(GTACourseNode.GTASK_MAX_REVISED_DOCS, -1);
+		if(maxDocs == -1) {
+			maxDocs = gtaNode.getModuleConfiguration().getIntegerSafe(GTACourseNode.GTASK_MAX_SUBMITTED_DOCS, -1);
+		}
 		uploadRevisionsCtrl = new SubmitDocumentsController(ureq, getWindowControl(), task, documentsDir, documentsContainer, maxDocs,
 				gtaNode, courseEnv, assessedUserCourseEnv.isCourseReadOnly(), deadline, "document");
 		listenTo(uploadRevisionsCtrl);
diff --git a/src/main/java/org/olat/dispatcher/RESTDispatcher.java b/src/main/java/org/olat/dispatcher/RESTDispatcher.java
index 4ccd21046b04304f028fb97d3b91c523bc4292f8..6bd333e6b47322f137b79c95e0b87a4ee4f5b941 100644
--- a/src/main/java/org/olat/dispatcher/RESTDispatcher.java
+++ b/src/main/java/org/olat/dispatcher/RESTDispatcher.java
@@ -91,9 +91,10 @@ public class RESTDispatcher implements Dispatcher {
 		//
 		String uriPrefix = DispatcherModule.getLegacyUriPrefix(request);
 		final String origUri = request.getRequestURI();
-		String restPart = origUri.substring(uriPrefix.length());
+		String encodedRestPart = origUri.substring(uriPrefix.length());
+		String restPart = encodedRestPart;
 		try {
-			restPart = URLDecoder.decode(restPart, "UTF8");
+			restPart = URLDecoder.decode(encodedRestPart, "UTF8");
 		} catch (UnsupportedEncodingException e) {
 			log.error("Unsupported encoding", e);
 		}
@@ -212,7 +213,7 @@ public class RESTDispatcher implements Dispatcher {
 				DispatcherModule.redirectTo(response, url);
 			} else {
 				//redirect to the authenticated dispatcher which support REST url
-				String url = WebappHelper.getServletContextPath() + DispatcherModule.PATH_AUTHENTICATED + restPart;
+				String url = WebappHelper.getServletContextPath() + DispatcherModule.PATH_AUTHENTICATED + encodedRestPart;
 				DispatcherModule.redirectTo(response, url);
 			}
 		} else {