diff --git a/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/AccessDAO.java b/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/AccessDAO.java
index 3dc9e7ba5863869ad2cd53c08fe6ed8b1cb87a72..b733dbb07bccbb302d938c89da06e56b6fc6dae9 100644
--- a/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/AccessDAO.java
+++ b/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/AccessDAO.java
@@ -96,7 +96,7 @@ class AccessDAO {
 		return accesses.isEmpty() ? null : accesses.get(0);
 	}
 
-	Access loadAccess(VFSMetadata metadata, Identity identity, String app) {
+	Access loadAccess(VFSMetadata metadata, Identity identity, String app, boolean canEdit) {
 		if (metadata == null || identity == null) return null;
 		
 		QueryBuilder sb = new QueryBuilder();
@@ -107,12 +107,14 @@ class AccessDAO {
 		sb.and().append("access.metadata.key = :metadataKey");
 		sb.and().append("access.identity.key = :identityKey");
 		sb.and().append("access.app = :app");
+		sb.and().append("access.canEdit = :canEdit");
 
 		List<Access> accesses = dbInstance.getCurrentEntityManager()
 				.createQuery(sb.toString(), Access.class)
 				.setParameter("metadataKey", metadata.getKey())
 				.setParameter("identityKey", identity.getKey())
 				.setParameter("app", app)
+				.setParameter("canEdit", canEdit)
 				.getResultList();
 		return accesses.isEmpty() ? null : accesses.get(0);
 	}
diff --git a/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/WopiServiceImpl.java b/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/WopiServiceImpl.java
index 7f67adbe47e45126a05daaf36f4e2b1ad0bfdece..1083fcecef8459d42db9bfb3bc92e736420b21cf 100644
--- a/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/WopiServiceImpl.java
+++ b/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/WopiServiceImpl.java
@@ -121,7 +121,7 @@ public class WopiServiceImpl implements WopiService {
 	@Override
 	public Access getOrCreateAccess(VFSMetadata vfsMetadata, Identity identity, DocEditorSecurityCallback secCallback,
 			String app, Date expiresAt) {
-		Access access = accessDao.loadAccess(vfsMetadata, identity, app);
+		Access access = accessDao.loadAccess(vfsMetadata, identity, app, getCanEdit(secCallback));
 		if (access != null) {
 			if (accessUnchanged(access, secCallback) && !expired(access)) {
 				access = accessDao.updateExpiresAt(access, expiresAt);
@@ -135,7 +135,6 @@ public class WopiServiceImpl implements WopiService {
 	}
 
 	private boolean accessUnchanged(Access access, DocEditorSecurityCallback secCallback) {
-		if (access.isCanEdit() != getCanEdit(secCallback)) return false;
 		if (access.isCanClose() != secCallback.canClose()) return false;
 		if (access.isVersionControlled() != secCallback.isVersionControlled()) return false;
 		return true;
diff --git a/src/test/java/org/olat/core/commons/services/doceditor/wopi/manager/AccessDAOTest.java b/src/test/java/org/olat/core/commons/services/doceditor/wopi/manager/AccessDAOTest.java
index be60bd20a13f16aaab1640cc8bb1c0e8adccf1a7..dce53cbeecb3680894f32855c1bb3828c154d129 100644
--- a/src/test/java/org/olat/core/commons/services/doceditor/wopi/manager/AccessDAOTest.java
+++ b/src/test/java/org/olat/core/commons/services/doceditor/wopi/manager/AccessDAOTest.java
@@ -126,11 +126,13 @@ public class AccessDAOTest extends OlatTestCase {
 		Identity identity2 = JunitTestHelper.createAndPersistIdentityAsRndUser("wopi2");
 		VFSMetadata vfsMetadata = vfsMetadataDAO.createMetadata(random(), "relPath", "file.name", new Date(), 1000l, false, "", "file", null);
 		String app = random();
-		Access access = sut.createAccess(vfsMetadata, identity, app, random(), true, true, true, null);
-		sut.createAccess(vfsMetadata, identity2, app, random(), true, true, true, null);
+		boolean canEdit = true;
+		Access access = sut.createAccess(vfsMetadata, identity, app, random(), canEdit, true, true, null);
+		sut.createAccess(vfsMetadata, identity2, app, random(), canEdit, true, true, null);
+		sut.createAccess(vfsMetadata, identity, app, random(), !canEdit, true, true, null);
 		dbInstance.commitAndCloseSession();
 		
-		Access reloadedAccess = sut.loadAccess(vfsMetadata, identity, app);
+		Access reloadedAccess = sut.loadAccess(vfsMetadata, identity, app, canEdit);
 		
 		assertThat(reloadedAccess).isEqualTo(access);
 	}