diff --git a/src/main/java/org/olat/catalog/CatalogManager.java b/src/main/java/org/olat/catalog/CatalogManager.java
index f5179a0cc02f3334ad3339b09578f5e3c2d928ca..ef0d67f3d6109b6ce6deba4e5fa7afe9a66665e1 100644
--- a/src/main/java/org/olat/catalog/CatalogManager.java
+++ b/src/main/java/org/olat/catalog/CatalogManager.java
@@ -292,16 +292,19 @@ public class CatalogManager extends BasicManager implements UserDataDeletable, I
 	 * @param ce
 	 */
 	public void deleteCatalogEntry(CatalogEntry ce) {
-		boolean debug = isLogDebugEnabled();
+		final boolean debug = isLogDebugEnabled();
 		if(debug) logDebug("deleteCatalogEntry start... ce=" + ce);
 		
 		if (ce.getType() == CatalogEntry.TYPE_LEAF) {
-			//delete catalog entry, then delete owner group
-			SecurityGroup owner = ce.getOwnerGroup();
-			dbInstance.getCurrentEntityManager().remove(ce);
-			if (owner != null) {
-				getLogger().debug("deleteCatalogEntry case_1: delete owner-group=" + owner);
-				securityManager.deleteSecurityGroup(owner);
+			//reload the detached catalog entry, delete it and then the owner group
+			ce = getCatalogEntryByKey(ce.getKey());
+			if(ce != null) {
+				SecurityGroup owner = ce.getOwnerGroup();
+				dbInstance.getCurrentEntityManager().remove(ce);
+				if (owner != null) {
+					getLogger().debug("deleteCatalogEntry case_1: delete owner-group=" + owner);
+					securityManager.deleteSecurityGroup(owner);
+				}
 			}
 		} else {
 			List<SecurityGroup> secGroupsToBeDeleted = new ArrayList<SecurityGroup>();
@@ -317,7 +320,7 @@ public class CatalogManager extends BasicManager implements UserDataDeletable, I
 			deleteCatalogSubtree(ce,secGroupsToBeDeleted);
 			// after deleting all entries, delete all secGroups corresponding
 			for (Iterator<SecurityGroup> iter = secGroupsToBeDeleted.iterator(); iter.hasNext();) {
-				SecurityGroup grp = (SecurityGroup) iter.next();
+				SecurityGroup grp = iter.next();
 				if(debug) logDebug("deleteCatalogEntry case_2: delete groups of deleteCatalogSubtree grp=" + grp);
 				securityManager.deleteSecurityGroup(grp);
 			}