Storage setup · Power Automate → Dataverse

Set up where your reviews get stored

Every completed review produces an evidence record (who reviewed, what they saw, what they changed, timing, verdict). This guide files each one automatically, into your own Dataverse table, under your own sign-in, using a no-code Power Automate flow. We never hold your credentials and never see your data. Written for whoever sets things up at your firm: IT, or a comfortable admin. About 20 minutes. Each step is marked your side or we help.

Rather do this together? Most firms finish in one short screen-share with us.

Email us, we'll set it up with you
How it works

The moment a reviewer approves, the Amplify review service sends a small JSON record to a web address you control. You point that web address at a Power Automate flow that writes one row into your Dataverse table. The record includes a flow-friendly flat object whose fields map one-to-one onto your columns, so the flow needs no formulas or expressions. This is the path we recommend for firms. (Advanced alternative: have your AI file the record itself through the connect-Claude-to-Dataverse guide; it relies on Microsoft's connector program, which can be finicky to set up.) Both land the same records in your own table.

Before you start
  • Someone with Power Platform / Power Automate access in your Microsoft environment your side
  • A Dataverse table to hold the records (create one in step 1, or use an existing one)
  • Steps are one-time for the whole firm. We've wired this exact flow ourselves, sharp edges and all; they're flagged at the end.
The five steps

1 · Create your Dataverse table your side

Create (or reuse) a table with text columns for: name, review task id, template, verdict, reviewer, fields overridden, content hash, correction summary, reviewed at, and a multiline text column for the full record JSON. (Columns carry your environment's default publisher prefix, for example cr8dd_.)

Set this one column setting now, or the common case can't file: when you create the Fields Overridden whole-number column, set its Minimum value to 0, not 1. A clean approval with no edits sends fieldsOverridden = 0, so a Minimum of 1 makes the most common case, the clean approval, the one that gets rejected. Full details are in the sharp edges below.

2 · Start the flow with an HTTP trigger your side

  1. In Power Automate: Create → Instant cloud flow, trigger "When an HTTP request is received."
  2. Set "Who can trigger the flow?" to Anyone. The Amplify server sends the record from outside your tenant and the web address itself is the secret, so the default "Any user in my tenant" would reject it.

3 · Parse the incoming record your side

Add a Parse JSON action on the trigger body. Click "Use sample payload to generate schema," paste this example, and let it generate the schema:

{
  "type": "amplify.review.completed",
  "taskId": "rt_example",
  "verdict": "approved",
  "completedAt": "2026-07-23T00:00:00Z",
  "flat": {
    "name": "Amex expense coding, July",
    "reviewTaskId": "rt_example",
    "template": "expense-coding",
    "verdict": "approved",
    "reviewer": "Reviewer Name",
    "fieldsOverridden": 0,
    "contentHash": "sha256:…",
    "correctionSummary": "Approved as written",
    "reviewedAt": "2026-07-23T00:00:00Z",
    "fullRecordJson": "{…}"
  }
}

4 · Write the Dataverse row your side we help

Add a Dataverse "Add a new row" action, pick your table, and map each column straight from the parsed flat fields, one field per column, no expressions: Name ← flat.name, Review Task Id ← flat.reviewTaskId, Template ← flat.template, Verdict ← flat.verdict, Reviewer ← flat.reviewer, Fields Overridden ← flat.fieldsOverridden, Content Hash ← flat.contentHash, Correction Summary ← flat.correctionSummary, Reviewed At ← flat.reviewedAt, Full Record Json ← flat.fullRecordJson.

5 · Connect it to Amplify your side we help

Save the flow and copy its HTTP POST URL. Add it to your Amplify connector address so every review created through that connector files automatically on completion:

…/mcp/review?store_webhook=<your flow URL, URL-encoded>&store_name=Dataverse%20Review%20Records

After a test review, your AI's get_verdict shows a delivery status. Note that delivered 202 means the flow accepted the record, not that a row landed yet (it runs asynchronously): confirm the row separately, see the sharp edges.

Optional, the firm profile. Tell your AI once, in plain words: "save our firm profile: our expense codes are…, our projects are…, links should last 48 hours". If your Amplify address came from the Try Amplify popup it already includes a private profile key and this just works; if not, your AI will hand you a ready-made replacement address to paste into the connector settings (one paste, done). From then on, short requests like "do my expenses" get those defaults filled automatically; anything you state explicitly still wins. The key in the address is private (anyone holding it can edit the defaults); never put passwords or client data in a profile.

The sharp edges

Battle-tested from wiring this flow live. Most are quick one-time fixes.

  1. The zero-override trap, a clean approval can't file. your side Error: CreateRecord requires 'item/<prefix>_fields_overridden' >= 1 but is '0'. Why: the Fields Overridden column was created with Minimum value 1, but an approved-with-no-edits review sends fieldsOverridden = 0, so the common case (a clean approval) is exactly what the column rejects. Fix: Tables → your table → Columns → Fields Overridden → Advanced options → Minimum value = 0 → Save, then re-file. (When we set a table up for you, we use Minimum 0 so no one hits this.)
  2. After fixing the column, the connector keeps using the old rule for a while. your side The same >= 1 error persists after setting Minimum 0. Why: the Dataverse connector caches a table's field rules separately from the table and refreshes on Microsoft's schedule (a few minutes, up to about an hour). Two options: wait and re-file, or unmap the column (next item) for an immediate, deterministic fix.
  3. Immediate workaround, unmap the constrained column. your side Open Add a new row, remove Fields Overridden from the mapping (it's optional; empty is valid) and save, rows file right away. The override count still arrives in the record and is stored inside Full Record JSON, so nothing is lost; re-add the mapping once the cache clears.
  4. "delivered 202" does not mean the row landed. your side get_verdict shows delivered 202 and Power Automate shows green, but there's no row. Why: the HTTP trigger returns 202 the instant it accepts the record; the flow then runs asynchronously and can still fail at Add a new row. Verify by querying the table for the review's task id, or checking the flow's 28-day run history for a Failed run. Don't trust 202 or the banner alone.
  5. Reauthenticate the Dataverse connection before mapping. your side "N connections need to be reauthenticated"; the connection shows an error and can't be selected. Fix: in the step's Change connection panel, choose Add new and complete the Microsoft sign-in first.
  6. The environment name isn't the environment URL. your side Building a make.powerautomate.com link from your org name (for example <your-org>) lands on "Something went wrong / Network Error": the org name and the Power Automate URL's environment segment (Default-…-GUID) are different identifiers. Fix: open make.powerautomate.com normally and pick the environment from the picker (top right).
  7. Pasting the schema, use "Use sample payload to generate schema." your side Pasting JSON straight into the Request Body JSON Schema box doesn't stick. Fix: click "Use sample payload to generate schema," paste one example record (step 3), and let it generate the schema (persists reliably where direct paste didn't).
  8. Testing a fix, Resubmit replays the record and makes duplicates. your side Open a failed run → Resubmit (confirm OK) replays the same record through the current flow, a clean retest after a fix. Note: each resubmit creates a new row (there's no uniqueness on task id), so delete duplicate test rows afterward.

Stuck on one of these? Email us and we'll get on a short screen-share.

Where your data goes, plainly: everything here writes to your Dataverse, in your tenant, as you. The evidence records filed there are yours. Your audit trail stays yours; we never hold your credentials.

© 2026 OneSource Consulting Home·Email support