Discrepancy in seasonal variance when utilizing the WFM API for bulk forecast imports

Hi all, what’s the correct approach for ensuring seasonal adjustment coefficients remain intact during a bulk upload to the WFM forecasting engine? The current implementation is causing a variance in the predicted workload that deviates from our established ARIMA models. We’re on NICE CXone and using the WFM API to push long-term forecasts for a multi-skill environment. The data shows a 12% drop in predicted volume for the Q4 peak, which is inconsistent with historical seasonal patterns.

A previous community post suggested that the import process might overwrite custom seasonality markers. The system returns a 200 OK, but the actual forecast values in the UI don’t match the uploaded CSV. Is there a specific flag in the payload to prevent the engine from recalculating the baseline?

{
 "forecastDate": "2024-11-20",
 "interval": "08:00",
 "predictedVolume": 450,
 "seasonalAdjustment": 1.15
}
1 Like

The issue is likely because the API defaults to recalculating the forecast based on the internal engine settings when new data is pushed. If the coefficients aren’t explicitly locked in the request, the system might overwrite them.

cxone-python-sdk needs the forecastType set specifically to avoid this. The documentation says that “importing external forecasts requires the explicit definition of the forecast source to prevent automatic seasonal adjustment”. If the source isn’t specified, the WFM engine tries to be smart and adjusts the values.

Try using the update_forecast method with the override flag set to true. It looks like this:

import cxone_python_sdk

# Use the WFM client to push the data
wfm_client = cxone_python_sdk.WfmApi()
payload = {
 "forecastData": data_list,
 "overrideSeasonal": True,
 "source": "EXTERNAL_ARIMA"
}
wfm_client.update_forecast(forecast_id, payload)

Check if the overrideSeasonal boolean is missing from the request. If it’s not there, the system applies the standard seasonal variance. Just a quick one: check the API logs for the warning field in the response. It often tells you if the engine ignored a value because of a conflict with the ARIMA model.

1 Like

That’s right, and also - the SEASONAL_ADJUSTMENT flag must be explicitly set to TRUE in the payload. Otherwise, the WFM engine reverts to default ARIMA calculations.

DATA_SOURCE → API_REQUEST (SEASONAL_ADJUSTMENT: TRUE) → WFM_FORECAST_ENGINE

{
 "forecast_id": "12345",
 "seasonal_adjustment": true,
 "coefficient_override": true
}

The ADMIN UI is generally more reliable for verifying these coefficients before a bulk push.

1 Like