Skip to content

Release Notes

Sam Betts edited this page Jun 18, 2026 · 7 revisions

master - next release (DB schema update required)

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.

Schema changes

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 — adds sent_emails, sent_email_recipients, email_addresses for the new optional Sent Email Import feature. See Database Schema → Email.
  • AddAuditEventsOperationIndex — restores the missing IX_operation_id index on audit_events.operation_id for databases that went through the legacy Audit Log Migration.sql path.
  • AddAuditEventsOperationFK — restores the missing FK_audit_events_event_operations foreign key. This step scans the entire audit_events table and is the slowest part of the upgrade. See Audit Events FK Upgrade for timings and pre-upgrade recommendations.
  • RemoveDataverseTables — defensive cleanup that drops dataverse_entities and event_meta_dataverse if present. Production (main) has never had these tables; this protects dev / test databases that applied an earlier version of PowerPlatformAuditLogging.

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.

New features

  • 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/MicrosoftFlow workloads and the new unified PowerPlatform admin activity feed (RecordType=256). No new Microsoft 365 or Graph permissions are required — uses the existing ActivityFeed.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 sentitems folder via Microsoft Graph and stores subject, send date, recipients, and (when Cognitive Services is enabled) a positive-sentiment score. Requires the Mail.Read Graph application permission and is disabled by default — enable by adding SentEmails=True to the ImportJobSettings app 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=true or returns AuthenticationTypeDisabled. No configuration change required for existing deployments.

Installer changes

  • 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 enabling Calls import 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, and CallRecordWebhookController returns 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.

Fixes

  • License import duplicate-key fix. UserLicenseProcessor now deduplicates by (LicenseType.Name, userId) before inserting UserLicenseTypeLookup rows. Multiple SKU part numbers (e.g. RIGHTSMANAGEMENT and RIGHTSMANAGEMENT_CE) can map to the same display-name license type, which previously caused IX_license_type_id_user_id unique-index violations.
  • User import delta token is committed only after success. GraphUserLoader now buffers the Graph users @odata.deltaLink during 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.sql now 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_urls filter is now only applied to SharePoint events, not to all workloads as before. This previously dropped legitimate non-SharePoint events for tenants with restrictive org_urls lists.
  • SentEmail FK cascade fix. Resolved multiple cascade paths on the SentEmailEmailAddress relationship that would otherwise have blocked migration creation.

Behavioural change to review before upgrading

  • All [ImportProp] flags now default to false (opt-in model). A fresh install with no ImportJobSettings app 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 =True and =False tokens. If you have a hand-maintained deployment where ImportJobSettings is empty / missing and you rely on the previous "import everything" default, you must now populate the app setting explicitly before upgrading.

Component versions

  • Build: TBD (set at release time)
  • SPOInsights ModernUI: (unchanged)
  • AI Tracker: (unchanged)

master - build 1433

Fixes some issues in the solution test configuration in the installer. Loading config file multiple times no longer duplicates tags.

No SQL schema changes.

master - build 1431

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.

master - build 1427

  • 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.

master - build 1412

Reports updates for user usage analytics.

No SQL schema changes.

master - build 1400

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.

master - build 1375

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.

master - build 1365

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.

master - build 1347

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.

master - build 1307

  • 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

master - 1301

  • Fixes:
    • platform_user_activity_log not populating activity correctly.

No SQL schema changes.

master - 1286

  • 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

master - 1271

  • Reliability fixes for SPO comments and metadata imports.

No SQL schema changes.

master - 1262

  • 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:

Installer:

  • Installer grants web-app managed ID to key-vault
  • App service created with managed identity

SQL schema update required! 202401191004335_PageCommentsAndLikes

master - 1236

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.

master - build 1226

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.

master - build 1207

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.

master - build 1196

  • 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

master build 1169

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.

Clone this wiki locally