diff --git a/src/main/java/org/olat/course/run/RunMainController.java b/src/main/java/org/olat/course/run/RunMainController.java
index 14447d9d6efa90478a9683d229d0c544f95d7547..23077fa46c787a8d9661c705b837eda84d74fc38 100644
--- a/src/main/java/org/olat/course/run/RunMainController.java
+++ b/src/main/java/org/olat/course/run/RunMainController.java
@@ -30,7 +30,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 
-import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.fullWebApp.LayoutMain3ColsController;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
@@ -76,7 +75,6 @@ import org.olat.course.ICourse;
 import org.olat.course.assessment.AssessmentChangedEvent;
 import org.olat.course.assessment.AssessmentMode;
 import org.olat.course.assessment.AssessmentMode.Status;
-import org.olat.course.assessment.manager.UserCourseInformationsManager;
 import org.olat.course.config.CourseConfig;
 import org.olat.course.editor.PublishEvent;
 import org.olat.course.groupsandrights.CourseGroupManager;
@@ -205,9 +203,6 @@ public class RunMainController extends MainLayoutBasicController implements Gene
 		navHandler = new NavigationHandler(uce, treeFilter, false);
 
 		updateTreeAndContent(ureq, currentCourseNode, null);
-		
-		//set the launch date after the evaluation
-		setLaunchDates();
 
 		if (courseRepositoryEntry != null && repositoryManager.createRepositoryEntryStatus(courseRepositoryEntry.getStatusCode()).isClosed()) {
 			wControl.setWarning(translate("course.closed"));
@@ -347,11 +342,6 @@ public class RunMainController extends MainLayoutBasicController implements Gene
 		needsRebuildAfterRunDone = true;
 	}
 	
-	private void setLaunchDates() {
-		UserCourseInformationsManager userCourseInfoMgr = CoreSpringFactory.getImpl(UserCourseInformationsManager.class);
-		userCourseInfoMgr.updateUserCourseInformations(uce.getCourseEnvironment().getCourseGroupManager().getCourseResource(), getIdentity());
-	}
-	
 	private CourseNode updateAfterChanges(CourseNode courseNode) {
 		if(currentCourseNode == null) return null;
 		
diff --git a/src/main/java/org/olat/repository/ui/RepositoryEntryRuntimeController.java b/src/main/java/org/olat/repository/ui/RepositoryEntryRuntimeController.java
index ec7db0400500b2429395cf0764f7faa79201f803..20f86dded2ea00771f8c5ba7068f92266f0ec6f1 100644
--- a/src/main/java/org/olat/repository/ui/RepositoryEntryRuntimeController.java
+++ b/src/main/java/org/olat/repository/ui/RepositoryEntryRuntimeController.java
@@ -21,6 +21,7 @@ package org.olat.repository.ui;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.olat.NewControllerFactory;
 import org.olat.core.commons.services.mark.Mark;
@@ -60,6 +61,7 @@ import org.olat.core.util.resource.OresHelper;
 import org.olat.course.CourseModule;
 import org.olat.course.assessment.AssessmentMode;
 import org.olat.course.assessment.AssessmentModeManager;
+import org.olat.course.assessment.manager.UserCourseInformationsManager;
 import org.olat.course.assessment.model.TransientAssessmentMode;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryEntryManagedFlag;
@@ -140,6 +142,7 @@ public class RepositoryEntryRuntimeController extends MainLayoutBasicController
 	private boolean assessmentLock;// by Assessment mode
 	private AssessmentMode assessmentMode;
 	private final RepositoryHandler handler;
+	private AtomicBoolean launchDateUpdated = new AtomicBoolean(false);
 	
 	private HistoryPoint launchedFromPoint;
 	
@@ -159,6 +162,8 @@ public class RepositoryEntryRuntimeController extends MainLayoutBasicController
 	private RepositoryHandlerFactory handlerFactory;
 	@Autowired
 	private AssessmentModeManager assessmentModeMgr;
+	@Autowired
+	private UserCourseInformationsManager userCourseInfoMgr;
 	
 	public RepositoryEntryRuntimeController(UserRequest ureq, WindowControl wControl, RepositoryEntry re,
 			RepositoryEntrySecurity reSecurity, RuntimeControllerCreator runtimeControllerCreator) {
@@ -906,6 +911,9 @@ public class RepositoryEntryRuntimeController extends MainLayoutBasicController
 			runtimeController = runtimeControllerCreator.create(ureq, getWindowControl(), toolbarPanel, re, reSecurity, assessmentMode);
 			listenTo(runtimeController);
 			toolbarPanel.rootController(re.getDisplayname(), runtimeController);
+			if(!launchDateUpdated.getAndSet(true)) {
+				userCourseInfoMgr.updateUserCourseInformations(re.getOlatResource(), getIdentity());
+			}
 		} else {
 			runtimeController = new AccessRefusedController(ureq, getWindowControl());
 			listenTo(runtimeController);