Clarify exact-window coverage, SQL fan-out and unmerged report fixes
Keep exact 90/180-day requests explicit even when weekly D7 evidence leaves a leading gap. Distinguish four report admissions from SQL command/connection fan-out, and identify draft follow-up fixes as excluded from the tested dev baseline and draft release. No readiness or candidate Azure-performance claim is added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b9a6835b-97dc-4e01-a9bd-1193fbd5fc53
0ea5d4c
Document actual Azure licence-report limits and unreleased status
Record the synthetic S4/S6 review, exact coverage limits and verified disposable-resource cleanup without identifying the benchmark environment.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b9a6835b-97dc-4e01-a9bd-1193fbd5fc53
751fcc2
Document the Licence activity report (unreleased)
Adds a Licence activity guide and links it from the sidebar, Web Portal and
Security Model pages. The page is explicitly labelled as describing an
unreleased feature, because it is not in the current stable release.
The guide leads with interpretation rather than clicks, because almost every
way of getting this report wrong is a reading error: assigned users overlap
across SKUs and must not be summed; unknown coverage is not a measured zero and
must never place someone in the least-active list; supporting action counts are
snapshot averages, not manufactured daily totals; and the bands describe
frequency within available samples, not a common unit of work across products.
Also records the limits an operator will actually hit: 1-100 most/least and
page size, 100-character search, 1-10,000 pages, top-50 demographic breakdowns,
a 100-option-per-dimension filter catalogue that says when it truncates, the
five- and two-minute cache lifetimes, four concurrent shared report loads, the
30-second deadline and the 1 MiB response cap.
Includes the measured scale limit honestly: on a synthetic 300,000-user,
50-SKU database the 180-day window did not finish inside the 20-second command
timeout, so very large tenants should use shorter windows and will see a
retryable error rather than a slow page. That measurement was local rather than
Azure SQL and is labelled as such.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b9a6835b-97dc-4e01-a9bd-1193fbd5fc53
0d3f8e0
Illustrate the Copilot Adoption user guide with screenshots
The guide was thorough prose with no images, so a reader had no idea what any of
it looked like. Adds 26 screenshots captured from a demo deployment populated with
generated data - the user names, agent names and figures are fictional.
Placed one orientation shot up front and then a unique image per card or tab, so
no view is repeated. Captured card by card rather than full-page: a full-page shot
of the Agents tab is over 20,000px tall and unusable. Images are captured at 2x and
downscaled to 1600px wide with palette encoding, keeping every file well under
300KB.
Also documents a real usability trap on the Licence opportunities tab: the table is
wider than the panel holding it, so the Justification column - the whole point of
that tab - sits off the right edge until you scroll sideways, and is squeezed into
a 118px column when you get there, which is why those rows are so tall. Exporting
is the faster way to read it.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
b715ec3
Document the fuller Copilot audit-field capture, and correct the build number
The Copilot page described the usage-report and interaction-history imports but
nothing from the work that persists the audit fields the importer previously
parsed and threw away. Adds sections for interaction contexts (every context, not
just the first file or meeting) and AI system plugins, extends the accessed-
resource and database-table tables, and records the no-backfill consequence: the
Management Activity API only retains content for about 7 days, so these fields
populate for newly imported interactions only.
Also corrects a statement that is now wrong: prompt messages ARE imported (IDs and
sizes only, never text), where the page previously said user prompts are not
tracked.
Five pages cited "Stable build 1791" for the Copilot reporting work, the Teams
add-on removal and the interaction-history import. That build does not exist -
nothing was published between 1756 and 1807, because 1796 and 1806 were only ever
drafts. Corrected to 1807 throughout.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
cf7378f
Document the browser-based SharePoint sign-in and move superseded setup to a legacy page
The installer no longer uses an embedded Internet Explorer cookie login for
SharePoint; it opens the admin's default browser and signs in with OAuth. That
changes what admins need to prepare, so the deployment docs are updated to match.
Nothing has been deleted. Advice that no longer applies to current releases moves
to a new "Legacy SPO web setup" page: the old cookie login, the username/password
AITracker PowerShell scripts and their SecureString flow, the MFA workaround, and
the SharePoint Online Management Shell installer-machine prerequisite.
Updated pages:
* Prerequisites - deployment credentials now describe an interactive sign-in
rather than stored SharePoint passwords; installer machine needs a modern
browser rather than the SPO Management Shell; added the login.microsoftonline
.com and loopback network rules.
* Deployment Guidance - rewritten SharePoint tab section covering who needs to
sign in and why, and the optional own-app-registration fields.
* App Registrations Setup - states plainly that two registrations is the whole
list, since sign-in reuses an app Microsoft already publishes.
* Manual Install Web Tracking and Config - points at the installer first and
keeps only the PnP/on-premises scripts; the basic-auth walkthrough moves to
the legacy page.
* Troubleshooting - new section for sign-in failures (loopback blocked, consent
errors, AADSTS50194, access denied on the app catalog, slow app-catalog
propagation). The old MFA IdcrlException workaround moves to the legacy page,
as the browser sign-in supports MFA natively.
* Uninstall - use the installer's Remove AITracker button; the PowerShell is the
alternative.
* Release Notes - the sign-in change, and a Code maintenance line for the
dependency work.
The move also strips a real demo-tenant name and a real user address out of the
sample script output, replacing them with contoso placeholders.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 43dbb877-89bb-44dd-8d93-27a78f34c7ca
0fffcb4
Document the Insights / Administration split in the web portal
The portal is now split into two areas - Insights (what the data says) and
Administration (running the service) - with a header area switcher and a
per-area left nav, replacing the single flat tab bar.
Adds a 'The web portal' page giving admins a tour of both areas and every
destination in them, including where things moved to, and links it from the
sidebar. Updates the two pages that pointed at the old 'Health tab' to name
the area first (Administration -> Service health).
Old hash addresses such as #/health are not redirected, so the new page calls
that out explicitly for anyone with saved bookmarks.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
e5a35ac
Document the Copilot usage report and interaction history imports
Stable build 1791 added two Graph-based Copilot imports and removed per-user
Teams apps tracking. None of it was in the wiki, and the pages still told admins
to grant a permission the product no longer uses and to set a config flag that no
longer exists.
New permission - the important one:
AiEnterpriseInteraction.Read.All, for the Copilot AI interaction history
(prompt history) import. Unlike every other permission the solution needs, the
installer does NOT request or grant this one - an Entra admin has to add it to
the runtime app registration and consent to it explicitly. It also needs the
M365_COPILOT_BUSINESS_CHAT service plan per user, and in practice a
UserGroupsFilter scope, because the endpoint is one HTTP call per user and an
unscoped run at the 200k-user design target means 200k calls per cycle.
Removed permission:
TeamsAppInstallation.ReadForUser.All is no longer used anywhere in the code
(verified) and can be revoked. It existed for the per-user Teams app-install
tracking this release removes.
Also corrected: GraphUserApps still appeared in the ImportJobSettings examples on
the manual-setup and troubleshooting pages, so anyone following them would have
configured a flag that no longer exists. The occurrence in Release Notes.md is a
quoted historical payload and is deliberately left alone.
Privacy is now stated explicitly rather than left to be inferred. Security Model
previously said "Nothing about your tenant leaves your environment", which is not
true once Cognitive Services is configured: prompt text is sent to Azure AI
Language, and while the text itself is not stored, the extracted keywords ARE -
and a keyword can amount to a whole short prompt. That claim is now qualified and
a "Copilot prompt content" section spells out the three states (import off,
import on without cognitive, import on with cognitive) and the three controls
that bound it.
Pages changed:
Prerequisites - permission table, plus a section on the three
prerequisites for interaction history
Configuration Reference - GraphCopilotUsageReports and CopilotInteractionHistory
flags; GraphUserApps marked removed; stale Redis key
Copilot - full sections for both new imports
Data Collection - what each import stores, and the removed-feature notice
Security Model - Copilot prompt content
Installation / Troubleshooting - stale ImportJobSettings examples
All cross-page anchors were verified to resolve against the real headings, and
the diff was scanned for GUIDs, tenant domains, SharePoint URLs and addresses -
none added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 87347b97-407c-4dbe-bae5-e8880d0fc77d
392a1e3
Copilot adoption: document the App Insights telemetry and monitoring queries
New section 9 covering the CopilotAdoptionAnalysis event: its dimensions and measurements, why per-step durations are measurements rather than dimensions, and why one event is emitted per analysis rather than per request. Includes ready-made Kusto queries for the three questions an operator has - is any report degrading, how slow is it and which step owns it, is it approaching the timeout - and two suggested alert rules.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 87347b97-407c-4dbe-bae5-e8880d0fc77d
07dad06
Copilot adoption: record the measured scale finding and re-scope rollups
Benchmarked on a synthetic 200k-user / 12M-interaction tenant. The dominant cost was not the fact scan the earlier audit assumed - it was asking for three COUNT(DISTINCT) in one GROUP BY, which forces SQL Server to spool the input and process each distinct separately, and which pushed the query past the 90s command timeout so the report degraded to a warning on a large tenant.
28-day window went from 114.7M logical reads and 281s to 772k and 73s; 365-day from 115.2M and 303s to 819k and 135s. Correctness gated first: 33,999 rows each side, zero differing.
Rollups are re-scoped rather than dropped: still the answer for the widest windows and the prerequisite for credit analytics, but no longer the first fix.
No customer data was used or recorded.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 87347b97-407c-4dbe-bae5-e8880d0fc77d
6c99b69
Copilot adoption: say licence rather than seat throughout the docs
Matches the product change: seat is licensing shorthand that does not travel, and licence is the word already on the customer invoice and in the admin centre. 44 lines across the spec and the user guide, including the Reclaimable licences tile name and the FAQ.
Two headings reworded rather than swapped, because a straight substitution made them contradict themselves - a Copilot-branded SKU is what is not counted as a Copilot licence.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 87347b97-407c-4dbe-bae5-e8880d0fc77d
4ef1905
Copilot adoption: record why the last funnel step is not a loss
Section 5 now states that the funnel's final step reads 'N not yet Champions' in neutral grey rather than red 'lost here', and why: everyone who reaches Habitual has formed a habit by the tool's own definition (section 3.2), and the action catalogue marks Established as needing no action. Flagging them as lost would contradict our own advice and aim enablement budget at the people already succeeding. Written down so a future change does not quietly revert it.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 87347b97-407c-4dbe-bae5-e8880d0fc77d
5d1b048
Copilot adoption: document the window definition and the demo-data scenario
Records two things that were previously only true in code.
Section 3.1 now states that 'last N days' means exactly N distinct calendar dates and explains why the window starts N-1 days back: starting N days back spans N+1 dates, so the numerator could exceed the window the frequency target divides by.
New section 8 documents the FakeDataGen adoption scenario - what it plants, why random scatter makes the tool look broken, and the fact that persona targets are re-scored through the real scoring code on every run so the demo data cannot silently stop matching this page.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 87347b97-407c-4dbe-bae5-e8880d0fc77d
3fb6206
Copilot adoption: correct PAX name and note AI-in-One's own licensing caveat
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 492674d8-e6a9-4e73-a224-c598ee04110b
2ed02a4
Copilot adoption: overview sections, renamed actions, three new design principles
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 492674d8-e6a9-4e73-a224-c598ee04110b
b3b31ab
Add a Copilot Adoption user guide
The existing page is a specification - design principles, metric definitions and
a review checklist for people changing the tool. It does not tell an admin how to
actually use it.
Adds a task-oriented guide: prerequisites and what each missing import costs you,
a first-fifteen-minutes walkthrough, a tour of the six tabs, and three worked
scenarios (a reclaim review before renewal, planning an enablement programme, and
proving a programme worked with before/after snapshots). Plus a table of how to
read each chart with its common misreading, a glossary of every term the tool
uses, what each warning means and what to do about it, and an FAQ covering the
questions the numbers actually provoke - why adoption can be 100% while habit is
near zero, why figures differ from the M365 admin centre, and why a
Copilot-branded SKU may not count as a seat.
Cross-linked from the specification and the sidebar.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 492674d8-e6a9-4e73-a224-c598ee04110b
46fc088
Copilot Adoption spec: replace the backlog with a researched gap analysis
Assessed against Microsoft's 2026 tooling (admin-centre Copilot dashboard,
Copilot Control System measurement pillar, Viva Business Impact Report, the free
Analytics Hub templates) and the commercial tools in this space.
Records the strategic shift - 'who is using Copilot' is now a solved native
capability, and the frontier is credit/consumption cost, defensible value, and
readiness grounded in real data exposure - then tiers the gaps by whether the
data is already imported. Most of Tier 1 is surfacing signal we already store
(per-interaction credit estimates, AI model, sensitivity labels on accessed
resources) rather than new imports.
Also records what we deliberately reject and why: AI-generated narrative
summaries and named-user fluency leaderboards both breach stated principles, and
saying so here stops them being re-proposed each time Microsoft ships one.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 492674d8-e6a9-4e73-a224-c598ee04110b
71e9dd8
Copilot Adoption spec: Excel export and the visual vocabulary
Documents the twelve-sheet Excel export and its point-in-time snapshot purpose,
why it is written with no third-party dependency, and why the Report sheet has
to carry the thresholds for two snapshots to be comparable. Records the visual
vocabulary against AI-in-One (gauges and the radar profile have no equivalent
there), and adds review-checklist items for chart-type choice and for keeping
the page and the workbook in step.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 492674d8-e6a9-4e73-a224-c598ee04110b
33f109e
Copilot Adoption spec: record capability coverage against AI-in-One
Adds a per-page comparison table against microsoft/AI-in-One-Dashboard so a
future change cannot silently regress a capability, documents the agents and
unlicensed-usage screens, and states the two things deliberately not copied
(the AI-generated narrative page, and a per-user leaderboard naming
individuals). Refreshes the known-gaps list.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 492674d8-e6a9-4e73-a224-c598ee04110b
9fa5669
Add the Copilot Adoption Tool specification page
Describes what the Copilot Adoption area is for, its design principles
(every assertion explains itself; say a thing once; never show a percentage
without its counts; never claim a metric the data cannot support), every
metric definition and formula, the data sources with their caveats, and a
feature-review checklist to run against any future change to the tool.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 492674d8-e6a9-4e73-a224-c598ee04110b
7fe0b0d
docs: replace FTP deployment guidance with HTTPS
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 92f5afee-7f31-4689-983b-c414c8429041
767db13
Docs: Teams application access policy for Copilot meetings (#215) + Service Bus Premium in private deployments (#228)
- Copilot: new section explaining that OnlineMeetings.Read.All alone is not enough - a Teams
application access policy (New-CsApplicationAccessPolicy / Grant-CsApplicationAccessPolicy)
is also required, what the 403 looks like, and that only meeting metadata is affected.
- Prerequisites: OnlineMeetings.Read.All row now points at that section.
- Private Endpoints: new section on why the Teams calls import needs Service Bus on Premium in a
private deployment, the exact runtime error (which looks like an auth failure but is a network
block), the three valid options, and what the installer now does automatically.
393258e
Configuration Reference: full ImportJobSettings example (all flags)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 37f03090-2e24-45ff-b406-4d3cae3a6d50
3cbc420
Document ImportPowerPlatform, ResolveCopilotResourceMetadata and AUDIT_PERBATCH_DEDUP_CACHE
Power Platform is now an opt-in ImportJobSettings workload; Copilot resource
resolution and the audit dedup-cache rebuild are new tuning settings.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 37f03090-2e24-45ff-b406-4d3cae3a6d50
d0db35d
Docs: surface Copilot data/stats in nav; installer downloads via GitHub Releases only
- Home & sidebar: link the Copilot analytics page from the data-documentation sections so the recorded Copilot stats/data are discoverable
- Deployment Guidance: remove the retired m365advancedanalytics.azurewebsites.net downloads site; solution assets are on the GitHub Releases page only
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 36e1f07c-e2e8-4c7c-8a75-c040fe7ffb68
d10629a
Add dedicated Runbook Schedules page with sidebar nav
Extract the 'link runbooks to schedules' walkthrough from Analytics.md into a standalone page and link it from the sidebar under Solutions.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
f12d2ee
Add dedicated 'Runtime app reply URLs' page and link from setup
Move the runtime app reply URL / redirect URI guidance out of the App
Registrations Setup page into a focused page. Consolidate the duplicate
'Add Platform configurations' and 'Enable Implicit Grant Flow' sections,
document the exact HTTPS-root-with-trailing-slash reply URL, the ID-tokens
requirement for the hybrid code id_token flow, multiple environments and
AADSTS50011 troubleshooting. Keep the original heading/anchor and link to
the new page from the setup page, sidebar and manual-install page.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
f8bb0ae
Health Alerts: point the at-a-glance lead-in at the admin app's Health tab
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
f03820a
Health Alerts: add repeatable alert-setup procedure + health-telemetry rules
Adds a generic 'add an alert' procedure (log-search vs metric + action group),
new rules for component health (HealthCheck), web-job heartbeat, credential
expiry and exception-spike, and a lead-in to the in-app Health tab.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
749ad1d
Document importer custom events (FinishedImportCycle / FinishedSectionImport) in Monitoring
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
06381b1