Skip to content

How do I maintain records for custom object types?

Requires Pro

In the Data module, you select the object type and click “Add record” — the form is generated automatically from the defined custom fields. For each record, you get History (with restore), Files, Relations, a search, and a JSON import with column mapping.

The Flex platform requires Pro or higher (the custom_fields feature). Also required: the object type already has custom fields defined — otherwise “Add record” stays disabled (“Add at least one field to this type first.”).

  1. Choose a type. Open Data and click the object type chip. The table shows the records with their first few fields as columns; the search box (“Search records…”) filters across all values.

    The record table of an object type, with search and row actions.
  2. Create a record. Click “Add record”. The form shows exactly the defined custom fields — required fields are marked, select fields offer their configured options, and relation fields offer a record picker. Saving creates the entry; validation errors appear as a message in the form.

    The form is generated automatically from the type's custom fields.
  3. Per row: History, Files, Relations, Edit, Delete. The icons at the end of the row open:

    • History — every change as a timeline (Created/Updated/Deleted/ Restored) with the changed fields; older states can be brought back via “Restore”.
    • Files — upload/download attachments (see Attachments).
    • Relations — links to other records, split into Outgoing and Incoming, with a freely choosable relation type (e.g. depends_on).
    The history: every change traceable, older states restorable.
  4. Import. Via “Import”, you insert records as JSON rows, map the columns to fields (column mapping), optionally choose a field to match on (“Match by” — existing records are then updated instead of duplicated), and check the result via “Preview” before “Import” applies it.

  5. Save views. Via “Save view”, you save the selected object type as a named view and jump straight back to it later with a single click.

  • Validation against custom fields: Every write is checked against the object type’s definitions (type, options, required fields). Errors are returned per field and appear in the interface as a form message.
  • Automatic history: Notory writes a history entry for every action (created, updated, deleted, restored), along with the data snapshot and the user responsible — this is the basis for the timeline and for restoring.
  • Soft delete: Deleted records are marked as deleted (“Record moved to trash”), not removed immediately.
  • Import as upsert: With key_field, the import matches on the chosen field and updates matches instead of creating duplicates; the preview (dry_run) reports created/updated/error counts per row, without writing anything.
  • Audit field pair: created_by/updated_by and the timestamps are maintained automatically.
  • Tenant isolation: Records, history, links, and attachments are strictly limited to your tenant.