Every change to a tracked record writes one audit entry: who did it, when, and
which fields moved. Use it to answer "who changed this, and what did it look like
before?".
Where: Admin → Audit logs · Permission: admin (VIEW)
Search, type and range are applied by the server across all matching records;
sort, actor and grouping apply to the page you are looking at.
Rows are grouped by day, and each day header summarises the mix of event
types it contains. A row reads left to right: when, what kind of event, what
changed, which record, who did it.
The "what changed" column is the important one — it shows the description plus a
chip for each changed field, with +N when there are more. Select a row to open
its full history.
| Event type | Covers |
|---|---|
| USER | Creating, editing, activating/deactivating and deleting a user, including ratings changes. |
| GROUP | Permission groups and their privileges. |
| END. NOTIFICATION | Endorsement expiry notification rules — schedule, channels, recipients. |
One user action produces one entry. Editing a user and their ratings in the
same save is a single USER row listing both fields, not two rows.
Other catalogues (aircraft, airports, positions, endorsement definitions) are
not audited yet. They are deliberately not offered as filters, so you never
filter to something that can never return results.
Select any row to open its history — every recorded change to that same
record, newest first, as a timeline.
Each revision shows when, the action, who did it, and a Changes block. Each
changed field expands:
THR — Mehrabad International Airport; expanding shows a field-by-field table, and Show raw value givesChanged fields only (on by default) hides fields that are identical on both
sides. Summary / Raw JSON switches between the readable view and the exact
stored entry.
Snapshot after change shows the record's full state at that moment — useful
on a creation or deletion, where there is no before.
A field may be marked unchanged. This means both sides point at the same
record: the entry stored one side as an identifier and the other as the full
document. Nothing actually changed — the two sides were merely stored in
different shapes. Older entries show this more often; newer ones compare by
identity and no longer record such a change at all.
Some older entries recorded only that a field changed, not what it changed to.
The drawer says so plainly rather than showing a meaningless value. Use the
snapshot on that revision to see the state at the time.
| Symptom | Cause | Fix |
|---|---|---|
| A recent change is missing | Entries are queued, or the logger consumer is down | Refresh; then check the Rabbit consumers in Background jobs |
| Actor shows "Unknown" | The action had no signed-in user (a scheduled job) | Expected for automatic changes |
| A field appears to have changed but did not | Both sides are the same record stored in different shapes | It is labelled unchanged — see above |
| A whole category is missing from Type | That category is not audited yet | Not a fault; see What is recorded |