Dataverse Create Record Actions in Power Automate
Generate correct shared_commondataserviceforapps CreateRecord parameters from Dataverse
metadata and diagnose runtime payload errors.
Prerequisites
- Dataverse Web API or
dataverseMCP access. - Flow definition available as
workflow.clientdata. - A valid Dataverse connection reference.
Golden Rules
entityNameis the table's EntitySetName, not its logical name or display name.- Each
item/<column>key uses the exact LogicalName, normally all lowercase. - Dataverse Web API property names are case-sensitive.
prefix_ReviewDateandprefix_reviewdateare different. - Never derive connector keys from
SchemaName; read metadata. - Verify the actual Dataverse row after the flow succeeds.
Workflow
1. Read Table Metadata
Query:
EntityDefinitions(LogicalName='<table>')?
$select=MetadataId,LogicalName,SchemaName,EntitySetName,PrimaryIdAttribute,PrimaryNameAttribute
Then query custom attributes:
EntityDefinitions(LogicalName='<table>')/Attributes?
$select=LogicalName,SchemaName,AttributeType,Format
Record the exact EntitySetName and every required LogicalName.
2. Build the Connector Action
"Add_a_new_row": {
"type": "OpenApiConnection",
"inputs": {
"parameters": {
"entityName": "prefix_tables",
"item/prefix_textcolumn": "@triggerBody()?['TextInput']",
"item/prefix_decimalcolumn": "@outputs('Previous')?['body/score']",
"item/prefix_booleancolumn": "@triggerBody()?['BooleanInput']",
"item/prefix_datecolumn": "@triggerBody()?['DateInput']"
},
"host": {
"apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps",
"operationId": "CreateRecord",
"connectionName": "shared_commondataserviceforapps"
}
}
}
Use direct Boolean values for Yes/No columns. Use ISO yyyy-MM-dd for Date Only columns.
3. Validate Before Activation
Parse the authored JSON and list every key under
actions.<scope>.actions.Add_a_new_row.inputs.parameters.
Compare each item/ suffix byte-for-byte with metadata. Do not use broad string replacements;
overlapping names can produce partially lowercased keys such as reviewDate.
4. Test and Diagnose
After an agent invokes the flow:
- List flow runs.
- Open the failed
Add_a_new_rowaction. - Read the complete inner OData error.
- Correct only the named property/type issue.
- Reactivate and rerun.
5. Verify the Row
Query the table's EntitySetName, order by createdon desc, and check:
- Input fields
- Calculated/model output fields
- Date and Boolean values
- Reviewer/customer identifiers
- Creation timestamp matching the test
Error Handling
| Error | Cause | Recovery |
|---|---|---|
Invalid property 'X' |
Schema/display name or wrong casing | Replace with exact attribute LogicalName |
| Resource not found for segment | Wrong entityName |
Use EntitySetName |
| Date conversion failure | Non-ISO input or DateTime/DateOnly mismatch | Normalize to ISO and inspect DateTimeBehavior |
| Boolean conversion failure | Passed "Yes"/"No" text |
Pass JSON Boolean true/false |
| Flow succeeds but row values are null | Wrong expression path | Inspect prior action output and use the exact JSON path |
| Multiple rows for one review | CreateRecord is inside a sentence loop | Decide intentionally whether row grain is document or sentence |
Output Format
Provide a mapping table:
| Dataverse display name | Logical name | Type | Flow expression |
|---|
Then report flow run ID/status and the verified created row.
Post-Run Reflection
Capture any connector serialization or metadata edge case that required repeated debugging, then add the smallest preventive rule to this skill.