An update from my side after further testing on this requirement.
We were able to successfully implement the Business Event/Data Event based approach and consume the events externally.
Tested approaches:
- D365 Business Event → Logic App
- D365 Business Event → Azure Service Bus Queue → Azure Function
Both approaches worked successfully for the POC.
One additional requirement we have is that we only want to sync shipment lines fulfilled through D365/WMS flows, and not the lines already fulfilled directly by OMS.
Because of this filtering requirement, we are also exploring another approach using a custom flattened export entity which combines:
- packing slip header
- lines
- tracking information
into a single export-friendly entity.
This may simplify the integration compared to consuming multiple entities separately and joining header/lines/tracking externally after export. It may also help apply filtering directly at the export/entity level.
OData is also possible, but would require multiple API calls to retrieve the complete shipment information.
Still evaluating which approach would be the cleanest and most maintainable long-term solution, sharing the findings here in case it helps others exploring similar OMS fulfillment integrations.
Any other feedback is welcome.
Thanks again everyone for the suggestions and guidance shared on this thread. It really helped us move forward with the POC and evaluate different approaches.