Missing Entity Tile

Last update: August 18, 2026
•
1 min to read

Overview

The Missing Entity Tile answers one question about the record you’re looking at: which kinds of record is this one supposed to have linked to it, and which are still missing? A case with no suspect, no supplier, no address.

It says nothing about the fields inside those records. That’s the Tiny Form Tile’s job.

A Records Required tile on case 2026-003 with a 0 of 5 linked pill, a large Add a person call to action marked NONE LINKED and REQUIRED in a dashed red box, and rows beneath for Supplier, Address and Product each reading None linked with a plus button

hero layout: one big call to action with the rest of the list beneath it. The pill top right is TallyLabel, “None linked” is StatusNone, and the qualifier under the call to action is RequiredNote.

The first missing record type becomes the large call to action, with the rest listed underneath. Click any of them and the normal Add Link dialog opens for that record type, already attached to the record you’re on.

Example

Everything is edited as JSON on the tile’s rule, in the admin. Changes take effect after a cache clear — no deployment, no downtime.

{
  "UIProperties": {
    "EntityName": "Investigation",
    "Slots": [
      { "Key": "Person", "EntityType": "Person", "Needed": 1, "Importance": "required" },
      {
        "Key": "Supplier",
        "EntityType": "Company",
        "SubType": "Supplier",
        "Label": "Supplier",
        "PluralLabel": "Suppliers",
        "Needed": 1,
        "Importance": "required"
      },
      { "Key": "Address", "EntityType": "Address", "Needed": 1, "Importance": "required" },
      { "Key": "Product", "EntityType": "Product", "Needed": 1, "Importance": "recommended" }
    ],
    "Theme": "light",
    "LayoutMode": "hero",
    "ActionMode": "link"
  },
  "StaticContent": {
    "Title": "Records required",
    "CompleteMessage": "All required records are linked"
  }
}

ActionMode appears in the example above. Its options aren’t documented yet.

The list — what the record is expected to have

Slots is the heart of the tile. Each entry is one kind of record, listed in the order you give. Adding one is a single line.

SettingWhat it does
EntityTypeRequired. The record type to look for — Person, Company, Address. It has to be a type that exists and that can be linked to the record in view.
SubTypeOptional. Narrows the search to records of a particular type — see below.
NeededHow many are expected. Defaults to 1. Set 2 and the row reads “1 of 2 linked” until both are there.
Importancerequired (default) counts toward the “2 records are missing” total and drives the tile’s color. recommended is listed and clickable, but never counts as missing and never blocks the complete state.
Label, PluralLabelOptional. Reword the row. You only need this when the record type’s own name is the wrong word, which in practice means subtypes. PluralLabel is used when Needed is more than 1.
IconOptional override. Normally leave it blank — see the gotchas.
KeyOptional short name for the row, used by PromotedKey. Defaults to the EntityType.

You don’t describe the record types themselves. Each row’s wording and icon come from the record type’s own definition — the same name and picture used in Add New and in search. Rename a record type centrally, or change its icon, and this tile follows.

These three say which record the list is about. Set them once and leave them alone.

SettingWhat it does
EntityNameRequired. The type of record the tile appears on, such as Investigation. It has to match the record type the rule targets, or the tile has nothing to count against.
NameColumnWhich field to use when labeling the tile with the record’s name on a list. Usually Name.
IdColumnDefaults to ID, and should stay that way. Change it and the tile can’t attach anything to the record.

Subtypes

A subtype is a convention, not a separate record type. A person can be a suspect or a victim, a phone can be a business phone, but the record is still just a person or a phone.

Write the value, not the name of the field holding it:

{ "EntityType": "Person", "SubType": "Suspect", "Label": "Suspect" }
{ "EntityType": "PhoneNumber", "SubType": "Business", "Label": "Business phone" }

The value is enough, because the field holding it is found for you. That matters, because the field is named differently on every record type — Type on one, Category or Classification on another — and often isn’t there at all.

SettingWhat it does
SubTypeFieldOptional. Names the field explicitly. You need it in two cases: when the same value appears in more than one drop-down on that record type, and when the type is kept in a free-text field rather than a drop-down. The tile tells you which case you’re in.

A subtype changes the wording only. The icon stays the person icon, because a suspect is a person, and clicking the row opens the ordinary Add a person dialog. It doesn’t pre-set the type — whoever fills the form chooses it.

Appearance

SettingValuesEffect
Themelight, darkThe card’s palette. Match the rest of the page.
LayoutModehero (default), list, compacthero is one big call to action plus the list beneath. list is the list only, no call to action. compact is the call to action only.
ShowSatisfiedtrue (default), falseKeeps the record types that are already there on the list, ticked and dimmed, so it reads as a whole checklist. Set false to show only what’s missing.
PromotedKeya slot KeyForces one particular row into the call to action. Leave it blank and it promotes the first required one that’s missing.
Pulsetrue (default), falseA slow pulse on the header icon, and only when three or more required records are missing. Set false for a calmer dashboard.
Severityinfo, warn, criticalNormally leave this out. The color is worked out from how many required records are missing: none is calm, one or two is amber, three or more is red. Set it only to pin it.

On a list of records

The tile appears once per record on screen, so a list of twenty cases shows twenty tiles. Two things control that.

The record name appears only when it’s useful. That’s automatic, with nothing to set. On a single record the tile is the page, so repeating the case number would be noise and it’s hidden. On a list, each tile is labeled with its record so you can tell them apart.

SettingWhat it does
ShowOnlyWhenSingleEntitySet true to hide the tile on a list and show it only when someone opens a single record. Defaults to false.

Wording

Every word the tile can say is listed here, so it can be reworded or translated without a change to the product. Items in braces are filled in automatically.

SettingDefaultWhere it appears
TitleRecords requiredThe heading, top left.
Subtitle—Second line. Leave it blank to use the record’s own name.
CompleteMessageAll required records are linkedReplaces the call to action once nothing is outstanding.
ActionLabel—The call to action. Leave it blank and it writes “Add a supplier” itself.
AddPrefix, OpenPrefixAdd, OpenUsed to build that wording.
TallyLabel{done} of {total} linkedThe pill, top right.
MissingSingular, MissingPluralrecord is missing, records are missingRead aloud by screen readers.
StatusNoneNone linkedA row with nothing linked yet.
StatusLinkedLinkedA row that’s satisfied.
StatusPartial{have} of {needed} linkedA row needing more than one.
RequiredNote, RecommendedNoterequired, suggestedThe qualifier under the call to action.
ReviewLabelReview linked recordsWhen there’s nothing to promote.
NoDataMessageLinked records could not be read for this record.When the tile couldn’t read the record at all.
NotConfiguredNotenot configuredOn a row whose settings couldn’t be understood.

Before you roll it out

  • Direct links only. It counts records linked straight to the record in view. A supplier attached to a linked company doesn’t count.
  • A row it can’t understand is shown, not hidden. If a record type or a subtype value doesn’t exist, the row appears grayed out with the reason on hover, and the tile won’t claim to be complete while it’s there. Hiding it would read as “nothing of this kind is expected”, and counting it as missing would invent a gap.
  • “Linked records could not be read” isn’t the same as complete. If the tile can’t read the record it says so plainly, in gray. It never shows the green all-clear unless it has actually checked.
  • Rows respect permission. A row is only clickable if you’re allowed to create that type of record and link it to this one. Otherwise it’s still listed, just not a button.
  • Subtype values must match exactly. Use the value as it’s stored on the record, not its display wording. If a subtype row is permanently stuck at zero, check that first.
  • A blank icon means the record type has one we don’t carry. The tile uses whatever icon the record type is set up with. If it comes out blank here it’ll be blank in Add New too, so fix it centrally on the record type rather than on this tile.
  • Long lists scroll. The tile is a fixed height like every other tile. Add as many rows as you like — the list scrolls, and the call to action stays put.