diff --git a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java
index 614eaa51edb22dcb2c21b9bef32f135f2bfe5493..17671349d59ff5e21626b75464402c7709ad5b62 100644
--- a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java
+++ b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java
@@ -1421,37 +1421,38 @@ public class BaseFullWebappController extends BasicController implements DTabs,
 	}
 	
 	private void processAssessmentModeNotificationEvent(AssessmentModeNotificationEvent event) {
-		if(getIdentity() == null) return;
+		if(getIdentity() == null || !event.isModeOf(lockMode, getIdentity())) {
+			return;
+		}
 		
 		String cmd = event.getCommand();
-		if(AssessmentModeNotificationEvent.STOP_WARNING.equals(cmd)) {
-			lockResourceMessage(event.getAssessementMode());
-		} else if(event.getAssessedIdentityKeys() != null && event.getAssessedIdentityKeys().contains(getIdentity().getKey())) {
-			switch(cmd) {
-				case AssessmentModeNotificationEvent.BEFORE:
-					if(asyncUnlockResource(event.getAssessementMode())) {
-						stickyMessageCmp.setDelegateComponent(null);
-					}
-					break;	
-				case AssessmentModeNotificationEvent.LEADTIME:
-					if(asyncLockResource(event.getAssessementMode())) {
-						stickyMessageCmp.setDelegateComponent(null);
-					}
-					break;
-				case AssessmentModeNotificationEvent.START_ASSESSMENT:
-					asyncLockResource(event.getAssessementMode());
-					break;
-				case AssessmentModeNotificationEvent.STOP_ASSESSMENT:
-					if(asyncLockResource(event.getAssessementMode())) {
-						stickyMessageCmp.setDelegateComponent(null);
-					}
-					break;
-				case AssessmentModeNotificationEvent.END:
-					if(asyncUnlockResource(event.getAssessementMode())) {
-						stickyMessageCmp.setDelegateComponent(null);
-					}
-					break;	
-			}
+		switch(cmd) {
+			case AssessmentModeNotificationEvent.STOP_WARNING:
+				lockResourceMessage(event.getAssessementMode());
+				break;
+			case AssessmentModeNotificationEvent.BEFORE:
+				if(asyncUnlockResource(event.getAssessementMode())) {
+					stickyMessageCmp.setDelegateComponent(null);
+				}
+				break;	
+			case AssessmentModeNotificationEvent.LEADTIME:
+				if(asyncLockResource(event.getAssessementMode())) {
+					stickyMessageCmp.setDelegateComponent(null);
+				}
+				break;
+			case AssessmentModeNotificationEvent.START_ASSESSMENT:
+				asyncLockResource(event.getAssessementMode());
+				break;
+			case AssessmentModeNotificationEvent.STOP_ASSESSMENT:
+				if(asyncLockResource(event.getAssessementMode())) {
+					stickyMessageCmp.setDelegateComponent(null);
+				}
+				break;
+			case AssessmentModeNotificationEvent.END:
+				if(asyncUnlockResource(event.getAssessementMode())) {
+					stickyMessageCmp.setDelegateComponent(null);
+				}
+				break;	
 		}
 	}
 
diff --git a/src/main/java/org/olat/course/assessment/AssessmentModeNotificationEvent.java b/src/main/java/org/olat/course/assessment/AssessmentModeNotificationEvent.java
index 3b81996771c698b3eca68e1dd8b44861141946e8..ef91567d061ef99bdb9e9c52171de9b4f2379c2c 100644
--- a/src/main/java/org/olat/course/assessment/AssessmentModeNotificationEvent.java
+++ b/src/main/java/org/olat/course/assessment/AssessmentModeNotificationEvent.java
@@ -21,6 +21,7 @@ package org.olat.course.assessment;
 
 import java.util.Set;
 
+import org.olat.core.id.Identity;
 import org.olat.core.id.OLATResourceable;
 import org.olat.core.util.event.MultiUserEvent;
 import org.olat.core.util.resource.OresHelper;
@@ -61,4 +62,11 @@ public class AssessmentModeNotificationEvent extends MultiUserEvent  {
 	public Set<Long> getAssessedIdentityKeys() {
 		return assessedIdentityKeys;
 	}
+	
+	public boolean isModeOf(TransientAssessmentMode assessmentMode, Identity identity) {
+		if(assessmentMode != null && assessmentMode.getModeKey().equals(mode.getModeKey())) {
+			return true;
+		}
+		return (assessedIdentityKeys != null && identity != null && assessedIdentityKeys.contains(identity.getKey()));
+	}
 }
diff --git a/src/main/java/org/olat/modules/iq/IQDisplayController.java b/src/main/java/org/olat/modules/iq/IQDisplayController.java
index 8ced7a98b2491415979a6d64436e8eaa7d5de02d..19647c04b83f6e79526acfcabe3b006e6c71c894 100644
--- a/src/main/java/org/olat/modules/iq/IQDisplayController.java
+++ b/src/main/java/org/olat/modules/iq/IQDisplayController.java
@@ -32,6 +32,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Set;
 
+import org.apache.logging.log4j.Logger;
 import org.dom4j.Document;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
@@ -52,7 +53,6 @@ import org.olat.core.id.OLATResourceable;
 import org.olat.core.id.context.ContextEntry;
 import org.olat.core.id.context.StateEntry;
 import org.olat.core.logging.AssertException;
-import org.apache.logging.log4j.Logger;
 import org.olat.core.logging.Tracing;
 import org.olat.core.logging.activity.LearningResourceLoggingAction;
 import org.olat.core.logging.activity.StringResourceableType;
@@ -416,7 +416,10 @@ public class IQDisplayController extends DefaultController implements GenericEve
 		if(event.getAssessementMode().getResource().getResourceableId().equals(courseResId)) {
 			String cmd = event.getCommand();
 			if(cmd.equals(AssessmentModeNotificationEvent.STOP_ASSESSMENT) || cmd.equals(AssessmentModeNotificationEvent.END)) {
-				stoppedFlag = true;
+				// Check if event relevant for current assessed identity
+				if (event.getAssessedIdentityKeys() != null && event.getAssessedIdentityKeys().contains(assessedIdentity.getKey())) {
+					stoppedFlag = true;
+				}				
 			}
 		}
 	}