Skip to content

Database Collaboration Schema

Sam Betts edited this page Oct 22, 2026 · 1 revision

Database Schema → Database Collaboration Schema

Power Platform

These tables hold adoption-signal data for Power Apps, Power Automate, Power BI, and Copilot Studio audit events. They are populated from two audit log sources:

  • The legacy Workload="PowerApps" / Workload="MicrosoftFlow" events (top-level fields).
  • The newer unified Power Platform admin activity feed (Workload="PowerPlatform", RecordType=256), which carries data inside a property collection of OpenTelemetry-style name/value pairs.

The importer maps both shapes into the same set of tables, so reports do not need to know which feed an event came from. No additional Graph or Microsoft 365 permissions are required beyond the existing ActivityFeed.Read used for all other audit imports.

All event-meta tables join back to audit_events via event_id (1:1, primary-key) for common event fields (user_id, time_stamp, operation_id, etc.).

Lookup / master tables

Table Name Comments
power_app_environments Distinct Power Platform environments seen across all events. Columns: environment_id (the Power Platform GUID), name.
power_platform_client_types Client type lookup for Power Apps launches (Web, Mobile, Teams, etc.).
power_platform_connectors Distinct connectors referenced by apps and flows. Columns: name, publisher, is_premium.
power_apps Power App definitions seen in audit events. Columns: app_id, name, environment_id, first_seen_at.
power_automate_flows Power Automate flow definitions seen in audit events. Columns: flow_id, name, environment_id, first_seen_at.
power_bi_workspaces Power BI workspaces seen in audit events. Columns: workspace_id, name.
power_bi_reports Power BI reports seen in audit events. Columns: report_id, name, report_type, workspace_id, first_seen_at.
power_bi_dashboards Power BI dashboards seen in audit events. Columns: dashboard_id, name, workspace_id, first_seen_at.
copilot_studio_bots Copilot Studio bots seen in audit events. Columns: bot_id, name, environment_id, first_seen_at.
power_app_connectors Junction table: which connectors a Power App uses. Columns: power_app_id, connector_id (unique together).
power_automate_flow_connectors Junction table: which connectors a flow uses. Columns: flow_id, connector_id (unique together).

Event-meta tables

These all have an event_id FK to audit_events.id (PK is 1:1 with the audit event, except the share tables which use a synthetic id because there can be multiple share targets per event).

Table Name Comments
event_meta_power_app Power Apps launch/use events. Columns: power_app_id, app_session_id, client_type_id.
event_meta_power_app_share Power Apps share events. Columns: power_app_id, shared_with_user_id, role_name. Unique on (event_id, shared_with_user_id).
event_meta_power_automate_flow Power Automate flow events (run started, edited, etc.). Columns: flow_id, run_id.
event_meta_power_automate_flow_share Power Automate flow share events. Columns: flow_id, shared_with_user_id, role_name. Unique on (event_id, shared_with_user_id).
event_meta_power_bi Power BI events. Columns: workspace_id, report_id, dashboard_id. Populated only for adoption-relevant Power BI events (e.g. ViewReport).
event_meta_copilot_studio Copilot Studio bot events. Columns: bot_id.

Teams

These tables are specific for Teams activity only.

Table Name Comments
teams Teams definitions – discovered date, last refresh date, Graph ID, and name
teams_channel_stats_log Daily log of stats for all channels - # chats, and sentiment score for the day.
teams_channel_stats_log_keywords Lookup table linking a keyword to a channel-stats log
teams_channel_stats_log_langs Lookup table linking a language to a channel-stats log
teams_channel_tabs_log Daily log of which tabs are on which channels.
teams_channels Team channels definitions – Graph ID, name, and parent Team
teams_tabs Tabs definitions – URL, add-on ID, Graph ID, and name
teams_user_activity_log Aggregate stats for Teams users per day – counts for private chats, meetings, and calls.
teams_user_device_usage_log Aggregate stats for Teams user device usage per day – whether users used Teams on: web, Windows Phone, Android, iOS, Mac, and Windows.
team_membership_log Daily log of membership to a team – user & team for a given date.
team_owners Current owners of each Team – user, and Team lookups.
teams_channel_user_log Per-user activity for a team channel on a given date – posts, replies, mentions made and received.
teams_user_channel_reactions User reactions in team channels – reaction type, user, channel, and date.
teams_reaction_types Reaction type lookup table (like, heart, etc).

Retired: Teams add-on / app-install tracking (DeprecateTeamsAddons, issue #278). teams_addons, teams_addons_log and teams_addons_user_installed_log are no longer written, and the TeamAddOnDefinition / TeamAddOnLog / UserAppsLog entities were removed along with the per-user Graph call they needed.

teams_addons_user_installed_log wrote one row per user, per installed app, per metadata cycle — at this solution's 200,000-user baseline with ~20 apps per user that is roughly 4M rows/day, over a billion a year. It became the largest table in the product by both row count and storage, larger than audit_events, to feed a single lookup category.

As with the other retirements, the three tables are dropped only if all three are empty; if you hold data they are retained read-only along with their reporting views. See also Data Collection → Per-user Teams apps tracking (removed).

Calls

These tables are specific for Teams & Skype calls activity only.

Table Name Comments
call_records List of calls made – organizer, call-type, Graph ID, start and end.
call_failures List of call failures – parent call, reason given, stage of failure
call_feedback Call feedback given by users – parent call, rating, extra comments, user in question.
call_modalities Call modalities lookup table (audio, video, screenshare, etc).
call_session_call_modalities List of modalities used in any given call session – parent call, and modality used.
call_sessions Sessions in a call. Anyone joining a call will have their own session in the call – attendee, start, end
call_types Type of call lookup table only

Stream

Retired. Microsoft Stream (Classic) has been retired by Microsoft, so no tenant produces these events any more. stream_videos and event_meta_stream were removed by the RetireUnusedAuditYammerStreamTables migration — see Retired tables for exactly when they are dropped and when they are retained.

Stream records that do still arrive are imported as generic events (audit_events plus event_meta_general, which keeps the raw record JSON), so no audit coverage is lost.

Yammer

These tables are specific for Viva Engage (Yammer) activity only. See also yammer_user_activity_log under Microsoft 365 Activity Tables and the yammer_groups lookup under Common/Lookup Tables.

Table Name Comments
yammer_device_activity_log With what devices are users accessing Yammer
yammer_group_activity_log Activity per group: messages posted, read, liked, number of members

Retired: yammer_messages and yammer_msg_to_stream belonged to a legacy Viva Engage message import that no longer exists in the codebase, and were removed by the RetireUnusedAuditYammerStreamTables migration. The Viva Engage usage report import above is unaffected.


Return to Database Schema · All topics in this guide

Previous: Database Activity and Web Schema · Next: Database Copilot Schema

Start here

Copilot analytics

Using the portal

Install & configure

Beyond Copilot

Operate

Upgrading from an older build

Reference

Project

Clone this wiki locally