Overview
The Microsoft Copilot integration connects Microsoft 365 Copilot usage data to G360. It authenticates as a Microsoft Entra application (a daemon app with no user sign-in), so you first register that application in your tenant. Using this integration, organizations can:- Register an Entra application with Microsoft Graph application permissions
- Collect Copilot usage and user-count reports
- Enrich usage data with directory details such as department, job title, and account status
- Synchronize and monitor Copilot adoption data
Prerequisites
Before configuring the integration, ensure you have:- Access to the Engineering Metrics dashboard in G360
- Access to the Azure portal for the tenant you want to connect
- An admin who can grant tenant-wide consent: Cloud Application Administrator, Application Administrator, or Global Administrator
Global Administrator is only needed for permissions that enable privilege escalation, such as
RoleManagement.ReadWrite.Directory and AppRoleAssignment.ReadWrite.All. This integration uses neither.Set up the Entra application
1
Switch to the right directory
- In the Azure portal, click your avatar (top right) → Switch directory.
- Select the tenant you intend to connect.
- Go to Microsoft Entra ID → Overview and confirm the Tenant ID matches the one you will enter in G360.
2
Open or create the app registration
- In the portal search, open App registrations.
- Open the All applications tab. The default view lists only apps you own, so an app created by a colleague does not appear under Owned applications.
-
Search for the Client ID, or click + New registration and enter:
- On Overview, confirm Directory (tenant) ID matches the tenant from the previous step.
If Directory (tenant) ID does not match the tenant you want data from, the app lives in another tenant. Either register a new app in the correct tenant, or make this one multi-tenant and consent into the target tenant explicitly.
3
Add the permissions
- In the left nav, go to API permissions.
- Click + Add a permission → Microsoft Graph.
- Choose Application permissions, not Delegated.
-
Select both permissions below, then click Add permissions.
You can leave the
User.Read (Delegated) entry that Azure adds to every new registration. It is unused and harmless. It is not the same as User.Read.All: it reads only the signed-in user’s own profile.4
Grant admin consent
- On API permissions, click Grant admin consent for <Tenant Name>.
- Click Yes to confirm.
- Confirm every row’s Status shows a green ✅ Granted for <Tenant>.
AADSTS7000229. See Troubleshooting.If the button is grayed out, your account lacks the required role. Ask an admin to grant consent, or have them open this URL:5
Create a client secret
- In the left nav, go to Certificates & secrets → Client secrets → + New client secret.
- Set a description and expiry.
- Copy the Value column immediately.
6
Verify the service principal exists
- Go to Microsoft Entra ID → Enterprise applications → All applications.
- Search for the Client ID.
AADSTS7000229 state.Connect in G360
1
Open Microsoft 365 Copilot
In G360, go to Integration → LLM → Microsoft 365 Copilot → Connect.
2
Enter connection details
3
Test and save
Click Test, then save the connection.
4
Assign the connection to a project
Assign the connection to a project.
Synchronization and metrics
Run a sync with:--inline runs the sync in-process, so failures appear in your terminal rather than a worker log.
If the tenant holds no Copilot licenses, the connection succeeds but the sync reports
skipped and returns no data. This is expected.Troubleshooting
AADSTS7000215: invalid client secret
AADSTS7000215: invalid client secret
Possible causes
- You pasted the secret ID instead of the Value
- Copy the Value column of the client secret. If you no longer have it, create a new secret (see Create a client secret).
AADSTS7000229: no service principal
AADSTS7000229: no service principal
Possible causes
- Admin consent was never granted, so no service principal exists
- Grant admin consent (see Grant admin consent).
- Confirm the app appears under Enterprise applications (see Verify the service principal exists).
AADSTS7000222: secret expired
AADSTS7000222: secret expired
Possible causes
- The client secret has expired
- Create a new client secret (see Create a client secret) and update the Client Secret in the G360 connection.
AADSTS700016: client ID not found in tenant
AADSTS700016: client ID not found in tenant
Possible causes
- The Client ID is not in this tenant
- Check Directory (tenant) ID on the app registration (see Open or create the app registration).
AADSTS90002: tenant does not exist
AADSTS90002: tenant does not exist
Possible causes
- The Tenant ID is wrong
- Confirm the Tenant ID under Microsoft Entra ID → Overview (see Switch to the right directory).
403 on reports
403 on reports
Possible causes
Reports.Read.Allis missing or not consented
- Add
Reports.Read.Allas an Application permission and grant admin consent (see Add the permissions and Grant admin consent).
Connects but no data
Connects but no data
Possible causes
- The tenant holds no Copilot licenses
- None needed. This is expected, and the sync reports
skipped.
Empty leaderboard, aggregates fine
Empty leaderboard, aggregates fine
Possible causes
- The tenant conceals user names in reports. Microsoft 365 can anonymize user names in all admin reports. When enabled, Graph returns hex digests instead of UPNs, so per-user Copilot attribution is impossible. The integration detects this and reports it rather than showing an empty leaderboard. Seat and adoption figures are unaffected.
- In the Microsoft 365 admin center, go to Settings → Org settings → Reports and clear Display concealed user, group, and site names in all reports.
Best practices
- Confirm you are in the correct directory before granting consent.
- Use Application permissions, never Delegated.
- Copy the secret Value immediately, and note its expiry so you can renew it before sync stops working.
- Assign every connection to a project.
- Run the first sync with
--inlineso failures appear in your terminal.
Summary
The Microsoft Copilot integration connects Microsoft 365 Copilot usage data to G360 through an Entra application withReports.Read.All (mandatory) and User.Read.All (enrichment) application permissions. Get the directory, consent, and client secret right, and the connection, project assignment, and sync follow.
