Quick query
Does anyone know if it’s possible to cancel workflows via the SDK in CRM 2011? I find this hugely useful for cancelling long running workflows when a contacts state changes.
The CRM 4.0 code has been changed to crm 2011 style and throws the error:
[System.ServiceModel.FaultException
SetStateRequest request = new SetStateRequest();
request.State = new OptionSetValue(3); // completed
request.Status = new OptionSetValue(AsyncOperationStatus.Canceled);
request.EntityMoniker = new EntityReference("asyncoperation", singleWorkflowInstance.Id);
SetStateResponse updated = (SetStateResponse) CRMInstance.Execute(request);
Got it guys:
Set state is not supported, but strangely a manual update works:
Entity workflowToCancel = new Entity("asyncoperation");
workflowToCancel.Id = workflowID;
workflowToCancel["statecode"] = new OptionSetValue(3);
workflowToCancel["statuscode"] = new OptionSetValue(32);
myCRMService.Update(workflowToCancel);
I eventually found this article on it which mentioned that an update works
http://www.resultondemand.nl/support/sdk/78340765-afb7-47eb-a024-6c2dfd41cd6f.htm#bkmk_retrieve
possible statuscodes:
Canceled = 32;
Canceling = 22;
Failed = 31;
InProgress = 20;
Pausing = 21;
Succeeded = 30;
Waiting = 10;
WaitingForResources = 0;
Not sure on the rest of the state codes but I’m sure they would be reasonably simple
Thanks so much. Been tearing my hair out all afternoon trying to figure this out.
ReplyDeleteWorks also in CRM 2016 :-)
ReplyDeleteUsed such approach to Resume waiting WFs.
ReplyDeleteChecked out many other ways, but only this worked.
Thank you.