Skip to content

Dynamics 365: create or update record

Use Dynamics 365: create or update record to upsert one Dataverse row from a journey step, matched on an alternate key column: it updates the row when the value is already there and creates it when it isn’t. Dataverse has no static API key, so this point authenticates through an Entra ID application registered once for the whole account. There’s no token field on the point itself.

Typical uses:

  • Keep Dynamics 365 in sync: create or update a row as the traveler moves through the journey, so your CRM sees current data.
  • Sync journey activity into CRM: set a column when a traveler reaches a milestone, so your team can filter or report on it.
  • Avoid duplicate rows: matching by alternate key means a traveler who passes through this point again updates the same row instead of creating a new one.

Before you start

Anchor link to

Register an application in Entra ID and connect it under Settings > 3rd-party integrations > Microsoft Dynamics 365:

  1. In the Microsoft Entra admin center, register an application and create a client secret for it.
  2. In the Power Platform admin center, open your target environment, add the application as an Application user, and assign it a security role that can create and update rows on the table you plan to write to.
  3. In Pushwoosh, in Environment URL, enter the environment’s URL with https:// and no trailing path, for example https://acme.crm4.dynamics.com.
  4. In Directory (tenant) ID and Application (client) ID, enter the application’s IDs from its Entra ID overview page.
  5. In Client secret, paste the secret’s value. It’s stored write-only: Pushwoosh never shows it again, so paste a new one to replace it.
  6. Click Connect Dynamics 365.
Settings Microsoft Dynamics 365 connect form with Environment URL, tenant ID, client ID, and secret

After you connect Dynamics 365, install the integration so the point appears in the journey builder.

Configure the point

Anchor link to
  1. Drag Dynamics 365: create or update record from the Integrations section of the left panel onto the canvas.
  2. Double-click the point and enter a Step Name.
  3. In Environment host, enter the same environment’s host without https://, for example acme.crm4.dynamics.com.
Dynamics 365 create or update record drawer with Step Name filled and Environment host set to a Dynamics domain
  1. In Table, enter the entity set name, plural — contacts, leads, or a custom table’s set name.
Table field set to contacts
  1. In Alternate key column, enter the column covered by an alternate key on that table, for example pw_hwid.
Alternate key column field set to pw_hwid
  1. In Alternate key value, enter the value to match on, usually a macro like {{device:hwid}}. Avoid values with quotes, since the value goes into the request URL.
Alternate key value field set to a device hwid macro
  1. In Columns, add one row per Dataverse column to write. Enter the column name and the value. Names must be non-empty and unique. A value can be fixed text or a traveler macro such as {{device:hwid}}, the same macros as in a Webhook body. Or click Insert Dynamic Value to pick an attribute an earlier step in this journey produced, for example an LLM response or a mapped Webhook value.
Columns name and value table with emailaddress1 mapped to a tag macro
  1. Click Save.

The traveler continues to whatever step you connect next on the canvas.

Attributes after the step runs

Anchor link to

Unlike Salesforce: create or update record, this point doesn’t return the row’s ID into a traveler attribute. If a later step needs it, look the row up again by the same alternate key value.

Failures and unexpected responses

Anchor link to

Open Calls log in the point’s drawer and check the response:

  • 401 — the connection’s client secret was rejected or has expired; reconnect under Settings > 3rd-party integrations.
  • 403 — the application user’s security role doesn’t grant create or update access on that table.
  • 404 — Environment host or Table doesn’t match anything in that environment.
  • 400 — Alternate key column isn’t defined as an alternate key on that table, or a name in Columns isn’t a real column.

A failed request drops the traveler from the journey. See Errors and failed requests.

Example scenario: Syncing an enterprise pricing request into Dynamics 365

Anchor link to

A B2B SaaS app lets a user tap Request enterprise pricing in-app. The team wants that request upserted into Dynamics 365, matched so a repeat tap updates the same row instead of creating a duplicate.

  1. Add a Trigger-based entry element and set it to fire on an EnterprisePricingRequested event.
  2. Add Dynamics 365: create or update record right after it. Set Table to contacts, Alternate key column to pw_hwid, and Alternate key value to {{device:hwid}}. In Columns, set emailaddress1 to {{tag:Email}}.
  3. Click Save.

Once this runs, the request exists as a Dynamics 365 contact matched by device, ready for the sales team to work from CRM instead of the app’s own data.