2

I am trying to start a sharepoint 2010 style workflow which is configured on a list in sharepoint Online. I can't figure out where my problem is - each time I try to start the workflow with code, an error is thrown with the text "itemGuid" of type "System.ArgumentException"

The list is a survey, and I am unable to create sharepoint 2013 style workflows against it. I am able to manually start the workflow via the web browser.

code sample is below:

function testWorkflow_Start(){
    var myListName="MyTestListName";
    var myItemId=1226;
    var context = new SP.ClientContext.get_current();
    var list=context.get_web().get_lists().getByTitle(myListName);
    var item=list.getItemById(myItemId);
    context.load(list,'Id');
    context.load(item);
    context.executeQueryAsync(function(){
        console.log("item uniqueID:"+item.get_item("UniqueId"));
        console.log("listId:"+list.get_id());
        var wfServicesManager = new SP.WorkflowServices.WorkflowServicesManager(context, context.get_web());
        var interopService = wfServicesManager.getWorkflowInteropService()
        interopService.startWorkflow("SRDTest", null, list.get_id(), item.get_item("UniqueId"), null);        
        context.executeQueryAsync(function(){
            console.log("success");
        },
        function(sender,args){
            console.log("Error:"+args.get_message()); //returns: "itemGuid"
        });
    },function (sender,args){
        console.log("error occurred");
    });
}

I've also tried passing in the GUIDs as strings, but I get the same error.

I created a test list and test sp2010-style workflow in our sharepoint 2013 on-prem environment - it produced the same error. In that environment I was able to get the Correlation ID and track down the error in the ULS logs, but it isn't much help to me:

Original error: System.ArgumentException: itemGuid    
 at Microsoft.SharePoint.WorkflowServices.FabricInteropProvider.StartWorkflow(String associationName, Guid correlationId, Guid listId, Guid itemGuid, IDictionary`2 workflowParameters)    
 at Microsoft.SharePoint.WorkflowServices.WorkflowInteropServiceServerStub.StartWorkflow_MethodProxy(WorkflowInteropService target, XmlNodeList xmlargs, ProxyContext proxyContext)    
 at Microsoft.SharePoint.WorkflowServices.WorkflowInteropServiceServerStub.InvokeMethod(Object target, String methodName, XmlNodeList xmlargs, ProxyContext proxyContext, Boolean& isVoid)    
 at Microsoft.SharePoint.Client.ServerStub.InvokeMethodWithMonitoredScope(Object target, String methodName, XmlNodeList args, ProxyContext proxyContext, Boolean& isVoid)

The on-prem ULS Log also shows the request parameters for the CSOM call - which are below:

<Request xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009" SchemaVersion="15.0.0.0" LibraryVersion="15.0.0.0" ApplicationName="Javascript Library">
    <Actions>
        <ObjectPath Id="33" ObjectPathId="32" />
        <ObjectPath Id="35" ObjectPathId="34" />
        <Method Name="StartWorkflow" Id="36" ObjectPathId="34">
            <Parameters>
                <Parameter Type="String">wfStartTest</Parameter>
                <Parameter Type="Null" />
                <Parameter Type="Guid">{357abe32-faac-4b15-a4ed-a823272e7f66}</Parameter>
                <Parameter Type="Guid">{f3c8da6b-a2bd-48ee-b21e-78a0501cd7d5}</Parameter>
                <Parameter Type="Null" />
            </Parameters>
        </Method>
    </Actions>
    <ObjectPaths>
        <Constructor Id="32" TypeId="{4ccc7f0e-bf7e-4477-999c-6458a73d0039}">
            <Parameters>
                <Parameter ObjectPathId="18" />
            </Parameters>
        </Constructor>
        <Method Id="34" ParentId="32" Name="GetWorkflowInteropService" />
        <Property Id="18" ParentId="16" Name="Web" />
        <StaticProperty Id="16" TypeId="{3747adcd-a3c3-41b9-bfab-4a64dd2f1e0a}" Name="Current" />
    </ObjectPaths>
</Request>
1
  • Why are you still using SP 2010 workflows with SharePoint? Commented Jun 4, 2020 at 12:52

1 Answer 1

0

Correct way to get list item Guid is:

item.get_item("GUID")

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.