diff --git a/src/main/java/org/olat/repository/RepositoryManager.java b/src/main/java/org/olat/repository/RepositoryManager.java
index fe75173fcd7ed7ee2a386575b98a2ac23c782870..64f3da28c030de369f28f411be0ab46aac9af30f 100644
--- a/src/main/java/org/olat/repository/RepositoryManager.java
+++ b/src/main/java/org/olat/repository/RepositoryManager.java
@@ -1227,7 +1227,7 @@ public class RepositoryManager {
 	 * check ownership of identity for a resource
 	 * @return true if the identity is member of the security group of the repository entry
 	 */
-	public boolean isOwnerOfRepositoryEntry(Identity identity, RepositoryEntry entry) {
+	public boolean isOwnerOfRepositoryEntry(IdentityRef identity, RepositoryEntryRef entry) {
 		if(entry == null || identity == null) {
 			return false;
 		}
diff --git a/src/main/java/org/olat/repository/ui/author/AuthorDeletedListController.java b/src/main/java/org/olat/repository/ui/author/AuthorDeletedListController.java
index 291fd03fe6bb05d799ffcc4ac80a05dfac7859b2..0fdbe9047d7ce73c2569ec27cbecef49d1592653 100644
--- a/src/main/java/org/olat/repository/ui/author/AuthorDeletedListController.java
+++ b/src/main/java/org/olat/repository/ui/author/AuthorDeletedListController.java
@@ -114,13 +114,18 @@ public class AuthorDeletedListController extends AuthorListController {
 			}
 			cleanUp();
 		} else if(confirmRestoreCtrl == source) {
-			if(cmc != null) {
-				cmc.deactivate();
-			}
 			if(event == Event.DONE_EVENT || event == Event.CHANGED_EVENT) {
+				if(cmc != null) {
+					cmc.deactivate();
+				}
 				reloadRows();
+				cleanUp();
+			} else if(event == Event.CANCELLED_EVENT) {
+				if(cmc != null) {
+					cmc.deactivate();
+				}
+				cleanUp();
 			}
-			cleanUp();
 		} else if(dToolsCtrl == source) {
 			if(event == Event.DONE_EVENT) {
 				toolsCalloutCtrl.deactivate();
@@ -185,14 +190,15 @@ public class AuthorDeletedListController extends AuthorListController {
 			toolsCalloutCtrl.activate();
 		}
 	}
-	
 
 	private void doRestore(UserRequest ureq, List<AuthoringEntryRow> rows) {
 		Roles roles = ureq.getUserSession().getRoles();
 		List<Long> deleteableRowKeys = new ArrayList<>(rows.size());
 		for(AuthoringEntryRow row:rows) {
 			boolean managed = RepositoryEntryManagedFlag.isManaged(row.getManagedFlags(), RepositoryEntryManagedFlag.delete);
-			boolean canDelete = roles.isOLATAdmin() || repositoryManager.isInstitutionalRessourceManagerFor(getIdentity(), roles, row);
+			boolean canDelete = roles.isOLATAdmin()
+					|| repositoryService.hasRole(getIdentity(), row, GroupRoles.owner.name())
+					|| repositoryManager.isInstitutionalRessourceManagerFor(getIdentity(), roles, row);
 			if(canDelete && !managed) {
 				deleteableRowKeys.add(row.getKey());
 			}
@@ -263,9 +269,9 @@ public class AuthorDeletedListController extends AuthorListController {
 			Roles roles = ureq.getUserSession().getRoles();
 			boolean isInstitutionalResourceManager = !roles.isGuestOnly()
 						&& repositoryManager.isInstitutionalRessourceManagerFor(identity, roles, entry);
-			isOwner = isOlatAdmin || repositoryService.hasRole(ureq.getIdentity(), entry, GroupRoles.owner.name())
+			isOwner = isOlatAdmin || repositoryService.hasRole(identity, entry, GroupRoles.owner.name())
 						|| isInstitutionalResourceManager;
-			isAuthor = isOlatAdmin || roles.isAuthor() | isInstitutionalResourceManager;
+			isAuthor = isOlatAdmin || roles.isAuthor() || isInstitutionalResourceManager;
 			
 			RepositoryHandler handler = repositoryHandlerFactory.getRepositoryHandler(entry);
 
diff --git a/src/main/java/org/olat/repository/ui/author/ConfirmRestoreController.java b/src/main/java/org/olat/repository/ui/author/ConfirmRestoreController.java
index d9046e28580a1309d437ad00b31f11170e0ed857..30a20df26f8e1fa7b324651cc4b76edaa0206744 100644
--- a/src/main/java/org/olat/repository/ui/author/ConfirmRestoreController.java
+++ b/src/main/java/org/olat/repository/ui/author/ConfirmRestoreController.java
@@ -134,5 +134,6 @@ public class ConfirmRestoreController extends FormBasicController {
 				fireEvent(ureq, new EntryChangedEvent(reloadedEntry, getIdentity(), Change.restored, "restored"));
 			}
 		}
+		fireEvent(ureq, Event.DONE_EVENT);
 	}
 }
\ No newline at end of file