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 6b434b8585e07a01cf491f4d7c59d3584ef5e58d..d302b09cf4e2eeb305f1d4995549a7554479982e 100644
--- a/src/main/java/org/olat/commons/calendar/manager/ICalFileCalendarManager.java
+++ b/src/main/java/org/olat/commons/calendar/manager/ICalFileCalendarManager.java
@@ -354,7 +354,7 @@ public class ICalFileCalendarManager implements CalendarManager, InitializingBea
 	@Override
 	public boolean persistCalendar(Kalendar kalendar) {
 		Calendar calendar = buildCalendar(kalendar);
-		boolean success = writeCalendarFile(calendar,kalendar.getType(), kalendar.getCalendarID());
+		boolean success = writeCalendarFile(calendar, kalendar.getType(), kalendar.getCalendarID());
 		calendarCache.update(getKeyFor(kalendar.getType(), kalendar.getCalendarID()), kalendar);
 		return success;
 	}
@@ -1204,7 +1204,9 @@ public class ICalFileCalendarManager implements CalendarManager, InitializingBea
 		}
 
 		reloadedCal.removeEvent(kalendarEvent); // remove old event
-		reloadedCal.addEvent(kalendarEvent); // add changed 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
 
 		boolean successfullyPersist = persistCalendar(reloadedCal);
 		// inform all controller about calendar change for reload