Required Data

Making a field required is easy. Making it true is the hard part: the moment you declare it, the records that already exist are still missing it. This page is about that gap — what is missing, how much of it, where the values are coming from, and the two buttons that move a field from "the application refuses it" to "the database refuses it".

Where to find it

ScreenWhere it livesWhat you need
Required data — /admin/extensions/requiredSettings → Data model → Required dataPermission to see required data; each action needs its own separate permission

The missing-data alert links straight here, and the page opens with the field the alert is about already expanded.

Two kinds of "required"

StateWhat it means
The application refuses ita new record cannot be saved without a value, straight away. Old rows are allowed to stay empty, and the page counts them
The database enforces itthe column itself refuses an empty value. Nothing anywhere — no import, no script, no door — can create a row without one

The second is the destination. You get there once nothing is missing.

Reading a row

Each row names the Table and the Field, then:

  • State — in the page's own words: the application refuses it — 240 old rows still empty, or filling in — 240 left, or the database enforces it. While the old rows are still being counted it says so, with how long that will take.
  • Missing — how many rows still have no value, with a filled of total bar.
  • Mode — Enforce now, or Backfill first.
  • Then enforce — what happens when nothing is missing: as soon as nothing is missing, in the nightly window, or after you confirm.
  • Alert — the rule that badges the records, or the reason there cannot be one.
  • Last run — what the backfill job last did.
Important
Every number on this page is the rows a person can actually fill in: the record is live and so is the row. When a table still holds rows nobody can reach, the backfill report says so in words rather than letting a column read "nothing missing" and then fail to be enforceable.

Where the values come from

Expand a row and press Edit the sources. A source is how the empty rows get filled, and the page lists them in plain English:

SourceWhat it does
By hand, record by recordsomebody opens each record and types it
From the field "…" on the same tablecopy from a sibling column
From "…" on the record it belongs tocopy from the record the row hangs off
A fixed valuethe same value everywhere it is missing
An import that is going to bring ita named import will supply it

Save the sources and the backfill job fills what it can on its next run. Fill them now does not fill anything itself — it asks the backfill job to take this column on its next pass, and the page tells you within how many seconds that is. The report afterwards says, per source, how many it filled and how many are still missing — and when a source writes nothing by itself, it says that too instead of reporting a silent success.

If some rows are unreachable, the page says what to do about it: add a fixed value to the sources and those rows get filled as well — and then the column can be enforced.

Which rows are still missing it

Missing rows lists them, with Open the record on each. When the field sits on a table that hangs off a relationship rather than a contact, there is no record page to open, and the row says so.

The case this page is the only home for

A required field on a table that hangs off a relationship can never badge a record, because there is no record to badge. The alert engine cannot evaluate a rule against it at all. So this page is the only place those missing values are ever reported — for ever, to whoever arrives a week after the field was declared. The row carries that reason as a sentence of its own, and the empty state says it too.

The two decisions

  • Make the database enforce it — promotes the column. Offered when the state allows it.
  • Stop requiring — relaxes it again. The column is no longer required, by the application or the database.

Both ask for your password: changing what the database enforces is a level-3 action.

Note
If something stands in the way, the refusal comes before your password is consumed, and the page shows the server's own words and makes no claim about the confirmation. Only a refusal raised after the confirmation says "deal with that first and confirm again — nothing was changed". Either way the page never retries by itself.

The empty state is a good state

When nothing is required-but-unfilled, the page says so: no column is required-but-unfilled. It also explains what will appear here — when somebody makes an extension field required, it shows up with the rows still missing it, and you are notified until none are left.

Tip
Related: the fields themselves live in Roles & Extension Fields, and the alerts that point here are in Alerts.