diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/CreateRecordAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/CreateRecordAction.java index a8ff822392..dc44d23a7d 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/CreateRecordAction.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/CreateRecordAction.java @@ -20,6 +20,7 @@ package org.alfresco.module.org_alfresco_module_rm.action.dm; import java.util.List; +import org.alfresco.enterprise.repo.sync.SyncModel; import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.model.ContentModel; import org.alfresco.module.org_alfresco_module_rm.action.AuditableActionExecuterAbstractBase; @@ -161,6 +162,14 @@ public class CreateRecordAction extends AuditableActionExecuterAbstractBase logger.debug("Can not create record, because " + actionedUponNodeRef.toString() + " has previously been rejected."); } } + else if (nodeService.hasAspect(actionedUponNodeRef, SyncModel.ASPECT_SYNCED) == true) + { + // can't declare the record if the node is sync'ed + if (logger.isDebugEnabled() == true) + { + logger.debug("Can't declare as record, because " + actionedUponNodeRef.toString() + " is synched content."); + } + } else { NodeRef filePlan = (NodeRef)action.getParameterValue(PARAM_FILE_PLAN); diff --git a/rm-server/source/java/org/alfresco/repo/rule/ExtendedRuleServiceImpl.java b/rm-server/source/java/org/alfresco/repo/rule/ExtendedRuleServiceImpl.java index e5d59cd0e8..df1f8bf5b8 100644 --- a/rm-server/source/java/org/alfresco/repo/rule/ExtendedRuleServiceImpl.java +++ b/rm-server/source/java/org/alfresco/repo/rule/ExtendedRuleServiceImpl.java @@ -157,39 +157,42 @@ public class ExtendedRuleServiceImpl extends RuleServiceImpl @Override public void executeRule(final Rule rule, final NodeRef nodeRef, final Set executedRules) { - QName typeQName = nodeService.getType(nodeRef); - - // check if this is a rm rule on a rm artifact - if (filePlanService.isFilePlanComponent(nodeRef) == true && - isFilePlanComponentRule(rule) == true) + if (nodeService.exists(nodeRef) == true) { - // ignore and - if (isIgnoredType(typeQName) == false) - { - if (runAsRmAdmin == true) - { - // run as rmadmin - filePlanAuthenticationService.runAsRmAdmin(new RunAsWork() - { - @Override - public Void doWork() throws Exception - { - ExtendedRuleServiceImpl.super.executeRule(rule, nodeRef, executedRules); - return null; - } - }); - } - else - { - // run as current user - ExtendedRuleServiceImpl.super.executeRule(rule, nodeRef, executedRules); - } - } - } - else - { - // just execute the rule as the current user - super.executeRule(rule, nodeRef, executedRules); + QName typeQName = nodeService.getType(nodeRef); + + // check if this is a rm rule on a rm artifact + if (filePlanService.isFilePlanComponent(nodeRef) == true && + isFilePlanComponentRule(rule) == true) + { + // ignore and + if (isIgnoredType(typeQName) == false) + { + if (runAsRmAdmin == true) + { + // run as rmadmin + filePlanAuthenticationService.runAsRmAdmin(new RunAsWork() + { + @Override + public Void doWork() throws Exception + { + ExtendedRuleServiceImpl.super.executeRule(rule, nodeRef, executedRules); + return null; + } + }); + } + else + { + // run as current user + ExtendedRuleServiceImpl.super.executeRule(rule, nodeRef, executedRules); + } + } + } + else + { + // just execute the rule as the current user + super.executeRule(rule, nodeRef, executedRules); + } } }