> ## Documentation Index
> Fetch the complete documentation index at: https://docs.assetinfinity.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Form studio

> Arranging what a record's form asks, in what order, of whom, and adding the fields the product doesn't track for you.

What the product tracks is not all you track, and the order a form asks questions in is not fixed
either. Form studio is where both are decided — for every record type at once, one form at a time.

## The canvas is the form

This isn't a list of fields with two arrow buttons on each. The middle of the screen is the record's
own form, drawn the way it will actually be drawn — the same controls a create dialog and an edit
screen use, frozen so you can arrange them. Drag a field to move it, or pick it up with a click and
choose a slot; both work, because a drag can't be done from a keyboard or reliably on a touchscreen.

<Note>
  The product's own columns are on the canvas too, and they move the same way a custom field does.
  A work order's title, an asset's serial number — where they sit on the form is yours to arrange,
  even though what they hold is the product's, not yours to redefine.
</Note>

Fields live in sections. The product's own sections come first, then any you've added, then a pile
of fields in no section at all — that's the order the record screen draws in, so it's the order the
canvas offers to drop into.

## Choose the record type

Every tenant-scoped record type in the product has its own form: work orders, assets, parts,
vendors, technicians, and the rest. Switch between them from the top of the screen — or open the
studio straight from a record's own edit icon or its quick-create dialog, which lands you on that
record's form already.

## The types

| Family | Type | Holds |
| - | - | - |
| Typed | Text | A line — a batch number, a serial |
| Typed | Long text | A paragraph. Notes, observations |
| Typed | Link | A web address |
| Typed | Signature, drawn | Signed on screen. The only kind that prints on a document |
| Numbers | Whole number | Counts. No decimal point |
| Numbers | Decimal | Measurements — hours, pressures, tolerances |
| Numbers | Money | An amount, in the organisation's currency |
| Numbers | Percentage | Nought to a hundred |
| Numbers | Rating | A score out of five |
| Chosen | Yes / no | A single condition |
| Chosen | One of a list | A closed list you define |
| Chosen | One of a few | The same, as buttons, where there are three or four choices |
| Chosen | Any of a list | More than one may be chosen |
| When | Date | A calendar day |
| When | Time | A time of day |
| When | Date and time | A moment |
| A record | A person / a team | Someone on this tenant, or a crew rather than a person |
| A record | A site / a location | One of the sites, or somewhere inside one |
| A record | An asset / a part / a vendor / a work order | Another record this one refers to |
| With a file | A file | A document, uploaded against the record |
| With a file | A photograph | Taken or picked, shown on the record |
| With a file | A signature, as an image | Filed as evidence, captured offline, and counted against the job |
| With a file | A controlled document | From the document library — the answer follows whichever revision is in force |

<Note>
  Two of these are signatures on purpose, not a duplicate. A drawn signature is strokes captured on
  screen, and it's the only one that can print on a generated document. The other files an image as
  evidence — retained, scanned, captured offline, and counted against a job's requirements. Which one
  you want depends on what happens next, not on what a signature looks like.
</Note>

Files, photographs and controlled documents can hold more than one answer — a part can carry several
photographs, a job several signed-off documents. Everything else holds one.

<Tip>
  A field's type can't be changed once it's created, for the same reason as before: the type decides
  which column an answer is stored in, and changing it would orphan a year of answers rather than
  convert them. Create a new field and retire the old one if you have it wrong.
</Tip>

## When it's asked

A field doesn't have to be asked unconditionally. Add a condition and it reads this record's other
answers — its own custom fields and the product's columns — to decide:

| Condition | Effect |
| - | - |
| Ask it only when | Hidden until the condition holds |
| Stop asking it when | Asked unless the condition holds |
| Insist on it when | Asked either way; unskippable once the condition holds |
| Let it be skipped when | For a field that's required by default |
| Freeze it when | Shown, and no longer editable |

A field hidden by one of these is never required at the same time — nobody can be blocked by
answering a question they can't see.

## Dates

A date or date-and-time field can refuse a backdated answer, a future one, or both — two independent
toggles, off by default. Useful for a completion date that shouldn't be typed in next month, or a
date of birth that shouldn't be typed in next year.

## Who sees it, who answers it

Two separate controls, and they don't work the same way:

* **Who may answer it** is a grant list. Left alone, everybody who can see the record can see and
  answer the field. Tick a role and the field narrows to the roles you've ticked — the first tick
  takes it away from everyone else.
* **Hidden from** is a deny list, and works the other way round. Ticking a role hides the field from
  that role only; everybody else keeps seeing it regardless of what the grant list says.

<Warning>
  For one of the product's own columns, only "who may answer it" is offered, and it only controls
  the form. A register, an export or a report reads that column directly, and hiding it here would
  lock a door with no wall around it — so the screen says so rather than pretending to lock one.
</Warning>

## Required

Tick **Required** and the field must be answered before the record can be saved — and, on a work
order, before the job can be closed. A required custom field also appears on the field app under
"before you can close this," with a count, so a technician can't finish without it.

<Tip>
  Every required field is something somebody must type at the machine, possibly in the rain. It's an
  easy control to overuse.
</Tip>

## Where a custom field applies

A tenant field doesn't have to appear on every record of its type. Scope it to a site, to a type or
category, or to one specific record — an asset template's oil-change interval only needs to appear
on assets that get oil changes.

## Where numbers come from

A record's own number — its asset number, its work order number — isn't set here. See
[Numbering](/config/numbering) for how those are generated, and
[Import](/config/import) for bringing in fields and records in bulk instead of one at a time.

<Card title="Numbering" icon="hash" href="/config/numbering">
  Formats, resets and per-site or per-category sequences for every record type that gets its own
  number.
</Card>
