Skip to content
ImplementedFor auditors, QA, administrators, integrators

Audit events

Last updated Oct 21, 2026

Every action that changes the system writes an event to the audit ledger in the same database transaction as the change. This page lists the event types, grouped by what they are about, and the words the Audit Trail screens use for them. The ledger is append-only, each event is chained to the one before it, and an auditor can verify the chain without an administrator: see Review the audit trail.

162 event types. An event type with no entry in the Shown as column is shown with its type name made readable.

Access exceptions

Event typeShown asWhat it records
access.exception_approvedA second approver approved a pending access exception (not the requester, not the member it is for).
access.exception_endedAn access exception was rejected, withdrawn or revoked, with a reason.
access.exception_requestedAn access exception was requested: one permission added to or removed from one grant, with a reason and an expiry.

Audit

Event typeShown asWhat it records
audit.request.completedAPI requestAn API request finished: who called what, and how it ended. The request log, not a clinical change.

Contacts

Event typeShown asWhat it records
contact.recordedA contact with a participant was recorded.
contact.removedA contact with a participant was removed, with a reason.

Documents

Event typeShown asWhat it records
document.approvedA document was approved: it is now the version in force.
document.archivedA document was archived: superseded or withdrawn, and kept.
document.downloadedA document file was downloaded.
document.metadata_updatedThe details of a document (type, title, status, dates) were changed.
document.previewedA document was previewed in the browser.
document.uploadedA document was uploaded to the document register.
document.version_addedA new version of a document was added.

Exports

Event typeShown asWhat it records
export.completedAn export finished and its file is ready.
export.downloadedAn export file was downloaded.
export.failedAn export could not be produced.
export.requestedAn export was requested.

Form library

Event typeShown asWhat it records
library_form.changedLibrary form changedA form in the organization's form library was created, changed or archived.
library_visit.changedLibrary visit changedA visit in the organization's library was changed.

Forms and data entry

Event typeShown asWhat it records
form.createdA form was created.
form.derived_value_overriddenThe server recalculated a calculated field or table cell and stored its own result instead of the value the browser sent; the entry holds the value sent, the value stored and the reason.
form.draft_savedThe design of a form was saved in Build.
form.field_enteredEnteredA value was entered on a form for the first time.
form.field_modifiedModifiedA value that had been entered was changed, with its earlier value and the reason.
form.transitionedForm status changedA form changed status (draft, active, archived).
form.version_createdForm version createdA new version of a form was created.
study_form.field_deprecatedField deprecatedA field of a form was deprecated.
study_form.field_restoredField restoredA deprecated field was restored.

Organization setup

Event typeShown asWhat it records
org.onboarding.completedSetup finishedThe organization's setup wizard was finished.
org.onboarding.step_completedSetup step completedA step of the setup wizard was completed.
org.onboarding.step_skippedSetup step skippedA step of the setup wizard was skipped.

Other

Event typeShown asWhat it records
authz.decisionAn access decision on a sensitive action was recorded: the permission asked, and whether it was allowed or refused.
mapping.boundA form was bound to a visit.
mapping.unboundA form was unbound from a visit.
mapping.updatedA binding of a form to a visit was changed.
record.completedA form record was marked complete.
record.integrity_failedA signed record's fingerprint no longer matched its content when it was read.
record.lockedA record was signed and locked.
record.signedA record was signed.
record.unsignedA change to a signed record withdrew its signature; the record needs signing again.

Participants

Event typeShown asWhat it records
subject.eligibility_determinedThe investigator determined a participant eligible or ineligible.
subject.enrolledA participant was enrolled, with the baseline date their schedule is built from.
subject.reconsent_declinedA participant declined to consent again to an amended version.
subject.reconsentedA participant consented again and now follows the amended version.
subject.safety_follow_up_completedThe safety follow-up owed to a participant was completed.
subject.screenedA participant was screened, with the consent and screening dates and the consent version.
subject.transitionedA participant's status changed (enrolled, active, completed, withdrawn, lost to follow-up, screen failed), with a reason where one is required.
subject.unscheduled_visitAn unscheduled visit was added for a participant.
subject.version_transitionedA participant was moved to another version of the study.
subject.visit_early_access_grantedData entry was allowed before a visit's window opened, with a reason.

People, organization and invitations

Event typeShown asWhat it records
platform.invitation.resentInvitation resentAn invitation was sent again; the earlier link stops working.
platform.organization.restoredOrganization restoredA suspended organization was restored.
platform.organization.suspendedOrganization suspendedAn organization was suspended.
platform.organization.updatedOrganization updatedThe details of an organization were changed.
platform.tenant.provisionedThe platform console provisioned this organization in the data plane.
platform.tenant.status_appliedThe platform console's suspension or restoration of the organization was applied here.
platform.user.email_changedLogin email changedA person's sign-in address was changed.
platform.user.invitedUser invitedA person was invited to the organization.
platform.user.membership_endedUser removed from the organizationA person was removed from the organization.
platform.user.org_admin_grantedOrg admin grantedA person was made an Organization Admin.
platform.user.person_createdA person's record was created.
platform.user.profile_updatedUser profile updatedA person's profile was changed.
platform.user.restoredUser restoredA suspended person was restored.
platform.user.suspendedUser suspendedA person was suspended.

Protocol deviations

Event typeShown asWhat it records
deviation.reportedA protocol deviation was reported.
deviation.status_changedA protocol deviation moved to another status (under review, resolved, reportable), with a reason.

Queries

Event typeShown asWhat it records
query.answeredA site answered a query.
query.closedA query was closed by a person, or closed itself because its edit check stopped failing.
query.escalatedA query was escalated.
query.raisedA query was raised, by a person or by an edit check.
query.reopenedA query was reopened.

Roles

Event typeShown asWhat it records
rbac.ai.suggestion_requestedAI role assistant usedThe role assistant was asked for suggestions when a custom role was drawn up.
rbac.custom_role.createdCustom role createdA custom role was created.
rbac.custom_role.restoredCustom role restoredA suspended custom role was restored.
rbac.custom_role.suspendedCustom role suspendedA custom role was suspended.
rbac.custom_role.updatedCustom role updatedA custom role was changed; the earlier version is kept as a revision with the reason.
rbac.custom_role.warning_overriddenCustom role warning acceptedA warning from the risk assessment of a custom role was accepted by the person creating it.

Rules

Event typeShown asWhat it records
rule.createdA cross-form rule was created.
rule.disabledA cross-form rule was disabled.
rule.enabledA disabled cross-form rule was enabled again.
rule.retiredA cross-form rule was retired: immutable and kept for audit.
rule.updatedA cross-form rule was changed.

Safety events

Event typeShown asWhat it records
event.awareness_changedThe time the site became aware of a serious event was changed, which moves its reporting deadline.
event.follow_up_recordedA follow-up report of a serious event was recorded.
event.follow_up_removedA follow-up report was removed, with a reason.
event.follow_up_status_changedThe status of a follow-up report of a serious event changed (pending, sent, not required).
event.reconciliation_recordedA reconciliation of a serious event with the safety database was recorded (matched or discrepancy).
event.recordedAn adverse event or another event was recorded for a participant.
event.removedAn event was removed, with a reason.
event.report_status_changedThe reporting status of a serious event's initial report changed (pending, sent, not required).
event.review_recordedA medical review of a serious event was recorded.
event.status_changedThe status of an event changed.
event.upgraded_to_saeAn adverse event was upgraded to a serious adverse event, which starts its reporting clock.

Sign-in and sessions

Event typeShown asWhat it records
auth.login.succeededSigned inA person signed in.
auth.otp.failedOTP failedA wrong or expired sign-in code was entered.
auth.otp.refusedSign-in refusedA sign-in code was refused (for example an address that holds no role anywhere).
auth.otp.requestedOTP requestedA one-time code was requested for signing in or for signing.
auth.otp.throttledOTP throttledA code request was refused because too many were made.
auth.otp.verifiedOTP verifiedA sign-in code was accepted.
auth.role.selectedRole selectedThe person chose the organization they signed in to.
auth.session.refreshedSession refreshedA session's tokens were renewed.
auth.session.reuse_detectedSession reuse detectedA refresh token that had already been used was presented again: treated as possible theft of the session.
auth.session.revokedSigned outA person signed out, or a session was ended.
auth.stepup.failedA signing code was wrong, expired, or used for the wrong record.
auth.stepup.verifiedA signing code was accepted for one signature.
auth.workspace_switchedThe session entered or left a UAT or Live workspace.

Signatures

Event typeShown asWhat it records
signature.appliedAn electronic signature was applied, with its meaning, the signer's name and a fingerprint of what was signed.
signature.supersededA signature was withdrawn because what it signed changed.

Sites

Event typeShown asWhat it records
site.activatedSite activatedA site was activated, with its ethics approval and training confirmation.
site.registeredA site was registered.
site.target_setA site's enrollment target was set.
site.transitionedSite status changedA site was suspended, reinstated or closed, with a reason.

Source data verification

Event typeShown asWhat it records
sdv.discrepancyA monitor logged that a value does not match the source document.
sdv.plan_carriedThe source data verification plan was carried into the version that went Live.
sdv.plan_retiredA requirement of the verification plan was retired.
sdv.plan_updatedThe source data verification plan was changed.
sdv.verifiedA monitor verified a value against the source document.

Studies and versions

Event typeShown asWhat it records
study.amendment.startedAmendment startedAn amendment was started from the Live version.
study.createdStudy createdA study was created.
study.lock.confirmedThe second person confirmed the request to lock the database with an e-signature; the study is locked.
study.lock.initiatedA request to lock the database was made, with an e-signature.
study.metadata_updatedThe study's details were changed.
study.state.changedStudy state changedThe study moved to another state (for example Active, On hold, Completed), with the reason.
study.state.request.cancelledA pending request to lock or unlock was withdrawn.
study.unlock.confirmedThe second person confirmed the request to unlock the database; the study is no longer locked.
study.unlock.initiatedA request to unlock the database was made, with an e-signature.
study.version.approvedVersion approvedA version was approved after its three sign-offs.
study.version.awaiting_signoffVersion awaiting sign-offA version's UAT cycle passed and it now waits for sign-offs.
study.version.createdVersion createdA version of the study was created.
study.version.returned_to_buildVersion returned to BuildA version went back to Build (a failed cycle, or a reopen), clearing its sign-offs.
study.version.revision_savedDesign savedThe design of a version was saved in Build.
study.version.settings_updatedVersion settings updatedThe settings of a version (study details, safety clock, signature requirements) were changed.
study.version.signoff_recordedVersion signed offA person signed off a version as author, QA or approver.
study.version.signoff_rejectedVersion sign-off rejectedThe author, QA or approver rejected a version at sign-off, with a signature and a reason; the version returns to Build and the sign-offs given so far are withdrawn.
study.version.submitted_to_uatVersion → UATA version was submitted to UAT: its design was frozen and a cycle opened.
study.version.supersededVersion supersededA version stopped being the Live version because a newer one went Live.
study.version.went_liveVersion went LiveA version went Live.
study.version.withdrawnVersion withdrawnA version that had not gone Live was withdrawn, with a reason.
study_config.advanced_to_uatConfig → UATWritten before study versions existed; kept readable, never written any more.
study_config.approvedConfig approvedWritten before study versions existed; kept readable, never written any more.
study_config.releasedConfig releasedWritten before study versions existed; kept readable, never written any more.
study_config.reopened_to_draftConfig reopenedWritten before study versions existed; kept readable, never written any more.

Study team

Event typeShown asWhat it records
team.assignment_changedTeam access changedA person's study or site access was changed (suspended, reinstated, retired).
team.delegation_endedA delegation of authority to a site staff member was ended.
team.delegation_proposedA delegation of authority was proposed for a member of site staff.
team.delegation_signedThe principal investigator signed a delegation of authority, which gives the person access.
team.role_assignedRole assignedA person was given a role on a study.
team.site_team_endedThe team of a site was ended.
team.validation_roster_retiredAt go-live, the UAT site assignments of people who now hold a Live assignment were retired.

UAT

Event typeShown asWhat it records
uat.correction.reopenedA resolved design correction was reopened.
uat.correction.resolvedA correction to the design that a UAT cycle asked for was marked resolved.
uat.cycle.failedUAT cycle failedA UAT cycle was failed; the version returns to Build.
uat.cycle.openedUAT cycle openedA UAT cycle was opened by submitting a version.
uat.cycle.passedUAT cycle passedA UAT cycle was passed.
uat.issue.acceptedUAT issue acceptedA UAT issue was accepted as it is.
uat.issue.raisedUAT issue raisedA UAT issue was raised.
uat.issue.reopenedUAT issue reopenedA resolved UAT issue was reopened.
uat.issue.resolvedUAT issue resolvedA UAT issue was resolved.
uat.issue.updatedUAT issue editedA UAT issue was edited.

Visits

Event typeShown asWhat it records
study_visit.changedVisit changedA visit of the schedule was created, changed or archived.
visit.instance_retiredA participant's visit was retired when the participant moved to another version.
visit.mode_setA visit was recorded as on site or remote.

Compliance Q&A

Compliance Q&ABuiltPart 11 11.10(e)Annex 11 9ALCOA+ attributableALCOA+ complete
Which events does the audit trail record?

Every event type above is written with the person, the time on the server, the study and, where it applies, the participant, the record, the old and new value and the reason. 162 types are written today. The ledger is append-only and chained; see Audit trail and evidence for how tampering is detected.

Limits: the list is read from the code, so a module that writes an event type in a way the script cannot see would be missing here; the Audit Trail screen shows any type it finds, with a readable name.

Evidence: the audit writers of each server moduleserver/db/schema.sql (ledger triggers)client/lib/cdms/audit/display.ts

Review the audit trail · Audit trail and evidence · API reference