Our help desk lead wanted every phoned-in problem saved as a Dataverse service request the moment someone logs it, with the customer and the assigned tech already linked. The Add a new row action in Power Automate does exactly that, and it hands back the new row’s ID.
In this tutorial, we’ll build a power automate add a new row dataverse flow that creates request REQ-1007, Printer Jam, with a Customer and an Employee lookup, a choice, and a due date.
Then we’ll pass the new row’s ID to Update a row and fix the three errors I hit while testing.
Here’s what we’re building. This is the finished run: the inputs we sent and Dataverse’s 201 Created response.

Before You Start
Dataverse actions are Premium, so you need a Power Automate license that covers premium connectors. You also need create rights on the table. If tables and environments are new to you, read what Microsoft Dataverse is first.
I built this in my Power Platform developer environment with a table called Service Requests. These are the columns we’ll fill:
| Column | Logical name | Type | Notes |
|---|---|---|---|
| Subject | cr85a_subject | Text (primary) | Required in the action |
| Request Number | cr85a_requestnumber | Text | REQ-1007 |
| Status | cr85a_status | Choice | Open 770700000, In Progress 770700001, Closed 770700002 |
| Priority | cr85a_priority | Choice | Low 770700000, Medium 770700001, High 770700002 |
| Due Date | cr85a_duedate | Date and time | Sent as 2026-11-13T17:00:00Z |
| Customer | cr85a_customer | Lookup to Customers | Business-required |
| Employee | cr85a_employee | Lookup to Employees | Assigned tech |
| Request Category | cr85a_requestcategory | Formula | Read-only |
The cr85a_ part is my publisher prefix, so your names will start with your own. Before the run, the table held six requests, such as Network Issue (REQ-1006) and Monitor Flicker (REQ-1009).
Step 1: Create the Flow and Add the Action
We’ll start with a manual trigger so you can test on demand.
- Go to make.powerautomate.com and pick the environment that holds your table (top right).
- Select Create > Instant cloud flow, choose Manually trigger a flow, then Create.
- Select + > Add an action, search Dataverse, and select See more.
- Pick Add a new row from the Microsoft Dataverse list.

You’ll also see Add a new row to selected environment. It adds a required Environment box for tables in another environment.
Checkpoint: an Add a new row card sits under the trigger, asking for a Table name.
Step 2: Pick the Table and Fill the Basic Fields
Here’s what each box on the Parameters tab does.
- Set Table name to Service Requests.
- Type Printer Jam in Subject.
- Under Advanced parameters, select Show all and fill Request Number, Description and Due Date.
| Field | Required? | What it does |
|---|---|---|
| Table name | Yes | The table that gets the new row. Its columns appear after you pick it. |
| Primary column (Subject here) | Yes | The row’s name column. My panel marked only this one as required. |
| Other columns | No | Hidden under Advanced parameters (mine said Showing 7 of 23). |
| Return Full Metadata | No | Returns all columns instead of only the essential ones. |

Checkpoint: Subject reads Printer Jam and the advanced section shows your optional columns.
Step 3: Set the Customer and Employee Lookups
A lookup doesn’t take a name like Bob. It takes the related table’s entity set name plus the related row’s GUID: <entity set name>(<guid>).
- In Customer (Customers), enter
cr85a_customer1s(+ Bob’s GUID +). - In Employee (Employees), enter
cr85a_employees(+ Alice’s GUID +).

To find the entity set name, go to make.powerapps.com > Tables, set the filter to All, open the related table, and select Tools > Copy set name. It’s usually the plural name, but my Customers table’s set is cr85a_customer1s, so always copy it.
For the GUID, use dynamic content from an earlier step, such as a List rows filtered on the customer’s name, or get a row by ID from Dataverse. In Code view, the lookup is saved as the navigation property plus @odata.bind, like item/cr85a_Customer@odata.bind.
Checkpoint: both lookup boxes hold text in the form setname(guid), not a display name.
Step 4: Set the Choice and Date Columns
The designer shows Status and Priority as dropdowns with labels, but the flow stores numbers like 770700000.
- Pick Open in Status and Medium in Priority.
- When the value comes from an expression or another system, send the number instead of the label.
- In Due Date, enter an ISO 8601 UTC string:
2026-11-13T17:00:00Z.
That due date is 12:00 PM Eastern on 11/13/2026, because the trailing Z means UTC. If you need labels later, here’s how to get the choice column value from a row.
The finished action’s Code view parameters:
{
"entityName": "cr85a_servicerequests",
"item/cr85a_subject": "Printer Jam",
"item/cr85a_requestnumber": "REQ-1007",
"item/cr85a_status": 770700000,
"item/cr85a_priority": 770700001,
"item/cr85a_description": "The third-floor printer jams on every color job.",
"item/cr85a_duedate": "2026-11-13T17:00:00Z",
"item/cr85a_Customer@odata.bind": "cr85a_customer1s(87309834-e89b-48b4-8ccd-f4d8d5d5b19d)",
"item/cr85a_Employee@odata.bind": "cr85a_employees(a8b5c906-06e6-48ac-bfb2-6ff82573a0d6)"
}
Checkpoint: Code view shows numbers for Status and Priority and both @odata.bind lookups.
Step 5: Use the New Row’s ID in the Next Step
Add a new row returns the new row with its unique identifier. We’ll use it to move the request to In Progress.
- Add an Update a row action and pick Service Requests.
- Click Row ID and choose the Service Request token from Add a new row’s dynamic content.
- Set Status to In Progress (770700001) and update the Description.

The token is the table’s unique identifier column. In Code view it’s this expression:
@outputs('Add_a_new_row')?['body/cr85a_servicerequestid']
I cover the rest of that action, including Upsert a row, in the guide to update a row in Dataverse.
Checkpoint: Row ID shows the purple Service Request token, not a typed value.
Test the Flow
- Select Save, then Test > Manually > Run flow.
- Open the run and select Add a new row, then Show raw outputs.
My run on 10/20/2026 succeeded in 2 seconds. Add a new row returned statusCode 201 (Created), and body/cr85a_servicerequestid held the new GUID, 08b860c2-75cc-f111-a05b-6045bd0406d6.
Update a row then used that ID, and its output showed Status In Progress. The table went from six requests to seven, which you can confirm when you count rows in a Dataverse table.
Make It Production-Ready
- Swap the manual trigger for the real source, like a new SharePoint item.
- Look up lookup GUIDs at run time with List rows instead of hard-coding them.
- Add a Scope with a Configure run after branch for failures so a bad row alerts someone.
- Build the flow inside a solution so you can move it between environments.
- Need to report who created each row? See how to get Dataverse Created By in Power Automate.
Troubleshooting
Invalid choice value. I sent Status 999 in a test flow, and Add a new row failed with statusCode 400:
A validation error occurred. The value 999 of 'cr85a_status' on record of type 'cr85a_servicerequest' is outside the valid range. Accepted Values: 770700000,770700001,770700002

Fix: copy the number from the column’s choice list. The error lists the accepted values, which helps.
Formula column can’t be set. My first version set Request Category, a formula column. Saving failed with “The API operation does not contain a definition for parameter ‘item/cr85a_requestcategory’.” Fix: remove it and set the source columns instead.
Required columns. When I let Upsert a row create a record without a Customer, it failed with “Enter Customer details.” That came from the table’s business logic, not the panel. Fix: always send every business-required column on a create.
Where to Take It Next
- Moving list data across? Our guide to migrate a SharePoint Online list to Dataverse compares the options.
- Loading many rows at once? See how to import CSV data to Dataverse with Power Automate.
- Adding rows from a canvas app instead of a flow? That’s covered in Power Apps add data to a Dataverse table.
For more flow builds, browse our Power Automate tutorials hub.
Working with more Dataverse data? These guides pick up from here:
Frequently Asked Questions
How do I add a new row to Dataverse in Power Automate?
Add the Microsoft Dataverse Add a new row action, pick the Table name and fill the columns (optional ones are under Advanced parameters). A successful create returns statusCode 201.
What’s the format for a lookup column in Add a new row?
Use the related table’s entity set name and the row GUID, like cr85a_customer1s(guid). Copy the set name in Power Apps from the table’s Tools menu with Copy set name. See Use a flow to add a row in Dataverse.
How do I get the ID of the row I just created?
Add a new row returns the full row. Pick the table’s unique identifier token (Service Request in my flow) from dynamic content, or use outputs(‘Add_a_new_row’)?[‘body/cr85a_servicerequestid’] in an expression.
What’s the difference between Add a new row and Add a new row to selected environment?
Both create a row; the second adds a required Environment box for other environments. The Microsoft Dataverse connector reference lists both.
Why doesn’t my formula column appear in Add a new row?
Formula columns are read-only, so the action doesn’t offer them. Set the columns the formula uses instead.

Hey! I’m Bijay Kumar, founder of SPGuides.com and a Microsoft Business Applications MVP (Power Automate, Power Apps). I launched this site in 2020 because I truly enjoy working with SharePoint, Power Platform, and SharePoint Framework (SPFx), and wanted to share that passion through step-by-step tutorials, guides, and training videos. My mission is to help you learn these technologies so you can utilize SharePoint, enhance productivity, and potentially build business solutions along the way.