7️⃣ Bring Your Own Database (BYOD)
Let's you export D365 FO data to your own Azure SQL database.
BYOD allows you to export entity data to a user created SQL Server database instead of the Entity store AXDW, which is currently not allowed to be accessed by end users in production environments. Using BYOD you can export D365FO data entities to your database manually or with batch update or change tracking options using the standard DMF export projects page. To start using BYOD, you need to configure your SQL Server database in the “Data management” workspace “Configure Entity export to database” tile:
✅ Key Features of BYOD:
-
Custom Reporting:
-
Use tools like Power BI, SSRS, Excel, or third-party apps to run reports directly on exported data.
-
-
Azure SQL Support:
-
Exported data lands in a customer-provisioned Azure SQL Database, enabling flexible access.
-
-
Data Entities:
-
Uses data entities to define the structure and scope of the data being exported.
-
-
Incremental Push:
-
Supports full or incremental data push, minimizing data transfer and improving performance.
-
-
Scheduled or Manual Exports:
-
Data exports can be triggered manually or on a schedule using batch jobs.
-
🛠️ How to Configure BYOD:
-
Provision Azure SQL Database
-
Create a SQL Database in Azure (with appropriate firewall and access configurations).
-
-
Register Database in D365FO
-
Go to Data Management > Bring your own database.
-
Register and validate your Azure SQL connection.
-
-
Publish Data Entities
-
Choose the data entities you wish to export and publish them to the registered BYOD.
-
-
Export Projects
-
Create and configure data export projects to schedule exports to BYOD.
-
🔐 Security and Access:
-
Use read-only access to the BYOD database for reporting purposes.
-
Be cautious with sensitive or PII data—ensure your access model complies with your organisation's security policies.
⚠️ Limitations and Considerations:
-
No automatic schema updates: If you update a data entity in D365FO, you must republish it to BYOD.
-
BYOD is read-only; no reverse synchronisation to D365FO.
-
Does not support all entities (especially non-persisted or virtual entities).
Consider Export to Data Lake a modern alternative for large datasets or near-real-time scenarios.
-
Use case: Full control over data for downstream apps or reporting.
-
Setup: Define entities to export via the data management framework.
✅ Ideal for complex BI environments or legacy system syncs.
8️⃣ Azure Data Lake
With the Export to Data Lake feature, D365 FO continuously exports data entities to Azure Data Lake Gen2.
✅ Advantages of Azure Data Lake with D365FO
Advantage | Description |
---|---|
Near Real-Time Data Export | Automatically syncs entity data to Data Lake with minimal delay—ideal for up-to-date reporting. |
No Need to Republish Entities | Unlike BYOD, you don’t need to republish when the data model changes—auto-handled by the platform. |
Scalable Storage | Can handle petabytes of data efficiently; no size restrictions. |
Open Data Format | Stores data in open formats (CSV/Parquet), which are supported by most analytics tools. |
Advanced Analytics Ready | Easily connects with tools like Power BI, Azure Synapse, Databricks, and Azure ML. |
Better Performance | Offloads heavy reporting from the D365FO database, improving overall performance. |
Secure & Compliant | Uses Azure security, RBAC, and encryption; suitable for enterprise-grade deployments. |
❌ Disadvantages of Azure Data Lake with D365FO
Disadvantage | Description |
---|---|
Read-Only Data | You cannot write back to D365FO—one-way export only. |
Initial Setup Complexity | Requires coordination between the D365FO team and the Azure team (security, firewall, permissions). |
Azure Knowledge Required | You need a basic understanding of Azure Storage, IAM, Synapse, etc., for effective usage. |
No Ad-Hoc SQL Queries | Unlike BYOD (Azure SQL DB), you can’t directly query using SSMS or ad-hoc SQL. |
First-Time Sync Delay | Initial sync of large volumes can take time, especially in Production environments. |
Custom Entity Support Limited (Initially) | Only selected entities are available out-of-the-box; custom entities require extra setup or a workaround. |
-
Use case: Big data analytics, integration with Synapse or custom data lakes.
-
Architecture: Fully managed and scalable.
✅ Best for enterprise-scale analytics and centralised data platforms.
9️⃣ Dual Write
A near-real-time bi-directional sync between D365 FO and Dataverse (Power Platform).
Dual-write is a real-time, bi-directional integration between Dynamics 365 Finance and Operations (D365FO) and Dataverse (Power Platform + CE apps like Sales, Customer Service, etc.).
It provides seamless data synchronisation so that records created or updated in one app (e.g., FO) automatically reflect in the other (e.g., CE), and vice versa, without the need for custom integrations or data sync jobs.
🧩 Key Concepts
Feature | Description |
---|---|
Entity Mapping | Maps D365FO tables (data entities) with Dataverse tables (entities). |
Real-time Sync | Updates flow instantly between systems. |
Out-of-the-box Templates | Microsoft provides prebuilt mappings for common entities (Customer, Vendor, Product, etc.). |
Custom Entity Support | You can define custom mappings for custom tables/entities. |
Power Platform Integration | Enables usage of Power Apps, Power Automate, AI Builder with FO data. |
✅ Advantages of Dual-write
Advantage | Description |
---|---|
Real-time Data Flow | Any change in D365FO or Dataverse reflects instantly in the other system. |
No Need for Manual Integration | Eliminates need for custom middleware or ETL tools between CE and FO. |
Unified User Experience | Sales, Finance, and Operations users work with one version of truth. |
Tight Integration with Power Platform | Use FO data in Power Apps, Power Automate, AI Builder, etc. |
Prebuilt Templates | Microsoft provides more than 30 ready-to-use mappings to speed up setup. |
Custom Mappings | Supports extensibility for ISVs and partners. |
Error Handling UI | Errors are logged with detailed traceability in the UI with retries and fixes. |
❌ Disadvantages of Dual-write
Disadvantage | Description |
---|---|
Initial Setup is Complex | Requires careful setup and validation, especially in large or customised implementations. |
Performance Overhead | Real-time sync can cause latency or impact performance if not managed properly. |
Customization Conflicts | Customisations in FO or CE can break mappings or cause sync issues. |
Tightly Coupled Systems | High dependency between FO and Dataverse can become a risk during updates or outages. |
Monitoring and Maintenance | Requires regular monitoring, handling sync failures, and managing error logs. |
Limited Offline Capability | Dual-write only works when both systems are online and reachable. |
🏗️ Typical Use Cases
-
Sales to Cash Integration
Customer data entered in Dynamics 365 Sales (CE) syncs with D365FO for invoicing and fulfilment. -
Product Sync
Products created in FO are synced to CE so sales reps can quote and sell accurately. -
Vendor Management
Vendors created in CE (via Power Apps) get synced to FO for procurement processes.
-
Use case: Sync customers, orders, vendors, etc., with Power Apps or D365 CE.
-
Setup: Prebuilt mappings and extensible framework.
✅ Great for connected apps, low-code solutions, and seamless FO + CE experiences.
🔟 Consuming External Web Services (from X++)
D365 FO can consume external API's directly via X++.
🔍 Overview
D365FO supports integration with external systems via HTTP-based web services (REST/SOAP). As a technical consultant, you often need to call third-party APIs for real-time data exchange like:
-
Fetching exchange rates
-
Sending invoice data to an external system
-
Validating GST/TIN
-
Sending SMS or email notifications
This article explains how to consume external REST/SOAP web services from X++ using System.Net.HttpWebRequest
, System.Net.HttpClient
, or a custom .NET class wrapper in D365FO.
🔐 Security Considerations
-
D365FO runs in sandboxed environments, so HTTP calls are allowed only from batch or async operations.
-
Use Azure Key Vault to store API keys or secrets securely.
-
Use Sys.Net.HttpClient only in trusted and controlled scenarios.
-
Avoid direct synchronous API calls in forms or synchronous processes.
🛠️ Common Use Cases
Use Case | API Type | Call Type |
---|---|---|
Get weather data | REST | GET |
Validate GSTIN/PAN | REST | POST |
Send SMS via Twilio | REST | POST |
Fetch stock prices | REST | GET |
Submit Invoice to Tax Portal | SOAP | POST |
-
Use Batch Jobs or SysOperation Framework for calling external APIs.
-
Log responses for traceability in a custom log table.
-
Implement retry logic for transient failures.
-
Use
Sys.Net.HttpClientFactory
if you're managing many connections.
📝 Summary
Feature | REST (HttpClient) | SOAP (Service Ref) | .NET DLL |
---|---|---|---|
Ease of Use | ✅ Easy | ⚠️ Moderate | ✅ Flexible |
Real-time | ✅ Yes | ✅ Yes | ✅ Yes |
Reuse Logic | ⚠️ Low | ⚠️ Medium | ✅ High |
OAuth/JWT Support | ✅ Yes (custom headers) | ❌ Manual | ✅ Excellent |
-
Class used:
System.Net.HttpClient
,CLRObject
, etc. -
Use case: Call a shipping API to get tracking info, or sync the external catalogue.
✅ Enables integration with external REST/SOAP services from within D365 FO.
✅ Final Thoughts
D365 FO offers integration options for every need —
real-time APIs, bulk syncs, event-driven messaging, and analytics.