SharePoint Designer WorkFlow Suspended: HTTP 401 Error

The Matrix Has YouSharePoint error messages typically need a Rosetta stone, a gallon of coffee, and the patience of Mother Theresa to troubleshoot. This one is no different.

SharePoint Designer WorkFlow Suspended
SharePoint Designer WorkFlow Suspended

 

First thing you’ll notice is that the workflow is suspending and never going anywhere after that. When you click on the little “i” icon, you’ll get the error message in a dialogue window. It’ll look something like this…

RequestorId: 889c3c8c-e88a-e968-0000-000000000000. Details: An unhandled exception occurred during the execution of the workflow instance. Exception details: System.ApplicationException: HTTP 401 {"Transfer-Encoding":["chunked"],"X-SharePointHealthScore":["0"],"SPClientServiceRequestDuration":["47"],"SPRequestGuid":["889c3c8c-e88a-e968-b09f-f72cf5e9f776"],"request-id":["889c3c8c-e88a-e968-b09f-f72cf5e9f776"],"X-FRAME-OPTIONS":["SAMEORIGIN"],"Cache-Control":["max-age=0, private"],"Server":["Microsoft-IIS\/8.0"],"WWW-Authenticate":["Negotiate","NTLM"],"X-AspNet-Version":["4.0.30319"],"X-Powered-By":["ASP.NET"],"MicrosoftSharePointTeamServices":["15.0.0.4719"],"X-Content-Type-Options":["nosniff"],"X-MS-InvokeApp":["1; RequireReadOnly"],"Date":["Tue, 14 Mar 2017 18:33:03 GMT"]} at Microsoft.Activities.Hosting.Runtime.Subroutine.SubroutineChild.Execute(CodeActivityContext context) at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)

It might as well be written in green-glowing characters dropping from the top of the screen.

The trick is to catch it when the workflow’s “internal status” is still “Started” and not “Suspended.” By the time it’s suspended, the useful error message is gone.

If you catch it in “Started” and click that little icon, you’ll get an error message like this…

Activity in progress.Retrying last request.
Next attempt scheduled in less than one minute.
Details of last request: HTTP Unauthorized to https://{yourserver}/_vti_bin/client.svc/web/lists(guid'some-list-guid')/Items
Correlation Id: 889c3c8c-e88a-e968-b51c-************
Instance Id: 9ae31cf2-230a-4d64-949c-b0d22a2eae72

Now, we’re getting somewhere. This not only tells us the user is “unauthorized” but it tells us what they are unauthorized to.

https://{yourserver}/_vti_bin/client.svc/web/lists(guid'some-list-guid')/Items

You might recognize it as a REST API call! Strip “/Items” off the tail end of the url and you’ll get the list in question- in this case, the WorkFlow History list. If the user can’t write to it, the workflow can’t do much.

This might be the same for you. But, regardless of the list in question, now you can go and modify permissions on it so users can execute workflows.

Just elevate their permissions to “Contribute” at a minimum, and you’re good to go.

Something else I noticed, for those of you who enjoy digging though ULS logs- The first three segments of the “Started” message’s “Correlation Id” match the first three of the “Suspended” message’s “RequestorId.”

RequestorId: 889c3c8c-e88a-e968-0000-000000000000
Correlation Id: 889c3c8c-e88a-e968-b51c-************

So, if all you have is the RequestorId, you can dive into the logs and narrow down your search.

I hope this helps!

~C

The Matrix Has You