HTTP extraction from MS Dynamics 365 CRM
Use the following settings to configure the connection and HTTP extraction for a MS Dynamics 365 CRM system.
Disclaimer
Any references to third-party applications in this documentation are provided solely for informational purposes. Such references do not constitute any contractual commitment, representation, or warranty of any kind. The information is provided “as is,” and no guarantee is made as to the accuracy, completeness, or currentness of information relating to third-party applications.
Connection
REST-API base URL
Use your organization’s Dynamics 365 Web API service root:
https://<yourorg>.crm[region].dynamics.com
Test-connection resources
There is not a built-in /ping or /health on Dynamics 365, but the unbound function WhoAmI is the default connectivity check.
You can use the Service Root URL provided on Dynamics 365 (by default, https://yourorganization.crm.dynamics.com/api/data/v9.2).
GET /api/data/{{apiVersion}}/WhoAmI (requires authentication)
Replace <apiVersion> with the api version.
Example: /api/data/v9.2/WhoAmI
Supported authentication methods
OAuth 2.0 (client credentials)
Requires client ID, client secret, and scopes.
Tip
In the Microsoft Entra admin center, register an app and save the application (client) ID and directory (tenant) ID. Create and save a client secret. Configure API permissions and grant admin consent for your organization.
For more information, please refere to the Microsoft Entra admin center documentation.
In the Power Platform Admin Center, create an Application User and assign a security role.
For more information, please refere to the Power Platform Admin Center documentation.
Token endpoint: https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token
Scope: https://<yourorg>.crm[region].dynamics.com/.default
Bearer token
Tip
In the Microsoft Entra admin center, configure an OAuth client that issues the bearer token once you have successfully completed one of the OAuth 2.0 flows (authorization code, implicit, or client credentials).
Basic Auth
Not supported for online Dynamics 365.
Permissions or scopes
Scopes define access to specific resources.
Token type | Where you configure access | What to grant |
|---|---|---|
Client credentials (app) | Entra ID (App Registration), Dataverse (Application User mapping) | Assign a Dynamics 365 security role to the Application User that allows CRUD on tables you willll access (for example, Accounts, Contacts, Incidents). |
Extraction
MS Dynamics 365 CRM API resource endpoints
Note that each sample response structure is simplified to show the main fields typically returned by Zendesk. Actual responses may include more nested objects and links.
Resource type | Endpoint | Method | Sample response structure |
|---|---|---|---|
Contacts | /contacts?$select=fullname,emailaddress1 | GET | {
"@odata.nextLink" : "",
"@odata.context" : "",
"value" : [ {
"contactid" : "",
"@odata.etag" : "",
"fullname" : "",
"emailaddress1" : ""
} ]
}
|
Accounts | /accounts?$select=name,accountnumber | GET | {
"@odata.nextLink" : "",
"@odata.context" : "",
"value" : [ {
"accountid" : "",
"accountnumber" : "",
"@odata.etag" : "",
"name" : ""
} ]
}
|
Pagination
Type: next-link in response paging with @odata.nextLink
Parameters: @odata.nextLink
Response includes @odata.nextLink when more data is available
Set Prefer: odata.maxpagesize=<N> request header (up to 5,000 rows per page). Change this number to view pagination for fewer records.
Limitations and known issues
Rate limits
Service protection API limits (short-term; 5-minute sliding window): excessive request volume results in HTTP 429 Too Many Requests with guidance to retry/back off.
Request entitlement limits (24-hour allocations per user/app/tenant depending on license)
Data freshness
There is no platform-level caching delay in the API itself, but client-side caching, replication (for exampe, Synapse Link), or near-real-time integrations may introduce delays outside the Web API. (General docs reference operational behavior; plan your SLAs accordingly.)
Known bugs or API instabilities
Paging “nextLink is null” when using $top incorrectly: $top limits the total rows, but not the page size. Use Prefer: odata.maxpagesize and follow @odata.nextLink.