Overview
Microsoft Dynamics 365 is Microsoft's CRM + ERP suite – Sales (CRM), Customer Service, Field Service, Marketing, Finance, Supply Chain. The Automize Dynamics 365 connector targets the CRM side (Sales/CS) with accounts, contacts, leads, opportunities, cases, plus the typed-entity primitives needed to script across modules.
- Regions: Each Dynamics environment has its own URL (yourorg.crm.dynamics.com – region embedded in the .crmX subdomain). The connector picks up the environment URL from the OAuth flow.
- Plans: Dynamics 365 Sales / Customer Service / Field Service Pro and Enterprise – all expose the Dataverse Web API. Power Apps and Power Automate run on the same surface.
Setting up the connection
Auth type: OAuth 2.0 (Authorization Code).
- In Microsoft Entra ID, register an app (same flow as Microsoft Graph).
- Add Dynamics CRM Online API → Delegated → user_impersonation.
- Set Redirect URI to the one shown in the Automize Dynamics 365 connector dialog.
- Copy Application (client) ID + Client Secret.
- In Automize, open Settings → Connectors → Dynamics 365 → Add connection. Paste credentials + your environment URL (yourorg.crm.dynamics.com). Click Connect, sign in, approve.
Scopes required:
https://yourorg.crm.dynamics.com/user_impersonationoffline_access
Find your credentials at https://entra.microsoft.com/.
Rate limits
Dataverse enforces per-user + per-app limits – 6,000 requests / 5 min per user is typical, scaling up with Power Apps Premium licenses. Connector retries 429 with Retry-After.
Data model
Dataverse entities (formerly CRM 'entities'):
Account (B2B customers) ─┬─ Contacts
└─ Opportunities ─── Quotes ─── Orders ─── Invoices
Lead (pre-qualified prospect) ── converts to Account+Contact+Opportunity
Case (Customer Service) ── linked to Account/Contact
Activity types: phonecall, email, appointment, task
Records are referenced by GUID (account_id) – pass curly-brace form
guid="{xxx-xxx-xxx-xxx}" or bare guid depending on op.Available operations
17 operations available. Click any row to jump to its detail.
| Operation | Category | What it does |
|---|---|---|
| Create Account | General | Create a new account |
| Create Contact | General | Create a new contact |
| Create Entity | General | Create a new entity record |
| Create Lead | General | Create a new lead |
| Create Opportunity | General | Create a new opportunity |
| Delete Entity | General | Delete an entity record |
| Get Account | General | Get account details |
| Get Contact | General | Get contact details |
| Get Entity | General | Get a single entity by ID |
| Get Entity Definitions | General | List all entity (table) definitions in Dataverse |
| List Accounts | General | List all accounts |
| List Contacts | General | List all contacts |
| List Leads | General | List all leads |
| List Opportunities | General | List all opportunities |
| Query Entity | General | Query any Dataverse entity with OData $filter, $select, $expand |
| Update Account | General | Update an existing account |
| Update Entity | General | Update an entity record |
Operations
Create Account
Create a new account
No input parameters.
Tips
- name required. Pass primarycontactid as guid for the main contact.
Create Contact
Create a new contact
No input parameters.
Tips
- firstname + lastname + emailaddress1 typical.
- parentcustomerid_account@odata.bind='/accounts(GUID)' to link to a parent account.
Create Entity
Create a new entity record
| Parameter | Required | Type | Description |
|---|---|---|---|
Entity Set entity_set | Yes | text |
Create Lead
Create a new lead
No input parameters.
Tips
- subject + firstname + lastname + emailaddress1 typical.
Create Opportunity
Create a new opportunity
No input parameters.
Tips
- name + parentaccountid required.
Delete Entity
Delete an entity record
| Parameter | Required | Type | Description |
|---|---|---|---|
Entity Set entity_set | Yes | text | |
Entity Id entity_id | Yes | text |
Get Account
Get account details
| Parameter | Required | Type | Description |
|---|---|---|---|
Account Id account_id | Yes | text |
Tips
- account_id (GUID without curly braces).
Get Contact
Get contact details
| Parameter | Required | Type | Description |
|---|---|---|---|
Contact Id contact_id | Yes | text |
Tips
- contactid (GUID).
Get Entity
Get a single entity by ID
| Parameter | Required | Type | Description |
|---|---|---|---|
Entity Set entity_set | Yes | text | |
Entity Id entity_id | Yes | text |
Get Entity Definitions
List all entity (table) definitions in Dataverse
No input parameters.
List Accounts
List all accounts
No input parameters.
Tips
- OData $filter: $filter=statecode eq 0 (active).
- $select=name,accountid,emailaddress1 to project. $top=50 to limit.
List Contacts
List all contacts
No input parameters.
Tips
- Filter by parentcustomerid_account@odata.bind to scope to one account.
List Leads
List all leads
No input parameters.
Tips
- Filter by statecode (0=open, 1=qualified, 2=disqualified).
List Opportunities
List all opportunities
No input parameters.
Tips
- statecode 0=open, 1=won, 2=lost.
Query Entity
Query any Dataverse entity with OData $filter, $select, $expand
| Parameter | Required | Type | Description |
|---|---|---|---|
Entity Set entity_set | Yes | text |
Update Account
Update an existing account
| Parameter | Required | Type | Description |
|---|---|---|---|
Account Id account_id | Yes | text |
Tips
- PATCH-style. Set statecode/statuscode together for state transitions.
Update Entity
Update an entity record
| Parameter | Required | Type | Description |
|---|---|---|---|
Entity Set entity_set | Yes | text | |
Entity Id entity_id | Yes | text |
FAQ
- Environment URL – where do I find it?
- Power Platform Admin Center → Environments → click your env → Environment URL. Format: yourorg.crm.dynamics.com (or .crm4 for EU, .crm5 for Asia, etc.).
- OData filters – what's the syntax?
- Standard OData v4. $filter=field eq 'value', logical ops: and / or / not. Reference fields: _parentcustomerid_value eq guid'XXX'. Use $expand=primarycontactid to fold related records inline.
- Why does Update silently change less than I expected?
- Some fields are computed / formula / read-only. Send them and Dataverse silently ignores. Check the entity metadata for which fields are writable.
- Custom entities – how?
- Custom entities use their schema name (e.g. new_customentity). Use the OData EntitySetName (typically plural form: new_customentities). Discover via Get Entity Metadata.