Dynamics 365 Supply Chain: Inventory, MRP, and Warehouse Setup Guide
Why This Is Happening
You've just kicked off a Dynamics 365 Supply Chain Management deployment , or you've inherited one that's half-configured , and nothing is behaving the way it should. Master planning is generating planned orders that don't make sense. The warehouse module is throwing errors when you try to release outbound shipments. Inventory transactions are mismatching across legal entities. I've seen this exact scenario on dozens of implementations, and the root cause is almost always the same: the setup sequence was wrong, or key configuration checkboxes were skipped because the error messages in D365 are notoriously unhelpful.
Here's the honest truth about Dynamics 365 Supply Chain Management setup: the system is deeply interdependent. Your warehouse management configuration depends on inventory parameters, which depend on your organizational hierarchy, which depends on your number sequences being configured first. Miss one step and you'll spend hours chasing a symptom that's three layers removed from the actual cause.
The most common pain points I hear from administrators and functional consultants alike:
- MRP / Master planning produces garbage planned orders, usually because coverage groups, item coverage settings, or safety stock margins weren't configured before the first planning run.
- Warehouse management module won't activate for a site or warehouse, this nearly always traces back to the warehouse not being set to "Use warehouse management processes" or missing location profiles.
- Inventory on-hand figures don't match between modules, often caused by data entities imported in the wrong order, or batch processing jobs for inventory close not completing cleanly.
- Mobile app users can't log in or scan items, permissions mismatches, missing mobile device user accounts, or, in newer deployments, Microsoft Entra Conditional Access policies blocking authentication.
- Work orders aren't being generated for picks and putaways, location directives and work templates are either missing, misconfigured, or the query criteria on the directive don't match your actual inventory dimensions.
The frustrating thing is that D365 SCM will often silently fail rather than give you a clear error. You'll run a master plan and see zero planned orders, with no warning. You'll try to release a sales order to the warehouse and get a vague message about "no work being created." This guide walks through each of those failure points systematically, from inventory parameter basics all the way to advanced warehouse automation and Demand Driven MRP (DDMRP) configuration.
Whether you're on a fresh implementation using Microsoft Dynamics Lifecycle Services (LCS) to deploy your environment, or you're troubleshooting an existing production system, the same principles apply. Browse all Microsoft fix guides →
The Quick Fix, Try This First
Before you go digging through location directives and coverage groups, run through this five-minute sanity check. It resolves about 60% of the "why isn't SCM doing anything useful" complaints without touching a single configuration form.
Step 1, Check Feature Management. Go to System administration > Workspaces > Feature management. Filter by "All" and search for the specific feature you expect to be running. A surprising number of issues come down to a feature being disabled by default. In version 10.0.47 and later, Sample management was promoted to generally available, but it's still off by default. Same story with several warehouse enhancements in 10.0.46 and 10.0.47. If a feature you're relying on isn't listed as "Enabled," turn it on and re-test before going further.
Step 2, Confirm batch jobs are running. Navigate to System administration > Inquiries > Batch jobs. Filter by Status = "Error" or "Withhold." MRP, inventory close, and warehouse work generation all depend on batch processing. If your master planning batch job is sitting in "Error" state, planned orders will never generate. Fix the batch job first, everything else is downstream of it.
Step 3, Validate the organizational hierarchy. Go to Organization administration > Organizations > Organizational hierarchies. Make sure your hierarchy is assigned to the correct purposes (Retail, Procurement, etc.). Missing hierarchy assignments break procurement workflows and master planning supply calculations silently.
Step 4, Review the inventory parameters. Navigate to Inventory management > Setup > Inventory and warehouse management parameters. On the General tab, confirm that your inventory journal names are set and that number sequences are assigned on the Number sequences tab. Unassigned number sequences cause transaction posting failures with no useful error message.
Step 5, Run a consistency check. For warehouse-specific issues, go to Warehouse management > Periodic tasks > Clean up > Warehouse work transactions consistency check. This catches orphaned work lines in the WHSWorkLine, WHSWorkInventTrans, and WHSWorkTrans tables, which are a known cause of stuck shipments and release-to-warehouse failures.
This is the foundation everything else is built on. If you skip or rush through this step, you'll be chasing phantom errors for days. Go to Inventory management > Setup > Inventory and warehouse management parameters.
On the General tab, set your default inventory reservation hierarchy and confirm the "Use warehouse management processes" checkbox behavior for your warehouses. On the Number sequences tab, every single reference, warehouse work IDs, shipment IDs, load IDs, cycle counting headers, needs an active number sequence. Use the Generate button to auto-populate any that are missing. Don't just close the form assuming they're fine.
Next, navigate to Warehouse management > Setup > Warehouse > Warehouses. Open each warehouse you intend to use with the WMS module. On the General FastTab, flip Use warehouse management processes to Yes. Without this, you're running basic inventory without WMS functionality, no work orders, no location directives, no mobile app scanning.
Then set up your location profiles at Warehouse management > Setup > Warehouse > Location profiles. Each profile controls whether a location allows mixed items, mixed inventory statuses, and license plate tracking. Assign location profiles to your physical locations at Warehouse management > Setup > Warehouse > Locations.
When this step is done correctly, you should be able to navigate to Inventory management > Inquiries and reports > On-hand inventory and see your storage dimensions (Site, Warehouse, Location, License plate) available as filter dimensions.
Master planning, your MRP engine, is only as good as your coverage configuration. I've seen live production systems running daily MRP jobs that produce thousands of meaningless planned orders simply because coverage groups were never properly set up. Here's how to get it right.
Navigate to Master planning > Setup > Coverage > Coverage groups. Create coverage groups that reflect your replenishment strategy. Common groups: MRP (standard requirement-based), Min/Max (for high-velocity consumables), and Period (for weekly or monthly batch orders). For each group, set your positive and negative days carefully, these control how far into the future and past D365 looks when netting requirements.
Assign coverage groups to products at Master planning > Setup > Item coverage, or override at the product master level. Then go to Master planning > Setup > Master plans and create or edit your master plan. Key fields to check: Plan type (Static or Dynamic), Number of time fences, and whether you've enabled Demand Driven Material Requirements Planning (DDMRP), which became a production-ready module in recent releases and is configured separately at Master planning > Setup > DDMRP.
-- Verify planned orders exist after MRP run
Navigate to: Master planning > Planned orders
Filter: Plan = [your plan name], Order type = All
If zero records: check batch job status and coverage group assignments
After your first master planning run, go to Master planning > Planned orders. If you see planned orders with realistic quantities and dates, the MRP engine is working. If the list is empty, check your master plan's batch job status first, then verify that your products have coverage groups assigned and that your on-hand inventory and demand (sales orders or forecasts) are within the plan's time fence.
This is where warehouse administrators spend most of their troubleshooting time. Location directives tell D365 where to put inventory or pick it from. Work templates tell D365 how to structure the work order (pick line, then put line, etc.). Both must exist and match for the system to generate work.
Navigate to Warehouse management > Setup > Location directives. For each work order type you use (Purchase orders, Sales orders, Transfer issues, Transfer receipts, etc.), you need at least one location directive for each direction (Put and Pick). The query on each directive line is critical, if the query criteria don't match the inventory being moved (wrong site, wrong item group, wrong license plate grouping), the directive will be skipped and work creation will fail.
A working location directive sequence for inbound receiving looks like:
Work order type: Purchase orders
Direction: Put
Sequence 1: Fixed location (if applicable)
Sequence 2: Empty location (for overflow)
Sequence 3: Consolidate to existing license plate
Directive action query, minimum fields to check:
- Site
- Warehouse
- Location type (matches your location profile)
Then go to Warehouse management > Setup > Work > Work templates. For each work order type, create a template with at least a Pick line followed by a Put line. Make sure Work class is assigned on each line, this is what grants mobile app users access to the specific work type via their menu item security.
When configured correctly, releasing a purchase order receipt or a sales order to the warehouse should immediately generate a work record visible at Warehouse management > Work > All work.
Getting the Warehouse Management mobile app running for your warehouse floor teams is one of those things that looks simple but has several hidden tripwires. Start at Warehouse management > Setup > Mobile device > Mobile device menu items. Create menu items for your core workflows: receiving, putaway, picking, cycle counting. Each menu item has a Mode (Work, Indirect, or Display) and a Work creation process. Get these wrong and users will see blank screens or "no work found" when they scan.
Next, go to Warehouse management > Setup > Mobile device > Mobile device users. This is separate from the D365 user account, every warehouse worker needs a dedicated mobile device user account with a PIN. Assign the account to a warehouse and set the default work confirmation settings here. Mobile device user settings control things like whether users are prompted to confirm each scan, and whether license plates are automatically created on receiving.
For organizations on version 4.0.29.0 or higher of the Warehouse Management mobile app, you can now also configure hands-free glove-mounted scanning. This was developed in collaboration with ProGlove and validated on Mark 2, Mark Basic, and LEO devices. The glove scanner connects to an Android device running the native app, no separate middleware required. Configure the scanner intent profiles in the app's device settings to map glove scanner triggers to the app's scan input field.
If your organization has Microsoft Entra Conditional Access policies, the mobile app now supports brokered authentication, meaning IT can enforce MFA, device compliance, and location-based access controls without locking out warehouse workers. Configure this through Entra ID by registering the Warehouse Management app as a managed app in your Conditional Access policy. Workers authenticate once per shift; the token is managed by the broker.
Before you go live, or when diagnosing an existing system, you need to walk the full inbound and outbound flow end-to-end in a test environment. Don't shortcut this. A 30-minute test run now catches 80% of the configuration gaps that become emergency tickets on go-live day.
Inbound test: Create a purchase order, receive it against a warehouse that has WMS enabled. Navigate to Warehouse management > Inbound operations > Inbound loads to confirm a load was created. Use the mobile app to complete the receiving and putaway work. Then check on-hand inventory at Inventory management > Inquiries and reports > On-hand inventory, the quantity should appear in the putaway location.
Outbound test: Create a sales order with a line for an item that has on-hand stock. Use Warehouse management > Outbound operations > Release outbound orders to the warehouse to release it. Check that picking work was generated at Warehouse management > Work > All work. Complete the pick on the mobile app, then confirm the shipment at Warehouse management > Outbound operations > Shipments.
For the inventory closing process, which reconciles all inventory transactions and calculates actual cost, navigate to Inventory management > Periodic tasks > Closing and adjustment > Close. Run inventory close for your test period. Review the Inventory close status to confirm it completed without errors. Transactions that post after close will appear in the next period's recalculation.
-- Check for failed inventory transactions
Navigate to: Inventory management > Inquiries and reports
> Inventory transactions
Filter: Update type = None (un-updated transactions indicate posting failure)
Also check: System administration > Inquiries > Batch jobs
Filter: Class name contains "InventUpdate"
When the full cycle completes cleanly in your test environment, you're ready for production configuration.
Advanced Troubleshooting
When the standard configuration steps don't resolve your issue, you need to dig deeper. Here are the advanced techniques I use on complex D365 SCM implementations.
Dynamic Work Classification with Power FX
One of the most powerful, and underused, warehouse features in recent D365 SCM releases is dynamic work classification using Power FX formulas. This eliminates a problem that used to require multiple location directives or complex work templates: automatic work prioritization based on load priority or any other data field. Instead of building a dozen separate directive sequences, you write a Power FX expression that's evaluated dynamically at work creation time.
You'll find this in the warehouse management module under your work classification configuration. Power FX uses the same formula language as Microsoft Dynamics 365 Finance and Power Platform, so if your team already writes canvas app formulas, this will feel familiar. The practical applications are huge: automatically route high-priority shipments to fast-pick zones, or deprioritize work for items that are overdue for quality inspection.
License Plate Consolidation Performance
In high-volume warehouses, license plate consolidation operations used to cause noticeable system slowdowns because of how inventory transactions were queried from the WHSWorkInventTrans table. Recent releases include targeted performance enhancements to how warehouse inventory transactions are processed during license plate consolidation and packed container picking. If you're on an older version and experiencing slowness during consolidation jobs, upgrade to 10.0.46+ and enable these enhancements in Feature management, they require no configuration changes, just a feature flag flip.
Event Viewer and Lifecycle Services Diagnostics
For environment-level errors, the ones that cause entire pages to fail or batch jobs to error out with cryptic stack traces, your first stop should be Microsoft Dynamics Lifecycle Services. Navigate to your environment in LCS, click Monitoring, and pull the environment health dashboard. LCS aggregates application event logs, SQL query performance, and memory pressure metrics in one place. Look for spikes in query duration that correlate with the time your batch job failed.
For on-premises or hybrid scenarios, open Event Viewer on your AOS server and check the Application log for entries from source Dynamics 365 or Microsoft.Dynamics.AX. Error IDs in the 60000–70000 range typically indicate batch framework failures. IDs in the 50000 range usually point to data entity import/export issues.
Role-Based Security for Supply Chain Modules
A non-obvious cause of missing functionality is incomplete role assignments. If a user can open the warehouse management module but can't see released shipments or can't confirm loads, go to System administration > Security > Assign users to roles. For warehouse supervisors, the Warehouse manager role covers most operational tasks. For MRP planners, Production planner and Master planning manager roles are needed. For inventory controllers, assign Inventory manager. Missing role assignments produce "You do not have permission" errors, but sometimes they just silently hide menu items, which looks like a configuration problem.
Data Import Sequencing Issues
If you've done a data migration and your on-hand inventory doesn't look right, the most common cause is importing data entities in the wrong order. The correct sequence for inventory data is: (1) Sites and warehouses, (2) Location profiles and locations, (3) Items and product masters, (4) Inventory dimension groups, (5) Opening on-hand transactions via the Inventory on-hand data entity. Importing on-hand before locations or items causes silent failures in the data management framework, the rows appear to import successfully but the transactions are never posted.
Prevention & Best Practices
The implementations I've seen go smoothly have one thing in common: the team treated D365 SCM configuration as a disciplined sequence, not a click-through wizard. Here's how to stay out of trouble from day one.
Use Lifecycle Services for everything environment-related. LCS is the official deployment and management hub for Dynamics 365 Supply Chain Management. Use it for environment provisioning, hotfix deployment, and database movement operations, including sandbox refreshes from production. Doing these operations outside LCS creates support gaps and can corrupt your environment's service model metadata.
Implement Feature management changes in sandbox first. Every version update brings new features that are off by default. Test them in a sandbox environment before enabling in production. Some features, like the "Remove Show Closed Button" warehouse forms change that shipped as a default-on feature in a recent release, alter UI flows that your warehouse staff depend on. Surprises on the warehouse floor are expensive.
Schedule regular inventory close runs. Don't let inventory close fall behind. Each skipped period creates a backlog of un-reconciled transactions that makes cost accounting increasingly inaccurate and slows down the close process when you do run it. Set up a batch job to run inventory close at the end of each period automatically.
Document your location directive and work template logic. These configurations are not self-documenting. A sequence of ten location directives with no comments is impossible to maintain six months after the person who built it has left. Use the Description field on each directive to explain the business rule it implements, "Route frozen goods to Zone F locations only" is infinitely more useful than "Directive 7."
Validate security roles before training users. Run through every menu path a user will need before their training session. Security configuration errors discovered during training erode confidence in the system. Use the Test the permission function in System administration > Security > Security roles to simulate what a specific user can and cannot access.
- Enable saved views for warehouse management forms, the new filter-based approach replaces the removed "Show Closed" button and is actually more powerful once your team learns it.
- Set up process automation under System administration to schedule recurring tasks like wave processing and work creation, this eliminates manual batch job management.
- Review the Global address book configuration during setup, address data quality issues in procurement and transportation planning nearly always trace back to poorly structured global address book entries.
- For multi-warehouse deployments, configure Inventory Visibility service, it provides real-time cross-warehouse on-hand data through an API that can feed external portals, e-commerce platforms, and Power BI dashboards without querying the D365 database directly.
Frequently Asked Questions
Why is my Dynamics 365 master planning not generating any planned orders?
Nine times out of ten this comes down to one of three things: the master planning batch job failed silently (check System administration > Inquiries > Batch jobs and filter for Error status), your items don't have coverage groups assigned, or the demand that should be driving MRP (sales orders, forecasts) falls outside the plan's time fence. Open your master plan configuration at Master planning > Setup > Master plans and check the Time fences FastTab, make sure coverage, forecast, and capacity time fences are set to enough days to cover your actual demand horizon. Then rerun the plan and check for planned orders filtered to your specific items.
How do I fix "No work was created" when releasing a sales order to the warehouse?
This message means the release process ran but couldn't generate a work order, which means either a location directive failed, a work template didn't match, or there's no on-hand inventory in a WMS-enabled location. Start by checking Warehouse management > Work > Work creation history for the specific sales order, this log often contains the exact directive or template step that was skipped. Verify that on-hand inventory exists at the picking location with the right inventory status, and that your sales order picking location directive has a query that matches that location's dimensions. Also confirm the wave template is set to process automatically or that you've manually processed the wave.
What's the difference between DDMRP and standard MRP in D365 Supply Chain Management?
Standard MRP (Material Requirements Planning) is a push-based calculation, it nets future demand against supply and generates planned orders to cover the gap. Demand Driven MRP (DDMRP) is a buffer-based, pull approach where you place strategically decoupled inventory buffers at key points in your supply chain, and replenishment signals are generated when buffers drop below defined thresholds. DDMRP is significantly better at handling variability and demand volatility, especially in long lead-time supply chains. In D365 SCM, DDMRP is configured separately at Master planning > Setup > DDMRP and runs as its own planning module. You can run both in parallel, standard MRP for some items, DDMRP for others, which is a common transition approach.
Why can't my warehouse workers log in to the Warehouse Management mobile app after we set up Entra Conditional Access?
This is a common post-Entra-CA deployment headache. The Warehouse Management mobile app needs to be configured to use brokered authentication, meaning an authenticator broker app (Microsoft Authenticator or Intune Company Portal) must be installed on the Android device and the app must be registered in your Entra ID tenant as a managed app. If workers are hitting a "device not compliant" or "access blocked" error, verify the device is enrolled in Intune and meets your Conditional Access policy's device compliance requirements. Check the Entra sign-in logs in the Azure portal to see the exact failure reason for each blocked sign-in attempt. Version 4.0.29.0 or higher of the mobile app is required for full Conditional Access support.
How do I set up cycle counting in Dynamics 365 warehouse management?
Cycle counting in D365 WMS works through cycle count plans and thresholds that automatically generate cycle count work. First, go to Warehouse management > Setup > Cycle counting > Cycle count plans and create a plan with your desired counting frequency and location query. Then navigate to Warehouse management > Periodic tasks > Cycle counting > Schedule cycle count work to generate the work orders. Your mobile device menu items need a menu item of Mode = Work and Work creation process = Cycle counting for workers to access it. After counting, discrepancies are reviewed and posted at Warehouse management > Inquiries and reports > Cycle counting work by location, supervisors approve or reject the adjustment before inventory is updated.
My inventory on-hand doesn't match between Inventory management and Warehouse management, how do I find the discrepancy?
This mismatch is almost always caused by transactions that are in a partially updated state, they've been journalized in the inventory module but haven't completed warehouse-side processing, or vice versa. Run the Warehouse work transactions consistency check at Warehouse management > Periodic tasks > Clean up > Warehouse work transactions consistency check first. If that's clean, go to Inventory management > Inquiries and reports > Inventory transactions and filter for records where the Update type is blank or "None", these are un-posted transactions that don't yet reflect in on-hand quantities. Check the batch job history for InventUpdate jobs to see if posting is failing. In some cases you'll need to use the data management framework to export and reconcile the InventSum table against your expected quantities.