Automated work order sync between D365 Asset Management and Field Service using Azure Logic Apps

We recently implemented an automated work order synchronization solution between D365 Asset Management and Field Service using Azure Logic Apps. The project was driven by our need to eliminate manual data entry when maintenance requests originated from our asset monitoring system.

Our previous process required technicians to manually recreate work orders in Field Service after they were generated in Asset Management, leading to delays and occasional data inconsistencies. We needed a robust integration that could handle high volumes during peak maintenance periods while providing clear error visibility.

The Logic Apps workflow we designed triggers on work order creation in Asset Management, transforms the data payload, and creates corresponding Field Service work orders via REST API calls. We implemented comprehensive error handling with retry logic and detailed logging to Azure Application Insights.

Key challenges included mapping asset hierarchies between systems, handling custom field synchronization, and managing API rate limits during bulk operations. I’ll share our workflow design, API integration patterns, and the error handling strategies that made this solution production-ready.

This sounds like a solid use case for Logic Apps. For the workflow design, did you use the recurrence trigger or HTTP webhook? We’re looking at a similar integration and wondering about the trigger mechanism. Also curious about how you handled the authentication between D365 and Field Service - did you use service principals or managed identity for the API calls?

We went with the HTTP webhook trigger for real-time processing. The Asset Management module fires a webhook event whenever a work order status changes to ‘Ready for Dispatch’. This gives us immediate synchronization rather than polling.

For authentication, we use a dedicated service principal with specific API permissions scoped to work order creation and asset lookup in Field Service. The managed identity approach would work too, but we needed cross-tenant access since our Field Service runs in a different Azure AD tenant. The service principal credentials are stored in Azure Key Vault and retrieved by the Logic App at runtime.