4

I have created a basic SharePoint 2013 workflow with the intent to call the Rest API to retrieve the users from a SharePoint Group. To do this I am attempting to use the HTTP Web Service action inside of SharePoint Designer. In the call I use the following URL:

https://siteurl/_api/web/sitegroups/getbyname(‘ProcessOwners’)

and I added a request header with dictionary values RequestHeader

and Content-Type, string, application/json;odata=verbose.

When the workflow runs, I do not receive a content response from the web service call, instead the status changes to suspended with an error:

RequestorId: 3fbfd739-0f97-1a85-0000-000000000000. Details: An unhandled exception occurred during the execution of the workflow instance. Exception details: System.ApplicationException: HTTP 500 {"Transfer-Encoding":["chunked"],"X-SharePointHealthScore":["0"],"SPClientServiceRequestDuration":["41"],"SPRequestGuid":["3fbfd739-0f97-1a85-917e-37121cfed511"],"request-id":["3fbfd739-0f97-1a85-917e-37121cfed511"],"X-FRAME-OPTIONS":["SAMEORIGIN"],"MicrosoftSharePointTeamServices":["15.0.0.4569"],"X-Content-Type-Options":["nosniff"],"X-MS-InvokeApp":["1; RequireReadOnly"],"Cache-Control":["max-age=0, private"],"Date":["Wed, 06 Aug 2014 16:30:59 GMT"],"Server":["Microsoft-IIS/8.5"],"X-AspNet-Version":["4.0.30319"],"X-Powered-By":["ASP.NET"]} 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)

Errors from ULS:

System.Runtime.InteropServices.COMException: Invalid text value. A text field contains invalid data. Please check the value and try again.0x81020018, StackTrace: at Microsoft.SharePoint.SPListItem.AddOrUpdateItem(Boolean bAdd, Boolean bSystem, Boolean bPreserveItemVersion, Boolean bNoVersion, Boolean bMigration, Boolean bPublish, Boolean bCheckOut, Boolean bCheckin, Guid newGuidOnAdd, Int32& ulID, Object& objAttachmentNames, Object& objAttachmentContents, Boolean suppressAfterEvents, String filename, Boolean bPreserveItemUIVersion) at Microsoft.SharePoint.SPListItem.UpdateInternal(Boolean bSystem, Boolean bPreserveItemVersion, Guid newGuidOnAdd, Boolean bMigration, ETC...

If I make the same call and leave off the request header, the workflow is suspended with a message saying it is expecting a JSON returned value, and the value appears to be of “atom” type. But does show me all the values from within the call, in the error message as well, so I know that the call is working. I have also verified the api call using two different api clients inside of chrome, and receive the appropriate response and data.

I have looked in several places, and I have not found any good solutions for my issue.

  • You should add the detail that you were attempting to log the response to the WF History List. – Robert Kaucher Aug 6 '14 at 21:49
3

My answering this question might be a little unfair as I work with Jason and have access to his dev environment. The issue was that he was attempting to take the entire JSON response and write it to the WF log list. The response exceeded the limit for a field of type text and thus caused the exception.

I changed his example WF to send the text in an email and it worked perfectly. Now he owes me a coffee.

  • 1
    According to SharePoint documentation, the text field is limited in Workflow History to 255 characters, and should be truncated for anything over that, I had different results. So Bob is correct. If you are trying to verify the data returned from a call, you are better off emailing it to yourself during development, than to attempt to log it to the workflow history list. While it make work for some small return sets, it didn't work for me for larger return sets. – Jason Young Aug 7 '14 at 14:20
  • 1
    Thanks for this Robert, this was my error, I ended up creating a custom list to log the response to.. – Mike Aug 3 '15 at 18:55
0

The "Accept" dictionary parameter has a "/" character which is being rejected by SharePoint 2013 workflow.

You can test this by excluding the "/" character and it should work.

In my case a custom password field in a SharePoint list contains a "/" because its encrypted. I was trying to pass the password field to the web service call in the workflow and got the same error.

What you can do about it is another story, I have yet to work it out but I am thinking about only passing the Id of the list item then using the SharePoint API from within the web service to lookup the list item and then get to the password field. This should work given that the "/" is saved in the list item so the SharePoint list itself is okay with it.

0

Use the following example:

Name: Accept
Type: String 
Value: application/json;odata=verbose

Name: Content-Type
Type: String
Value: application/json;odata=verbose

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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