All Reports: https://microsoft.github.io/Analytics-Hub/
Found this useful? ⭐ Star this repo to help others discover it!
Dashboard Preview ↓ · Deployment Paths ↓ · Instructions ↓ · Related Resources ↓ · Email your Admin ↓
The Agent Dashboard is now generally available (GA), providing one-click visibility into agent usage. Work with your IT admin to enable it.
⚠️ Support Notice
This repository is not supported through Microsoft support channels. Please report issues by opening an issue in this repo.
This repository contains the AI-in-One Dashboard Power BI templates. The AIO report provides comprehensive insights into Microsoft Copilot and Agent adoption, empowering AI and business leaders to make informed decisions regarding AI implementation, licensing, and enablement strategies.
See the dashboard in action:
⚠️ Important usage & compliance disclaimer
Please note:
While this tool helps customers better understand their AI usage data, Microsoft has no visibility into the data that customers input into this template/tool, nor does Microsoft have any control over how customers will use this template/tool in their environment.
Customers are solely responsible for ensuring that their use of the template tool complies with all applicable laws and regulations, including those related to data privacy and security.
Microsoft disclaims any and all liability arising from or related to customers' use of the template tool.
Experimental Template Notice:
This is an experimental template with audit logs as the primary source. The audit logs from Microsoft Purview are intended to support security and compliance use cases. While they provide visibility into Copilot and Agent interactions, they are not intended to serve as the sole source of truth for licensing or full-fidelity reporting on Copilot or Agent activity. For the most accurate and reliable usage insights, users are encouraged to refer to data from the Microsoft 365 Admin Center and Viva Insights. Currently available in English only.
Pick the path that matches your environment. Each folder is self-contained — README, PBIT, and the scripts you need are all in one place.
| Path | Folder | Best when… | Volume ceiling |
|---|---|---|---|
| Rollup Edition | 4. Rollup Edition (Manual-SharePoint-Fabric)/ |
Data is pre-processed before Power BI ever loads it — dramatically smaller files, near-instant dashboard opens, and no out-of-memory errors. Works with local files, SharePoint, or Fabric — one template covers all three | Any size tenant, including large enterprise |
| Manual (Classic Edition) | 1. Manual/ |
One-off, ad-hoc, or single-user. Customer manually exports audit CSV from Purview UI, drops into the local PBIT | < ~100K events lifetime |
| SharePoint — Single File (Classic Edition) | 2. SharePoint/Single File/ |
Scheduled refresh in PBI Service without a Gateway. Script overwrites one CSV per refresh — no folder iteration, no privacy firewall errors | Rolling 30 days, refreshes weekly or daily |
| SharePoint — Folder (Classic Edition) | 2. SharePoint/Folder/ |
Need > 30 days of accumulated history but no Fabric. Folder iteration auto-unions all daily CSVs | Up to 180 days (Graph cap), heavier PBI memory footprint |
| Fabric / Lakehouse (Classic Edition) | 3. Fabric/ |
Have Fabric capacity. JSON parsing happens upstream in a notebook → best performance, multi-year history, sub-second dashboard | Millions of events, multi-year |
Inside each path:
- The PBIT for that pattern (and a README explaining what parameters to fill in)
scripts/— automation scripts for data processing and export; contents vary by edition but may include data pre-processors, manual one-shot PowerShell (interactive browser sign-in), unattended app-registration scripts (service principal for scheduled jobs), and Azure Automation runbooks with Bicep deployment
For customers whose dataset is growing or where Power BI load times and refresh failures are a concern, the Rollup Edition pre-processes data upstream before Power BI ever sees it — typically reducing file sizes by 70%+ and cutting dashboard open times from hours to minutes - and sometimes seconds! It natively supports local files, SharePoint, and Fabric in a single template, making it the right fit regardless of your storage tier. The Manual, SharePoint, and Fabric Classic Editions remain available for existing deployments.
┌─────────────────────────────────────────────────────────────────┐
│ Which edition is right for you? │
└─────────────────────────────────────────────────────────────────┘
New to the AI-in-One Dashboard?
│
├─ YES ──────────────────────────────────────────────────────────► 4. Rollup Edition
│ One template · works with all storage tiers
│ local files · SharePoint · Fabric
│
└─ NO — already running an existing edition?
│
Slow dashboard loads, refresh failures, or out-of-memory errors?
│
├─ NO, performing fine ──────────────────────────────────► Stay on your current edition
│ 1. Manual (local files) (Classic Edition)
│ 2. SharePoint (folder or file path) (Classic Edition)
│ 3. Fabric (Classic Edition)
│
└─ YES ──────────────────────────────────────────────────► 4. Rollup Edition
One template · works with all storage tiers
local files · SharePoint · Fabric
- Comprehensive visibility into M365 Copilot, unlicensed Copilot Chat, and Agent usage across your organization
- User engagement tracking over time to identify adoption patterns and trends across all Copilot surfaces
- Data-driven insights to optimize AI investments, license allocation, and employee enablement
- Customizable views to segment data by department, role, or other organizational dimensions
- Make informed AI and Microsoft Copilot investment decisions using comprehensive usage data and analytics consolidated in one place
- Identify Copilot and Agent adoption champions and areas needing additional enablement
- Optimize enablement and change management efforts based on actual usage patterns across M365 Copilot, unlicensed Copilot Chat, and Agents
- Accelerate AI readiness, adoption, and impact across the organization—from licensed Copilot experiences to emerging Agent capabilities
Quick Overview:
- Rollup Edition: Pre-process your Purview and Entra/MAC data (via PAX or standalone processor) → Open PBIT with 3 parameters → Analyze
- Classic Editions: Export raw data sources → Connect to Power BI with 4 parameters → Analyze
🚀 Option A: Rollup Edition — PAX or Standalone Processor (Recommended)
The Rollup Edition requires pre-processed input files — the template cannot consume raw Purview or raw Entra/MAC exports directly. There are two ways to produce the required files:
PAX path (recommended): Run PAX with -Rollup — PAX exports Purview audit data and Entra/MAC user+license data, and pre-processes both into the two files this template requires. Output can go to local, SharePoint, or OneLake.
Standalone processor path (alternative): Export raw Purview audit data and raw Entra/MAC user+license data yourself (via portals or your own tooling), then run the standalone processor in scripts/ against both raw files. Neither raw file can go directly into the template — both must be processed first. See the Rollup Edition README for full instructions on this path.
Agent 365 (optional, either path): The only input that requires no pre-processing. Export manually from the M365 Admin Center (Step 1 below) or let PAX produce it as a convenience via -IncludeAgent365Info.
👉 See full details in the Rollup Edition README
🤖 Step 1: Export Agent 365 Data (Optional)
A catalogue of agents in your tenant from the Agent Registry in the Microsoft 365 Admin Center. This input is optional — the template loads without it.
If you ran PAX with -IncludeAgent365Info, PAX already exported this file. Skip the manual steps below — PAX output goes directly into the template parameter.
Access required: AI Admin or Global Reader
- Go to admin.microsoft.com → Agents → All Agents
- Click Export to Excel in the toolbar
- Save the
.xlsxfile to a known location (e.g.,C:\Data\Agent365_Inventory.xlsx)
- File format: Excel (.xlsx)
- Columns: Name, Host products, Created date, Developer user ID, Description, Status, Version
- Rows: One row per agent in your tenant
🔐 Step 2: Open and Configure the Power BI Template
Open AI-In-One - Rollup Edition.pbit in Power BI Desktop.
Each parameter accepts a local file path, SharePoint URL, or OneLake URL — the template auto-detects the source type.
| Parameter | What to paste in | Required? |
|---|---|---|
| Copilot Interactions File | Full path or URL to ..._Interactions.csv — the pre-processed output from PAX (-Rollup) or the standalone processor |
✅ Required |
| Org Data File | Full path or URL to ..._Users.csv — the pre-processed output from PAX (-Rollup) or the standalone processor |
✅ Required |
| Agent 365 | Full path or URL to Agent365_....csv (from Step 1, or PAX with -IncludeAgent365Info), or leave blank |
Optional |
Click Load. First refresh on a moderate dataset typically takes 5–15 minutes.
See the Rollup Edition README for SharePoint URL conventions, OneLake path format, scheduled refresh setup, and full troubleshooting.
- "File not found" /
DataSource.Error— local paths must be absolute (e.g.C:\Data\file.csv, not.\file.csv). For SharePoint URLs, copy the document URL, not the share link. Formula.Firewall: Query references other queries…— privacy-level mismatch. In Power BI Desktop: File → Options → Current File → Privacy → Combine data without privacy. In Service: dataset Settings → Data source credentials → set Privacy: None for SharePoint sources.
📊 Step 3: Review and Customize
Review the dashboard, customize visualizations, and share with stakeholders.
-
Review dashboard pages
- Navigate through all report pages
- Verify data loaded correctly
- Check that filters and slicers work as expected
-
Customize for your organization
- Update visuals to match your branding (colors, logos)
- Adjust hierarchies to match your org structure
- Add or remove pages based on your needs
- Create bookmarks for common views
-
Set up filters and parameters
- Configure default date ranges
- Set up department/role filters
- Create user-specific views if needed
-
Publish and share
- Publish to Power BI Service if not already done
- Set up Row-Level Security (RLS) if needed
- Share with stakeholders via workspace access or apps
- Create subscriptions for key reports
-
Document customizations
- Keep notes on any changes you make
- Version your .pbix file if making significant updates
- Archive old versions in the
/Archived Templatesfolder
- 🔄 Refresh schedule: Schedule PAX (or your standalone processor run) and the Power BI dataset refresh on the same cadence so the report always reflects current data
- 🔒 Security: Use Row-Level Security to restrict sensitive data by department or role
- 📧 Subscriptions: Set up email subscriptions for executives who want regular updates
- 📊 Usage tracking: Monitor dashboard usage in Power BI Service to understand what resonates
🖱️⚡ Options B & C: Classic Edition — Manual or Automated
🖱️ Option B: Manual Export via Web Portal *(Classic Edition)*
Follow the traditional workflow using browser-based portals to export your data:
- Export Copilot audit logs from Microsoft Purview
- Download licensed user data from Microsoft 365 Admin Center
- Export org data from Microsoft Entra Admin Center
- Connect CSV files to Power BI template
Best for: One-time setup, first-time users, or those who prefer GUI-based workflows
⚡ Option C: Automated PowerShell Scripts *(Classic Edition)*
Use the PowerShell automation scripts in the scripts folder for a faster, repeatable workflow. This method supports two execution modes:
- Run locally (PowerShell) and export CSVs
- Run in Azure Automation (runbooks) and upload outputs to SharePoint
Advantages:
- ✅ Automated data export via Microsoft Graph API
- ✅ Reduced manual steps and potential errors
- ✅ Easy to schedule for regular data refreshes
- ✅ Consistent results every time
Prerequisites:
- PowerShell 5.1 or later
- Microsoft Graph PowerShell modules
- Appropriate permissions (same as manual method)
Quick Start (Local execution):
# 1. Install required modules
Install-Module Microsoft.Graph.Beta.Security -Scope CurrentUser
# 2. Navigate to scripts folder and run
cd scripts
.\create-query.ps1 # Creates audit log query
.\get-copilot-interactions.ps1 # Exports query results
.\get-copilot-users.ps1 # Exports licensed users listQuick Start (Azure Automation execution):
cd scripts/automation
.\deploy.ps1📖 Documentation:
- Local scripts: scripts/readme.md
- Azure Automation runbooks: scripts/automation/README.md
🔍 Step 1: Download Copilot Interactions Audit Logs (Microsoft Purview)
This log provides detailed records of Copilot interactions across all surfaces (Chat, M365 apps, Agents), as well as interactions with third-party and custom-built AI applications (e.g., Confluence Cloud, Jira Cloud, Miro), enabling deep analysis of usage patterns and engagement across the full AI landscape.
- Access level required: Audit Reader or Compliance Administrator
- Portal: Microsoft Purview Compliance Portal
- Permissions needed: View and export audit logs
-
Navigate to the portal
- Go to: security.microsoft.com
- In the left pane, scroll down and click Audit
- Ensure you have appropriate compliance roles (e.g., Audit Reader). If not, contact your IT admin
-
Configure the audit search
-
In Activities > Friendly Names, select:
Copilot Activities – Interacted with Copilot(required) — M365 Copilot interactions across all surfaces (RecordType: CopilotInteraction)
-
Recommended: Also select these two additional activities to capture third-party and custom AI app usage:
Copilot Activities – Interacted with a Connected AI App— Custom-built Copilots and registered 3rd-party AI apps that your org has deployed (RecordType: ConnectedAIAppInteraction)Copilot Activities – Interacted with an AI App— Non-Microsoft 3rd-party AI apps accessed via Microsoft 365, even if not formally deployed in your org (RecordType: AIAppInteraction)
-
Set a Date Range (recommended: 1–3 months to match your Viva query)
-
Give your search a descriptive name (e.g., "Copilot Audit Export - Oct 2025")
💡 Why include the extra activities?
The standardInteracted with Copilotactivity only captures M365 Copilot usage. As organisations adopt third-party agents and custom Copilots (e.g., Confluence Cloud, Jira Cloud, Miro), these interactions are logged under separate record types. Including them gives you a complete picture of AI adoption — not just Microsoft Copilot, but the full ecosystem of AI tools your users are engaging with.⚠️ Pay-as-you-go billing for "Interacted with an AI App" (AIAppInteraction / RT405):
This third activity type uses Microsoft Purview pay-as-you-go (PAYG) billing and is not included in standard Audit (Standard) or Audit (Premium) subscriptions. To enable it:- An admin must set up pay-as-you-go billing in Microsoft Purview, which bills based on the volume of audit records generated
- Once enabled, Purview begins logging interactions with non-Microsoft AI applications
- Costs are consumption-based — you only pay for the records actually generated
If PAYG is not enabled, selecting this activity will simply return no results — the first two activities will still work normally. You can always add this later without re-exporting the other data.
The second activity (
Interacted with a Connected AI App) does not require PAYG — it is included with your existing Audit subscription and covers custom-built Copilots and registered 3P apps. -
-
Run and export the search
- Click Search
- Wait until the status changes to Completed
- Click into the completed search
- Select Export > Download all results
- Save the CSV file to a known location (e.g.,
C:\Data\Copilot_Audit_Logs.csv)
- File format: CSV
- Typical size: Varies widely (5 MB–500 MB depending on org size and activity)
- Columns: ~50+ columns including timestamps, user IDs, activity types, surfaces
- Rows: One row per Copilot interaction
📖 Learn more: Export, configure, and view audit log records – Microsoft Learn
👤 Step 2: Download Copilot Licensed User List (Microsoft 365 Admin Center)
This data provides a list of users with Copilot licenses, enabling you to track license utilization and identify licensed vs. unlicensed usage patterns.
- Access level required: Global Administrator or Reports Reader
- Portal: Microsoft 365 Admin Center
- Permissions needed: View usage reports
-
Navigate to the portal
- Go to: admin.microsoft.com
- Log in as a Microsoft 365 Global Administrator or Reports Reader
-
Unhide usernames (if concealed)
- Go to Settings > Org Settings
- Under the Services tab, choose Reports
- Deselect: "Display concealed user, group, site names in all reports"
- Click Save changes
-
Navigate to Copilot reports
- Go to: Reports > Usage > Microsoft 365 Copilot
- Click on the Readiness tab
-
Export license data
- Scroll to Copilot Readiness Details section
- Ensure the column
Has Copilot license assignedis visible - Click the ellipsis (
...) menu - Choose Export to download the file as CSV
- Save to a known location (e.g.,
C:\Data\Copilot_Licensed_Users.csv)
- File format: CSV
- Typical size: 1–10 MB for 1,000–10,000 users
- Columns: ~10–15 columns including UserPrincipalName, Department, LicenseStatus, LastActivityDate
- Rows: One row per user in your organization
📖 Learn more: Microsoft 365 Copilot Readiness Report – Microsoft Learn
🤖 Step 3: Export Agent 365 Data (Microsoft Admin Center)
A catalogue of agents in your tenant from the Agent Registry in the Microsoft 365 Admin Center.
- Access level required: AI Admin (or Global Reader for view-only access)
- Portal: Microsoft 365 Admin Center
- Go to admin.microsoft.com → Agents → All Agents
- Click Export to Excel in the toolbar
- Save the
.xlsxfile to a known location (e.g.,C:\Data\Agent365_Inventory.xlsx)
- File format: Excel (.xlsx)
- Columns: Name, Host products, Created date, Developer user ID, Description, Status, Version
- Rows: One row per agent in your tenant
📥 Step 4: Access Org Data File (Microsoft Entra or Viva Insights)
This file provides organizational hierarchy and user attributes, enabling segmentation by department, role, location, or other organizational dimensions.
- Access level required: User Administrator or Global Reader (Entra) OR Insights Administrator (Viva)
- Portal: Microsoft Entra Admin Center or Viva Insights
- Permissions needed: View and export user data
-
Navigate to the portal
- Sign in to: entra.microsoft.com
- In the left-hand navigation, go to:
Identity ➝ Users
-
Select and download users
- Click All users
- Click the "Download users" button (in toolbar or under
...menu)
-
Configure the export
- In the download dialog, select attributes to include:
- Required fields:
UserPrincipalNameDepartment
- Optional but recommended fields:
JobTitleOfficeCityCountryManager- Any custom attributes relevant for reporting
-
Download the file
- Choose CSV format
- Click Download
- Save to a known location (e.g.,
C:\Data\Org_Data_Entra.csv)
If you have a custom org data file with organizational hierarchy and user attributes, you can use that instead. Ensure it includes:
- Required columns: UserPrincipalName or PersonID, Department or Organization
- File format: CSV
- Typical size: 1–20 MB depending on org size and attributes
- Columns: Varies (5–30+ columns)
- Required columns: UserPrincipalName, Department
- Rows: One row per user
💡 Note: Avoid downloading non-essential attributes as it can degrade performance and increase file size unnecessarily.
📖 Learn more: Download a list of users – Microsoft Learn
🔐 Step 5: Open and Configure the Power BI Template
Pick the deployment path that matches where your CSVs live, open the matching PBIT, and supply parameters.
Refer back to the Choose your deployment path table above. The available templates:
| Path | PBIT | Setup guide |
|---|---|---|
| Rollup Edition (local · SharePoint · Fabric) | 4. Rollup Edition (Manual-SharePoint-Fabric)/AI-In-One - Rollup Edition.pbit |
4. Rollup Edition (Manual-SharePoint-Fabric)/README.md |
| Manual (Classic Edition) | 1. Manual/AI-in-One Dashboard.pbit (single local CSV) |
1. Manual/README.md |
| SharePoint — Single File (Classic Edition · recommended default for scheduled refresh) | 2. SharePoint/Single File/AI-in-One Dashboard.pbit |
2. SharePoint/Single File/README.md |
| SharePoint — Folder (Classic Edition · advanced; >30 days history without Fabric) | 2. SharePoint/Folder/AI-in-One Dashboard - SP Folder.pbit |
2. SharePoint/Folder/README.md |
| Fabric / Lakehouse (Classic Edition · upstream JSON parsing, large tenants) | 3. Fabric/AI-in-One Dashboard - Fabric.pbit |
3. Fabric/README.md |
Each per-folder README has the definitive setup steps, parameter values, and troubleshooting for that variant — including SharePoint folder URL conventions, Service refresh / credential setup, and (for Fabric) the upstream notebook + Lakehouse provisioning.
Rollup Edition — 3 parameters:
Each parameter accepts a local file path, SharePoint URL, or OneLake URL — the template auto-detects the source type.
| Parameter | What to paste in | Required? |
|---|---|---|
| Copilot Interactions File | Full path or URL to ..._Interactions.csv — the pre-processed output from PAX (-Rollup) or the standalone processor |
✅ Required |
| Org Data File | Full path or URL to ..._Users.csv — the pre-processed output from PAX (-Rollup) or the standalone processor |
✅ Required |
| Agent 365 | Full path or URL to Agent365_....csv (manual M365 Admin Center export, or PAX with -IncludeAgent365Info), or leave blank |
Optional |
See the Rollup Edition README for full details on both PAX and standalone processor paths, SharePoint URL guidance, and scheduled refresh setup.
Classic Edition — 4 parameters:
Only the value format changes between Classic Edition paths (local path vs SharePoint URL vs SharePoint folder vs Lakehouse table). See each path's README for the parameter values specific to that variant.
| Parameter | What it points at |
|---|---|
| Copilot Interactions File | Audit-log CSV from Step 1 (or the SharePoint folder of audit CSVs in the SharePoint Folder path) |
| Copilot Licensed Users | Licensed-users CSV from Step 2 |
| Org Data File | Org-data CSV from Step 4 |
| Agent 365 (optional) | Agent 365 inventory file from Step 3 |
After supplying parameters, click Load. First refresh on a moderate dataset takes 5–15 minutes; large tenants on the Manual / SharePoint paths may need 30+ minutes (use the Fabric path if you're hitting the 1 GB / 2-hour Service caps).
- "File not found" /
DataSource.Error— local paths must be absolute (e.g.C:\Data\file.csv, not.\file.csv). For SharePoint URLs, copy the document URL, not the share link. - Refresh times out in Power BI Service (>2 hours) — switch to the
3. Fabric/deployment path. JSON parsing happens upstream in a Lakehouse / notebook, leaving the dataset as a thin pass-through against a flat Delta table. Formula.Firewall: Query references other queries…— privacy-level mismatch when combining sources. In Power BI Desktop: File → Options → Current File → Privacy → Combine data without privacy. In Service: dataset Settings → Data source credentials → set Privacy: None for SharePoint sources.- Path-specific issues — see the troubleshooting section in each per-folder README.
📊 Step 6: Review and Customize
Review the dashboard, customize visualizations, and share with stakeholders.
-
Review dashboard pages
- Navigate through all report pages
- Verify data loaded correctly
- Check that filters and slicers work as expected
-
Customize for your organization
- Update visuals to match your branding (colors, logos)
- Adjust hierarchies to match your org structure
- Add or remove pages based on your needs
- Create bookmarks for common views
-
Set up filters and parameters
- Configure default date ranges
- Set up department/role filters
- Create user-specific views if needed
-
Publish and share
- Publish to Power BI Service if not already done
- Set up Row-Level Security (RLS) if needed
- Share with stakeholders via workspace access or apps
- Create subscriptions for key reports
-
Document customizations
- Keep notes on any changes you make
- Version your .pbix file if making significant updates
- Archive old versions in the
/Archived Templatesfolder
- 🔄 Refresh schedule: Set up weekly or monthly refresh for CSV files in Power BI Service
- 🔒 Security: Use Row-Level Security to restrict sensitive data by department or role
- 📧 Subscriptions: Set up email subscriptions for executives who want regular updates
- 📊 Usage tracking: Monitor dashboard usage in Power BI Service to understand what resonates
Viva Insights Sample Code: Explore the Viva Insights Sample Code Repository for ready-to-use code examples, API integration patterns, and reference implementations to extend your AI adoption analytics.
Super Usage Analysis: For deep-dive analysis into Copilot super users and adoption patterns, check out the DecodingSuperUsage repository.
Check the /Archived Templates folder for previous versions of the dashboard template.
This project is licensed under the MIT License - see the LICENSE.md file for details.
Please see SECURITY.md for information on reporting security vulnerabilities.
📧 Before you begin, your IT admin needs to export data from Purview, Entra, and M365 Admin Center. This pre-written email covers all required data sources, field names, admin roles, permissions, and export steps — everything your admin needs in one click.
Found this useful? ⭐ Star this repo to help others discover it!
That's it! 🚀
