Maker Activity Monthly Report
Aggregates flow run counts and app session data by maker from Dataverse inventory tables. Formats results as an HTML table and sends a monthly digest to the admin distribution list.
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 Maker Activity Monthly Report is a scheduled Power Automate cloud flow that aggregates flow run counts and app session data by maker from Dataverse inventory tables. It formats results as a styled HTML table and sends a monthly digest email to the admin distribution list. This flow is a foundational COE (Center of Excellence) reporting pattern — it provides visibility into who is actively building and running automations across the tenant.
Use Case
IT admins and executives need monthly visibility into Power Platform adoption metrics: which makers are running flows, which apps are being used, and overall activity trends. This flow automates the reporting by querying Dataverse inventory tables (populated by companion COE sync flows) and delivering a polished HTML email digest on the 1st of each month.
Flow Architecture
Monthly Recurrence
RecurrenceFires on the 1st of each month at 8:00 AM EST.
7x Parallel Initialize Variable
Initialize variableBinds 4 environment variables (varAdminEmail, varFlowRunTable, varAppTable, varLookbackDays) and initializes 3 working variables (varFlowReportHtml, varAppReportHtml, varMakerCount) in parallel.
Compute Lookback Cutoff Date
ComposeCalculates the lookback date using addDays(utcNow(), mul(varLookbackDays, -1)).
List Flow Run Records
Dataverse — List rowsQueries the configured flow run table filtered by createdon ge the cutoff date. Runs in parallel with the App Inventory query.
List App Inventory Records
Dataverse — List rowsQueries the configured app inventory table filtered by createdon ge the cutoff date. Runs in parallel with the Flow Run query.
Set varMakerCount From Flow Runs
Set variableSets the record count using length() on the flow run results.
For Each Flow Run Record
Apply to eachFor each flow run record: appends a styled HTML table row to varFlowReportHtml.
For Each App Record
Apply to eachFor each app inventory record: appends a styled HTML table row to varAppReportHtml.
Compose Full Monthly Report
ComposeBuilds a complete styled HTML email with header, summary stats, flow activity table, and app activity table.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_AdminNotificationEmail | String | admin@contoso.com | Recipient email for the monthly report. Set to your admin distribution list or individual admin email. |
| flowlibs_MakerActivityFlowRunTable | String | admin_flowsession | Dataverse table logical name for flow run session data (e.g., admin_flowsession from the COE Kit, or your custom table name). |
| flowlibs_MakerActivityAppTable | String | admin_app | Dataverse table logical name for app inventory data (e.g., admin_app from the COE Kit, or your custom table name). |
| flowlibs_MakerActivityLookbackDays | String | 30 | Number of days to look back for activity data. Converted to an integer at runtime. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Microsoft Dataverse | shared_commondataserviceforapps | ListRecords (queries flow run and app inventory tables) |
| Office 365 Outlook | shared_office365 | SendEmailV2 (delivers the monthly report 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.
- Set the recipient email
- Update flowlibs_AdminNotificationEmail to your admin distribution list or individual email address.
- Configure Dataverse table names
- Update flowlibs_MakerActivityFlowRunTable and flowlibs_MakerActivityAppTable to match your COE inventory table logical names (e.g., admin_flowsession and admin_app for COE Kit tables, or your own custom table names).
- Adjust the lookback window
- Change flowlibs_MakerActivityLookbackDays to control how far back the report queries (default: 30 days).
- Authorize connections
- Open the flow in the designer and authorize the Dataverse and Office 365 Outlook connections for your environment.
- Turn on the flow
- Toggle the flow state from Off to On after authorizing connections and confirming the configuration.
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.01Lookback cutoff
Converts a positive lookback-days integer into a negative offset date for the Dataverse filter.
EXPR.02Dynamic OData filter
Builds the Dataverse query filter string at runtime using the computed cutoff date.
EXPR.03Record count
Counts returned records inline without a separate API call.
EXPR.04Int conversion from env var
Converts the String-type environment variable to an integer for use in addDays() and mul().
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.