
Microsoft 365 Upsert
CertifiedUpsert a Dataverse entity record
Microsoft 365 Upsert
Upsert a Dataverse entity record
Issues an OData PATCH request to create or update a record identified by its GUID.
If the record exists it is updated; if it does not exist it is created (upsert semantics).
Requires the Dataverse application permission Dynamics CRM user on the service principal.
type: io.kestra.plugin.microsoft365.dynamics365.dataverse.UpsertExamples
Upsert an account record in Dataverse
id: dataverse_upsert_account
namespace: company.team
tasks:
- id: upsert
type: io.kestra.plugin.microsoft365.dynamics365.dataverse.Upsert
tenantId: "{{ secret('AZURE_TENANT_ID') }}"
clientId: "{{ secret('AZURE_CLIENT_ID') }}"
clientSecret: "{{ secret('AZURE_CLIENT_SECRET') }}"
orgUrl: "https://myorg.api.crm.dynamics.com"
entitySetName: "accounts"
recordId: "00000000-0000-0000-0000-000000000001"
record:
name: "Contoso Ltd"
emailaddress1: "info@contoso.com"
Properties
clientId *string
Client ID
Client ID of the Azure service principal. If you don't have a service principal, refer to create a service principal with Azure CLI.
entitySetName *string
Entity set name
OData entity set name, e.g. accounts, contacts, leads.
orgUrl *string
Dataverse Organization URL
Base URL of the Dataverse organization, e.g. https://myorg.api.crm.dynamics.com.
All OData API calls are made relative to {orgUrl}/api/data/v9.2/.
record *object
Record fields
Map of field names to values to set on the record.
recordId *string
Record ID
GUID of the record to create or update, e.g. 00000000-0000-0000-0000-000000000001.
tenantId *string
Tenant ID
Azure AD (Entra ID) tenant GUID used for authentication.
assets
Assets this task consumes as inputs or produces as outputs, for lineage tracking and the asset graph (Enterprise Edition). A flow declaring this property on a task is rejected in the open-source edition.
io.kestra.core.models.assets.AssetsDeclaration
IGNOREFAILWARNAsset failure behavior
Behavior applied to the task state when a declared asset fails to render, emit, or be persisted (e.g. a lock conflict): FAIL escalates it to FAILED, WARN (default) warns it if it would otherwise succeed, IGNORE leaves the state untouched.
Whether to auto-register assets referenced dynamically at runtime that are not statically declared in inputs or outputs.
The assets consumed as inputs.
io.kestra.core.models.assets.AssetIdentifier
1The assets produced as outputs.
io.kestra.plugin.ee.assets.Dataset
1150{}1150io.kestra.plugin.ee.assets.File
1150{}1150io.kestra.plugin.ee.assets.Table
1150{}1150io.kestra.plugin.ee.assets.VM
1150{}1150io.kestra.core.models.assets.External
1150{}1150io.kestra.core.models.assets.Custom
11501Custom asset type
{}1150clientSecret string
Client Secret
Service principal client secret. Use this for Client Secret authentication. Provide clientId, tenantId, and clientSecret. Either clientSecret OR pemCertificate must be provided, not both.
pemCertificate string
PEM Certificate
Alternative authentication method using certificate-based authentication. Use this for Client Certificate authentication. Provide clientId, tenantId, and pemCertificate. Either clientSecret OR pemCertificate must be provided, not both.
Outputs
recordId string
Record ID
GUID of the created or updated record.