Microsoft DynamicsFree generatorPDF, Excel, Word exportMicrosoft Dynamics 365 Finance and Supply Chain

Dynamics 365 Finance and Supply Chain OData URL Builder

Dynamics 365 Finance and Supply Chain exposes public data entities as OData v4 collections under the /data path of your environment. Getting the URL syntax, cross-company flag and authentication right is where most first calls fail. Fill in the fields to generate both a readable and an encoded version.

Fill in

Host without https://

Generated code
Download:

OData GET request

GET https://contoso-test.sandbox.operations.dynamics.com/data/ReleasedProductsV2?cross-company=false&$filter=dataAreaId eq 'usmf' and ProductType eq Microsoft.Dynamics.DataEntities.EcoResProductType'Item'&$select=ItemNumber,ProductName,ProductGroupId&$orderby=ItemNumber&$top=100
Authorization: Bearer <access token>
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0

Same request, URL encoded for a browser or Power Query

https://contoso-test.sandbox.operations.dynamics.com/data/ReleasedProductsV2?cross-company=false&$filter=dataAreaId%20eq%20%27usmf%27&$select=ItemNumber,ProductName,ProductGroupId&$orderby=ItemNumber&$top=100

Token request (client credentials)

POST https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id=11111111-1111-1111-1111-111111111111&client_secret=<secret>&scope=https://contoso-test.sandbox.operations.dynamics.com/.default

Count and single record patterns

Count: GET https://contoso-test.sandbox.operations.dynamics.com/data/ReleasedProductsV2/$count?cross-company=false&$filter=dataAreaId eq 'usmf'

Single record by key: GET https://contoso-test.sandbox.operations.dynamics.com/data/ReleasedProductsV2(dataAreaId='usmf',ItemNumber='A0001')

Key fields and enum literal syntax differ by entity. Check the entity key in Data management > Data entities and test enum filters in a sandbox. Application registration must also be added to Microsoft Entra applications in System administration > Setup. Never paste real secrets into shared documents.

Governed read access to D365 data

Want these queries behind a read-only assistant that shows its query and honors D365 roles? Optional follow-up, the builder is free.

Optional. The tool and every export work without this. No spam.

How to use the builder

Enter your environment host, the public collection name of the entity, the legal entity and the query options. Copy the request into Postman, Insomnia, curl or Power Query. Replace the bearer token with one obtained from the token call shown, using an app registration that is registered in D365 under System administration > Setup > Microsoft Entra applications and mapped to a user.

  • Use $select to limit columns, it matters for performance
  • Use $top while testing and paginate with the next link in real runs
  • Add cross-company=true only when you intend to read across legal entities
  • Filter on dataAreaId for company-specific entities

Query options that matter

OData v4 options in F&O include $filter, $select, $orderby, $top, $count and $expand where navigation properties exist. Enum values need the full namespace literal, such as Microsoft.Dynamics.DataEntities.NoYes'Yes', which surprises people used to plain strings. String literals use single quotes and spaces in a browser URL must be encoded. Server paging returns a next link, so loop until it is absent.

Authentication and limits

Access uses Microsoft Entra ID tokens for the environment as the resource. Service protection limits and priority-based throttling apply, so a burst of calls can return HTTP 429 with a retry-after header. Build retry with back-off into integrations. For bulk movement, the Data management package API or recurring integrations usually beat paging OData.

Common mistakes

Frequent problems are forgetting cross-company so only the default company returns rows, using the entity label instead of the public collection name, wrong enum literal syntax, and reading huge result sets without $select. Another is using the sandbox host in a production script, so keep the environment in a variable.

Frequently Asked Questions

What is the base URL for D365 F&O OData?

It is https://your-environment-host/data followed by the public entity collection name, for example /data/CustomersV3. The host is the URL you use to sign in to the finance and operations client, not the Power Platform environment URL.

Why do I only see data for one company?

OData returns the default company of the calling user unless you pass cross-company=true. When you do, filter on dataAreaId if you only want certain legal entities, otherwise you may pull far more data than intended.

How do I filter on an enum field?

Use the full enum literal, for example $filter=SomeField eq Microsoft.Dynamics.DataEntities.NoYes'Yes'. The namespace and enum name come from the entity metadata, which you can read at /data/$metadata for your environment.

How do I page through large results?

Follow the @odata.nextLink value in each response until it is no longer returned. Do not rely on $skip for large sets. Use $select to shrink the payload and consider the data management package API for bulk extraction.

If your team needs these reads wrapped into a governed, read-only question-and-answer layer over D365, we can discuss how that is built on your own infrastructure.