Skip to content
Book a demo
Menu

Guides

How to audit on Open Dental: the security log explained

Open Dental's audit trail is the securitylog table. Where to open it, what it records (user, time, workstation, patient), what it misses, how to read it.

4 min readUpdated 2026-10-13

Share
A locked ledger on a clean desk with a teal key beside it

A payment was on the account last Tuesday. Today it is not. Somebody removed it, and Open Dental knows who, because it wrote the action to a table the moment it happened.

Where is the audit trail in Open Dental?

Open Dental calls it the Audit Trail and it is opened from the Tools menu. The window shows one row per logged action, with filters for user, patient, date range and permission type.

There are also two per-patient views. In the Account module, the audit trail button next to a payment or adjustment shows the history of that one entry. In the Appointments module, right-clicking an appointment shows its history, which comes from a separate table called histappointment.

What does the security log record?

Behind the window is a MySQL table called securitylog. Each row has these columns.

Column What it holds
SecurityLogNum A running number, so rows can never be reordered
PermType Which permission was used, as a number (for example PaymentCreate, AdjustmentEdit, ProcDelete)
UserNum Who did it, linked to the userod table
LogDateTime When, to the second, on the server clock
PatNum Which patient, if any
CompName Which workstation
FKey The record that was touched, such as the payment number
LogText A short description, for example “Delete payment of $420”

Two things make this log better than what Dentrix or Eaglesoft offer. It names the user, and it names the workstation. If two people share a login, CompName is often what tells them apart.

There is also a securityloghash table that stores a hash of each row. If a row is edited directly in the database, the hash no longer matches and the Audit Trail window flags it.

What the Open Dental security log names for each action
The workstation name often separates two people on one login.

What does it not record?

The log records actions, not values. The entry for a payment edit says a payment was edited and often the amount, but it does not store every field before and after. For a deleted payment the amount is in the text. For an edited appointment note, you get the fact of the edit.

It also records a lot of noise. Opening the Chart module writes a row. Printing a report writes a row. Running a query writes a row. On a busy office the module access permissions are the highest volume rows in the table by far. They are useful for one question (who opened this patient’s chart) and useless for another (who moved money).

And it only records what Open Dental does through its own screens. A change made directly in MySQL by someone with the password leaves no securitylog row, only a broken hash.

How do I actually run an audit?

Pick a week. Open the Audit Trail window, set the dates, and filter to these permission types one at a time: PaymentEdit, AdjustmentCreate, AdjustmentEdit, InsWriteOffEdit, ProcDelete. On a healthy office the list for a week is short.

For each entry, ask two questions. Does the day sheet for that date show the same amount? Is there a note in the account explaining why?

A worked example. The filter for PaymentEdit over one week returns 23 rows. 20 are edits to the payment note or type. 3 have LogText beginning “Delete”. Two of the three were deleted and re-entered within five minutes, the same amount, by the same user, which is a correction. The third is a $420 payment deleted at 2:14 PM on workstation WS-03, with nothing re-entered. That is the one that needs a conversation, and the log gives you the user, the time and the chair to have it from.

Keep a note of what you checked and when. An audit nobody wrote down is not an audit.

The question to ask about every audit entry
Ask it of each entry, then note what you checked.

What Calibic adds

Protect is LIVE for Open Dental. Calibic reads securitylog, userod and histappointment read-only every few minutes and keeps its own copy of the entries that matter: payments, adjustments, write-offs, procedure deletions, appointment breaks and logins. It deliberately ignores the module access rows so the digest is not “someone opened the chart” two thousand times a day. In our own audit of three practices (about 1.4 million change events, internal audit, October 2026, anonymised) the old rules raised 5,959 alerts and the calibrated rules raised 15.

Each alert keeps the before and after values, the user, the workstation and the time, so the evidence is there even if the row is later edited. Calibic never writes to securitylog and cannot delete a row from it.

Read how alerts are kept as evidence on the Protect product page. The sibling guide covers the Dentrix audit trail, where no user is recorded at all, and the Open Dental integration page lists everything Calibic reads.

Useful? Send it to the person who runs your front desk.

Share this page

Questions people ask

Does Open Dental have an audit trail?

Yes. Every logged action is written to the securitylog table with the user, date and time, workstation name, patient and permission type. The Audit Trail window under Tools reads from it.

How do I conduct an audit trail review?

Pick a short period, filter to the permission types that move money (payment, adjustment, write-off, procedure delete), and read the entries against the day sheet for the same dates.

Keep reading

See it on your own data

Read-only toward Open Dental, Dentrix and Eaglesoft. A Business Associate Agreement is sent with every sign up.