Dynamics 365 Sales
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.
- Ready to connect: doneEvery listed action is built in.
- 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.
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 account
accounts.createApproval by rule - Create appointment
appointments.createApproval by rule - List accounts
accounts.listRead
Example flow
- Dynamics 365 Sales · List accounts
accounts.listDone - Dynamics 365 Sales · Create account
accounts.createMaker-checker - 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
- Create the Microsoft credentials described above with the narrowest permissions your flows need.
- 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
- 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.