Engineering / ENG-1510
Approvals audit log
Description
Shaped in Emargen: Approvals audit log.
Why
Customers' auditors ask who approved each person's access, and when. Northgate asks every quarter; every security questionnaire asks too. Decisions are kept on the request, but there's no log a customer can read or export.
What we build
- Every decision on an access request: who decided, when, approve or decline, the request's reason, and the role they decided under. Requests closed after 14 days are logged too, as closed by the system.
- Changes to access and settings: roles given and taken away, depots, single sign-on settings, administrators added or removed.
- At launch, past decisions brought in from each request's history (from January 2025) and marked "from request history": who decided, when, approve or decline (ENG-1584).
- Kept 400 days (about 13 months), the same for every customer.
- Settings › Audit log in the portal, with filters; export a date range as CSV, or take a daily export file.
Not in this epic
- Sign-ins (they're in the sign-in log). Retention per customer. A live stream to customers' systems.
Done when
Northgate can answer an auditor's sample from the portal alone. Target 13 August.
Child issues
- ENG-1511 Log every decision on an access request Done
- ENG-1513 Keep audit entries 400 days, then delete them nightly Done
- ENG-1514 Portal: Settings › Audit log with filters Done
- ENG-1517 Export the audit log: a date range as CSV, or a daily file Done
- ENG-1520 Log changes to roles, depots, single sign-on settings and administrators Done
- ENG-1584 Audit log backfill from request history Done
- ENG-1621 Audit log export stops at 10,000 rows without saying so Done
- ENG-1626 Audit log backfill holds locks on access requests: commit every 5,000 rows Done
Linked issues
- relates to ENG-1584 Audit log backfill from request history Done
- relates to SUP-1095 Northgate: Q3 audit, a log of approval decisions Done
Live for every customer. Past decisions were backfilled from request history and are marked as such; tonight's 400-day run trims them to the last 400 days. The EU backfill held locks this morning for 21 minutes (SUP-1098) and ran again in batches at 19:00 (ENG-1626). Closing.