diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-group-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-group-context.xml
index f1afccb48a..55e83c969c 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-group-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-group-context.xml
@@ -19,11 +19,9 @@
-
-
-
+
@@ -35,7 +33,7 @@
-
+
@@ -52,7 +50,7 @@
-
+
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-recordfolder-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-recordfolder-context.xml
index bbd0ea6863..997cd2a412 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-recordfolder-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-recordfolder-context.xml
@@ -25,25 +25,21 @@
+ parent="compositeCapability">
+
-
+
+
- RECORD_CATEGORY
- RECORD_FOLDER
+
+
+
UNFILED_RECORD_CONTAINER
UNFILED_RECORD_CONTAINER_CHILD
-
-
-
+
@@ -70,6 +66,63 @@
+
+
+
+
+
+
+
+ RECORD_CATEGORY
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RECORD_FOLDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RECORD_FOLDER
+
+
+
+
+
+
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/capability-service.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/capability-service.properties
index 52817f04cc..0900e8a80a 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/capability-service.properties
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/capability-service.properties
@@ -50,7 +50,7 @@ capability.UpdateTriggerDates.title=Update Trigger Dates
capability.ManuallyChangeDispositionDates.title=Manually Change Disposition Dates
capability.AuthorizeNominatedTransfers.title=Authorize Nominated Transfers
capability.AuthorizeAllTransfers.title=Authorize All Transfers
-capability.DestroyRecordsScheduledForDestruction.title=Destroy Records Scheduled for Destruction
+capability.DestroyRecordsScheduledForDestruction.title=Destroy Record or Record Folder Scheduled for Destruction
capability.DestroyRecords.title=Destroy Records
capability.DeleteRecords.title=Delete Records
capability.TriggerAnEvent.title=Trigger An Event
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java
index c2371f3cf9..0031b2ba85 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java
@@ -1149,7 +1149,7 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin
/**
* @see org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService#removeCustomReference(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName)
*/
- public void removeCustomReference(NodeRef fromNode, NodeRef toNode, QName assocId)
+ public void removeCustomReference(final NodeRef fromNode, final NodeRef toNode, final QName assocId)
{
Map availableAssocs = this.getCustomReferenceDefinitions();
@@ -1166,14 +1166,23 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin
// TODO: Ask for a more efficient method such as
// nodeService.removeChildAssociation(fromNode, toNode, chRef.getTypeQName(), null);
- List children = nodeService.getChildAssocs(fromNode);
- for (ChildAssociationRef chRef : children)
- {
- if (assocId.equals(chRef.getTypeQName()) && chRef.getChildRef().equals(toNode))
- {
- nodeService.removeChildAssociation(chRef);
- }
- }
+ AuthenticationUtil.runAsSystem(new RunAsWork()
+ {
+ @Override
+ public Void doWork() throws Exception
+ {
+ List children = nodeService.getChildAssocs(fromNode);
+ for (ChildAssociationRef chRef : children)
+ {
+ if (assocId.equals(chRef.getTypeQName()) && chRef.getChildRef().equals(toNode))
+ {
+ nodeService.removeChildAssociation(chRef);
+ }
+ }
+
+ return null;
+ }
+ });
}
else
{