diff --git a/src/main/java/org/olat/course/condition/interpreter/IsAssessmentModeFunction.java b/src/main/java/org/olat/course/condition/interpreter/IsAssessmentModeFunction.java
index 1635bb3ca84c7e7f47db6925640e47033676c220..19bfe600f2af648dd3c2350402b2cb04bded42b9 100644
--- a/src/main/java/org/olat/course/condition/interpreter/IsAssessmentModeFunction.java
+++ b/src/main/java/org/olat/course/condition/interpreter/IsAssessmentModeFunction.java
@@ -22,6 +22,8 @@ package org.olat.course.condition.interpreter;
 import java.util.Date;
 
 import org.olat.core.CoreSpringFactory;
+import org.olat.core.gui.control.ChiefController;
+import org.olat.core.id.OLATResourceable;
 import org.olat.course.assessment.AssessmentModeManager;
 import org.olat.course.editor.CourseEditorEnv;
 import org.olat.course.run.userview.UserCourseEnvironment;
@@ -57,11 +59,25 @@ public class IsAssessmentModeFunction extends AbstractFunction {
 			// return a valid value to continue with condition evaluation test
 			return defaultValue();
 		}
-
-		AssessmentModeManager assessmentModeMgr = CoreSpringFactory.getImpl(AssessmentModeManager.class);
-		RepositoryEntry entry = getUserCourseEnv().getCourseEnvironment().getCourseGroupManager().getCourseEntry();
-		boolean inAssessment = assessmentModeMgr.isInAssessmentMode(entry, new Date());
-		return inAssessment ? ConditionInterpreter.INT_TRUE: ConditionInterpreter.INT_FALSE;
+		
+		ChiefController chiefController = getUserCourseEnv().getWindowControl().getWindowBackOffice().getChiefController();
+		if(chiefController == null) {
+			return ConditionInterpreter.INT_FALSE;
+		}
+		OLATResourceable lockedResource = chiefController.getLockResource();
+		if(lockedResource == null) {
+			return ConditionInterpreter.INT_FALSE;
+		}
+		
+		Long resourceableId = getUserCourseEnv().getCourseEnvironment().getCourseResourceableId();
+		if(lockedResource.getResourceableId().equals(resourceableId)) {
+			RepositoryEntry entry = getUserCourseEnv().getCourseEnvironment().getCourseGroupManager().getCourseEntry();
+			AssessmentModeManager assessmentModeMgr = CoreSpringFactory.getImpl(AssessmentModeManager.class);
+			boolean inAssessment = assessmentModeMgr.isInAssessmentMode(entry, new Date());
+			return inAssessment ? ConditionInterpreter.INT_TRUE: ConditionInterpreter.INT_FALSE;
+		} else {
+			return ConditionInterpreter.INT_FALSE;
+		}
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/course/editor/EditorMainController.java b/src/main/java/org/olat/course/editor/EditorMainController.java
index 6a007ff9076c8e34b8d85d1aa36074e3d65441b7..137b86635d91ba3aeaf79f662c1aaece2ffead91 100644
--- a/src/main/java/org/olat/course/editor/EditorMainController.java
+++ b/src/main/java/org/olat/course/editor/EditorMainController.java
@@ -270,7 +270,7 @@ public class EditorMainController extends MainLayoutBasicController implements G
 				CourseGroupManager cgm = course.getCourseEnvironment().getCourseGroupManager();
 				repoEntry = cgm.getCourseEntry();
 				CourseEditorEnv cev = new CourseEditorEnvImpl(cetm, cgm, ureq.getLocale());
-				euce = new EditorUserCourseEnvironmentImpl(cev);
+				euce = new EditorUserCourseEnvironmentImpl(cev, getWindowControl());
 				euce.getCourseEditorEnv().setCurrentCourseNodeId(null);
 				
 				menuTree.setTreeModel(cetm);
diff --git a/src/main/java/org/olat/course/editor/EditorUserCourseEnvironmentImpl.java b/src/main/java/org/olat/course/editor/EditorUserCourseEnvironmentImpl.java
index 63b8a9d96b2fbe1c1f40f0cc14fe2a2014fae8fd..08ac3e38ba5adb8f2edbf068a5728342ace075ab 100644
--- a/src/main/java/org/olat/course/editor/EditorUserCourseEnvironmentImpl.java
+++ b/src/main/java/org/olat/course/editor/EditorUserCourseEnvironmentImpl.java
@@ -25,6 +25,7 @@
 
 package org.olat.course.editor;
 
+import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.IdentityEnvironment;
 import org.olat.core.logging.AssertException;
 import org.olat.course.condition.interpreter.ConditionInterpreter;
@@ -51,9 +52,11 @@ public class EditorUserCourseEnvironmentImpl implements UserCourseEnvironment {
 	private ConditionInterpreter ci;
 	private ScoreAccounting sa;
 	private RepositoryEntryLifecycle lifecycle;
+	private final WindowControl windowControl;
 
-	EditorUserCourseEnvironmentImpl(CourseEditorEnv courseEditorEnv){
+	EditorUserCourseEnvironmentImpl(CourseEditorEnv courseEditorEnv, WindowControl windowControl) {
 		this.courseEditorEnv = courseEditorEnv;
+		this.windowControl = windowControl;
 		ci = new ConditionInterpreter(this);
 		courseEditorEnv.setConditionInterpreter(ci);
 		sa = new ScoreAccounting(this);
@@ -73,6 +76,11 @@ public class EditorUserCourseEnvironmentImpl implements UserCourseEnvironment {
 		return courseEditorEnv;
 	}
 
+	@Override
+	public WindowControl getWindowControl() {
+		return windowControl;
+	}
+
 	/**
 	 * @see org.olat.course.run.userview.UserCourseEnvironment#getConditionInterpreter()
 	 */
diff --git a/src/main/java/org/olat/course/editor/PublishProcess.java b/src/main/java/org/olat/course/editor/PublishProcess.java
index 075b5e4534f9060d676fe7dada1ca369be3b5154..4297864afcdaf871f98a06ad78232da598c61ed9 100644
--- a/src/main/java/org/olat/course/editor/PublishProcess.java
+++ b/src/main/java/org/olat/course/editor/PublishProcess.java
@@ -264,7 +264,7 @@ public class PublishProcess {
 		CourseEditorEnv tmpCEV = new CourseEditorEnvImpl(cloneCETM, course.getCourseEnvironment().getCourseGroupManager(), locale);
 		// the resulting object is not needed, but constructor makes
 		// initializations within tmpCEV!! thus important step.
-		new EditorUserCourseEnvironmentImpl(tmpCEV);
+		new EditorUserCourseEnvironmentImpl(tmpCEV, null);
 		//
 		tmpCEV.setCurrentCourseNodeId(cloneCETM.getRootNode().getIdent());
 		tmpCEV.validateCourse();
diff --git a/src/main/java/org/olat/course/run/RunMainController.java b/src/main/java/org/olat/course/run/RunMainController.java
index 7f1b9f3c617835f948cf1446265b28deafb2b9b6..6da5963021f88155db07b67c386660301d8632cf 100644
--- a/src/main/java/org/olat/course/run/RunMainController.java
+++ b/src/main/java/org/olat/course/run/RunMainController.java
@@ -296,7 +296,8 @@ public class RunMainController extends MainLayoutBasicController implements Gene
 		} else {
 			waitingLists = Collections.emptyList();
 		}
-		return new UserCourseEnvironmentImpl(ureq.getUserSession().getIdentityEnvironment(), course.getCourseEnvironment(),
+
+		return new UserCourseEnvironmentImpl(ureq.getUserSession().getIdentityEnvironment(), course.getCourseEnvironment(), getWindowControl(),
 				coachedGroups, participatedGroups, waitingLists,
 				reSecurity.isCourseCoach() || reSecurity.isGroupCoach(),
 				reSecurity.isEntryAdmin(),
@@ -502,7 +503,7 @@ public class RunMainController extends MainLayoutBasicController implements Gene
 				
 			  // rebuild up the running structure for this user, after publish;
 				course = CourseFactory.loadCourse(course.getResourceableId());
-				uce = new UserCourseEnvironmentImpl(ureq.getUserSession().getIdentityEnvironment(), course.getCourseEnvironment(),
+				uce = new UserCourseEnvironmentImpl(ureq.getUserSession().getIdentityEnvironment(), course.getCourseEnvironment(), getWindowControl(),
 						uce.getCoachedGroups(), uce.getParticipatingGroups(), uce.getWaitingLists(),
 						null, null, null);
 				// build score now
diff --git a/src/main/java/org/olat/course/run/userview/UserCourseEnvironment.java b/src/main/java/org/olat/course/run/userview/UserCourseEnvironment.java
index d876e8fb2a73365def38b5c6d31c679ae1a60994..43c561f927ae8faee21cf031079c644b882b0eb6 100644
--- a/src/main/java/org/olat/course/run/userview/UserCourseEnvironment.java
+++ b/src/main/java/org/olat/course/run/userview/UserCourseEnvironment.java
@@ -25,6 +25,7 @@
 
 package org.olat.course.run.userview;
 
+import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.IdentityEnvironment;
 import org.olat.course.condition.interpreter.ConditionInterpreter;
 import org.olat.course.editor.CourseEditorEnv;
@@ -51,6 +52,13 @@ public interface UserCourseEnvironment {
 	
 	public IdentityEnvironment getIdentityEnvironment();
 	
+	/**
+	 * Return a value only if the user has opened the course in
+	 * the GUI. Return null otherwise.
+	 * @return
+	 */
+	public WindowControl getWindowControl();
+	
 	public ScoreAccounting getScoreAccounting();
 	
 
diff --git a/src/main/java/org/olat/course/run/userview/UserCourseEnvironmentImpl.java b/src/main/java/org/olat/course/run/userview/UserCourseEnvironmentImpl.java
index 9b142f45c2ce3ef281870bf00ea5461189949ac7..bb383eca65f83bf664f541318476b54bacfe0721 100644
--- a/src/main/java/org/olat/course/run/userview/UserCourseEnvironmentImpl.java
+++ b/src/main/java/org/olat/course/run/userview/UserCourseEnvironmentImpl.java
@@ -32,6 +32,7 @@ import java.util.List;
 import org.olat.basesecurity.Group;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.persistence.PersistenceHelper;
+import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.IdentityEnvironment;
 import org.olat.course.assessment.EfficiencyStatementManager;
 import org.olat.course.certificate.CertificatesManager;
@@ -52,8 +53,8 @@ import org.olat.resource.OLATResource;
  *
  */
 public class UserCourseEnvironmentImpl implements UserCourseEnvironment {
-	private IdentityEnvironment identityEnvironment;
-	private CourseEnvironment courseEnvironment;
+	private final IdentityEnvironment identityEnvironment;
+	private final CourseEnvironment courseEnvironment;
 	private ConditionInterpreter conditionInterpreter;
 	private ScoreAccounting scoreAccounting;
 	private RepositoryEntryLifecycle lifecycle;
@@ -62,6 +63,8 @@ public class UserCourseEnvironmentImpl implements UserCourseEnvironment {
 	private List<BusinessGroup> participatingGroups;
 	private List<BusinessGroup> waitingLists;
 	
+	private final WindowControl windowControl;
+	
 	private Boolean coach;
 	private Boolean admin;
 	private Boolean participant;
@@ -69,10 +72,10 @@ public class UserCourseEnvironmentImpl implements UserCourseEnvironment {
 	private Boolean certification;
 	
 	public UserCourseEnvironmentImpl(IdentityEnvironment identityEnvironment, CourseEnvironment courseEnvironment) {
-		this(identityEnvironment, courseEnvironment, null, null, null, null, null, null);
+		this(identityEnvironment, courseEnvironment, null, null, null, null, null, null, null);
 	}
 	
-	public UserCourseEnvironmentImpl(IdentityEnvironment identityEnvironment, CourseEnvironment courseEnvironment,
+	public UserCourseEnvironmentImpl(IdentityEnvironment identityEnvironment, CourseEnvironment courseEnvironment, WindowControl windowControl,
 			List<BusinessGroup> coachedGroups, List<BusinessGroup> participatingGroups, List<BusinessGroup> waitingLists,
 			Boolean coach, Boolean admin, Boolean participant) {
 		this.courseEnvironment = courseEnvironment;
@@ -85,6 +88,7 @@ public class UserCourseEnvironmentImpl implements UserCourseEnvironment {
 		this.coach = coach;
 		this.admin = admin;
 		this.participant = participant;
+		this.windowControl = windowControl;
 	}
 
 	/**
@@ -100,6 +104,11 @@ public class UserCourseEnvironmentImpl implements UserCourseEnvironment {
 		return identityEnvironment;
 	}
 
+	@Override
+	public WindowControl getWindowControl() {
+		return windowControl;
+	}
+
 	@Override
 	public ConditionInterpreter getConditionInterpreter() {
 		return conditionInterpreter;