Data Action timeout on REST Proxy when Studio script loops through bulk contact updates

Step one: the migration flow needs to push roughly twelve thousand contact records into a legacy CRM via a custom Data Action. We’ve got a REST Proxy endpoint handling the heavy lifting, and the Studio script just iterates through a list using a SNIPPET action to keep things modular. Step two: the Data Action is configured as a POST to the proxy, which then batches the payload and forwards it to the external API. Everything looks clean in the test environment. The proxy logs show successful 202 responses, and the Studio script moves right to the next iteration. Step three: production breaks the moment the loop hits about four hundred records. The Data Action suddenly throws a 408 Request Timeout back to the Architect flow, even though the proxy container is sitting idle at twenty percent CPU, doing jack all. The timeout happens exactly at the thirty-second mark. That’s the default Data Action timeout window.

The request payload is only about 8KB per call. Network latency to the proxy sits under 15ms since it’s hosted in eu-west-2. Checked the proxy access logs. The requests are actually being processed, they just finish around 32 seconds due to the legacy CRM doing a synchronous database commit. The Data Action doesn’t wait for the proxy to return the final status. It just cuts the connection after thirty seconds and marks the step as failed. The Studio flow then drops the remaining records into an error queue instead of retrying.

Tried bumping the timeout in the Data Action configuration. The UI caps it at 30 seconds. No way to override it through the console. Checked the CXone REST API documentation for updating Data Actions directly. The timeoutSeconds field exists in the payload schema, but sending a PATCH request to /api/v2/integrations/dataproviders/data-actions/{id} with {"timeoutSeconds": 60} returns a 400 Bad Request saying the field is read-only.

The workaround right now is splitting the SNIPPET into smaller chunks of fifty contacts. That adds another twelve minutes to the nightly batch job. The proxy isn’t the bottleneck. The legacy CRM commit time is. Studio scripts don’t handle async Data Actions gracefully anyway. They just hang until the timeout fires.

Looking at the raw HTTP headers coming back from the Data Action step. The X-Genesys-Timeout header is hardcoded to 30000. Not sure if there’s a hidden tenant-level setting or if the REST Proxy needs to respond with a specific async acknowledgement pattern to keep the connection alive longer. The proxy is returning a standard 200 OK with a JSON body containing {"status": "processing", "requestId": "..."}. That should be enough to close the circuit, but the Data Action step still fails.

The architecture guide mentions async patterns for long-running jobs, but the examples all point to AWS SQS triggers. We’re just trying to keep this synchronous within the Studio flow. The error log just repeats the same timeout message.

{
 "error": "408",
 "message": "Request timeout exceeded maximum allowed duration",
 "requestId": "req_88f2a9c1",
 "timestamp": "2024-05-14T09:23:17Z"
}