COE Weekly Admin Digest
Aggregates app count, flow count, active makers, new environments, and DLP violations from Dataverse inventory tables. Builds a structured HTML email and sends it weekly to the admin group. The flagship COE report pattern.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
The COE Weekly Admin Digest is the flagship Center of Excellence reporting flow. It aggregates key Power Platform metrics from Dataverse inventory tables — total canvas apps, total cloud flows, active makers, new environments, and DLP violations — and delivers a polished HTML email to the admin group every Monday morning.
This flow is designed to be the single weekly pulse check for COE administrators and executives, providing at-a-glance KPIs with conditional alerts for DLP violations and new environment creation.
Use Case
IT Admins and Executives need a consolidated weekly view of their Power Platform tenant health without logging into multiple admin portals. This flow queries four Dataverse inventory tables (populated by COE Kit sync flows or custom inventory flows), computes summary statistics, and delivers a styled HTML digest email with stat cards, conditional alert banners, and actionable recommendations.
The flow is ideal for teams that:
- IT Admins who need a weekly tenant health pulse check without logging into multiple admin portals
- Executives who want at-a-glance Power Platform KPIs delivered to their inbox
- COE teams running the standard COE Kit (or custom inventory flows) and looking for an out-of-the-box weekly digest
- Organizations that need conditional alerting on DLP violations and new environment creation
Flow Architecture
Weekly Recurrence
RecurrenceFires every Monday at 8:00 AM EST (12:00 UTC). Anchor date: 2026-04-13.
7x Parallel Initialize Variable
Initialize variable (parallel branches)Runs seven Initialize Variable actions in parallel immediately after trigger: varAdminEmail (String) from flowlibs_AdminNotificationEmail env var; varAppTable (String) from flowlibs_COEAppInventoryTable; varFlowTable (String) from flowlibs_COEFlowInventoryTable; varEnvTable (String) from flowlibs_COEEnvironmentTable; varDLPTable (String) from flowlibs_COEDLPViolationTable; varNewEnvCount (Integer) = 0; varActiveMakerCount (Integer) = 0.
Compute Week Start Date
ComposeRuns addDays(utcNow(), -7, 'yyyy-MM-ddTHH:mm:ssZ') to compute the 7-day lookback window. All 7 Init actions must succeed before this runs.
4x Parallel Dataverse ListRecords
List rows (Microsoft Dataverse, parallel branches)Fires after Compute, all in parallel: List App Inventory Records queries varAppTable (default admin_app); List Flow Inventory Records queries varFlowTable (default admin_flow); List Environment Records queries varEnvTable (default admin_environment); List DLP Violation Records queries varDLPTable (default admin_dlpviolation) with a $filter of createdon ge {weekStart}.
Set varActiveMakerCount
Set variableComputes maker count from app inventory using length(union(...)) over the app records.
Filter New Environments
Filter arrayFilters environment records where createdon >= weekStart.
Set varNewEnvCount
Set variablelength(body('Filter_New_Environments')) — count of environments created in the past 7 days.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_AdminNotificationEmail | String | admin@contoso.com | Recipient email for the weekly digest. Set to your admin group email or distribution list. |
| flowlibs_COEAppInventoryTable | String | admin_app | Dataverse table name for canvas app inventory. Default matches the standard COE Kit table name. |
| flowlibs_COEFlowInventoryTable | String | admin_flow | Dataverse table name for cloud flow inventory. Default matches the standard COE Kit table name. |
| flowlibs_COEEnvironmentTable | String | admin_environment | Dataverse table name for environment inventory. Default matches the standard COE Kit table name. |
| flowlibs_COEDLPViolationTable | String | admin_dlpviolation | Dataverse table name for DLP policy violations. Default matches the standard COE Kit table name. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Microsoft Dataverse | shared_commondataserviceforapps | ListRecords (List App Inventory Records) ListRecords (List Flow Inventory Records) ListRecords (List Environment Records) ListRecords (List DLP Violation Records) |
| Office 365 Outlook | shared_office365 | SendEmailV2 (Send Weekly Digest Email) |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Update environment variable values
- Set flowlibs_AdminNotificationEmail to your admin group email or distribution list. Set the four table-name variables (flowlibs_COEAppInventoryTable, flowlibs_COEFlowInventoryTable, flowlibs_COEEnvironmentTable, flowlibs_COEDLPViolationTable) to match your COE Kit or custom inventory table names — the defaults match standard COE Kit table names.
- Authorize connections
- Dataverse: authorize with a service account that has read access to the inventory tables. Outlook: authorize with the account that should send the digest email.
- Turn on the flow
- After importing and configuring the solution, turn the flow on. It will then fire every Monday at 8:00 AM EST.
- Change the recurrence schedule
- Edit the trigger to run on a different cadence (e.g., daily, biweekly) by adjusting the Recurrence frequency and interval.
- Add additional Dataverse queries for custom metrics
- Extend the flow with more ListRecords actions for metrics such as connector usage, flow run counts, or any other inventory table you maintain.
- Modify the HTML template
- Edit Compose Digest Report to match your organization's branding — adjust colors, logos, CSS, and section copy in the HTML.
- Add CC/BCC recipients
- Modify the SendEmailV2 parameters in Send Weekly Digest Email to include CC or BCC addresses (or a wider distribution list).
- Adjust the lookback window
- Change the -7 in Compute Week Start Date (addDays(utcNow(), -7, ...)) to a different number of days to widen or shorten the weekly window.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Week start lookback
Computes the 7-day lookback window used by all subsequent filters.
EXPR.02DLP filter (server-side)
Built dynamically as the Dataverse $filter for List DLP Violation Records so only the past 7 days are returned.
EXPR.03New environment filter (client-side)
Used inside Filter New Environments to keep only environments created within the lookback window.
EXPR.04Dynamic email subject
Appends the run date to the subject line so each weekly digest is uniquely titled.
EXPR.05Conditional DLP alert
Swaps between the red DLP alert banner and the green clean-status banner inside Compose Digest Report.
EXPR.06Active maker count
Uses union to deduplicate makers across the app inventory before counting.
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.