Microsoft Teams Call and Message Submissions Over Time
Description
This query trends Microsoft Teams call and message submissions over time, split by content type and by whether a user or an admin reported them.
Query · kql
//This query trends Microsoft Teams call and message submissions over the last 30 days, split by content type and reporter.
//A rise in reported Teams calls against flat message reporting is the shape to investigate, because voice phishing is often
//layered onto Teams helpdesk impersonation so that malicious instructions never enter the chat log.
//Background: Microsoft Threat Intelligence, "Impersonating IT support: how threat actors turn a remote session into
//enterprise-wide access" (2 September 2026)
//https://www.microsoft.com/en-us/security/blog/2026/09/02/impersonating-it-support-threat-actors-turn-remote-session-into-enterprise-wide-access/
CloudAppEvents
| where Timestamp > ago(30d)
| extend RD = parse_json(RawEventData)
| extend RecordType = tostring(RD.RecordType), SubmissionContentType = tostring(RD.SubmissionContentType)
| where RecordType == "29" and SubmissionContentType in ("ChatMessage", "TeamsCall")
//Exact match, because a graded submission also emits a UserSubmissionTriage record under the same SubmissionId.
| where ActionType in ("UserSubmission", "AdminSubmission")
| extend SubmissionType = iif(SubmissionContentType == "TeamsCall", "Teams Call", "Teams Message"),
Reporter = iif(ActionType == "AdminSubmission", "Admin", "User")
| summarize Submissions = count() by bin(Timestamp, 1d), ['Submission Type'] = strcat(SubmissionType, " (", Reporter, ")")
| render timechart