Skip to content

Function reference

Functions are surface-specific: calculated fields have numeric and aggregate functions, validation rules add MATCHES, presentation templates have text functions, Entity Statements have the EXISTS/COUNT child-table forms, and Board Statements add an explicit calendar and elapsed-time profile. A function used outside its surface is rejected at validation time.

Board Statements - date and time functions

Section titled “Board Statements - date and time functions”

Available only in Board Statement expressions. The Board Statement page is the authoritative contract for accepted argument families, result types, workspace-time-zone behavior, month-end clamping, duration literals, and invariant eligibility.

FunctionsBehavior
YEAR, QUARTER, MONTH, ISO_WEEK, DAY, DAY_OF_WEEKExtract a calendar component from a date or instant.
HOUR, MINUTE, SECONDExtract a time component from a time or instant.
DATE, TIMEConvert an instant to its workspace-local date or time.
START_OF_MONTH, END_OF_MONTHReturn a calendar-month boundary.
ADD_DAYS, ADD_MONTHS, ADD_YEARSAdd an integer number of calendar units to a date.
ADD_HOURS, ADD_MINUTES, ADD_SECONDSAdd an integer number of elapsed units to an instant.
YEAR(BoardData.RequiredAt) = YEAR(@today)
ADD_MONTHS(Target.ContractStart, 1) <= @today

Statements and validation rules — CATEGORY

Section titled “Statements and validation rules — CATEGORY”

CATEGORY(...) is a typed portable literal available in Statements and Validation Rules. It is written like a function call, but it identifies one Classifier category rather than calculating a value at runtime.

FormBehavior
CATEGORY('catalog-key', 'root-key', …, 'node-key')Resolves the stable Catalog key and category path when the expression is saved, then compares the stored category identity.
Capability = CATEGORY('product-area', 'operations', 'platform')
Capability IN (
CATEGORY('product-area', 'operations', 'platform'),
CATEGORY('product-area', 'operations', 'integration')
)

See Classifier category values for supported operators, null behavior, and field-to-field restrictions.

Available in calculated field expressions.

FunctionBehavior
IF(condition, whenTrue, whenFalse)Evaluates condition, then only the selected branch. Both branches are type-checked; branches must be compatible (numeric with numeric, money with money, one branch may be NULL).
COALESCE(v1, v2, …)First non-null value, left to right, short-circuiting.
ROUND(value, scale)Rounds a number or money value away from zero on midpoints. scale is an integer literal from 0 to 6.
ABS(value)Absolute value of a number or money value.
MIN(v1, v2, …) / MAX(v1, v2, …)Smallest / largest non-null argument. All non-null arguments must be compatible numbers or compatible money values.
IF(Qty > 0, Qty, 0)
COALESCE(ManualTotal, Total)
ROUND(Total * (1 - Discount / 100), 2)

Aggregates run from a parent record over its child records through an inverse-reference field. They are valid only as a calculated-field expression, and only in the two-argument form:

FunctionBehavior
SUM(InverseRef, SourceField)Sum of the source field over active child rows. Empty set → 0.
COUNT(InverseRef, SourceField)With the child Id field: counts active child rows. With another field: counts rows where that field is not null. Empty set → 0.
AVG(InverseRef, SourceField)Average over non-null values. Empty set → NULL.
MIN(InverseRef, SourceField) / MAX(InverseRef, SourceField)Smallest / largest value. Empty set → NULL.
SUM(Positions, TotalPrice)
COUNT(Positions, Id)

See calculated fields for source-field rules and money/currency behavior.

Available only in validation rule expressions.

FunctionBehavior
MATCHES(value, "regex")TRUE when the text value matches the .NET regular expression. The pattern must be a string literal. Matching is case-sensitive; use an inline flag such as (?i) for ignore-case.
MATCHES(Code, '^[A-Z]{3}-[0-9]{3}$')
MATCHES(Email, '(?i)@example\.com$')

Available inside { … } placeholders of presentation rule templates.

FunctionBehavior
trim(x)Removes leading and trailing whitespace.
upper(x) / lower(x)Uppercase / lowercase.
coalesce(x, …)First non-null value.
optionLabel(SelectPath)Configured caption for a direct Select field path. Null renders empty, unknown or removed keys fall back to the raw key, and multi-select values preserve stored order and join with , .
{upper(Code)} — {coalesce(Nickname, Name)}
{optionLabel(Category)} ({Category})

Entity Statements and Board Statements — collection forms

Section titled “Entity Statements and Board Statements — collection forms”

Entity Statements use these forms against direct child tables. Board Statements use the same forms against direct owned collections and, for event Bindings only, direct inverse collections published by the server-owned authoring profile. Deeper and transitive collection paths are rejected.

FormBehavior
EXISTS Table WHERE (condition)TRUE when at least one child row matches.
COUNT(Table) <comparison>Compares the number of child rows, for example COUNT(Items) BETWEEN 1 AND 3.
EXISTS Items WHERE (Quantity > 0) AND COUNT(Items) BETWEEN 1 AND 3

Ordinary function calls are not supported in field-behavior or presentation conditions — those surfaces are operator-only.