diff --git a/src/main/java/org/olat/commons/calendar/ICalFileCalendarManager.java b/src/main/java/org/olat/commons/calendar/ICalFileCalendarManager.java
index 00523a4092e70f2f4691ba13a20617f69264d076..3a2a47ee3154a70f3842b4aab85bd9a54160ad69 100644
--- a/src/main/java/org/olat/commons/calendar/ICalFileCalendarManager.java
+++ b/src/main/java/org/olat/commons/calendar/ICalFileCalendarManager.java
@@ -63,6 +63,7 @@ import net.fortuna.ical4j.model.property.CalScale;
 import net.fortuna.ical4j.model.property.Clazz;
 import net.fortuna.ical4j.model.property.Contact;
 import net.fortuna.ical4j.model.property.Created;
+import net.fortuna.ical4j.model.property.DtEnd;
 import net.fortuna.ical4j.model.property.Duration;
 import net.fortuna.ical4j.model.property.ExDate;
 import net.fortuna.ical4j.model.property.LastModified;
@@ -177,7 +178,6 @@ public class ICalFileCalendarManager extends BasicManager implements CalendarMan
 	protected Kalendar getCalendarFromCache(final String callType, final String callCalendarID) {
 		OLATResourceable calOres = OresHelper.createOLATResourceableType(getKeyFor(callType,callCalendarID));		
 		CoordinatorManager.getInstance().getCoordinator().getSyncer().assertAlreadyDoInSyncFor(calOres);
-		
 		String key = getKeyFor(callType,callCalendarID);
 		Kalendar cal = (Kalendar)calendarCache.get(key);
 		if (cal == null) {
@@ -364,8 +364,6 @@ public class ICalFileCalendarManager extends BasicManager implements CalendarMan
 			Date adjustedEndDate = new Date(kEvent.getEnd().getTime() + (1000 * 60 * 60 * 24));
 			net.fortuna.ical4j.model.Date dtEnd = CalendarUtils.createDate(adjustedEndDate);
 			vEvent = new VEvent(dtBegin, dtEnd, kEvent.getSubject());
-			vEvent.getProperties().getProperty(Property.DTSTART).getParameters().add(Value.DATE);
-			vEvent.getProperties().getProperty(Property.DTEND).getParameters().add(Value.DATE);
 		}
 		
 		if(kEvent.getCreated() > 0) {
@@ -494,6 +492,12 @@ public class ICalFileCalendarManager extends BasicManager implements CalendarMan
 		if (dateParameter != null) isAllDay = true;
 
 		if (isAllDay) {
+			//Make sure the time of the dates are 00:00 localtime because DATE fields in iCal are GMT 00:00 
+			//Note that start date and end date can have different offset because of daylight saving switch
+			java.util.TimeZone tz = java.util.GregorianCalendar.getInstance().getTimeZone();
+			start = new Date(start.getTime() - tz.getOffset(start.getTime()));
+			end   = new Date(end.getTime()   - tz.getOffset(end.getTime()));
+			
 			// adjust end date: ICal sets end dates to the next day
 			end = new Date(end.getTime() - (1000 * 60 * 60 * 24));
 		}