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.
Query SAP and Microsoft systems from Python - includes a complete Business Central walkthrough with OAuth2 configuration
Build production-ready Microsoft 365 and Dynamics 365 automations without dealing with OAuth2 complexities
Learn how to design and build scalable, real-world, production-ready API integrations in Python
Finance and Operations and Business Central over OData, plus Dataverse CRUD, in complete Python services
Service root layout, composite keys with dataAreaId, companies in Business Central and ETag handling
Filter, select, expand, sort and page through Dynamics 365 entity sets from Python
OAuth2 client credentials with automatic token caching and refresh for Entra ID tenants
Unit-test services with mocked OData responses and run live tests against an in-process test server that simulates Dynamics 365
Full CRUD access to Dataverse tables behind Sales, Customer Service and other customer engagement apps
Define Dynamics 365 connections declaratively with enmasse and deploy them across environments
Map Dynamics 365 entities to Python dataclasses for typed access and OpenAPI generation
Where to keep environment-specific settings - tenant IDs, environment URLs and scopes
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.
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.
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.
Obtain a client with self.odata and call .read, .get or .iter - entities arrive as plain Python dicts, with paging followed transparently.
Yes - .create, .update and .delete cover the full CRUD range, including the ETag-based optimistic concurrency that Business Central enforces.
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.
The Dataverse in Python guide walks through CRUD operations against Dataverse, including the mapping between UI names and API entity paths.
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.
Yes - define connections in YAML with enmasse and import them per environment, with secrets read from environment variables.
Get started with Zato and connect Dynamics 365 to your enterprise systems in minutes.