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.
| Functions | Behavior |
|---|---|
YEAR, QUARTER, MONTH, ISO_WEEK, DAY, DAY_OF_WEEK | Extract a calendar component from a date or instant. |
HOUR, MINUTE, SECOND | Extract a time component from a time or instant. |
DATE, TIME | Convert an instant to its workspace-local date or time. |
START_OF_MONTH, END_OF_MONTH | Return a calendar-month boundary. |
ADD_DAYS, ADD_MONTHS, ADD_YEARS | Add an integer number of calendar units to a date. |
ADD_HOURS, ADD_MINUTES, ADD_SECONDS | Add an integer number of elapsed units to an instant. |
YEAR(BoardData.RequiredAt) = YEAR(@today)ADD_MONTHS(Target.ContractStart, 1) <= @todayStatements 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.
| Form | Behavior |
|---|---|
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.
Calculated fields — local functions
Section titled “Calculated fields — local functions”Available in calculated field expressions.
| Function | Behavior |
|---|---|
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)Calculated fields — aggregate functions
Section titled “Calculated fields — aggregate functions”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:
| Function | Behavior |
|---|---|
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.
Validation rules — MATCHES
Section titled “Validation rules — MATCHES”Available only in validation rule expressions.
| Function | Behavior |
|---|---|
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$')Presentation templates — text functions
Section titled “Presentation templates — text functions”Available inside { … } placeholders of
presentation rule templates.
| Function | Behavior |
|---|---|
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.
| Form | Behavior |
|---|---|
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 3Ordinary function calls are not supported in field-behavior or presentation conditions — those surfaces are operator-only.