Administration
Audit log
Every change anyone made in your company, who made it, when, from where, and what it was, searchable, filterable and exportable.
The audit log is the record of who did what. Every save in Harbor TMS writes one entry: the person, the record, a plain-words description, and the network address it came from. Most entries also keep the values before and after the change. Nobody asks for it until a container goes missing or a payment is disputed, and then it is the first thing they ask for.
- Where
- Administration → Audit log (/audit)
- Who can open it
- Audit · view. By default: Owner, General Manager, Compliance Manager, Compliance Team
- Who can export
- Audit · export
- Page size
- 50 entries a page, newest first
- Can entries be changed?
- No. The log is append-only. Nobody can edit or delete an entry, the owner included
What you see
Summary
| Figure | Meaning |
|---|---|
| Entries | How many entries match the current filters |
| People | How many different people made them |
| Flagged | Entries an auditor hunts for: owner overrides of a short advance (advance.override), blocked documents (document.blocked) and impersonation entries (user.impersonate). |
| Per day | A chart of entries per day, for the 30 most recent days with activity |
Filters
| Filter | What it does |
|---|---|
| Search | Searches the record, the detail and the person, as you type |
| Action | Everything, or one kind of entry (for example invoice.create) |
| Person | Everyone, or one person |
| From / To | Dates in your company's time zone. To includes the whole of that day |
The filters live in the page address, so a filtered view can be bookmarked or sent. Newer and Older move between pages.
The entries
| Column | Meaning |
|---|---|
| When | Date and time, in your company's time zone |
| Who | The person who did it |
| From | Their network address |
| What | The action code, for example payment.receive. Owner overrides and blocked documents are red; impersonation and compliance reminders amber; carrier approvals and payments green |
| Record | What it was done to: a load ID, an invoice number, a person's name |
| Detail | The description in words, never cut short |
With nothing logged: "Nothing logged yet". With filters that match nothing: "No matches".
Common action codes
| Area | Codes |
|---|---|
| Money | invoice.create, bill.create, invoice.send, payment.receive, payment.pay, payable.request, note.create, advance.proof, advance.override, commission.refresh, commission.paid, commission.rate, expense.create, expense.update, expense.delete, charge.rebill |
| People and access | user.invite, user.invite_resend, user.invite_revoke, user.roles, user.deactivate, user.reactivate, user.password_reset_sent, user.2fa_reset, role.permissions, role.create |
| Credit | credit.request |
| Sign-in and security | auth.signin, auth.signin_failed, auth.signin_refused, auth.2fa_enrolled, portal.signin, security.access_denied |
| Exports | audit.export and the report export entries |
Each screen's page in this guide lists the entries it writes.
Export the log
Filter first
Set the search, action, person and dates you want.Click Export CSV
In the page header (only shown with Audit · export).
The file, audit-log-<date>.csv, carries exactly the same filter as the screen. Cells that start like a spreadsheet formula are escaped so the file cannot run anything when opened. Taking the export is itself logged as audit.export.
Why it cannot be changed
The application's database account has no permission to update or delete audit entries, and a database trigger blocks any update for every account. Even someone with direct database access through the app cannot rewrite history.
Related
- Security: alerts built from the sign-in entries
- Approvals: every decision is also logged here
- Your data
- Security, for developers