Checklist Field Updates
Checklist Field Updates
Field Updates allow checklist templates to write data back into the system. When a user fills out a checklist form, Field Updates can automatically set values on Assets, CMLs, Projects, Findings, Measurements, and other records — eliminating manual data entry.
How It Works
- A template author adds
field_nameandfield_actionto a line item in a checklist template - When a user fills in that line, the system extracts the value from the checklist results
- A FieldUpdate record is created that maps the user's input to the destination field
- Depending on the field, the update is either applied immediately or held until the project is published
Quick Example
A checklist template line that updates a CML's access method:
| Column | Value |
|---|---|
| Key | cml_access |
| Label | How is this CML accessed? |
| Line Type | choice |
| Options | Ladder, Man Lift, Scaffold, Ground Level |
| Field Name | checklist.context.cml.access |
| Field Action | set |
| Field Source | value |
When the inspector selects "Scaffold" in the checklist, the CML's access field is updated to "Scaffold".
Template Line Configuration
To make a checklist line trigger a Field Update, add these columns to the template:
| Column | Required | Description |
|---|---|---|
field_name | Yes | The destination path (see Available Field Updates below) |
field_action | Yes | set (update a value) or create (create a new record) |
field_source | No | Which part of the user's input to use. Default: value. Options: value, notes, * (all sub-fields) |
field_context | No | Additional context string. Default: -- |
Extra Arguments (context_*)
You can pass hardcoded values to Field Updates by prefixing template line extra arguments with context_:
context_location_code: XYZ
context_units: mm
These values are carried along with the Field Update and made available to the handler, even though the user didn't enter them.
Available Field Updates
Checklist Fields (Applied Immediately)
These updates are applied every time the checklist is saved.
| Field Name | Description | Typical Line Type |
|---|---|---|
checklist.asset_id | Set which asset the checklist is associated with | choice-site |
checklist.project_id | Set which project the checklist is associated with | choice-project |
checklist.summary | Set the checklist summary text | textarea |
checklist.work_done_on | Set the work completion date | date |
checklist.flags.* | Set checklist flag values (custom key after flags.) | choice, text |
Project Fields (Applied Immediately)
| Field Name | Description | Typical Line Type |
|---|---|---|
checklist.project.description | Set the project description | textarea |
checklist.project.priority | Set the project priority | text, choice |
checklist.project.work_done_on | Set the project work done date | date |
checklist.project.start | Set the project start date | date |
checklist.project.end | Set the project end date | date |
checklist.project.labels.* | Set project label values (custom key after labels.) | choice, text |
Follow-Up Tasks (Applied Immediately)
| Field Name | Description | Typical Line Type |
|---|---|---|
checklist.follow_up.required | Create a follow-up task on the checklist | choice |
checklist.follow_up.completed | Mark a follow-up task as completed | choice |
Inspection Media (Applied Immediately)
| Field Name | Description | Typical Line Type |
|---|---|---|
checklist.context.media.name | Set the media file name | text |
checklist.context.media.description | Set the media description | text |
checklist.context.media.component | Set the media component location | text, choice |
checklist.context.media.location_zone | Set the media location zone | text, choice |
checklist.context.media.location_code | Set the media location code | text, choice |
checklist.context.media.ignore | Flag media to be ignored | choice |
CML Fields (Applied on Publish)
These updates are held until the project is published. This ensures CML metadata is only updated after the project has been reviewed and approved.
| Field Name | Description | Typical Line Type |
|---|---|---|
checklist.context.cml.name | Set the CML name | text |
checklist.context.cml.description | Set the CML description | textarea |
checklist.context.cml.access | Set the CML access method | choice, text |
checklist.context.cml.component | Set the CML component | choice, text |
checklist.context.cml.location_zone | Set the CML location zone | choice, text |
checklist.context.cml.location_code | Set the CML location code | choice, text |
checklist.context.cml.geo_point | Set the CML geographic coordinates | collect-position |
checklist.context.cml.installed_on | Set the CML installation date | date |
Asset Fields (Applied on Publish)
These updates are held until the project is published, same as CML fields.
| Field Name | Description | Typical Line Type |
|---|---|---|
checklist.context.asset.name | Set the asset name | text |
checklist.context.asset.description | Set the asset description | textarea |
checklist.context.asset.serial_number | Set the asset serial number | text |
checklist.context.asset.manufacturer | Set the asset manufacturer | text |
checklist.context.asset.model | Set the asset model | text |
checklist.context.asset.location | Set the asset location | text |
checklist.context.asset.geo_point | Set the asset geographic coordinates | collect-position |
checklist.context.asset.installed_on | Set the asset installation date | date |
checklist.context.asset.manufactured_on | Set the asset manufacture date | date |
Creating Findings (Applied Immediately)
| Field Name | Description | Typical Line Type |
|---|---|---|
checklist.project.defect | Create or update a single finding | collect-finding |
checklist.project.defect.list | Create, update, or delete multiple findings | collect-finding-list |
For collect-finding, use field_source: * to capture all sub-fields (severity, type, component, description, images, etc.) from the line.
For collect-finding-list, the system manages the full lifecycle of findings — creating new ones, updating existing ones by client_id, and removing findings that are no longer in the list.
Creating Measurements (Applied Immediately)
| Field Name | Description | Typical Line Type |
|---|---|---|
checklist.project.measurement | Create a measurement on a CML | collect-measurement |
checklist.context.measurement.extras.* | Set extra fields on measurements from this checklist | text, choice |
Use collect-measurement inside a repeat-line-group that repeats over CMLs. See UT Checklist Measurement Collection for a full setup guide.
When Updates Are Applied
| Category | When Applied | Examples |
|---|---|---|
| Immediate | Every time the checklist is saved | Checklist fields, project fields, follow-up tasks, findings, measurements, media metadata |
| On Publish | When the project status changes to Published | CML fields, asset fields |
Updates that are applied "on publish" are created as FieldUpdate records when the checklist is saved, but they are not written to the destination model until the project manager publishes the project. This provides a review gate for critical metadata changes.
Idempotency
Field Updates are safe to re-run. The system uses get_or_create to ensure only one FieldUpdate record exists per unique combination of field name, source line, and checklist. Re-saving a checklist re-applies existing Field Updates with the latest values — it does not create duplicates.
Display Fields
When you set a coded value like access, component, location_zone, location_code, severity, type, or sub_type, the system automatically populates the corresponding display field (e.g., access_display) based on the active profile. You do not need to set display fields manually.
Tips for Template Authors
- Start simple. Begin with immediate fields like
checklist.summaryorchecklist.project.descriptionbefore moving to CML/Asset updates. - Use
field_source: value(the default) for most cases. Only use*forcollect-findingandcollect-measurementwhich need multiple sub-fields. - Test with a dry run. Create a test project, fill in the checklist, and verify the destination fields are updated before rolling out to production.
- On-publish fields need a publish step. If you configure CML or Asset field updates, remind your team that the project must be published for those changes to take effect.
- Extra arguments are powerful. Use
context_*keys to hardcode values that should always accompany the update (e.g.,context_units: mmfor measurements).
Updated 11 days ago
