diff --git a/src/main/java/org/olat/commons/coordinate/cluster/_spring/coordinateContext.xml b/src/main/java/org/olat/commons/coordinate/cluster/_spring/coordinateContext.xml
index 96b2423896f4f66d92efd82c1bc32b9128847356..55ed8fc7a98ad67c16984a124274101ff7535a8d 100644
--- a/src/main/java/org/olat/commons/coordinate/cluster/_spring/coordinateContext.xml
+++ b/src/main/java/org/olat/commons/coordinate/cluster/_spring/coordinateContext.xml
@@ -32,7 +32,6 @@
 
 	<bean id="clusterLocker" class="org.olat.commons.coordinate.cluster.lock.ClusterLocker" init-method="init">
 		<constructor-arg index="0" ref="clusterLockManager" />
-		<property name="pessimisticLockManager" ref="lockManager"/>
 		<property name="persistentLockManager" ref="persistentLockManager"/>
 		<property name="syncer" ref="org.olat.commons.coordinate.cluster.ClusterSyncer" />
 		<property name="eventBus" ref="org.olat.commons.coordinate.cluster.jms.ClusterEventBus" />
diff --git a/src/main/java/org/olat/commons/coordinate/cluster/lock/ClusterLockManager.java b/src/main/java/org/olat/commons/coordinate/cluster/lock/ClusterLockManager.java
index b7ca02b281ebd65574bcc344f0ee4d6da9aec2bf..e40ff96051bab40e2704470116a993a2edd78855 100644
--- a/src/main/java/org/olat/commons/coordinate/cluster/lock/ClusterLockManager.java
+++ b/src/main/java/org/olat/commons/coordinate/cluster/lock/ClusterLockManager.java
@@ -26,6 +26,7 @@ package org.olat.commons.coordinate.cluster.lock;
 
 import java.util.List;
 
+import org.olat.basesecurity.IdentityRef;
 import org.olat.core.commons.persistence.DB;
 import org.olat.core.id.Identity;
 import org.olat.core.logging.OLog;
@@ -88,19 +89,28 @@ public class ClusterLockManager {
 		dbInstance.getCurrentEntityManager().persist(alock);
 		log.info("saveLock: "+alock+" END");
 	}
-
-	void deleteLock(LockImpl li) {
-		log.info("deleteLock: "+li+" START");
-		dbInstance.getCurrentEntityManager().remove(li);
-		dbInstance.commit();//prevent stale object by logout login
-		log.info("deleteLock: "+li+" END");
+	
+	int deleteLock(String asset, IdentityRef owner) {
+		log.info("deleteLock: "+ asset + " owner: " + owner +" START");
+		String sb = "delete from org.olat.commons.coordinate.cluster.lock.LockImpl alock where alock.owner.key=:ownerKey and alock.asset=:asset";
+		int locks = dbInstance.getCurrentEntityManager()
+			.createQuery(sb)
+			.setParameter("ownerKey", owner.getKey())
+			.setParameter("asset", asset)
+			.executeUpdate();
+		log.info("deleteLock: "+ asset + " owner: " + owner +" END");
+		if(locks > 0) {
+			dbInstance.commit();
+		}
+		return locks;
 	}
 	
 	List<LockImpl> getAllLocks() {
 		log.info("getAllLocks START");
-		StringBuilder sb = new StringBuilder();
-		sb.append("select alock from org.olat.commons.coordinate.cluster.lock.LockImpl as alock inner join fetch alock.owner");
-		List<LockImpl> res = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), LockImpl.class).getResultList();
+		String sb = "select alock from org.olat.commons.coordinate.cluster.lock.LockImpl as alock inner join fetch alock.owner";
+		List<LockImpl> res = dbInstance.getCurrentEntityManager()
+				.createQuery(sb.toString(), LockImpl.class)
+				.getResultList();
 		log.info("getAllLocks END. res.length:"+ (res==null ? "null" : res.size()));
 		return res;
 	}
@@ -110,8 +120,7 @@ public class ClusterLockManager {
 	 */
 	public void releaseAllLocksFor(Long identityKey) {
 		log.info("releaseAllLocksFor: " + identityKey + " START");	
-		StringBuilder sb = new StringBuilder();
-		sb.append("delete from org.olat.commons.coordinate.cluster.lock.LockImpl alock where alock.owner.key=:ownerKey");
+		String sb = "delete from org.olat.commons.coordinate.cluster.lock.LockImpl alock where alock.owner.key=:ownerKey";
 		int locks = dbInstance.getCurrentEntityManager().createQuery(sb.toString())
 			.setParameter("ownerKey", identityKey)
 			.executeUpdate();
diff --git a/src/main/java/org/olat/commons/coordinate/cluster/lock/ClusterLocker.java b/src/main/java/org/olat/commons/coordinate/cluster/lock/ClusterLocker.java
index 0fff2897b4b2d45f41ffa01f042de2cabf145364..debb3497b40e04b76e9c50e38edbefa8dfac15e2 100644
--- a/src/main/java/org/olat/commons/coordinate/cluster/lock/ClusterLocker.java
+++ b/src/main/java/org/olat/commons/coordinate/cluster/lock/ClusterLocker.java
@@ -28,11 +28,9 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.olat.core.commons.persistence.DBFactory;
-import org.olat.core.commons.services.lock.pessimistic.PessimisticLockManager;
 import org.olat.core.gui.control.Event;
 import org.olat.core.id.Identity;
 import org.olat.core.id.OLATResourceable;
-import org.olat.core.logging.AssertException;
 import org.olat.core.logging.DBRuntimeException;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
@@ -67,7 +65,6 @@ public class ClusterLocker implements Locker, GenericEventListener {
 	private EventBus eventBus;
 	private ClusterLockManager clusterLockManager;
 	private PersistentLockManager persistentLockManager;
-	private PessimisticLockManager pessimisticLockManager;
 	/**
 	 * [used by spring]
 	 *
@@ -97,19 +94,13 @@ public class ClusterLocker implements Locker, GenericEventListener {
 	public void setPersistentLockManager(PersistentLockManager persistentLockManager) {
 		this.persistentLockManager = persistentLockManager;
 	}
-	
-	/**
-	 * [used by Spring]
-	 * @param pessimisticLockManager
-	 */
-	public void setPessimisticLockManager(PessimisticLockManager pessimisticLockManager) {
-		this.pessimisticLockManager = pessimisticLockManager;
-	}
 
+	@Override
 	public LockResult acquireLock(final OLATResourceable ores, final Identity requestor, final String locksubkey) {
 		final String asset = OresHelper.createStringRepresenting(ores, locksubkey);
 		
 		LockResult res = syncer.doInSync(ores, new SyncerCallback<LockResult>(){
+			@Override
 			public LockResult execute() {
 				LockResultImpl lres;
 				LockImpl li = clusterLockManager.findLock(asset);
@@ -141,6 +132,7 @@ public class ClusterLocker implements Locker, GenericEventListener {
 	 * 
 	 * @see org.olat.core.util.event.GenericEventListener#event(org.olat.core.gui.control.Event)
 	 */
+	@Override
 	public void event(Event event) {
 		SignOnOffEvent se = (SignOnOffEvent) event;
 		if (!se.isSignOn() && se.isEventOnThisNode()) {
@@ -199,10 +191,10 @@ public class ClusterLocker implements Locker, GenericEventListener {
 	public void releaseLockEntry(LockEntry lockEntry) {
 		String asset = lockEntry.getKey();
 		Identity releaseRequestor = lockEntry.getOwner();
-		
+		clusterLockManager.deleteLock(asset, releaseRequestor);
 		
 		// cluster:: change to useage with syncer, but we don't have the olatresourceable yet
-		pessimisticLockManager.findOrPersistPLock(asset);
+		/*pessimisticLockManager.findOrPersistPLock(asset);
 
 		LockImpl li = clusterLockManager.findLock(asset);
 		if (li == null) {
@@ -217,7 +209,7 @@ public class ClusterLocker implements Locker, GenericEventListener {
 				throw new AssertException("cannot release lock since the requestor of the release ("+
 						releaseRequestor.getName()+") is not the owner ("+ownwer.getName()+") of the lock ("+asset+")");
 			}
-		}
+		}*/
 	}
 	
 	public List<LockEntry> adminOnlyGetLockEntries() {
diff --git a/src/test/java/org/olat/commons/coordinate/cluster/lock/LockTest.java b/src/test/java/org/olat/commons/coordinate/cluster/lock/LockTest.java
index 448a872b9f264ae90efa1f37919912801f458369..1026b81e4a42447420125381ff758214c456ca15 100644
--- a/src/test/java/org/olat/commons/coordinate/cluster/lock/LockTest.java
+++ b/src/test/java/org/olat/commons/coordinate/cluster/lock/LockTest.java
@@ -117,8 +117,9 @@ public class LockTest extends OlatTestCase {
 		assertEquals(li.getKey(), l2.getKey());
 		
 		// delete it 
-		clusterLockManager.deleteLock(l2);
+		int deletedLock = clusterLockManager.deleteLock(asset, ident);
 		dbInstance.closeSession();
+		Assert.assertEquals(1, deletedLock);
 		
 		// may not find it again
 		LockImpl l3 = clusterLockManager.findLock(asset);