In enterprise collaboration, training seminars, and organizational webinars, verifying participant attendance and analyzing engagement telemetry is critical for operations, audit compliance, and educational accreditation. In Microsoft Teams, organizers can view and download detailed attendance reports—including join times, leave times, meeting duration, participant email addresses, and in-meeting engagement data. However, in sensitive industries subject to employee privacy regulations (such as works councils in Germany or strict GDPR jurisdictions), broad attendance tracking may violate corporate policy. Through Microsoft Teams PowerShell, administrators can regulate attendance and engagement report generation using the AllowEngagementReport attribute in CsTeamsMeetingPolicy.
Understanding Meeting Attendance and Engagement Architecture
The attendance reporting subsystem in Microsoft Teams operates under CsTeamsMeetingPolicy:
AllowEngagementReport: Determines whether meeting organizers assigned to this policy receive automated attendance and engagement reports. It accepts two values:Enabled(attendance tracking active) orDisabled(attendance tracking suppressed).- Report Scope: When enabled, meeting organizers can view attendance data directly in the Teams calendar invite (under the Attendance tab) and download comprehensive CSV summaries containing participant names, timestamps, roles, and session durations.
- Regulatory Precedence: When set to
Disabled, Teams suppresses all participant tracking for meetings scheduled by organizers under that policy; no CSV file is generated, and the Attendance tab remains hidden.
Connecting to Microsoft Teams PowerShell
Launch an elevated PowerShell session as Administrator and sign into your Microsoft 365 tenant using an account with Teams Administrator privileges:
Install-Module -Name MicrosoftTeams -Force -AllowClobber
Import-Module MicrosoftTeams
Connect-MicrosoftTeams
Auditing Existing Meeting Attendance Policies
Before modifying reporting parameters, query all existing meeting policies to review current attendance settings across the tenant:
Get-CsTeamsMeetingPolicy | Select-Object Identity, Description, AllowEngagementReport
To inspect the detailed configuration of the global default policy:
Get-CsTeamsMeetingPolicy -Identity Global | Format-List Identity, AllowEngagementReport, AllowMeetingReactions
Configuring Tenant-Wide Attendance Reporting
1. Enable Attendance Reports Tenant-Wide (Default)
To ensure all corporate organizers can download participant attendance lists across all standard meetings and webinars:
Set-CsTeamsMeetingPolicy -Identity Global -AllowEngagementReport Enabled
2. Disable Attendance Reports Tenant-Wide (Privacy Compliance)
To universally disable participant attendance tracking to satisfy strict works council agreements or local privacy legislation:
Set-CsTeamsMeetingPolicy -Identity Global -AllowEngagementReport Disabled
Creating and Assigning Custom Departmental Attendance Policies
In multinational or diversified enterprises, compliance requirements vary widely by department or geographical region. For instance, human resources training teams may require mandatory attendance tracking, while German or Austrian subsidiaries must operate with tracking disabled.
1. Create a Policy Disabling Attendance Tracking for Restricted Jurisdictions
New-CsTeamsMeetingPolicy -Identity "PrivacyRestricted-NoTracking" -AllowEngagementReport Disabled -Description "Disables attendance reports to comply with regional privacy regulations"
2. Create an Extended Reporting Policy for Corporate Training
New-CsTeamsMeetingPolicy -Identity "TrainingAndWebinars-Reporting" -AllowEngagementReport Enabled -Description "Enforces attendance and engagement reports for training instructors"
3. Assign Policy to an Individual Organizer
Assign the policy directly to specific meeting organizers:
Grant-CsTeamsMeetingPolicy -Identity "[email protected]" -PolicyName "PrivacyRestricted-NoTracking"
4. Bulk Assign via Azure AD Security Group
To enforce the attendance policy across an entire departmental group:
$groupId = (Get-AzureADGroup -SearchString "Munich Office Staff").ObjectId
New-CsGroupPolicyAssignment -GroupId $groupId -PolicyType TeamsMeetingPolicy -PolicyName "PrivacyRestricted-NoTracking" -Rank 1
Verifying User Policy Resolution
To confirm which attendance policy is active for a specific employee, query their effective policy state:
Get-CsUserPolicyAssignment -Identity "[email protected]" -PolicyType TeamsMeetingPolicy
Organizer Policy Precedence and End-User Experience
Key Administrative Distinction: Whether an attendance report is generated depends strictly on the meeting organizer’s policy, not on the individual attendees. If an organizer with AllowEngagementReport = Disabled schedules a meeting, no attendance report is generated for any participant, regardless of participant licensing or settings. Conversely, if an organizer with Enabled hosts the session, all participants’ join and leave events are documented.
Configuring attendance and engagement reports via PowerShell gives enterprise administrators granular compliance controls, balancing organizational training accountability with stringent employee data protection standards.