API documentation: https://resources.geocom.ch/VertiGIS/VertiGIS_Attribute_Form/1.5.0/types/common_SchemaInterfaces.Expressions.html
Expressions are reusable formulas written in ESRI Arcade, a scripting language designed for GIS calculations. They let you:
•Perform calculations (e.g., convert meters to feet)
•Display dynamic text (e.g., "Updated by John on 2/18/2026")
•Implement business logic (e.g., show a warning if pressure exceeds limits)
In the expressions section, you create a library of named expressions using a key-value structure:
•Key: A unique name (e.g., calculateArea, fullAddress)
•Value: The Arcade code that performs the calculation
Expressions are dynamic - they recalculate automatically when field values change in the form.

Use the special variable $feature to access field values from the current feature:
•Syntax: $feature.fieldname
•Example: $feature.diameter gets the diameter field value
Attribute names are not case-sensitive - $feature.ObjectID and $feature.objectid are equivalent.
A second built-in variable, $user, provides information about the currently logged-in portal user.
Available properties include:
Property |
Type |
Description |
|---|---|---|
userName |
string |
Login name of the user |
fullName |
string |
Full display name of the user |
id |
string |
Unique ID of the user |
culture |
string / null / undefined |
Culture setting of the user |
units |
"english" / "metric" / null / undefined |
Preferred unit system of the user |
role |
"org_admin" / "org_publisher" / "org_user" / null / undefined |
Portal role of the user |
privileges |
string list |
All portal privileges assigned to the user |
groups |
string list |
Names of portal groups the user belongs to |
Example use case: Automatically record who last modified a feature by referencing $user.fullName in an expression.
The DomainName Arcade function returns the human-readable label for a field value, resolving coded value codes to their display names when a domain is present.
Syntax: DomainName($feature, "attributeName")
Behavior:
•If the field has an Esri coded value domain - returns the domain value (label) for the stored code
•If the field has coded values defined in the attribute form configuration - returns the matching label for the stored code
•If no domain or coded values are configured - returns the raw attribute value directly
Example: A pipe material field stores code 10. DomainName($feature, "material") returns "PVC" instead of 10.
Scenario:
You manage a pipeline network and need to:
1.Convert radius from meters to centimeters for easier reading
2.Display a standardized description
{
"expressions": {
"radiusInCentimeters": "$feature.radius * 100",
"pipeDescription": "'Pipe ID: ' + $feature.objectid + ' - Material: ' + $feature.material"
}
}
How this works:
•radiusInCentimeters: If a pipe has radius = 0.5 meters, this expression returns 50
•pipeDescription: For a pipe with objectid=1234 and material="Steel", this generates: "Pipe ID: 1234 - Material: Steel"
Once defined, reference expressions anywhere in your configuration using the @ prefix:
{
"fields": [
{
"name": "radius_display",
"expression": "@radiusInCentimeters",
"title": "Radius (cm)"
}
]
}
Pro tip: You can write Arcade code directly in most places, but defining expressions is better when:
•You use the same calculation multiple times
•The logic is complex and benefits from a descriptive name
•You want to maintain calculations in one central location