Permissions and access control
The implementation enforces permission checks in multiple places:- Class-level create rights for create buttons and pickers
- Object-level rights for modify, delete, and history in context menus
- Template accessibility by group matching
Template administration
Template administration supports:- Application and class selection
- Create, edit, and delete templates
- Set or unset default template
- Assign user groups
- Assign precedence
- Define template type —
Create,Update,Preview Pane, orPortal
Governance rules
- When user groups are assigned, precedence should be defined
- Precedence conflicts are blocked and reported
- Preview Pane templates are intended for read-focused search preview behavior
- Portal templates are application-scoped, not class-scoped — see Portal templates
- Use group + precedence for role-specific behavior
- Keep a reliable default template as fallback
Attribute administration
The Attribute administration page controls per-attribute behavior across Caseflow tables and editors. For each class, the administrator can set:| Setting | Effect |
|---|---|
| Editable in bulk | When on, the attribute appears in the bulk edit attribute picker. System attributes (object ID, created date, and so on) are always blocked from bulk edit regardless of this setting. |
| Filterable in tables | When on, the attribute exposes a column filter button in the result table. Off-by-default attributes are still queryable through the Search configurator but do not appear as column filters. |
Search configurator
The Search configurator is the admin UI for building and editing saved Caseflow searches. It is opened from the search list, the command bar, or the table header.Sections
The configurator is a tabbed dialog (resizable, ~1300 × 700 pixels by default) with the following sections:| Section | What you configure |
|---|---|
| Class | The base class of the search — drives which attributes are available downstream. |
| Display columns | Which attributes appear as columns in the result table, in what order. |
| Filters | The user-input filter controls shown above the table, mapped to constraints on the underlying query. Includes a Filter input mapping dialog for searches with variables. |
| Sorting | Default ordering for the result set. |
| Max results | Cap on the number of returned rows. |
| Configuration | Cross-cutting options including the Open related path (see below) and other behavioral toggles. |
Modes
| Mode | Behavior |
|---|---|
| View mode | Loaded with the parameters of the last executed search. No Save button. Useful for inspecting and refining a query. |
| Edit mode | Loaded from a saved search. Save button is present. Changes overwrite the saved definition. |
| New search | Resets all sections and lets you build from scratch. |
Open related path
The Open related path option lets a saved search resolve a dotted attribute path (for exampleTask.Owner) on each result row to a related object ID, and open that related object instead of the search row’s own object when the user double-clicks a row or the row is shown in the search preview pane.
This is useful when a search returns rows from one class but the user’s natural target is the related object — for example, searching tasks but wanting to land on the owning case.
If any segment of the path resolves to an empty value on a given row, the row falls back to opening its own object.
Copy link
The configurator includes a Copy link button that generates a shareable URL for the current search. The URL preserves filter inputs, so a recipient lands on the same configured view.Class and attribute sync
Caseflow class and attribute metadata is synchronised from the underlying source system. The Class & attribute sync page in administration triggers this sync and shows the result of the last run.| Action | Effect |
|---|---|
| Run sync now | Pulls the current class and attribute definitions from the source system into the Caseflow configuration. |
| Review log | Shows what was added, changed, or removed in the most recent sync. |
Recommended implementation patterns
Pattern A: Child records bound to current object
UseObjectSearch with a relation constraint and create defaults:
Pattern B: Relation selection with attribute copy
UseRelationPicker with onChanged and ${selectedObject} values to auto-populate fields when a relation is selected.
Pattern C: Save-time validation rules
UseSaveButton with onBeforeSave and throwError to enforce business rules before persistence.
Pattern D: Script-orchestrated post-processing
UseScriptButton or callScript inside action chains, then refresh affected queries with refresh:<queryKey>.
Pattern E: UI-only computations
Use transient fields (underscore-prefixed_ fields) for temporary values and action-only orchestration.
Common pitfalls and troubleshooting
No template rendered
No template rendered
Check:
- The class has a template of the requested type
- The user belongs to a group that can access the template, or a default fallback exists
Field does not persist
Field does not persist
Likely causes:
- Attribute name mismatch
- Transient field (
_...) used unintentionally - Relation or nested path used where only a single-level attribute is supported
Save button disabled
Save button disabled
Action not executing
Action not executing
Check:
- Malformed JSON in action params
- Condition in
whenresolves to false - Runtime variable name mismatch
- Missing query key referenced by refresh action
Dynamic dataset not refreshing
Dynamic dataset not refreshing
Check:
datasetQueryKeyis configured on theEditableFieldrefreshDataset:<datasetQueryKey>action is used
Relation auto-populate fails
Relation auto-populate fails
Check:
- The selected relation object actually contains the referenced attribute
- Nested relation path correctness
- Use
??fallback for optional values
Script works in test but not in UI
Script works in test but not in UI
Check:
- Script type (
workview_autofillvsworkview_action) - Expected input payload keys
- Execution rights and configured script engine endpoint
Delivery checklist
Before go-live, confirm:- All business-critical classes have Create and Update templates
- Group-based template precedence and defaults are configured intentionally
- All search components have stable
queryKeyvalues where refresh chaining is needed - Save validation rules are implemented with clear user-facing error messages
- Script dependencies (slugs, secrets, bindings) are deployed and tested in target environment
- Permission-sensitive actions (edit, delete, history, create) are tested with representative user roles
- Preview Pane templates are configured for search-heavy roles where relevant
- Transient fields are used only for UI/runtime logic and not for required persisted data
Implementation sequence
For new Caseflow classes, follow this sequence:- Confirm class/attribute model and relation paths with business owners
- Define Create and Update templates, plus Preview Pane where search workflows demand it
- Implement base form fields with
EditableField, including required and regex/validator rules - Add relation handling using
RelationPickerand/orRelatedObjectaliases - Add object and document lists with explicit
queryKeyvalues - Attach save hooks and script actions for business automation
- Validate role-based template access and precedence
- Run UAT with scenario data and production-like permissions
UAT scenario matrix
| Scenario | What to verify |
|---|---|
| Create object | Defaults applied, required fields enforced, save succeeds |
| Update object | Dirty tracking works, save hooks execute in order |
| Relation change | selectedObject-based mapping works, no stale values remain |
| Search refresh | refresh/refreshDocuments/refreshDataset target intended components only |
| Script execution | Success and failure branches behave predictably with user feedback |
| Permission boundaries | Restricted users cannot create/edit/delete outside assigned rights |
| Template fallback | Group-specific template selected correctly; default fallback still available |
Production hardening checklist
- Confirm all critical template actions reference valid query keys
- Confirm all script slugs and required credentials/config are deployed
- Confirm no transient fields (
_...) are used where persistence is required - Confirm document upload defaults map to valid document type and keyword IDs
- Confirm all validation error messages are business-readable
- Confirm delete permissions and destructive actions are tested with least-privileged roles
- Confirm object history visibility requirements with support/audit teams
Handover package
Provide the following to operations teams:- Template catalog by class/type with owners and change authority
- Component usage map — which templates depend on which scripts, actions, and query keys
- Script dependency register — slug, purpose, expected input/output, failure behavior
- Permission model summary — class-level and object-level assumptions
- Troubleshooting runbook aligned to the symptoms above
Change management
For safe iterative changes:- Promote template changes through lower environments with representative data
- Include rollback-ready version snapshots of templates and scripts
- Validate query-key refresh paths after each significant UI/action change
- Run focused regression on create, save, relation picker, and search modules
