diff --git a/src/main/java/org/olat/commons/calendar/manager/ImportCalendarManager.java b/src/main/java/org/olat/commons/calendar/manager/ImportCalendarManager.java
index c79582b7bc2d0a5c1efc56de5894faf58ba1f832..85e7edadf4443772f07093a10c56b593a74ed8c9 100644
--- a/src/main/java/org/olat/commons/calendar/manager/ImportCalendarManager.java
+++ b/src/main/java/org/olat/commons/calendar/manager/ImportCalendarManager.java
@@ -46,6 +46,7 @@ import org.olat.commons.calendar.model.ImportedCalendar;
 import org.olat.commons.calendar.model.Kalendar;
 import org.olat.commons.calendar.model.KalendarComparator;
 import org.olat.commons.calendar.ui.components.KalendarRenderWrapper;
+import org.olat.core.commons.persistence.DB;
 import org.olat.core.id.Identity;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
@@ -69,6 +70,10 @@ import net.fortuna.ical4j.model.Calendar;
 public class ImportCalendarManager {
 	private static final OLog log = Tracing.createLoggerFor(ImportCalendarManager.class);
 	
+	private static final int RELOAD_INTERVAL = 3600000;
+	
+	@Autowired
+	private DB dbInstance;
 	@Autowired
 	private CalendarModule calendarModule;
 	@Autowired
@@ -147,20 +152,11 @@ public class ImportCalendarManager {
 
 			List<ImportedCalendar> importedCalendars = importedCalendarDao.getImportedCalendars(identity);
 			for (ImportedCalendar importedCalendar: importedCalendars) {
-				String calendarId = importedCalendar.getCalendarId();
-				String url = importedCalendar.getUrl();
-
 				if(reload) {
-					Date lastUpdate = importedCalendar.getLastUpdate();
-					if (url != null && (timestamp - lastUpdate.getTime() > 3600000)) {
-						log.info("Calendar reload started from url=" + url);
-						reloadCalendarFromUrl(url, CalendarManager.TYPE_USER, calendarId);
-						importedCalendar.setLastUpdate(new Date());
-						importedCalendar = importedCalendarDao.update(importedCalendar);
-						log.info("Calendar reloaded from url=" + url);
-					}
+					reloadImportCalendar(importedCalendar, timestamp);
 				}
-				
+
+				String calendarId = importedCalendar.getCalendarId();
 				KalendarRenderWrapper calendarWrapper = calendarManager.getImportedCalendar(identity, calendarId);
 				calendarWrapper.setDisplayName(importedCalendar.getDisplayName());
 				calendarWrapper.setAccess(KalendarRenderWrapper.ACCESS_READ_ONLY);
@@ -177,28 +173,16 @@ public class ImportCalendarManager {
 	}
 	
 	public List<CalendarFileInfos> getImportedCalendarInfosForIdentity(Identity identity, boolean reload) {
-		// initialize the calendars list
-
 		List<CalendarFileInfos> calendars = new ArrayList<CalendarFileInfos>();
 		if(calendarModule.isEnabled() && calendarModule.isEnablePersonalCalendar()) {
 			long timestamp = System.currentTimeMillis();
 
 			List<ImportedCalendar> importedCalendars = importedCalendarDao.getImportedCalendars(identity);
 			for (ImportedCalendar importedCalendar: importedCalendars) {
-				String calendarId = importedCalendar.getCalendarId();
-				String url = importedCalendar.getUrl();
-
 				if(reload) {
-					Date lastUpdate = importedCalendar.getLastUpdate();
-					if (url != null && (timestamp - lastUpdate.getTime() > 3600000)) {
-						log.info("Calendar reload started from url=" + url);
-						reloadCalendarFromUrl(url, CalendarManager.TYPE_USER, calendarId);
-						importedCalendar.setLastUpdate(new Date());
-						importedCalendar = importedCalendarDao.update(importedCalendar);
-						log.info("Calendar reloaded from url=" + url);
-					}
+					reloadImportCalendar(importedCalendar, timestamp);
 				}
-
+				String calendarId = importedCalendar.getCalendarId();
 				File calendarFile = calendarManager.getCalendarFile(CalendarManager.TYPE_USER, calendarId);
 				CalendarFileInfos calendarInfos = new CalendarFileInfos(calendarId, CalendarManager.TYPE_USER, calendarFile);
 				calendars.add(calendarInfos);
@@ -206,6 +190,21 @@ public class ImportCalendarManager {
 		}
 		return calendars;
 	}
+	
+	private void reloadImportCalendar(ImportedCalendar importedCalendar, long timestamp) {
+		String url = importedCalendar.getUrl();
+		Date lastUpdate = importedCalendar.getLastUpdate();
+		if (url != null && (timestamp - lastUpdate.getTime() > RELOAD_INTERVAL)) {
+			log.info("Calendar reload started from url=" + url);
+			importedCalendar.setLastUpdate(new Date());
+			importedCalendar = importedCalendarDao.update(importedCalendar);
+			dbInstance.commit();
+			
+			String calendarId = importedCalendar.getCalendarId();
+			reloadCalendarFromUrl(url, CalendarManager.TYPE_USER, calendarId);
+			log.info("Calendar reloaded from url=" + url);
+		}
+	}
 
 	/**
 	 * Reload calendar from url and store calendar file locally.