
How to Build Dynamic Dataverse Record Links in Power Automate
Howdang Rashid
Saturday, 22 August 2026 · 2 min read
When you work with Dataverse in Power Automate, you often want a direct record link in an email or Teams message - "click here to review this contract". The catch: there's no native dynamic action that generates one. This guide (inspired by thedynamicidentity.com and updated for relevance) builds the URL manually with two Compose actions and a little string surgery.

The full step-by-step carousel is free in the Powercademy Success Kit.
What's the concept?
A model-driven record URL has three parts: the environment URL, the table's logical name, and the record's GUID. We extract the first from the Dataverse action's own output, and concatenate the rest. Two Compose actions, done.
Step 1: Enable full metadata
Make sure the Dataverse action you're referencing has Full Metadata enabled - that's what exposes the @odata.id property you'll parse in the next step.
Step 2: Extract the environment URL
Add a Compose action with this expression (swap in your action's name):
uriHost(outputs('[YOUR ACTION NAME]')?['body/@odata.id'])uriHost() strips the full OData URL down to just the environment host - no hardcoding, so the flow keeps working when it moves between environments.
Step 3: Build the record URL
A second Compose concatenates the parts - environment URL, table logical name, and the record GUID from your trigger or action:
concat(
'https://',
outputs('Compose_-_uriHost_-_Environment_URL'),
'/main.aspx?pagetype=entityrecord&etn=pcdmy_contract&id=',
triggerOutputs()?['body/pcdmy_contractid']
)Swap pcdmy_contract for your table's logical name and the GUID reference for your record's id column. The output is a clickable URL straight to the record - drop it into emails, Teams messages, or wherever the flow needs it.
FAQ
Why not hardcode the environment URL?
Because the flow breaks the moment it deploys to another environment. Deriving it from @odata.id makes the link environment-aware for free - dev links point at dev, prod links at prod.
Where do I find my table's logical name?
In the table's properties in your solution (it carries your publisher prefix, like pcdmy_contract). Use the logical name, not the display name - the classic reason these links 404.
Does the link respect security?
Yes - it's just a URL into the model-driven app, so the clicker's own security roles decide what they see. Someone without read access gets an access error, not your data.
Can I deep-link to a specific app rather than the default?
Yes - add the appid parameter to the URL (visible in any app's address bar) so the record opens inside the intended app experience rather than the user's default.
The full carousel is in the Powercademy Success Kit - free, along with hundreds of other cheat sheets, roadmaps, and guides for Microsoft professionals.