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 {