projectAuditLogEntries is the audit log of projects: sharing, invites, ownership transfers, downloads and admin actions. One document is one event on one project. web owns it; the schema is services/web/app/src/models/ProjectAuditLogEntry.mjs, and core writes through services/web/app/src/Features/Project/ProjectAuditLogHandler.mjs.
Fields
Who Writes It
Operations written by core with
addEntry or addEntryInBackground:
Operations written by our modules (
services/web/modules/...):
Core also calls
addEntryIfManaged for project-created, project-deleted, project-archived, project-unarchived, project-trashed, project-untrashed, project-restored, project-cloned (Project/ProjectController.mjs:292-479) and project-history-version-restored, project-history-version-downloaded (History/HistoryController.mjs:334, :396, :454, :711). These write nothing in CE; the project-deleted and project-restored entries in a CE database come from the admin panel.
Who Reads It
Core CE has no page that shows this log.
Indexes
tools/migrations/20220929193200_add_auditLog_indexes.mjs first created project_id_1 on { projectId: 1 }; 20250912102601 replaces it with the compound index. The schema’s index: true marks are not applied, as Mongoose auto-indexing is off (services/web/app/src/infrastructure/Mongoose.mjs:7). The managedSubscriptionId index migration is tagged saas only.
Notes
- Entries expire 2.5 years after
timestampthrough the TTL index, and all entries of a project go when its deleted-project record expires.

