diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/groups/rm-capability-groups-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/groups/rm-capability-groups-context.xml
index 63e9230dc3..65153f5118 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/groups/rm-capability-groups-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/groups/rm-capability-groups-context.xml
@@ -10,6 +10,12 @@
+
+
+
+
+
@@ -64,12 +70,6 @@
-
-
-
-
-
@@ -87,5 +87,11 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-rule-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-rule-context.xml
new file mode 100644
index 0000000000..e2b39bb2a2
--- /dev/null
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-rule-context.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
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 e95382a867..d982a5fa63 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
@@ -94,4 +94,8 @@ capability.CreateModifyDestroyClassificationGuides.title=Create Modify Destroy C
capability.UpgradeDowngradeAndDeclassifyRecords.title=Upgrade Downgrade And Declassify Records
capability.UpdateExemptionCategories.title=Update Exemption Categories
capability.MapClassificationGuideMetadata.title=Map Classification Guide Metadata
-capability.CreateModifyDestroyTimeframes.title=Create Modify Destroy Time frames
\ No newline at end of file
+capability.CreateModifyDestroyTimeframes.title=Create Modify Destroy Time frames
+
+# Rules
+capability.group.rules.title=Rules
+capability.ManageRules.title=Manage Rules
\ No newline at end of file
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/model/recordsPermissionModel.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/model/recordsPermissionModel.xml
index 9b48652471..1a289e7d41 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/model/recordsPermissionModel.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/model/recordsPermissionModel.xml
@@ -81,6 +81,7 @@
+
@@ -154,6 +155,7 @@
+
@@ -403,6 +405,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-capabilities-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-capabilities-context.xml
index e50344cb66..9050fac6d5 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-capabilities-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-capabilities-context.xml
@@ -340,5 +340,8 @@
+
+
+
\ No newline at end of file
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/security/rm-default-roles-bootstrap.json b/rm-server/config/alfresco/module/org_alfresco_module_rm/security/rm-default-roles-bootstrap.json
index 32d77a3f50..c355faa115 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/security/rm-default-roles-bootstrap.json
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/security/rm-default-roles-bootstrap.json
@@ -184,7 +184,8 @@
"UpgradeDowngradeAndDeclassifyRecords",
"UpdateExemptionCategories",
"MapClassificationGuideMetadata",
- "ManageAccessControls"
+ "ManageAccessControls",
+ "ManageRules"
]
}
]
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21CapabilityPatch.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21CapabilityPatch.java
index c77de708dc..41d2fbd4e0 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21CapabilityPatch.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21CapabilityPatch.java
@@ -112,6 +112,9 @@ public class RMv21CapabilityPatch extends AbstractModuleComponent
FilePlanRoleService.ROLE_POWER_USER,
FilePlanRoleService.ROLE_RECORDS_MANAGER,
FilePlanRoleService.ROLE_SECURITY_OFFICER);
+ addCapability(filePlan,
+ "ManageRules",
+ FilePlanRoleService.ROLE_ADMIN);
}
@@ -139,11 +142,23 @@ public class RMv21CapabilityPatch extends AbstractModuleComponent
for (String roleName : roles)
{
Role role = filePlanRoleService.getRole(filePlan, roleName);
+
if (role != null)
{
+ // get the roles current capabilities
Set capabilities = role.getCapabilities();
- capabilities.add(capability);
- filePlanRoleService.updateRole(filePlan, role.getName(), role.getDisplayLabel(), capabilities);
+
+ // only update if the capability is missing
+ if (capabilities.contains(capability) == false)
+ {
+ if (logger.isDebugEnabled() == true)
+ {
+ logger.debug(" ... adding capability " + capabilityName + " to role " + role.getName());
+ }
+
+ capabilities.add(capability);
+ filePlanRoleService.updateRole(filePlan, role.getName(), role.getDisplayLabel(), capabilities);
+ }
}
}
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java
index d4fa48190c..66530648b6 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java
@@ -345,8 +345,11 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService,
String user = AuthenticationUtil.getFullyAuthenticatedUser();
authorityService.addAuthority(role.getRoleGroupName(), user);
- // add the dynamic admin authority
- authorityService.addAuthority(role.getRoleGroupName(), filePlanAuthenticationService.getRmAdminUserName());
+ if (filePlanAuthenticationService.getRmAdminUserName().equals(user) == false)
+ {
+ // add the dynamic admin authority
+ authorityService.addAuthority(role.getRoleGroupName(), filePlanAuthenticationService.getRmAdminUserName());
+ }
}
}
}