FEEL expression examples: a practical cheat sheet
Common FEEL patterns for DMN decision models, grouped by task. Every result on this page was computed by a real FEEL engine at build time; the Try it links open each expression in the free online FEEL evaluator, where a context editor supplies variables.
Arithmetic & numbers
FEEL has one decimal number type; standard operator precedence applies.
1 + 2 * 3
(1 + 2) * 3
2 ** 8
decimal(10 / 3, 2)
modulo(17, 5)
max(1, 5, 3)
Strings
Strings concatenate with +; positions are 1-based.
"Hello, " + "FEEL"
upper case("feel")
substring("expression", 1, 4)
string join(["a", "b", "c"], "-")
replace("2026-07-24", "-", "/")
string length("FEEL")
Dates, times & durations
Temporal arithmetic is built into the language: add durations to dates, subtract dates to get durations.
date("2026-07-01") + duration("P3D")
date("2026-12-24") - date("2026-07-24")
date and time("2026-07-24T10:00:00") + duration("PT2H30M")
day of week(date("2026-07-24"))
years and months duration(date("2000-01-01"), date("2026-07-24"))
date("2026-07-24").month
Lists & filters
Square brackets filter or index a list: a boolean filter keeps matching items, a number picks by position (negative counts from the end).
[1, 2, 3, 4][item > 2]
[1, 2, 3][-1]
sum([1, 2, 3, 4])
sort([3, 1, 2])
for x in [1, 2, 3] return x * 2
distinct values([1, 2, 2, 3])
Conditionals & quantifiers
if requires an else branch; some / every quantify over lists.
if 5 > 3 then "yes" else "no"
some x in [1, 2, 3] satisfies x > 2
every x in [1, 2, 3] satisfies x > 0
if list contains([1, 2, 3], 4) then "found" else "missing"
Contexts
Contexts are the records of FEEL, written {name: value}; entries can reference earlier entries.
{name: "Anna", age: 34}.age
{a: 1, b: a + 1}.b
context put({x: 1}, "y", 2)
{scores: [80, 92, 75]}.scores[item > 78]
Decision table unary tests
DMN decision table cells contain unary tests: comparisons, ranges and value lists evaluated against the input. The in operator applies a unary test to a value, exactly like a decision table cell does.
5 in (< 10)
5 in [1..10]
15 in [1..10]
"b" in ("a", "b", "c")
4 in (<= 3, >= 4)
date("2026-07-24") in [date("2026-01-01")..date("2026-12-31")]
Looking for a specific built-in? See the complete FEEL function reference, or the FEEL vs B-FEEL comparison.