Audit Logs / Microsoft Entra ID AuditLogs category
Audit Logs: DeviceTemplate
| OperationName | Description | Sample | Rule |
|---|---|---|---|
| Add device from Device | A device object was created from a device template (createDeviceFromTemplate). | N | N |
| Add Device | A new device template (deviceTemplate) was created in the directory. | N | N |
| Add owner to Device | An owner was added to a device template, granting full control over the template and its device instances. | N | N |
| Delete Device | Deletion of a device template (deviceTemplates Graph API directory object holding device properties such as manufacturer, model, OS). | N | N |
Add device from DeviceTemplate
#Description
A new device object was created from a device template, stamping the template's common property values onto the device (the Microsoft Graph deviceTemplate createDeviceFromTemplate action). Device templates onboard sets of similar devices (for example, IoT or external devices) into the directory, so new device-identity creation here can warrant review.
References #
Add DeviceTemplate
#Description
A new device template was created in the directory. A deviceTemplate defines property values common to a set of device objects and is used to identify and manage a group of devices with similar characteristics (for example, IoT devices).
References #
Add owner to DeviceTemplate
#Description
Records the addition of an owner (a user or service principal) to a device template. Per the Microsoft Graph beta add-owner reference, a device template owner is granted permissions to create, update, enable, disable, and delete the device instances created from that template and to add or remove other owners, without requiring additional administrator roles.
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.