Dataverse and model-driven apps audit

OperationDescriptionSampleRule
anyCatch-all for M365-CRM rules matching the RecordType but no specific Operation.NY
AccessA record is read, for example via Retrieve or RetrieveMultiple SDK messages (audit_operation picklist value 4).NN
ArchiveA record is moved to long-term archive storage (audit_operation picklist value 115).NN
CreateA record is created (audit_operation picklist value 1).NN
CustomOperationA custom SDK message or plugin-driven operation triggers the audit record (audit_operation picklist value 200).NN
DeleteA record is deleted (audit_operation picklist value 3).NN
RestoreA record is restored from archive or backup (audit_operation picklist value 118).NN
RetainA record is retained under a Dataverse long term retention policy (audit_operation picklist value 116).NN
RollbackRetainA prior Retain operation on a record is rolled back (audit_operation picklist value 117).NN
UpdateA record is updated (audit_operation picklist value 2).NN
UpsertA record is created if it does not exist or updated if it does (audit_operation picklist value 5).NN

any: Dataverse and model-driven apps audit (catch-all)

#
RecordType
CRM

Description

Catch-all for M365-CRM rules matching the RecordType but no specific Operation.

Detection Fields #

Fields referenced by at least one attached detection rule. This view counts distinct rules and is not a complete event schema.

NameRulesVendors
Message24 detection rulesKusto
EntityName8 detection rulesKusto
UserId7 detection rulesKusto
ClientIP6 detection rulesKusto
Fields.Name3 detection rulesKusto
Name3 detection rulesKusto
UserAgent3 detection rulesKusto
Fields2 detection rulesKusto
watchlist_entries_count2 detection rulesKusto
CurrentExportRate1 detection ruleKusto
DataverseActivity_TimeGenerated1 detection ruleKusto
Entities1 detection ruleKusto
Entities.Type1 detection ruleKusto
Fields.Value1 detection ruleKusto
HistoricalTime1 detection ruleKusto
InstanceUrl1 detection ruleKusto
Operation1 detection ruleKusto
OriginalObjectId1 detection ruleKusto
Position.Name1 detection ruleKusto
Position.Value1 detection ruleKusto
Role.Name1 detection ruleKusto
SystemUserId1 detection ruleKusto
Target.Name1 detection ruleKusto
Value1 detection ruleKusto
Workload1 detection ruleKusto

Common Indicators #

Positive field/value combinations most frequently checked by detection rules targeting this event, derived from cross-vendor predicate analysis. This is separate from Fields accounting, which also includes exclusions and counts distinct attached rules.

FieldKindValueRulesVendors
ClientIp (kusto rule field)is_not_null6 ruleskusto
Message (kusto rule field)eqUserSignIn6 ruleskusto
Message (kusto rule field)eqUpdate5 ruleskusto
Message (kusto rule field)eqCreate2 ruleskusto
Message (kusto rule field)eqDelete2 ruleskusto
Message (kusto rule field)inCreate2 ruleskusto
Message (kusto rule field)inUpdate2 ruleskusto
EntityName (kusto rule field)eqorganization4 ruleskusto
EntityName (kusto rule field)eqsystemuser3 ruleskusto
aws::userAgent (kusto rule field)is_not_null3 ruleskusto
DataverseActivity_TimeGenerated (kusto rule field)cross_field_compareExpirationDateTime2 ruleskusto
Value (kusto rule field)eqFalse2 ruleskusto
user (kusto rule field)neunknown2 ruleskusto
watchlist_entries_count (kusto rule field)gt02 ruleskusto
ActionType (kusto rule field)eqUsbDriveMounted1 rulekusto

Detection Rules #

Full rule details for this event, including ATT&CK technique mappings and native queries →

Kusto #

Access

#
RecordType
CRM

Description

A record is read, for example via Retrieve or RetrieveMultiple SDK messages (audit_operation picklist value 4).

Archive

#
RecordType
CRM

Description

A record is moved to long-term archive storage (audit_operation picklist value 115).

Create

#
RecordType
CRM

Description

A record is created (audit_operation picklist value 1).

CustomOperation

#
RecordType
CRM

Description

A custom SDK message or plugin-driven operation triggers the audit record (audit_operation picklist value 200).

Delete

#
RecordType
CRM

Description

A record is deleted (audit_operation picklist value 3).

Restore

#
RecordType
CRM

Description

A record is restored from archive or backup (audit_operation picklist value 118).

Retain

#
RecordType
CRM

Description

A record is retained under a Dataverse long term retention policy (audit_operation picklist value 116).

RollbackRetain

#
RecordType
CRM

Description

A prior Retain operation on a record is rolled back (audit_operation picklist value 117).

Update

#
RecordType
CRM

Description

A record is updated (audit_operation picklist value 2).

Upsert

#
RecordType
CRM

Description

A record is created if it does not exist or updated if it does (audit_operation picklist value 5).

References #

M365 audit records use different field names on each surface #

The same Unified Audit Log record uses different field names on each surface. A query built for one surface can silently miss on another. These pages document the Management Activity API JSON names, the same names Search-UnifiedAuditLog and the Office 365 Management Activity API return.

  • Purview CSV export flattens each record to four columns (CreationDate, UserIds, Operations, AuditData). The API field names live only inside the AuditData JSON blob. Expand it with ConvertFrom-Json. The wrapper columns are renamed too: CreationDate not CreationTime, UserIds not UserId, Operations not Operation.
  • Sentinel's OfficeActivity table renames several fields and turns two integer enum columns into strings. The table below maps them.
API JSON (event pages)OfficeActivity columnNote
IdOfficeIdRenamed.
WorkloadOfficeWorkloadRenamed.
ObjectIdOfficeObjectIdRenamed.
CreationTimeTimeGeneratedRenamed. OfficeActivity has no CreationTime column.
SiteUrlSite_UrlRenamed (SharePoint family).
RecordTypeRecordTypeSame name; the Int32 enum becomes its string enum name.
UserTypeUserTypeSame name; the Int32 enum becomes a string.
ClientIPClientIP, Client_IPAddressBoth columns present on OfficeActivity.
Scope(none)No OfficeActivity equivalent under any name. Recover it from the API JSON or the Purview AuditData blob.
Operation, UserId, ResultStatus, UserKey, AppAccessContext, OrganizationIdsame namesUnchanged. No _s / _d suffixes (a native table, not a custom log).

Mapping verified against the OfficeActivity table reference, the Management Activity API schema, and the Purview audit-record export format.