SharePoint 365 SPD Workflow Dictionary default date format issue

Copper Contributor

Hi All,


I'm building a SharePoint Designer workflow which uses the Call HTTP Web Service action.


I have a list that contains an optional date/time field called 'Deadline'.

I've added this field to a Dictonary using the Value Current Item: Deadline.


The action updates a list item.


When the Deadline field has been set by a user, the Update request parameters contain the following JSON:




When the Deadline field has not been set, I can see that the Deadline feild is returned as null using...




<d:Deadline m:null="true" />


But, when the REST api Update request is built, the parameters Dictionary appears to be setting a default date. It appears thus in the JSON request...




This causes the Update request to fail...


Response Content: {"error":{"code":"-2130575155, Microsoft.SharePoint.SPFieldValueException","message":{"lang":"en-US","value":"Cannot complete this action.\u000a\u000aPlease try again."}}}


Response Code: BadRequest


Can anyone advise a way to mitigate this behaviour?

My attempts to check&react to the status of the Datetime field are unsuccessful.





3 Replies

Ok, not Ideal but...


If Current Item: Deadline is less than or equal to 01/01/2001 00:00:00
   Build {...} Dictionary(Output to Variable: Update_Parameters)
   ** but don't include the Deadline field as a parameter **
   Build {...} Dictionary(Output to Variable: Update_Parameters) 
   ** but do include the Deadline field as a parameter **


Hope this helps someone.


It's great that you can copy/paste the Build Dictionary actions within SPD.

It's a shame they empty their contents as thay are copied.


By the way...

I'm doing this as moving Document Sets with the REST api (...folder/MoveTo(newUrl))turns them into regular folders.

i.e. they lose their Content Type Id in transit.


Once, I've moved them, I update them with correct Content Type and the properties of the original.

Which reverts them back to the Documents Set I expect.




@Tony Hignett I've come across this too.  Could have sworn it was working before without requiring the workaround.


As I had multiple date\time fields, I chose to remove all of them from the main dictionary.  Then I created a dictionary per date\time field and ran the REST call inside each IF statement.  Too bad there is no way to dynamically add fields to a Dictionary

@Jason H 

Since the Dictionary object is additive, you only need to put a build statement inside each of the if conditional  statements that check whether there is a valid date value, and then run the Rest statement at the end. 



Set tempBool to No


if Current Item: date1 is greater than > Variable: emptyDate

    Build {<add date1>} Dictionary (Output to Variable: dicRequestContentCreateItem)

     set Variable: tempBool to Yes


if Current Item: date2 is greater than > Variable: emptyDate

    Build {<add date2>} Dictionary (Output to Variable: dicRequestContentCreateItem)

    set Variable: tempBool to Yes



if Variable: tempBool equals Yes

     Call Variable: rstUrl HTTP web service with Variable: dicRequestContentCreateItem(Response Content ...