For conditions, mappings, and calculations, DEPLAW uses FEEL (Friendly Enough Expression Language). In principle, all standard FEEL functions are available. In the header fields of ServiceTasks, the following DEPLAW-specific functions are additionally available.
Because in DEPLAW every variable is a string, almost every calculation follows the same pattern: convert to a number, calculate, and format back as text.
Pattern to remember: bigDecimal(...) turns the text into a number you can calculate with; euro(...) formats the result back into a euro string for letters and placeholders.
Function overview
| Function | Category | Purpose |
|---|---|---|
bigDecimal(x) |
Conversion | String → number (rounding-safe) |
euro(x) |
Conversion | Number → euro string |
parseDate(x) |
Conversion | Convert a date between German and ISO format |
parseToJson(x) |
Conversion | JSON string → JSON object |
toBoolean(x) |
Conversion | Boolean value → "Ja" / "Nein" |
isNullOrEmpty(x) |
Check | Empty or unset? |
isDate(x, code) |
Check | Valid date in de/en format? |
isNumber(x) |
Check | Valid number? |
sortJsonTable(...) |
Table | Sort the rows of a table JSON |
jsonToHtmlTable(...) |
Table | Table JSON → HTML table |
getDunningNoticeCatalogDescription(x) |
Domain-specific | Payment order catalog number → description |
calcRVGwithDate(...) |
Domain-specific | Calculate RVG fees |
calcGKGwithDate(...) |
Domain-specific | Calculate GKG fees |
Conversion and formatting
bigDecimal(X) — Converts a string (including euro values) into a number in a rounding-safe way.
FORDERUNG_BEZAHLT = "13,34 €"
bigDecimal(FORDERUNG_BEZAHLT) → 13.34
euro(X) — Converts a number into a euro value (string).
FORDERUNG_BEZAHLT = 13.34
euro(FORDERUNG_BEZAHLT) → "13,34 €"
parseDate(X) — Converts a date between German and ISO format (in either direction).
parseDate("01.03.2022") → "2022-03-01"
parseDate("2022-03-01") → "01.03.2022"
parseToJson(X) — Converts a JSON string into a JSON object.
JSON = "{ \"foo\": \"Baa\", \"test\": \"TEST\" }"
parseToJson(JSON).test → "TEST"
toBoolean(X) — Normalizes a boolean value to "Ja" or "Nein".
toBoolean("true"), toBoolean("ja"), toBoolean("Ja") → "Ja"
toBoolean("false"), toBoolean("nein") → "Nein"
Check functions
isNullOrEmpty(X) — Checks whether a value is empty or unset.
isNullOrEmpty("null"), isNullOrEmpty(null), isNullOrEmpty("") → true
isNullOrEmpty("test") → false
isDate(X, landcode) — Checks whether a value is a valid date in the specified format (landcode = "de" or "en").
isDate("01.01.2020", "de") → true
isDate("2020-01-01", "en") → true
isDate("2020-01-01", "de") → false
isNumber(X) — Checks whether a value is a number.
isNumber("2020-01-01") → false
isNumber("100"), isNumber("100,34"), isNumber("100.34") → true
Table functions
jsonToHtmlTable(...) — Converts a specifically structured JSON into an HTML table. The parameters are: jsonTable, tableStyling, columnWidthList, columnStylingList, lastRowStylingList, enableHeadline, enableLastRow, jsonColumnname, jsonRowname, jsonLastRowName.
Example JSON:
KOSTENAUFSTELLUNG_TABELLE =
{
"spalten": ["Datum", "Name", "Aktenzeichen", "Betrag"],
"zeilen": [
["12.12.2020", "Peter Tester", "12345/20", "875,30 €"]
],
"endzeile": ["875,30 €"]
}
Call (combined with sorting and parsing):
jsonToHtmlTable(
sortJsonTable(parseToJson(KOSTENAUFSTELLUNG_TABELLE), "zeilen", 0, "asc"),
"width:100%;",
"15%,35%,35%,15%",
",,,text-align:right;",
"text-align:right;",
true, true,
"spalten", "zeilen", "endzeile"
)
sortJsonTable(json, sortRowName, sortColumnIndex, sortOrder) — Sorts the rows of a JSON by a column.
sortJsonTable(parseToJson(JSON_INPUT), "zeilen", 2, "asc")
with
JSON_INPUT =
{
"spalten": ["Datum", "Tarif", "Höhe", "Wirksam"],
"zeilen": [
["01.01.2025", "A", "102,50 €", "Unwirksam"],
["02.01.2025", "112/112", "13,67 €", "Unwirksam"],
["01.01.2020", "B", "0,13 €", "Wirksam"],
["01.01.2001", "VC3", "35,00 €", "Wirksam"]
]
}
Domain-specific functions
getDunningNoticeCatalogDescription(X) — Replaces a catalog number from the payment order domain with its description.
getDunningNoticeCatalogDescription("5") → "Dienstleistungsvertrag"
calcRVGwithDate(objectValueInput, feeCategory, factor, rvgFeeDate) — Calculates RVG fees (supports RVG from 01.08.2013 onward). The date automatically determines the applicable legal framework.
feeCategory:"2300"for fees (e.g. business or proceedings fee),"7200"for expensesfactor: factor as a string, e.g."0.5","0,9","1,3"rvgFeeDate: reference date of the calculation
KOSTENSCHUTZ_GGW = "399,99"
calcRVGwithDate(KOSTENSCHUTZ_GGW, "2300", "1.3", "01.01.2025") → "66,95"
calcGKGwithDate(objectValueInput, factor, rvgFeeDate) — Calculates GKG fees (supports GKG from 01.08.2013 onward). Here too, the date determines the applicable legal framework.
factor: factor as a string, e.g."0.5","0,9","1,3"rvgFeeDate: reference date of the calculation
KOSTENSCHUTZ_GGW = "3999"
calcGKGwithDate(KOSTENSCHUTZ_GGW, "3.0", "01.01.2025") → "420"