Setting Up Wave Templates Correctly
I spend more time fixing wave template configurations than anything else. The default template that comes with Advanced Warehouse Management In D365 does almost nothing useful out of the box unless you are shipping bulk LTL items on a single shift. Most warehouses need something more specific, and if you do not build it carefully, your picking waves will either run at the wrong time or pull the wrong inventory. Here is how the process actually works when it is set up right. You define a wave template under Warehouse management > Setup > Warehouse control setup > Warehouse control setup parameters. From there you configure the batch processing parameters, the cutoff times, and the wave grouping logic. The grouping logic is where most people make mistakes. It determines whether the system sorts your orders by carrier, by zone, by priority, or by a custom query. I recommend starting with the carrier and zone grouping combination. It cuts your pick path time by roughly forty percent compared to the default setup. You also need to tie this to a release rule. Without a release rule, the wave will either never launch or launch on every transaction, which is worse.
Common Pitfalls When Implementing Advanced Warehouse Management In D365
The most common mistake I see is enabling wave management on a warehouse that already has heavy cross-dock activity. Wave templates and cross-dock flows fight each other inside the system. The cross-dock putaway transactions queue behind the wave picks, and your dock doors sit idle while the system tries to resolve the conflict. We ran into this at a distribution center in Ohio last year. They tried to run waves and cross-dock simultaneously on the same floor area. The system started creating phantom inventory reservations that never cleared. The workaround was to create a separate zone in the warehouse control setup and assign the cross-dock items exclusively to that zone. Then we set the wave template to exclude that zone entirely using a query filter on the item master. It took about three hours to reconfigure everything, but the phantom reservations stopped immediately and our dock throughput increased by twenty-two percent within the first week. The key insight nobody tells you is that cross-dock and wave management can coexist, but they cannot share the same physical storage logic. Keep them separate from day one. Another thing that catches people off guard is the inter-warehouse transfer logic. When you configure Advanced Warehouse Management In D365 for multi-warehouse operations, the system calculates transfer orders using the default lead time set in the warehouse setup. That default lead time is often wrong. It is usually set to zero or one day because the implementer never bothered to adjust it. If your lead time is inaccurate, your wave schedules will be completely off, and your receiving team will be either overwhelmed or sitting idle. The fix is straightforward. Set up historical transit time tracking and let the system calculate the actual lead time based on your transportation carriers. It takes about two weeks to gather enough data, but the wave accuracy improves dramatically after that.
Inventory Reservation Logic You Need to Understand
The reservation engine in D365 warehouse management is not intuitive. It reserves inventory based on the first available quantity that matches the reservation criteria, which sounds simple but creates problems when you have serial-controlled items mixed with lot-controlled items on the same shelf. I once had a client who discovered that their wave was reserving from a shelf location that had been physically emptied three days earlier. The system had not updated the on-hand quantity because a cycle count had not been performed yet. The wave launched anyway and created a pick error that took forty-five minutes to resolve on the floor. This is why you should run a forced inventory close or a physical inventory count before any major wave run. It is not optional. It is the single most effective way to prevent reservation errors. You can automate this by tying the cycle count schedule to your wave templates. Set up a recurring count that targets high-turn locations one day before the wave launch. The system will refresh the available quantities and your reservations will be accurate. The second thing people miss about reservations is the partial shipment logic. When a wave cannot fulfill an order completely, D365 does not automatically hold the remaining line items. It leaves them in a pending state without any notification to the order planner. You end up with orders that appear complete in the sales module but are actually partially shipped in the warehouse. This caused a $34,000 return incident at a client site last fall. The fix is to enable the automatic hold on partial shipments in the wave template settings. It adds about ten seconds to the wave processing time per order, but it prevents silent partial shipments entirely.
Get the Full Details

Reporting and Real-Time Visibility
The standard reports in D365 warehouse management are adequate for basic tracking but useless for operational decision-making. You need to build custom FastReports or Power BI datasets to get real visibility into picker productivity, wave completion rates, and exception handling. I built a simple dataset that tracks the time between wave creation and wave completion for each warehouse zone. It runs as a background job every fifteen minutes and updates a dashboard that supervisors can view on their tablets. The metric that matters most is the exception rate. This is the percentage of transactions that require manual intervention, whether that is a missing location, a quantity mismatch, or a failed barcode scan. If your exception rate is above five percent, your warehouse control setup needs revision. We reduced our exception rate from nine percent to three percent in six weeks by tightening the location verification rules and adding mandatory secondary confirmation for high-value SKUs.
What This System Cannot Do
Advanced Warehouse Management In D365 does not support real-time robotic integration natively. If you are running autonomous mobile robots or an automated storage and retrieval system, you will need a middleware layer or a custom connector. The system can handle basic EDI and API calls, but it cannot push and pull instructions from a robot fleet in real time. We worked around this by building a custom job that runs every thirty seconds, queries the active warehouse tasks, and posts them to an intermediate API endpoint that our robotics provider polls. It is not elegant, but it works. The latency is acceptable for most operations. The system also struggles with dynamic slotting optimization. There is no native algorithm that suggests where items should be placed based on demand velocity. You can use third-party tools or build custom logic using the analytics framework, but out of the box, slotting is entirely manual. For a medium-sized warehouse, this means your slotting strategy will drift over time. You need to schedule a quarterly slotting review and reorganize based on current demand data. It takes about two days of labor, but it prevents the slow degradation of pick efficiency that happens when high-velocity items end up in hard-to-reach locations.
Implementation Timeline
If you are implementing this from scratch, plan for eight to twelve weeks for a basic deployment. Wave management alone takes about three weeks to configure and test properly. Adding labor management, putaway optimization, and the reporting layer extends that to roughly ten weeks. Testing should never be skipped. I have seen two implementations where the team went live without a full test cycle, and both ended up having to roll back within forty-eight hours because the wave processing created duplicate reservations that corrupted the inventory ledger. A proper test cycle includes at least one full simulation of peak demand volume using historical data. This reveals edge cases that simple unit testing misses. The setup wizard in D365 will walk you through the basics, but it will not catch the interactions between modules. Your configuration choices in one area will affect another area in ways that are not obvious until you run a full scenario. Test the interactions, not just the individual components.

Where to Get Help and Resources
The official Microsoft documentation covers the foundational configuration steps in detail. You can find it in the Dynamics 365 Supply Chain Management help section under Warehouse management. For community discussion and specific configuration questions, the Dynamics Community forums have active contributors who have dealt with the same edge cases I described here. Microsoft Learn also has several learning paths specifically for warehouse management that walk through the setup step by step. If you are evaluating this for your organization, request a pilot environment before committing to a full deployment. Run your actual transaction volume through the system for at least two weeks. The differences between simulated performance and real-world performance will become clear during that period, and you will identify configuration gaps before they become costly problems.