Microsoft Teams admin activity
| Operation | Description | Sample | Rule |
|---|---|---|---|
| any | Catch-all for M365-MicrosoftTeamsAdmin rules matching the RecordType but no specific Operation. | N | N |
| Teams | Teams Admin Action activity in Microsoft Teams admin, recorded in the Unified Audit Log (observed in first-party capture). | Y | Y |
any: Microsoft Teams admin activity (catch-all)
#Description
Catch-all for M365-MicrosoftTeamsAdmin rules matching the RecordType but no specific Operation.
TeamsAdminAction
#Description
Teams Admin Action activity in Microsoft Teams admin, recorded in the Unified Audit Log (observed in first-party capture).
Example Audit Record #
{
"AdminActionDetail": "PATCH /Skype.Policy/configurations/TeamsClientConfiguration/configuration/Global",
"AppAccessContext": {
"AADSessionId": "0022840a-e4ab-884c-587f-d20d24637227",
"IssuedAtTime": "2026-07-02T15:39:49Z",
"UniqueTokenId": "F5gE5rbzLU6L67NJDMtZAA"
},
"ClientApplication": "Microsoft.Teams.Policy.Administration/0.0.0/Set-CsTeamsClientConfiguration/MicrosoftTeams/7.8.0",
"ClientIP": "10.60.0.190",
"CreationTime": "2026-07-02T15:44:54Z",
"ExtraProperties": [
{
"Key": "CorrelationId",
"Value": "63895cf4-637b-46b1-956e-61a1270c9207"
},
{
"Key": "X-MS-CmdletName",
"Value": "Set-CsTeamsClientConfiguration"
}
],
"Id": "18edac62-78eb-4155-3378-08ded850dcd8",
"Operation": "TeamsAdminAction",
"OrganizationId": "00000000-0000-0000-0000-000000000001",
"RecordType": 57,
"ResultStatus": "Succeeded",
"UserClaims": "AuthenticatedUser,GlobalAdmin",
"UserId": "Admin User",
"UserKey": "11111111-1111-1111-1111-111111111111",
"UserType": 2,
"Version": 1,
"Workload": "MicrosoftTeams"
}
Detection Rules #
Full rule details for this event, including ATT&CK technique mappings and native queries →Kusto #
T1078, T1098, T1136, T1199
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 theAuditDataJSON blob. Expand it withConvertFrom-Json. The wrapper columns are renamed too:CreationDatenotCreationTime,UserIdsnotUserId,OperationsnotOperation. - Sentinel's
OfficeActivitytable renames several fields and turns two integer enum columns into strings. The table below maps them.
| API JSON (event pages) | OfficeActivity column | Note |
|---|---|---|
Id | OfficeId | Renamed. |
Workload | OfficeWorkload | Renamed. |
ObjectId | OfficeObjectId | Renamed. |
CreationTime | TimeGenerated | Renamed. OfficeActivity has no CreationTime column. |
SiteUrl | Site_Url | Renamed (SharePoint family). |
RecordType | RecordType | Same name; the Int32 enum becomes its string enum name. |
UserType | UserType | Same name; the Int32 enum becomes a string. |
ClientIP | ClientIP, Client_IPAddress | Both 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, OrganizationId | same names | Unchanged. 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.