The introduction of Warehouse management only mode (WOM) allows organizations to take advantage of the core warehouse management system (WMS) functionality that Microsoft Dynamics 365 Supply Chain Management (D365 SCM) offers while continuing to take advantage of their existing investments in third-party ERP and order management systems. Regardless of the ERP or ordering systems that they have in place, they can now quickly deploy WOM advanced WMS functionality without having to set up or maintain the areas of D365 SCM that they don't need.
One common scenario is integrating shipping processes from Microsoft Dynamics 365 Business Central (D365 BC) ERP with the WOM within D365 SCM. This blog post explores how Azure Integration Services can act as a message broker to facilitate integration handling outbound shipment orders, leveraging Azure Logic Apps for message translation and orchestration, Azure Functions for message enrichment, and other built-in Azure capabilities for monitoring and ensuring the smooth flow of integration. Utilizing the above-mentioned services from Azure and APIs in both systems, this integration is implemented without making any changes and extensions to the codebase of both systems.
Figure 1: Integration infrastructure overview
Integration architecture
The integration between D365 BC and WOM involves several key components, each playing a specific role in the process:
- Azure integration services: Acts as a robust and scalable message broker, ensuring that messages between systems are transmitted reliably.
- Azure Logic Apps: Used for translating and orchestrating messages, ensuring they are in the correct format and sequence.
- Azure Functions: Enrich messages with additional information from the D365 BC source system.
- Azure monitoring tools: Provide end-to-end visibility and monitoring of the integration process.
Figure 2: Integration building blocks
Azure integration services as a message broker
Azure Integration Services provides a suite of tools that enable seamless communication between different systems. In this integration scenario, Azure Event Grid handles the transmission of messages from WOM to D365 BC in order to report the warehouse work progress back to the source system.
Azure Logic Apps for message translation and orchestration
Azure Logic Apps play a critical role in translating and orchestrating the messages. Here's how they work:
- Message translation: Ensures that the format of the sales orders from D365 BC is compatible with the WOM outbound shipment order messages. This involves converting data structures, changing field names and adjusting values to match the expected format.
- Orchestration: Manages the sequence of operations, ensuring that messages are processed in the correct order and that any dependencies are respected. For example, it ensures that sales orders' headers are processed before sales orders' lines.
Azure Functions for message enrichment
Azure Functions are serverless computing services that allow running code on-demand on a serverless basis. In this integration scenario, Azure Functions are used to:
- Enrich messages: Add additional information from the source ERP system (D365 BC) to the outbound shipment order messages. This could include retrieving customer data, product details, or shipment instructions that are necessary for WOM to process the orders accurately.
Monitoring with Azure capabilities
Azure Monitoring Services oversees the integration between D365 BC and D365 SCM WOM. They provide comprehensive insights and real-time visibility into the performance and health of the integrated systems, and Azure Monitoring ensures seamless data flow and process synchronization between BC and WOM. It tracks key metrics, detects anomalies, and alerts administrators to potential issues before they impact operations. Additionally, Azure Monitoring offers diagnostic and logging capabilities that help identify and resolve integration bottlenecks, thereby enhancing the reliability and efficiency of the business processes. Azure provides several tools for this purpose:
- Azure Monitor: Offers comprehensive monitoring for applications and services, providing insights into system performance and health.
- Azure Application Insights: Helps to detect and diagnose issues, understand user interactions, and track the performance of the integration components.
- Azure Log Analytics: Collects and analyses log data from various sources, enabling proactive issue resolution and optimization of the integration process.
Process overview
Prerequisites for the integration
For this integration to function properly, several prerequisites must be met:
- Configuration of external ERP system information: Ensure the mandatory master data about the external ERP system is correctly configured within WOM to support seamless integration. The setup is done through the configuration form Source systems.
The most important configuration points to be considered in this form are the following:
- Product Master Data: Accurate and consistent product master data must be maintained across both systems to prevent discrepancies. For WOM to correctly map external item IDs to its own item IDs, there must be a mapping of Source system items for each relevant item defined. This configuration can be done manually in the WOM or via integration of the product master data.
- Reference Data: Reference data such as product unit of measure conversion, product GTIN numbers, and product barcodes can also be synchronized between WOM and D365 BC, following the same integration pattern described in this article to support seamless order processing.
The integration process: From Sales orders to shipment and invoicing
Integration endpoints for sales order integration between D365 BC and D365 SCM WOM:
Integration endpoints for sales order integration between D365 SCM WOM and D365 BC:
Below is the walkthrough of the entire sales order integration from the D365 BC to the D365 SCM WOM:
- Sales order creation:
- A sales order is created in D365 BC.
- Inventory is reserved on the warehouse level in D365 BC.
- Conversion of a sales order to an outbound shipment order message:
- The sales order release in D365 BC is a trigger for starting a Logic Apps integration workflow. When triggered, the workflow is provided with essential data, such as company name, sales order ID, and external sales order number.
- Subsequentially, the workflow collects all required data from the original sales order and its lines needed to create and populate outbound shipment order and outbound shipment order line (one outbound shipment order line message per sales line) messages.
- Additional data points from the original sales order are fetched from exposed data entities in D365 BC using Azure functions.
- Once the outbound shipment order message and all outbound shipment order line messages are submitted to WOM API, the final message must be submitted, which is committing the transaction and submitting messages to the WOM's receiving queue.
- Message translation and orchestration:
- Azure Logic Apps translate, transform and orchestrate the outbound shipment order messages, ensuring they conform to the required format of the WOM.
- Azure Functions enrich the message with additional information such as customer data, product details, and shipment instructions retrieved by querying data entities in D365 BC.
- Processing outbound shipment orders in the WOM:
- When an outbound shipment order message with corresponding lines is submitted to WOM, it waits for processing in the receiving queue. Processing messages from the queue performs some level of data validation (specifically consignee address data), creation of outbound shipment orders and lines, and transfer of data from outbound shipment order message to outbound shipment order.
- The outbound shipment order is released to the warehouse and processed as a regular work order in the D365 SCM WMS. This involves tasks such as picking, packing, and preparing the shipment.
- Once picked goods are ready to leave the warehouse, the outbound shipment gets confirmed, and the packing slip is posted. Posting the packing slip in D365 SCM WOM triggers a new workflow, which will report the status of the work orders for the original sales order back to D365 BC.
- Reporting status of the work execution progress to D365 BC:
- The results of the picking process and other warehouse activities are reported back to D365 BC. This is done via Azure Integration Services using Event Grids in combination with Business Events and Logic Apps to reflect the updates accurately.
- When posting the packing slip business event, WHSShipmentPackingSlipJournalModifiedBusinessEvent is triggered, and a specific subscription within Azure Event Grid is notified. Further, a signal from the Event Grid with essential data is sent to trigger Logic Apps workflow. Subsequent activities in workflow collect additional data from WOM and submit a request to an API in D365 BC, which performs posting and invoicing of the sales order.
- Completion of work orders and invoicing:
- Once the work orders for the original sales order are completed, the sales order is marked as shipped and invoiced in the source ERP system as described in the previous step. Sales order is posted, inventory is deducted accordingly, and sales invoice is generated.
Conclusion
Integrating D365 BC with an external WMS within D365 SCM can significantly enhance operational efficiency, especially for handling outbound shipment orders. By leveraging Azure Integration Services, Azure Logic Apps, and Azure Functions, organizations can ensure seamless communication, accurate data translation and transformation, and comprehensive monitoring of the entire process. With the right setup and prerequisites in place, this integration can provide a robust and scalable solution for your business needs.
Furthermore, this integration approach does not require any changes to the existing codebase of D365 SCM or of D365 BC. The solution is built leveraging APIs and business events in both systems, therefore representing a very efficient and seamless integration pattern.