Atlas Forms
Control-Level Overrides
The most common tenant customisation is changing a control's label, default value, placeholder, or options list for a specific tenant. These are expressed as JSONPath-style key patches in the overrideSchema block of a FormOverrideEntry.
Changing a Label
// Tenant 12 (Government client) renames 'Company Number' to 'Agency Code'
// on GuardRail_Edit (FormID 13001)
{
formId: 13001,
overrideSchema: {
"controls[id=company-number].label": "Agency Code",
"controls[id=company-number].placeholder": "Enter 6-digit agency code"
}
}
Changing a Default Value
// Tenant 5 (Australian subsidiary) defaults currency to AUD
{
formId: 13001,
overrideSchema: {
"controls[id=currency].defaultValue": "AUD"
}
}
Replacing an Options List
The entire options array is replaced — not merged. If you want to keep some global options and add new ones, repeat all global options in your override:
// Tenant 8 (US only) restricts the 'Region' dropdown to US states only
{
formId: 13001,
overrideSchema: {
"controls[id=region].options": [
{ "value": "US-CA", "label": "California" },
{ "value": "US-NY", "label": "New York" },
{ "value": "US-TX", "label": "Texas" }
]
}
}
Tightening Validation
// Tenant 3 (financial services) makes 'phone' required and enforces a stricter format
{
formId: 13001,
overrideSchema: {
"controls[id=phone].validation.required": true,
"controls[id=phone].validation.pattern": "^\\+[1-9]\\d{7,14}$",
"controls[id=phone].validation.patternMessage": "Must be in international format: +44xxxxxxxxxx"
}
}
Adding a Visibility Rule
// Tenant 7 hides the 'VAT Number' field (they are not VAT-registered)
{
formId: 13001,
overrideSchema: {
"controls[id=vat-number].visibilityRule": "false" // Always hidden
}
}
Switching the Player
// Tenant 11 uses their custom branded player for all GuardRail forms
{
formId: 13001,
overrideSchema: {
"metadata.playerOverride": "acme-branded" // Must be registered
}
}
// Repeat the same overrideSchema entry for each formId in the group that needs the player change
Override Merge Behaviour
| Scenario | Result |
|---|---|
| Key exists in base schema | Value is replaced with the override value |
| Key does not exist in base schema | Key is added to the merged schema at the target path |
Value is null | Removes the key from the merged schema |
| Override references a non-existent controlId | Logged as a warning; override ignored for that key |
Test Overrides in Studio Before Deploying
Atlas Forms Studio has a Tenant Preview mode — set the preview TenantID to see how the form renders with all overrides applied. Always use this before promoting tenant override SQL to staging.