Skip to content
All connectors
Dynamics 365 Sales logo

Dynamics 365 Sales

CRM, sales & customer success

Keep Dynamics 365 Sales up to date with every customer, deal and order, without copy and paste.

55 ways to read, 35 ways to write, each write switched on by you.

Quality checks

Built and tested with example responses.

  1. Ready to connect: doneEvery listed action is built in.
  2. Built and tested with example responses: doneEach action is built from the provider’s published API and tested against example responses, errors, rate limits and paging.
Dynamics 365 Sales with Nexra

Connected, approved, proven.

The things teams do most with Dynamics 365 Sales, an example flow with a person in the loop, and what Nexra keeps as proof.

Top actions

  • Create accountaccounts.createApproval by rule
  • Create appointmentappointments.createApproval by rule
  • List accountsaccounts.listRead

Example flow

  1. Dynamics 365 Sales · List accountsaccounts.listDone
  2. Dynamics 365 Sales · Create accountaccounts.createMaker-checker
  3. Nexra · Record the decision and result in the evidence chainProven

Example workflow. Routine runs go through on their own. Only a change your rules flag, such as one over a limit you set, waits for the right person, who sees the exact change and the rule before it reaches Dynamics 365 Sales.

What gets logged

  • Whether it ran on its own or who approved it, and under which rule
  • A fingerprint of the exact request sent to Dynamics 365 Sales
  • Dynamics 365 Sales's reply: what it created or changed
  • One entry in the evidence chain, linked to the one before

Try this in the sandbox

Run the whole flow with test data in your sandbox, then connect a Microsoft test account before you go live.

For developers

Technical detail

Read and write Dynamics 365 Sales accounts, contacts, leads, opportunities, quotes, orders and invoices with line items, activities, notes and competitors via Dataverse, plus price lists and any table.

Microsoft API docs
Source actions
55
Destination actions
35
Data types
29

What you can map

Reads are always available. Writes are off until you switch them on for a connection, and governed writes follow your policies.

accounts4
  • Create accountDestinationNot retried automaticallyApproval before production

    Creates a account and returns the new row.

  • Get accountSource

    One account by ID.

  • List accountsSourceIncremental

    Accounts with all columns (or selected columns), formatted values and custom columns.

  • Update accountDestinationProvider duplicate protectionApproval before production

    Updates mapped columns of an existing account (If-Match: * prevents an accidental create).

appointments4
  • Create appointmentDestinationNot retried automaticallyApproval before production

    Creates a appointment and returns the new row.

  • Get appointmentSource

    One appointment by ID.

  • List appointmentsSourceIncremental

    Appointments with all columns (or selected columns), formatted values and custom columns.

  • Update appointmentDestinationProvider duplicate protectionApproval before production

    Updates mapped columns of an existing appointment (If-Match: * prevents an accidental create).

attributes1
  • List columnsSource

    Column metadata for a table: logical name, type, custom flag, requirement level and create/update validity.

business units2
  • Get business unitSource

    One business unit by ID.

  • List business unitsSourceIncremental

    Business units with all columns (or selected columns), formatted values and custom columns.

competitors4
  • Create competitorDestinationNot retried automaticallyApproval before production

    Creates a competitor and returns the new row.

  • Get competitorSource

    One competitor by ID.

  • List competitorsSourceIncremental

    Competitors with all columns (or selected columns), formatted values and custom columns.

  • Update competitorDestinationProvider duplicate protectionApproval before production

    Updates mapped columns of an existing competitor (If-Match: * prevents an accidental create).

contacts4
  • Create contactDestinationNot retried automaticallyApproval before production

    Creates a contact and returns the new row.

  • Get contactSource

    One contact by ID.

  • List contactsSourceIncremental

    Contacts with all columns (or selected columns), formatted values and custom columns.

  • Update contactDestinationProvider duplicate protectionApproval before production

    Updates mapped columns of an existing contact (If-Match: * prevents an accidental create).

currencies2
  • Get currencySource

    One currency by ID.

  • List currenciesSourceIncremental

    Currencies with all columns (or selected columns), formatted values and custom columns.

emails2
  • Get emailSource

    One email by ID.

  • List emailsSourceIncremental

    Emails with all columns (or selected columns), formatted values and custom columns.

entity definitions1
  • List tablesSource

    Table metadata: logical name, entity set name, primary key and custom flag.

invoice details4
  • Create invoice lineDestinationNot retried automaticallyApproval before production

    Creates a invoice line and returns the new row.

  • Get invoice lineSource

    One invoice line by ID.

  • List invoice linesSourceIncremental

    Invoice lines with all columns (or selected columns), formatted values and custom columns.

  • Update invoice lineDestinationProvider duplicate protectionApproval before production

    Updates mapped columns of an existing invoice line (If-Match: * prevents an accidental create).

invoices4
  • Create invoiceDestinationNot retried automaticallyApproval before production

    Creates a invoice and returns the new row.

  • Get invoiceSource

    One invoice by ID.

  • List invoicesSourceIncremental

    Invoices with all columns (or selected columns), formatted values and custom columns.

  • Update invoiceDestinationProvider duplicate protectionApproval before production

    Updates mapped columns of an existing invoice (If-Match: * prevents an accidental create).

leads4
  • Create leadDestinationNot retried automaticallyApproval before production

    Creates a lead and returns the new row.

  • Get leadSource

    One lead by ID.

  • List leadsSourceIncremental

    Leads with all columns (or selected columns), formatted values and custom columns.

  • Update leadDestinationProvider duplicate protectionApproval before production

    Updates mapped columns of an existing lead (If-Match: * prevents an accidental create).

notes4
  • Create noteDestinationNot retried automaticallyApproval before production

    Creates a note and returns the new row.

  • Get noteSource

    One note by ID.

  • List notesSourceIncremental

    Notes with all columns (or selected columns), formatted values and custom columns.

  • Update noteDestinationProvider duplicate protectionApproval before production

    Updates mapped columns of an existing note (If-Match: * prevents an accidental create).

opportunities4
  • Create opportunityDestinationNot retried automaticallyApproval before production

    Creates a opportunity and returns the new row.

  • Get opportunitySource

    One opportunity by ID.

  • List opportunitiesSourceIncremental

    Opportunities with all columns (or selected columns), formatted values and custom columns.

  • Update opportunityDestinationProvider duplicate protectionApproval before production

    Updates mapped columns of an existing opportunity (If-Match: * prevents an accidental create).

opportunity products4
  • Create opportunity productDestinationNot retried automaticallyApproval before production

    Creates a opportunity product and returns the new row.

  • Get opportunity productSource

    One opportunity product by ID.

  • List opportunity productsSourceIncremental

    Opportunity products with all columns (or selected columns), formatted values and custom columns.

  • Update opportunity productDestinationProvider duplicate protectionApproval before production

    Updates mapped columns of an existing opportunity product (If-Match: * prevents an accidental create).

phone calls4
  • Create phone callDestinationNot retried automaticallyApproval before production

    Creates a phone call and returns the new row.

  • Get phone callSource

    One phone call by ID.

  • List phone callsSourceIncremental

    Phone calls with all columns (or selected columns), formatted values and custom columns.

  • Update phone callDestinationProvider duplicate protectionApproval before production

    Updates mapped columns of an existing phone call (If-Match: * prevents an accidental create).

price list items2
  • Get price list itemSource

    One price list item by ID.

  • List price list itemsSourceIncremental

    Price list items with all columns (or selected columns), formatted values and custom columns.

price lists2
  • Get price listSource

    One price list by ID.

  • List price listsSourceIncremental

    Price lists with all columns (or selected columns), formatted values and custom columns.

products2
  • Get productSource

    One product by ID.

  • List productsSourceIncremental

    Products with all columns (or selected columns), formatted values and custom columns.

quote details4
  • Create quote lineDestinationNot retried automaticallyApproval before production

    Creates a quote line and returns the new row.

  • Get quote lineSource

    One quote line by ID.

  • List quote linesSourceIncremental

    Quote lines with all columns (or selected columns), formatted values and custom columns.

  • Update quote lineDestinationProvider duplicate protectionApproval before production

    Updates mapped columns of an existing quote line (If-Match: * prevents an accidental create).

quotes4
  • Create quoteDestinationNot retried automaticallyApproval before production

    Creates a quote and returns the new row.

  • Get quoteSource

    One quote by ID.

  • List quotesSourceIncremental

    Quotes with all columns (or selected columns), formatted values and custom columns.

  • Update quoteDestinationProvider duplicate protectionApproval before production

    Updates mapped columns of an existing quote (If-Match: * prevents an accidental create).

records5
  • Create table rowDestinationNot retried automaticallyApproval before production

    Creates a row in any table.

  • Get table rowSource

    One row of any table by ID.

  • List table rowsSourceIncremental

    Rows of any table by entity set name, including custom tables.

  • Update table rowDestinationProvider duplicate protectionApproval before production

    Updates columns of an existing row in any table (If-Match: * prevents create).

  • Upsert table row by alternate keyDestinationProvider duplicate protectionApproval before production

    Creates or updates a row addressed by an alternate key, for example accounts(accountnumber='A-100'). Alternate key columns are not sent in the body.

sales order details4
  • Create sales order lineDestinationNot retried automaticallyApproval before production

    Creates a sales order line and returns the new row.

  • Get sales order lineSource

    One sales order line by ID.

  • List sales order linesSourceIncremental

    Sales order lines with all columns (or selected columns), formatted values and custom columns.

  • Update sales order lineDestinationProvider duplicate protectionApproval before production

    Updates mapped columns of an existing sales order line (If-Match: * prevents an accidental create).

sales orders4
  • Create orderDestinationNot retried automaticallyApproval before production

    Creates a order and returns the new row.

  • Get orderSource

    One order by ID.

  • List ordersSourceIncremental

    Orders with all columns (or selected columns), formatted values and custom columns.

  • Update orderDestinationProvider duplicate protectionApproval before production

    Updates mapped columns of an existing order (If-Match: * prevents an accidental create).

system users2
  • Get userSource

    One user by ID.

  • List usersSourceIncremental

    Users with all columns (or selected columns), formatted values and custom columns.

tasks4
  • Create taskDestinationNot retried automaticallyApproval before production

    Creates a task and returns the new row.

  • Get taskSource

    One task by ID.

  • List tasksSourceIncremental

    Tasks with all columns (or selected columns), formatted values and custom columns.

  • Update taskDestinationProvider duplicate protectionApproval before production

    Updates mapped columns of an existing task (If-Match: * prevents an accidental create).

teams2
  • Get teamSource

    One team by ID.

  • List teamsSourceIncremental

    Teams with all columns (or selected columns), formatted values and custom columns.

units2
  • Get unitSource

    One unit by ID.

  • List unitsSourceIncremental

    Units with all columns (or selected columns), formatted values and custom columns.

whoami1
  • Who am ISource

    Signed-in user, business unit and organization IDs.

Access and limits

Authentication
Microsoft Entra OAuth app (delegated) with a refresh token
Plans and access
Dynamics 365 Sales Enterprise, Premium or Professional; Dataverse Web API is included. Calls act as the user who authorised the Microsoft Entra application (delegated user_impersonation) and follow that user's security roles.
Test environment
Use a sandbox or trial environment; the API is identical.
Rate limits
Service protection limits per user per web server: 6,000 requests and 20 minutes of execution time in a 5-minute sliding window, 52 concurrent requests; HTTP 429 with Retry-After.
Pagination
Prefer: odata.maxpagesize (max 5,000) with @odata.nextLink.
Provider events
Dataverse webhooks and Azure Service Bus registrations through plug-in steps. Flows run on demand, on a schedule, or when a scheduled check finds new or changed records.

Before you build a flow

  • Delegated OAuth (refresh token) is used because the client-credentials scope must name the environment URL, which the runtime cannot template; application users are not supported yet.
  • Government clouds (crm9 GCC, microsoftdynamics.us, China) are not supported.
  • Contact preference columns (donotemail, donotbulkemail, donotphone, donotpostalmail, donotfax, msdyn_gdproptout) are read-only unless the explicit inputs are mapped.
  • Lead qualification, opportunity win/lose, order fulfilment and other actions (bound functions) are not automated; state changes go through statecode/statuscode columns only.
  • Creates have no idempotency key; uncertain creates are not repeated. Updates use If-Match: * so they never create; upserts by alternate key converge.
  • $filter is built only from validated column names, operators and literal values.
  • Deletes and associations through collection-valued navigation properties are not automated.
  • Not automated: Qualify Lead, Win/Lose Opportunity, Convert Quote/Order, Fulfil and Cancel actions, email send (SendEmail), bulk operations, ownership assignment (AssignRequest) and security role, team or business-unit changes. Teams, business units, price lists, units, currencies and emails are read-only.
  • Quote, order and invoice line creates and updates follow Dataverse pricing rules: set Override price to send a price per unit, and Write-in product to omit a catalogue product.
  • Appointments are created without attendees (activity parties), so no meeting invitations are sent; server-side synchronisation may still copy them to the owner's calendar.
  • Note navigation properties objectid_lead and objectid_opportunity, and appointment regarding properties for leads and opportunities, follow Dataverse's documented naming pattern for Sales tables; they are not listed on the core annotation and appointment reference pages.

Developer reference

  1. Create the Microsoft credentials described above with the narrowest permissions your flows need.
  2. In Nexra, open Connect, then Connections, then New connection, choose Dynamics 365 Sales, enter its settings and credentials, and tick only the write actions you need. Connection guide
  3. Test the connection, then use its actions as flow sources and destinations. Flow guide

Machine-readable detail: GET /api/public/connect/connectors/dynamics-365-sales and the Connections API.