◂ Back to examples
D365

Integrate Microsoft Dynamics 365 with your enterprise systems

Connect Dynamics 365 Finance and Operations, Business Central and Dataverse from Python. Read and write business entities over OData, with OAuth2 against Microsoft Entra ID, paging and serialization all handled by the platform.

Tutorials

How to use the Dynamics 365 integration

More examples

About Dynamics 365

Microsoft Dynamics 365 is a family of enterprise applications covering ERP and CRM - Finance and Operations for large-scale ERP, Business Central for small and medium businesses, and customer engagement apps such as Sales and Customer Service built on Dataverse. All of them expose their data layer through OData, which is exactly what Zato's outgoing OData connections speak. With Zato, you configure a connection once - address, OData version, OAuth2 credentials - and every Python service can then read and write customers, invoices, journals or any other entity, orchestrating Dynamics 365 with databases, message queues and the rest of your integration landscape.

Frequently asked questions

Which Dynamics 365 products can Zato connect to?

Finance and Operations, Business Central and Dataverse-based customer engagement apps such as Sales and Customer Service. See the system-specific notes for the address and auth settings of each.

How does authentication work?

Through OAuth2 client credentials against Microsoft Entra ID - you provide the token URL, tenant ID, client ID and scopes, and Zato caches and refreshes tokens automatically. Details are in the OData security chapter.

How do I read data from Dynamics 365?

Obtain a client with self.odata and call .read, .get or .iter - entities arrive as plain Python dicts, with paging followed transparently.

Can I write data too?

Yes - .create, .update and .delete cover the full CRUD range, including the ETag-based optimistic concurrency that Business Central enforces.

What about composite keys in Finance and Operations?

Pass a dict as the key, e.g. {'dataAreaId': 'usmf', 'CustomerAccount': 'US-001'} - the client formats it correctly, as shown in the system-specific notes.

How do I integrate with Dataverse tables?

The Dataverse in Python guide walks through CRUD operations against Dataverse, including the mapping between UI names and API entity paths.

How do I test Dynamics 365 integrations?

Mock OData responses in unit tests or run live tests against the in-process OData test server that simulates Dynamics 365 auth and validation behavior.

Can I keep the configuration in version control?

Yes - define connections in YAML with enmasse and import them per environment, with secrets read from environment variables.

Ready to build Dynamics 365 integrations?

Get started with Zato and connect Dynamics 365 to your enterprise systems in minutes.