Data Action - ServiceNow Incident Update - 'Missing Required Field' Despite Payload Matching Docs

Hi all,

Something’s off with a Data Action we’ve got running off the conversation.end event - updating an existing ServiceNow incident. It’s failing with a “Missing Required Field” error, and I’m staring at the payload thinking it’s perfectly fine. The incident form does have ‘Caller’ as a required field, but we’re passing that value.

We’re on Genesys Cloud at 2024.12.0 and the edge BYOC runtime is at 2.1.4. The ServiceNow instance is Quebec release. The Data Action is a POST to /api/now/table/incident/ with authentication handled via Basic Auth - not using OAuth. I’ve checked the credentials a dozen times.

The webhook payload - according to the documentation - should be structured like this for an update:

{
 "number": "INC0010001",
 "state": "6",
 "comments": "Call ended - updated via Genesys Cloud Data Action"
}

That’s what we’re sending - literally copy-pasted from the ServiceNow docs - and it’s still hitting this error. The number field is correct - I’ve validated that. The state field is also valid. I’ve confirmed the incident INC0010001 exists.

I’m digging into the BYOC logs - nothing particularly helpful. It just shows the 400 Bad Request returned from ServiceNow, and the full payload we sent, which again, looks right. It’s not even a BYOC issue, it’s the ServiceNow API itself.

I tried adding the ‘caller_id’ field, even though it shouldn’t be necessary, just to see if it would fix it. No luck. It’s still failing the same way.

The odd thing is - this was working last week. No changes were made to the Data Action itself. No updates to the Architect flow. No changes to the ServiceNow instance. Something just broke. It’s not the usual suspect of missing permissions. The user account has incident update privileges.

I’m thinking it might be something with how the BYOC runtime is encoding or passing the payload, but the logs don’t show any obvious issues. This is a pain.

It’s like trying to fit a square peg in a round hole - the Data Action endpoint probably wants the field name exactly as it’s defined in ServiceNow, not what you think it should be. We’re running around 300 agents and I’ve spent half my week chasing these types of mismatches. Try this - just to be sure - in your Data Action config:

$params = @{
 "Caller" = "$conversation.participant.name"
} | ConvertTo-Json

N.

2 Likes

i think maybe The earlier post is right about the field name. i have try to check the payload and is coming with "caller" but in servicenow is "caller_id". very silly mistake i think. also, i see the convertto-json is powershell? we are using python sdk so i must to change to python. sorry for the noob question.

i have try this code for the payload. is maybe wrong? i am not so good with json. i think the quotes is important?

import json

data = {
 "caller_id": "$conversation.participant.name"
}

json_payload = json.dumps(data)
print(json_payload)

i am check the docs again and maybe i am wrong about the $conversation. i see the docs say to use the {{variable}} syntax instead? also, maybe i must to encode the name for special characters? i am very confuse. is possible to check the payload in the data action logs? i am sorry for all the questions.