Customer 360 View Assembler
Salesforce action: GetRecord. On-demand flow accepts an Account ID, fetches the full account record from Salesforce, pulls related data from Dataverse (support tickets, billing), merges into a unified Customer 360 HTML summary, and emails it to the requestor.
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
This on-demand flow assembles a unified "Customer 360" view by fetching account data from Salesforce, pulling related support tickets and billing records from Dataverse, and merging everything into a comprehensive HTML email report. The report is sent to a configurable recipient, giving sales teams and executives a complete view of customer relationships in a single document.
Use Case
Sales teams and executives need a quick, consolidated view of customer relationships across multiple systems. Instead of manually checking Salesforce for account details, then switching to Dataverse for support history and billing records, this flow assembles everything into a single styled HTML email report.
The flow is ideal for teams that:
- One-click customer 360 report — no manual data gathering
- Consolidated view of Salesforce accounts and Dataverse support/billing data
- Professional HTML email format — ready to forward or present
- Fully configurable data sources via env vars — no flow edits to re-target entities
- Parallel data fetches — fast execution even with multiple queries
Flow Architecture
Manually trigger a flow
Power Apps / Manual triggerOn-demand trigger that accepts an Account ID input. Kicks off the Customer 360 assembly process.
Initialize variables (parallel)
5× Initialize VariableLoad env vars: SalesforceInstanceUrl, SupportEntity, BillingEntity, RecipientEmail, plus trigger Account_ID.
Get Salesforce Account
Salesforce GetItemFetch the full Account record from Salesforce using the provided Account_ID.
List Support Tickets
Dataverse ListRecordsQuery the configurable support entity filtered by account name, top 50 (runs in parallel with billing and account-details composes).
List Billing Records
Dataverse ListRecordsQuery the configurable billing entity filtered by account name (parallel branch).
Compose Account Details Section
ComposeBuild a styled HTML card with the account data table and a Salesforce link (parallel with the other compose actions).
Compose Support Section
ComposeBuild a support-tickets HTML section summarising the records returned by the Dataverse query.
Compose Billing Section
ComposeBuild a billing record count and summary HTML section.
Assemble Customer 360 HTML
ComposeMerge the account, support, and billing HTML sections into a single styled Customer 360 report body.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_SalesforceInstanceUrl | String | <configure> | Base URL of your Salesforce instance (e.g. https://yourcompany.my.salesforce.com). Used to build deep links to the Account record in the HTML report. |
| flowlibs_Customer360SupportEntity | String | incident | Dataverse entity logical name for support tickets (default: incident). |
| flowlibs_Customer360BillingEntity | String | <configure> | Dataverse entity logical name for billing records — set to the table that stores invoices or billing transactions in your environment. |
| flowlibs_NotificationEmailAddress | String | alerts@yourcompany.com | Email address that receives the Customer 360 report. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Salesforce | shared_salesforce | GetItem (Fetch Account record) |
| Microsoft Dataverse | shared_commondataserviceforapps | ListRecords (Fetch support and billing records) |
| Office 365 Outlook | shared_office365 | SendEmailV2 (Send HTML report) |
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.
- Deploying to Another Environment
- Import the solution, update the four env vars (Salesforce instance URL, Dataverse support/billing entity names, recipient email), bind the three connection references (Salesforce, Dataverse, Outlook), then turn the flow on.
- Change the Salesforce object type
- Modify the GetItem action's table parameter to fetch Contacts, Opportunities, or any custom object instead of Accounts.
- Change the Dataverse entities
- Update flowlibs_Customer360SupportEntity and flowlibs_Customer360BillingEntity env vars to point to your support and billing tables.
- Customize the OData filter
- The ListRecords actions filter by contains(title/name, accountName). Adjust to use a foreign key lookup if your Dataverse tables have an account ID column.
- Add more data sources
- Insert additional ListRecords or connector actions between steps 7 and 8, then add a new Compose section and reference it in the final report assembly.
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.01Dynamic Salesforce link
Builds a deep link to the Account record in Salesforce by combining the configured instance URL with the trigger's Account ID.
EXPR.02Conditional record-count messaging
Used inside the Compose actions for the support and billing sections to render either a friendly empty-state message or a count of matching records.
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.