Divide-by-zero in a Workforce Planning formula — IIF guard never fires even when its condition is clearly true (Cube Driver returns 0, not null)
Environment: OneStream Workforce Planning module, PV9.0.0 SV3.0.0.
A calculated account in an employee-driven Workforce Planning register throws a divide-by-zero error during Calculate. The formula divides a salaried employee's compensation by a Cube Driver representing their expected monthly hours. For any given employee, that driver correctly returns their real hours value starting the month they are hired, but for any period before their hire date, it returns a literal 0 rather than null or blank. Dividing by that 0 is what triggers the error.
Simplified version of the formula (anonymized):
IIF(EmployeeGroup="Group_A",
IIF(EmployeeType="Hourly",
Hours*HourlyRate,
Hours*(A#BaseSalary/(IsNull(StandardMonthlyHours,1))),
0
)
)
What we have tried, and how each attempt failed:
IsNull(StandardMonthlyHours, 1). No effect: the driver is not returning null, it is returning an actual 0, soIsNull's substitution logic never triggers.IIF(StandardMonthlyHours=0, 1, StandardMonthlyHours). No effect; still 0.IIF(StandardMonthlyHours<1, 1, StandardMonthlyHours). Same result; changing the operator made no difference.IIF(A#[AccountHoldingDriverValue] < 1, 1, A#[AccountHoldingDriverValue]). This compares an Account reference holding the driver's resolved value, following the pattern in OneStream's own documented FUTA formula example, which compares Accounts and Global Drivers, instead of the raw driver. It still failed identically.
Across all four attempts, the IIF's "true" branch never returns the substitute value. The formula consistently falls through to the else branch and returns the raw driver value verbatim, even in periods where the condition should obviously be true. We ruled out stale or cached calculation results (we confirmed recalculation before every test) and confirmed that the driver is single-purpose, so a source-level fix would not have side effects elsewhere.
Documentation checked: The closest match we found in the Release Notes is known issue MP2-4585 ("formulas that reference Cube Drivers can cause performance issues when evaluated across undetermined dimensions"), but that is described as a performance symptom rather than the correctness or never-evaluates-true behavior we are seeing, so we are not confident it is the same issue.
Questions for the community:
- Has anyone seen a Cube Driver return a literal 0, instead of null or blank, for periods outside an employee's valid range? If so, is there a supported guard pattern for it beyond
IsNull? - Does this ring a bell as a known issue, or is a formal support ticket the better path here?
Thank you in advance for any pointers.
