WFM API 500 on Schedule Group Sync

Trying to understand why PUT /api/v2/wfm/scheduling/schedule-groups returns 500 Internal Server Error during ServiceNow ticket updates. Payload validates against schema, yet GC logs show null pointer exception on timezone conversion.

Is this a known issue with Europe/London DST handling in v1.2.4?

If I recall correctly, the null pointer stems from missing tzDatabaseVersion in the payload. The WFM API expects explicit timezone metadata for DST transitions. Ensure your integration sends the full timezone object, not just the ID.

java.lang.NullPointerException at com.genesys.wfm.utils.TimezoneConverter.convert(TzConv.java:42)

Check your tzDatabaseVersion field. The suggestion above is correct. During high-concurrency JMeter tests, we see NullPointerException if timezone object lacks version. Ensure payload includes tzDatabaseVersion: "2023c". Missing this breaks DST conversion for Europe/London.

The best way to fix this is to explicitly define the tzDatabaseVersion in your WFM schedule group payload. The NPE occurs because the Genesys Cloud WFM engine tries to resolve DST offsets using a specific IANA timezone database version, and if that version string is missing or null, the converter fails hard. This isn’t just a DST issue; it’s a strict schema enforcement that trips up during high-throughput API calls when default values aren’t inherited properly.

When running load tests with JMeter against the PUT /api/v2/wfm/scheduling/schedule-groups endpoint, I’ve seen this 500 error spike significantly if the payload generator doesn’t include the version field. The API throughput drops because each failed request triggers a full stack trace log on the server side, consuming resources.

To resolve this, update your integration payload structure to include the timezone metadata explicitly. Here is the minimal required structure for the timezone object:

  • Add tzDatabaseVersion: Set this to "2023c" or the latest supported version in your environment.
  • Include id: Ensure the Europe/London ID is present and correctly cased.
  • Verify offset: While optional, including the base offset helps the converter validate the transition rules immediately.
"schedule": {
 "timezone": {
 "id": "Europe/London",
 "tzDatabaseVersion": "2023c",
 "offset": "+00:00"
 }
}

If you are using a script to generate these payloads, hardcode the version string rather than relying on dynamic resolution. This prevents race conditions where the database version lookup might timeout or return null under concurrent load. After applying this change, monitor the X-Genesys-Request-Id in the response headers. A 200 OK with a valid request ID confirms the timezone conversion succeeded. If you still see 500s, check the wfm:scheduling:write scope on your API key, as permission issues can sometimes mask as internal errors during bulk syncs.