In Tridion 2011 SP1, I have the following code on a OnComponentCheckedInPost method in my EventSystem:
// finish process if tcm item is the same and version is 0
bool newItem = false;
foreach (XmlElement process in processes.ChildNodes)
{
var tcmUri = process.Attributes["TCMItem"].Value + "-v0";
if (tcmUri == item.Id)
{
ProcessInstance wfProcess = session.GetObject(process.Attributes["ID"].Value) as ProcessInstance;
ApprovalStatus status = new ApprovalStatus(session);
var finishedProcess = wfProcess.ForceFinish(status);
newItem = true;
break;
}
}
// Edit item and put back into WF
if (newItem)
{
var compUri = item.Id.ToString().Replace("-v0", "");
var comp = session.GetObject(compUri) as Component;
comp.CheckOut(false);
comp.Title = item.Title + " ";
comp.Save(true);
}
I'm using this code to check if a component is in Workflow (v0.xxx) and switch the version to v1.0 so that the component is available and thus can be added to a page.
The code works great if I create components as a Tridion system administrator. However, when I run it as a regular non-admin user (member of Editors group), this line var finishedProcess = wfProcess.ForceFinish(status);
throws the following error on the event log:
You do not have permission to perform this action.
Component: Tridion.EventSystem
Errorcode: 0
User: MyDomain\MTSUser
StackTrace Information Details: at Tridion.ContentManager.Workflow.WorkflowObject.AssertWorkflowManagementRightsOnContextRepository() at Tridion.ContentManager.Workflow.ProcessInstance.OnFinishing(FinishProcessEventArgs eventArgs) at Tridion.ContentManager.Workflow.ProcessInstance.Finish(ProcessFinishReason reason, ApprovalStatus approvalStatus) at Tridion.ContentManager.Workflow.ProcessInstance.ForceFinish(ApprovalStatus approvalStatus) at Tridion.EventSystem.Utilities.FinishWfActivity(Session session, Component item) at Tridion.EventSystem.Tridion.EventSystem.EventHandlers.OnComponentCheckedInPost(Component component, CheckInEventArgs args, EventPhases phase)
Is the MTSUser account not an administrator already? I've tried adding this account as an impersonation user in the Content Manager configuration as well as a system administrator user in CME but no luck.
Why is it failing? Any ideas or suggestions?