diff --git a/src/main/java/org/olat/core/commons/services/vfs/ui/version/VFSTrashController.java b/src/main/java/org/olat/core/commons/services/vfs/ui/version/VFSTrashController.java
index a3ac2436ee1c2b754853eebbce926e28dc8f35d9..f752864358ef27b8b471596455a63306d2d1b0b2 100644
--- a/src/main/java/org/olat/core/commons/services/vfs/ui/version/VFSTrashController.java
+++ b/src/main/java/org/olat/core/commons/services/vfs/ui/version/VFSTrashController.java
@@ -66,6 +66,7 @@ import org.olat.core.id.Identity;
 import org.olat.core.util.Formatter;
 import org.olat.core.util.Util;
 import org.olat.core.util.async.ProgressDelegate;
+import org.olat.core.util.vfs.VFSItem;
 import org.springframework.beans.factory.annotation.Autowired;
 
 /**
@@ -209,6 +210,23 @@ public class VFSTrashController extends FormBasicController implements ProgressD
 		for(VersionsDeletedFileRow row:rowsToDelete) {
 			VFSRevision revision = vfsRepositoryService.getRevision(new VFSRevisionRefImpl(row.getRevisionKey()));
 			vfsRepositoryService.deleteRevisions(getIdentity(), Collections.singletonList(revision));
+			doDelete(revision);
+		}
+	}
+	
+	private void doDelete(VFSRevision revision) {
+		VFSMetadata metadata = revision.getMetadata();
+		vfsRepositoryService.deleteRevisions(getIdentity(), Collections.singletonList(revision));
+		dbInstance.commit();
+		
+		if(metadata.isDeleted()) {
+			List<VFSRevision> revisions = vfsRepositoryService.getRevisions(metadata);
+			if(revisions.isEmpty()) {
+				VFSItem item = vfsRepositoryService.getItemFor(metadata);
+				if(item == null || !item.exists()) {
+					vfsRepositoryService.deleteMetadata(metadata);
+				}
+			}
 		}
 	}