diff --git a/src/main/java/org/olat/notifications/NotificationsManagerImpl.java b/src/main/java/org/olat/notifications/NotificationsManagerImpl.java
index 60a4655b86315436776330b0e5a111218b881b08..e99eba5cfb34a6e5b836631583a694af4dce1456 100644
--- a/src/main/java/org/olat/notifications/NotificationsManagerImpl.java
+++ b/src/main/java/org/olat/notifications/NotificationsManagerImpl.java
@@ -532,6 +532,14 @@ public class NotificationsManagerImpl extends NotificationsManager implements Us
 	 * @return the publisher
 	 */
 	public Publisher getOrCreatePublisher(final SubscriptionContext scontext, final PublisherData pdata) {
+		return findOrCreatePublisher(scontext, pdata);
+	}
+	/**
+	 * @param scontext
+	 * @param pdata
+	 * @return the publisher
+	 */
+	private Publisher findOrCreatePublisher(final SubscriptionContext scontext, final PublisherData pdata) {
 		final OLATResourceable ores = OresHelper.createOLATResourceableInstance(scontext.getResName() + "_" + scontext.getSubidentifier(),scontext.getResId());
 		//o_clusterOK by:cg
 		//fxdiff VCRP-16:prevent nested doInSync
@@ -758,7 +766,7 @@ public class NotificationsManagerImpl extends NotificationsManager implements Us
 	 */
 	public void subscribe(Identity identity, SubscriptionContext subscriptionContext, PublisherData publisherData) {
 		// no need to sync, since an identity only has one gui thread / one mouse
-		Publisher p = getOrCreatePublisher(subscriptionContext, publisherData);
+		Publisher p = findOrCreatePublisher(subscriptionContext, publisherData);
 		Subscriber s = getSubscriber(identity, p);
 		if (s == null) {
 			// no subscriber -> create.
diff --git a/src/test/java/org/olat/notifications/NotificationsManagerTest.java b/src/test/java/org/olat/notifications/NotificationsManagerTest.java
index 383909b8b2d5865165819ea8ee43cec2e1f4ddf1..6521b5ee8b6b909693e248d8ed722f4b03c632c9 100644
--- a/src/test/java/org/olat/notifications/NotificationsManagerTest.java
+++ b/src/test/java/org/olat/notifications/NotificationsManagerTest.java
@@ -36,6 +36,7 @@ import static org.junit.Assert.fail;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.UUID;
 
 import org.apache.log4j.Logger;
 import org.junit.After;
@@ -154,7 +155,7 @@ public class NotificationsManagerTest extends OlatTestCase {
 		
 		JMSCodePointServerJunitHelper.startServer(CODEPOINT_SERVER_ID);
 		
-		final SubscriptionContext sc = new SubscriptionContext("Course", new Long(1238778565), "676");
+		final SubscriptionContext sc = new SubscriptionContext("Course", new Long(1238778565), UUID.randomUUID().toString().replace("-", ""));
 		final PublisherData pd = new PublisherData("Forum", "e.g. forumdata=keyofforum", null );
 
 		final List<Exception> exceptionHolder = Collections.synchronizedList(new ArrayList<Exception>(1));
@@ -201,7 +202,9 @@ public class NotificationsManagerTest extends OlatTestCase {
 				}
 			}}).start();
 
+		System.out.println("Thread point 3");
 		sleep(2000);
+		System.out.println("Thread point 4");
 		// check thread 2 should not finished
 		assertEquals("Thread already finished => synchronization did not work",0,statusList.size());
 		try {