Audit Logs / Microsoft Entra ID AuditLogs category
Audit Logs: Agreement
| OperationName | Description | Sample | Rule |
|---|---|---|---|
| Add agreement | A terms of use agreement was created (content users must accept, typically enforced via Conditional Access). | N | N |
| Delete agreement | A terms of use agreement (Conditional Access acceptance policy) was deleted. | N | N |
| Hard delete agreement | Permanent deletion of a Microsoft Entra terms-of-use agreement object. | N | N |
| Update agreement | Modification of a terms of use agreement (the document users must accept before accessing resources). | N | N |
Add agreement
#Description
A terms of use (ToU) agreement was created. Terms of use agreements present content that users must accept, typically enforced at sign-in through a Conditional Access policy.
References #
Delete agreement
#Description
A terms of use agreement was deleted. In the directory the agreement object is a Conditional Access terms of use policy presented to users before access is granted, so deleting it removes that acceptance requirement and its recorded consents.
References #
Hard delete agreement
#Description
Records the permanent (hard) deletion of a terms-of-use agreement object from the Microsoft Entra tenant. Removing a terms-of-use agreement strips the terms users are required to accept and can weaken Conditional Access gating that references it.
References #
Rules often query computed field names, not native AuditLogs columns #
Many Entra detection rules pivot on field names that are not columns in this table but KQL projections the rule author computes from two dynamic columns. Searching the field list for those names finds nothing; use the canonical paths instead.
InitiatingUserPrincipalName(and siblingInitiating*names) is not a column. Rules project it fromInitiatedBy, for exampleextend InitiatingUserPrincipalName = tostring(InitiatedBy.user.userPrincipalName). The native paths areInitiatedBy.user.userPrincipalName,InitiatedBy.user.displayName, andInitiatedBy.user.idfor user actors, andInitiatedBy.app.displayName/InitiatedBy.app.appIdfor application or service-principal actors.- What changed lives in
TargetResources, adynamicarray. Expand it before filtering on the change:AuditLogs | mv-expand TargetResources | extend props = TargetResources.modifiedProperties, then readprops[].displayName,props[].oldValue, andprops[].newValue.
Column shapes per the AuditLogs table reference and the Graph directoryAudit resource.