-
Notifications
You must be signed in to change notification settings - Fork 12
Release Notes
This release introduces several new features and an important schema repair. It contains database schema changes that must be applied before the new binaries are run. If you have a large audit_events table (50M+ rows) please read Audit Events FK Upgrade before starting — the FK validation step can take from minutes to hours depending on table size and SQL tier.
Six new EF migrations are applied:
-
PowerPlatformAuditLogging— adds the Power Platform adoption tables (Power Apps, Power Automate, Power BI, Copilot Studio). See Database Schema → Power Platform. -
RemovePowerAppTypesAndFlowRecurrenceTypes— drops two short-lived lookup tables (power_app_types,flow_recurrence_types) that the unified Power Platform admin feed cannot populate. -
AddSentEmailTables— addssent_emails,sent_email_recipients,email_addressesfor the new optional Sent Email Import feature. See Database Schema → Email. -
AddAuditEventsOperationIndex— restores the missingIX_operation_idindex onaudit_events.operation_idfor databases that went through the legacyAudit Log Migration.sqlpath. -
AddAuditEventsOperationFK— restores the missingFK_audit_events_event_operationsforeign key. This step scans the entireaudit_eventstable and is the slowest part of the upgrade. See Audit Events FK Upgrade for timings and pre-upgrade recommendations. -
RemoveDataverseTables— defensive cleanup that dropsdataverse_entitiesandevent_meta_dataverseif present. Production (main) has never had these tables; this protects dev / test databases that applied an earlier version ofPowerPlatformAuditLogging.
Both audit-event migrations are idempotent — re-running the upgrade is safe and will exit in seconds once the FK and index are in place.
-
Power Platform audit logging. Power Apps launches and shares, Power Automate runs and shares, Power BI workspace/report/dashboard views, and Copilot Studio bot interactions are now imported. Works against both the legacy
PowerApps/MicrosoftFlowworkloads and the new unifiedPowerPlatformadmin activity feed (RecordType=256). No new Microsoft 365 or Graph permissions are required — uses the existingActivityFeed.Read. A new Power Platform report is included. Prerequisite: Microsoft Purview tenant audit must be on (usually default), and per-environment auditing must be turned on for each Power Apps / Power Automate / Copilot Studio environment to monitor. See Prerequisites → Power Platform auditing must be turned on for the checklist and Microsoft Learn links. -
Sent Email Import (optional). A new opt-in importer reads each user's
sentitemsfolder via Microsoft Graph and stores subject, send date, recipients, and (when Cognitive Services is enabled) a positive-sentiment score. Requires theMail.ReadGraph application permission and is disabled by default — enable by addingSentEmails=Trueto theImportJobSettingsapp setting. -
Cognitive Services RBAC fallback. The Azure AI Language client now automatically falls back from key-based to RBAC (managed identity / service principal) authentication when the resource has
disableLocalAuth=trueor returnsAuthenticationTypeDisabled. No configuration change required for existing deployments.
-
SharePoint sign-in moved to your default browser. The installer used to open an embedded Internet Explorer window and authenticate to SharePoint with cookies (via the legacy
OfficeDevPnP.Corelibrary). It now opens your default web browser and signs in with OAuth, so MFA, Conditional Access, passkeys and FIDO2 work — the long-standingIdcrlException: The sign-in name or password does not match one in the Microsoft account systemfailure on MFA-enabled accounts is gone. You also sign in once per install instead of once per site collection.- Nothing new to register. Sign-in uses Microsoft's built-in SharePoint Online Management Shell application, so there is no third Entra ID app registration to create. A new optional Sign-in app ID field on the SharePoint tab lets tenants that block that application supply their own public-client app instead — see Optional: use your own Entra ID app registration.
- Only affects SharePoint web tracking. If "Track web traffic" is off, the SharePoint tab is hidden, no sign-in is requested and none of this applies.
-
Admin action: none for existing deployments. Already-tracked sites keep working and nothing needs re-running. If the installer machine is locked down, allow outbound HTTPS to
login.microsoftonline.comand loopback (http://localhost) connections — see Prerequisites → Network & firewall rules. -
Config schema is now
2.2.0(additive):SharePointConfig.AuthClientIdandSharePointConfig.AuthTenantId. Existing configuration files load unchanged. - Previous behaviour and the legacy PowerShell tracker scripts are preserved on Legacy SPO web setup.
-
Service Bus is now optional. A new "Enable" checkbox in the installer lets admins skip provisioning the Service Bus namespace and queue. Service Bus is only needed for the Teams calls import (
CallQueueProcessor/CallRecordWebhookController); the installer blocks enablingCallsimport when Service Bus is disabled, the runtime logs a critical error and skips the call queue if Service Bus is missing while calls are enabled, andCallRecordWebhookControllerreturns HTTP 503 with a clear message. Defaults to enabled for back-compat. -
Public-access-aware firewall / VNet handling. When public network access is disabled on SQL Server or Redis, the installer now skips the firewall-rule tasks instead of failing with
DenyPublicEndpointEnabled. When VNet is enabled with public access disabled and Graph usage report runbooks are configured, the installer warns that a Hybrid Worker VM is required so runbooks can reach SQL / Storage / Key Vault via private endpoints.
-
License import duplicate-key fix.
UserLicenseProcessornow deduplicates by(LicenseType.Name, userId)before insertingUserLicenseTypeLookuprows. Multiple SKU part numbers (e.g.RIGHTSMANAGEMENTandRIGHTSMANAGEMENT_CE) can map to the same display-name license type, which previously causedIX_license_type_id_user_idunique-index violations. -
User import delta token is committed only after success.
GraphUserLoadernow buffers the Graph users@odata.deltaLinkduring the import and only persists it after the entire user import (insert + metadata + licenses) completes. Previously, a failure mid-import could leave the delta token advanced past unprocessed users, causing licence-count drift on subsequent runs. -
Power BI workspace dedupe in merge SQL.
insert_power_bi_events_from_staging_table.sqlnow groups by key before merging so two events that reference the same workspace ID with different names no longer cause a unique-key violation. -
SharePoint org-URL filter scoping. The
org_urlsfilter is now only applied to SharePoint events, not to all workloads as before. This previously dropped legitimate non-SharePoint events for tenants with restrictiveorg_urlslists. -
SentEmail FK cascade fix. Resolved multiple cascade paths on the
SentEmail→EmailAddressrelationship that would otherwise have blocked migration creation.
- Dependency housekeeping. The SharePoint client library (CSOM) has been replaced with direct SharePoint REST calls, and the deprecated Azure AD Graph, ADAL and legacy Azure REST client packages have been removed — none of them had any code behind them. NuGet packages are updated to their latest versions and all assembly binding redirects regenerated from the built output. No admin action and no configuration change — the installer behaves identically, it just ships considerably fewer files (eleven SharePoint assemblies dropped from the installer, nine from the website, which never used them).
-
All
[ImportProp]flags now default tofalse(opt-in model). A fresh install with noImportJobSettingsapp setting will now import nothing rather than everything. Existing installs are unaffected because the installer writes the full settings string (e.g.Calls=True;GraphUsersMetadata=True;...) to App Service appsettings, and the parser correctly honours both=Trueand=Falsetokens. If you have a hand-maintained deployment whereImportJobSettingsis empty / missing and you rely on the previous "import everything" default, you must now populate the app setting explicitly before upgrading.
- Build: TBD (set at release time)
- SPOInsights ModernUI: (unchanged)
- AI Tracker: (unchanged)
Fixes some issues in the solution test configuration in the installer. Loading config file multiple times no longer duplicates tags.
No SQL schema changes.
Adds the ability to send App Service configuration to AITracker via an API call, which is locally cached too.
New config value: MetadataRefreshMinutes - used to determine how often page metadata is loaded from AITracker, and how often the server will update metadata for URLs in SQL. See docs for more info.
Installer:
- PS file updated for PnP.PowerShell
- Installer & PS pass new param to SPFx component and AITracker - insightsWebRootUrlHash (base64 encoded app-service root URL).
Web:
-
New endpoint for loading script config: api/ImportConfig?appInsightsStringEncoded=base64encodedstring
-
Protected via CORS, based on urls defined in "org_urls" table.
-
Also verifies App Insights connection string matches. The installer configures this already, so we send to this new endpoint too so it can verify against the connection-string on the server to be sure the call is from a valid client.
-
SPOInsights ModernUI: 1.0.1.54
-
AI Tracker: version 1.5.4
No SQL schema changes.
- Surface Copilot events data in the reports
- Features/ai tracker config
- Fix: Analytics runbooks are scheduled at incorrect times
- Update assembly metadata
No SQL schema changes.
Reports updates for user usage analytics.
No SQL schema changes.
Reliability updates for copilot event processing. Previously, SharePoint metadata lookups failed for file specific actions. Also now misc chats are better imported for Copilot actions in Outlook and other app-hosts.
No SQL schema changes.
Fixes for SharePoint site aggregation usage stats. When looking up a site ID for a previously imported site (with no ID set), the site lookup save would crash.
No SQL schema changes.
Installer supports creating Azure resources with tags for everything in the solution.
Fixes around "enhanced usage profiling" - installer generates SAS URLs with a validity of 2hrs read-only for each file to be created as a runbook and sets that as the content-link for the runbook. Previously it created a container with anonymous read-only for blobs + shared the blob URLs without any parameters, as that seemed to cause problems with the Automation API. Note: runbook schedules still need manually enabling in case the aggregation stats aren't needed, as it generates a lot of extra load on the DB.
No SQL schema changes.
Installer: now supports deploying the "enhanced usage profiling" runbook resources + SQL extensions when updating DB schema. Will deploy runbook ARM template when usage imports are enabled, but runbook schedules need configuring manually (see engine install doc)
Activity import: will only import once every 24 hours, as that's the earliest timeframe for any updates.
No SQL schema changes.
- Fixes:
- "storage_used_bytes" in "sharepoint_sites_file_stats_log" resized from int to bigint as import was crashing for large sites.
- New field "site_id" on "sites" - the Graph ID of each site. Nullable, and filled in when resolving site ID to URL from SharePoint Site Usage report loading.
SQL schema updated to 202404031636545_ExtendedUsageReportsSpSiteUsageLogDbFixes
- Fixes:
- platform_user_activity_log not populating activity correctly.
No SQL schema changes.
-
Fixes:
- Crash on saving to teams_addons when multiple add-in names shared same ID.
-
"users" table now has "mail" column for primary email address
-
New usage imports:
- User app usage (platform_user_activity_log) - which OS users use, and which Office apps. Daily stats.
- SharePoint site usage stats (sharepoint_sites_file_stats_log) - how many active vs total files, links shared. Weekly stats that are added to when the dataset refresh is a Sunday (usually a couple of days after Sunday as Graph usage API is a couple of days behind).
-
Expanded imports:
- teams_user_device_usage_log now has "used_linux" and "used_chrome_os"
- teams_user_activity_log now has "post_messages", "reply_messages", and "urgent_messages" counts.
SQL schema updated to 202403131104274_ExtendedUsageReports
- Reliability fixes for SPO comments and metadata imports.
No SQL schema changes.
- NuGet updates to remove deprecated & vulnerable libraries, Azure Identity especially.
- Authenticate with Key Vault cert instead of secret.
- New: page comments and page likes + DB schema changes.
- New tables: page_likes, page_comments.
- AI Tracker: version 1.5.2 sends these as separate lists, instead of just accumulated totals.
- App Insights Importer will process new comments/likes data if seen in App Insights.
- See "3.1 Page Metadata Updates" in "O365 Adv Analytics and Insights - Deployment Guide" for information on how this works.
Fixes:
- Search terms imports Greek chars correctly.
- App Insights DeviceName is imported correctly.
- URL importing ignores query parameters and bookmarks.
- Now "https://contoso.sharepoint.com/sites/ProjectFalcon-UXtest?refresh=1" and "https://contoso.sharepoint.com/sites/ProjectFalcon-UXtest" are treated as the same page.
- Large cognitive API calls are batched correctly and extra validation added to requests.
Installer:
- Installer grants web-app managed ID to key-vault
- App service created with managed identity
SQL schema update required! 202401191004335_PageCommentsAndLikes
Advanced analytics:
- AITracker for SPO sites now uses Application Insights connection-string instead of just instrumentation key.
- Important: this version of the SPO components can only be deployed with this version (or above) of the installer/PowerShell scripts. Using a previous version of either will break tracking.
- SPOInsights ModernUI: 1.0.1.51
- AI Tracker: version 1.5.1
- Installer
- Reliability fixes.
- Configured correctly the Language Service in the App Service
- FTP validation test now will only work with own-configured FTPS target, if configured.
- Search events are imported from App Insights when user searched in SPO.
- Recommended: after updating, clear browser cache to ensure both latest scripts are loaded.
Adoptify:
- UI updates. Adoptify package 1.0.0.8
No SQL schema changes.
Advanced analytics:
- AITracker improved click detection, now with duplicate-click detection too. New version: "1.4.9".
- Installer reliability fixes for FTP profile detection and UI tweaks for cognitive options.
Adoptify:
- Adoptify 1.0.0.7 package + installer schema changes.
- Added 'Custom Quests' functionality - quests that can be approved by admin as opposed to auto tracked
- Added columns to lists to support custom quests
No SQL schema changes.
Advanced analytics:
- Web reliability updates for page clicks.
- Event timestamp uses custom property value created by AITracker JS instead of app-insights event timestamp, for better accuracy. App Insights event wouldn’t necessarily arrive in order and on time the event was generated – the queuing and sending is done "when possible".
- Import job updates for increased resiliency.
Adoptify:
- Updated solutions to 1.0.3 – various reliability changes.
No SQL schema changes.
-
Page likes & comments read from API. Comments aren't in the database yet in detail, but "CommentsCount" and "LikesCount" are added as part of page properties.
-
Page properties are only read once per day, per page.
-
Clicks registers on anchor elements that use stopPropagation/event suppression.
- For element clicks are aren't an A link (like a span), the parent A link is assumed, if there is one.
-
Installer reliability fixes for SPFx installation & content uploading.
-
If you allowed us, anonymous runtime stats are now sent to https://m365advancedanalytics.azurewebsites.net/api/Telemetry
- Reports sent are saved in your SQL database, in sys_telemetry_reports. Example report:
{ "AnonClientId": "62FEBDCE7A104437AFAEB68F8954FBF818243C8649F7A8775B39FCDA2F1E4B6C", "id": "62FEBDCE7A104437AFAEB68F8954FBF818243C8649F7A8775B39FCDA2F1E4B6C", "DataPointsFromAITotal": 10, "ConfiguredSolutionsEnabledDescription": "CustomOrInsights", "ConfiguredImportsEnabledDescription": "Calls=True;GraphUsersMetadata=True;GraphUserApps=True;GraphUsageReports=True;GraphTeams=True;ActivityLog=True;WebTraffic=True", "TableStats": [ { "TableName": "users", "TotalSpaceMB": 0.70, "Rows": 1 } ... ], "BuildVersionLabel": "Build 1000", "Generated": "2023-03-31T09:09:57.5461964+02:00" } -
New SPOInsights AI Tracker version: v1.4.5
-
New SPOInsights ModernUI version: v1.0.14
-
Adoptify solution v1.0.0.1
Fixes:
- Fixed an issue with null caller ID crashing new call saving.
- Installer "save as" option was always disabled.
- Adoptify solution zip updated.
No database schema changes from build 1164.
- Home
- What data is collected
- The web portal
- Licence activity
- Copilot data & stats
- Architecture & costs
- App registrations setup
- Install with the installer
- Manual installation
- Private endpoints (optional)
- Certificate authentication (optional)
- Enable CSP for AITracker
- Verify the deployment
- Legacy SPO web setup