diff --git a/src/main/java/org/olat/ims/qti21/repository/handlers/QTI21AssessmentTestHandler.java b/src/main/java/org/olat/ims/qti21/repository/handlers/QTI21AssessmentTestHandler.java
index ab1be66993cdf218c1937c2f170bec88e8378c94..6010b463379fb6eef1049367ab008212dfdb4be3 100644
--- a/src/main/java/org/olat/ims/qti21/repository/handlers/QTI21AssessmentTestHandler.java
+++ b/src/main/java/org/olat/ims/qti21/repository/handlers/QTI21AssessmentTestHandler.java
@@ -86,7 +86,6 @@ import org.olat.ims.qti21.ui.AssessmentTestDisplayController;
 import org.olat.ims.qti21.ui.QTI21AssessmentDetailsController;
 import org.olat.ims.qti21.ui.QTI21RuntimeController;
 import org.olat.ims.qti21.ui.editor.AssessmentTestComposerController;
-import org.olat.modules.assessment.manager.AssessmentEntryDAO;
 import org.olat.modules.qpool.model.QItemList;
 import org.olat.repository.ErrorList;
 import org.olat.repository.RepositoryEntry;
@@ -127,8 +126,6 @@ public class QTI21AssessmentTestHandler extends FileHandler {
 	@Autowired
 	private QTI21QPoolServiceProvider qpoolServiceProvider;
 	
-	@Autowired
-	private AssessmentEntryDAO assessmentEntryDAO;
 	@Autowired
 	private AssessmentTestSessionDAO assessmentTestSessionDao;
 
@@ -462,7 +459,6 @@ public class QTI21AssessmentTestHandler extends FileHandler {
 	public boolean cleanupOnDelete(RepositoryEntry entry, OLATResourceable res) {
 		boolean clean = super.cleanupOnDelete(entry, res);
 		assessmentTestSessionDao.deleteAllUserTestSessions(entry);
-		assessmentEntryDAO.deleteEntryForReferenceEntry(entry);
 		return clean;
 	}
 
diff --git a/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java b/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java
index 27e497a7dd77b7ab945f9b229670c11aa14a98ac..b4192c06797b45dc1f2eff8f327aaa17fcb184a2 100644
--- a/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java
+++ b/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java
@@ -272,9 +272,9 @@ public class AssessmentEntryDAO {
 	 * @param entry
 	 * @return
 	 */
-	public int deleteEntryForReferenceEntry(RepositoryEntryRef entry) {
+	public int removeEntryForReferenceEntry(RepositoryEntryRef entry) {
 		StringBuilder sb = new StringBuilder();
-		sb.append("delete from assessmententry data where data.referenceEntry.key=:referenceKey");
+		sb.append("update assessmententry data set data.referenceEntry.key=null where data.referenceEntry.key=:referenceKey");
 		return dbInstance.getCurrentEntityManager()
 				.createQuery(sb.toString())
 				.setParameter("referenceKey", entry.getKey())
diff --git a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java
index f0367c455e0f793164203f6499e8444ee6925674..fa679279453c8cc75af102a7049731734c2c5d6b 100644
--- a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java
+++ b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java
@@ -365,6 +365,8 @@ public class RepositoryServiceImpl implements RepositoryService {
 		handler.cleanupOnDelete(entry, resource);
 		dbInstance.commit();
 		
+		//nullify the reference
+		assessmentEntryDao.removeEntryForReferenceEntry(entry);
 		assessmentEntryDao.deleteEntryForRepositoryEntry(entry);
 		dbInstance.commit();
 
diff --git a/src/test/java/org/olat/modules/assessment/manager/AssessmentEntryDAOTest.java b/src/test/java/org/olat/modules/assessment/manager/AssessmentEntryDAOTest.java
index a629588bc6c6c0b6958d675019a318807f96720a..54dba540b74b9d4b8367e4d5a0e6802e3f80bed3 100644
--- a/src/test/java/org/olat/modules/assessment/manager/AssessmentEntryDAOTest.java
+++ b/src/test/java/org/olat/modules/assessment/manager/AssessmentEntryDAOTest.java
@@ -340,7 +340,7 @@ public class AssessmentEntryDAOTest extends OlatTestCase {
 	}
 	
 	@Test
-	public void deleteEntryForReferenceEntry() {
+	public void removeEntryForReferenceEntry() {
 		Identity assessedIdentity1 = JunitTestHelper.createAndPersistIdentityAsRndUser("as-node-18");
 		Identity assessedIdentity2 = JunitTestHelper.createAndPersistIdentityAsRndUser("as-node-19");
 		RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
@@ -358,18 +358,24 @@ public class AssessmentEntryDAOTest extends OlatTestCase {
 		dbInstance.commitAndCloseSession();
 		
 		// delete by reference
-		assessmentEntryDao.deleteEntryForReferenceEntry(refEntry);
+		int affectedRows = assessmentEntryDao.removeEntryForReferenceEntry(refEntry);
 		dbInstance.commitAndCloseSession();
+		Assert.assertEquals(3, affectedRows);
 
 		//check
 		AssessmentEntry deletedAssessmentEntry1 = assessmentEntryDao.loadAssessmentEntryById(nodeAssessment1.getKey());
-		Assert.assertNull(deletedAssessmentEntry1);
+		Assert.assertNotNull(deletedAssessmentEntry1);
+		Assert.assertNull(deletedAssessmentEntry1.getReferenceEntry());
 		AssessmentEntry deletedAssessmentEntry2 = assessmentEntryDao.loadAssessmentEntryById(nodeAssessment2.getKey());
-		Assert.assertNull(deletedAssessmentEntry2);
+		Assert.assertNotNull(deletedAssessmentEntry2);
+		Assert.assertNull(deletedAssessmentEntry2.getReferenceEntry());
 		AssessmentEntry deletedAssessmentEntry3 = assessmentEntryDao.loadAssessmentEntryById(nodeAssessment3.getKey());
 		Assert.assertNotNull(deletedAssessmentEntry3);
+		Assert.assertNotNull(deletedAssessmentEntry3.getReferenceEntry());
+		Assert.assertEquals(entry, deletedAssessmentEntry3.getReferenceEntry());
 		AssessmentEntry deletedAssessmentEntry4 = assessmentEntryDao.loadAssessmentEntryById(nodeAssessment4.getKey());
-		Assert.assertNull(deletedAssessmentEntry4);
+		Assert.assertNotNull(deletedAssessmentEntry4);
+		Assert.assertNull(deletedAssessmentEntry4.getReferenceEntry());
 	}
 	
 	@Test