Optimizing Wave Demand Replenishment in Dynamics AX 2012 R3 Warehouse Management.

Purpose:  The purpose of this document is to illustrate how AX can be configured to support Wave Demand Replenishments up to Maximum stocking levels.

Challenge:  Min/Max Replenishment Templates are the primary mechanism for maintaining optimal levels in picking locations.  Demand replenishment is intended to be used as a supplement between Min/Max replenishment cycles to ensure that sufficient pick face inventory is available to meet wave demand.  Our goal is to replenish up to the defined maximum stocking level whenever we replenish a given picking location.  This should be done regardless of whether we’re replenishing through Min/Max Replenishment or Wave Demand replenishment.

Solution:  Let’s start with a brief description of our simple warehouse layout.  The diagram below shows that the two major areas of our warehouse are Bulk Storage and Picking.  Bulk storage contains full pallets of inventory.  The picking locations are all the same size and are replenished up to their defined stocking limit from Bulk Storage.  Different SKUs will have different Maximum stocking limits due to size variation, but the picking location stocking limits are always less than a full pallet.  Volume is often high enough during peak periods that we expect some of our pick locations to turn over multiple times per day.    In order to maximize the efficiency of our replenishment operations we need to ensure that replenishments are triggered on an as needed basis, and that we always replenish to the maximum stocking level.

The warehouse picking operations are setup to pick by order, but orders are released to the warehouse in waves.  We’ve determined that our optimal wave size will consist of 4 shipments.  Order pickers will pick small quantities into picking tubs and send them down the conveyor to the packing stations.  The packing stations will then pack the inventory into boxes and process the shipments.


We’ll use item A0001 and warehouse 61 in company USMF to demonstrate how AX can handle this scenario.  Here is a summary of the steps we’ll take to demonstrate this scenario:

  1. Define fixed locations for our items.
  2. Define the stocking limits for our items.
  3. Ensure that our Sales Order pick location directive is configured to always pick from the fixed location.
  4. Ensure that our Replenishment put location directive is configured to put to the fixed location.
  5. Setup our Wave Demand replenishment template to always replenish up to the stocking limit.
  6. Setup our wave template for warehouse 61 to group by 4 shipments and process automatically when this threshold is met.
  7. Ensure that our Wave Template is configured to use Demand Replenishment.
  8. Setup our Work Template and Location Directive to deliver to the packing station.
  9. Setup our Work Template to create a separate Work ID for each shipment.

Define Fixed Locations for our Items

USMF/Warehouse management/Setup/Warehouse setup/Fixed Locations


Define the stocking limit for our items

There are several ways in which you can set your stocking limits.  This could be done through volumetrics on the locations and items, or you can set a fixed limit.  We’re going to set a fixed limit, but we’re going to do so through the use of a unit conversion.  This could also be done by setting a unique stocking limit on an item/location basis.

We’ll start by creating a new Unit ID called “PickMax” under USMF/Organization administration/Setup/Units/Units.


Next we’ll establish a unit conversion between PickMax and Pcs for item A0001.  The following shows that the unit conversion is 100:1 for PickMax:Pcs.


Now we’ll indicate that all of our picking locations have a maximum stocking limit of 1 PickMax.

USMF/Warehouse management/Setup/Warehouse setup/Location Stocking Limits.


Ensure that our Sales Order pick location directive is configured to always pick from the fixed location.

USMF/Warehouse management/Setup/Location directives


Ensure that our Replenishment put location directive is configured to put to the fixed location.

USMF/Warehouse management/Setup/Location directives


Setup our Wave Demand replenishment template to always replenish up to the stocking limit.

This is accomplished by setting the replenishment unit on our replenishment template to the newly created PickMax unit.  The Wave Step code will be used in the Wave Template setup to link this replenishment template to our wave template.

Note:  The Contoso data has a restriction under Select Products that we’ll need to remove in order for this to work properly. 

USMF/Warehouse management/Setup/Replenishment/Replenishment Templates


Setup our wave template for warehouse 61 to group by 4 shipments line and process automatically when this threshold is met.  Ensure our wave template is configured to use Demand Replenishment

USMF/Warehouse management/Setup/Waves/Wave Templates


Setup our Work Template and Location Directive to deliver to the packing station

We’ll be using a directive code to tie the Put of our Work Template to the correct Location Directive.  This is done using the Directive Code as seen in the screenshots below.  Our location directive will be configured to deliver goods to the packing station location.  In addition to this, we’ll be configuring a Work Break to ensure that we get a separate Work ID for each shipment.

In order to establish a work break, we need to make sure that we have Shipment ID as a sort in our Edit Query form.

USMF/Warehouse management/Setup/Work/Work Templates


Once we’ve added the Shipment ID field to our sort, we can set it as a work break by clicking on the Work Breaks button.


Now that we’ve defined our work template, we need to make sure that we have a Location Directive that is configured to deliver to our packing station location.  Pay particular attention to the Directive Code assigned in the screenshot below.

USMF/Warehouse management/Setup/Location Directives



Now that we’ve completed the setup, we’ll walk through a process to demonstrate how the system will group shipment lines into waves, process them, and only create the work needed to replenish up to the maximum stocking level.

The first thing we want to do is make sure that we have some inventory for A0001 in our picking location (06A01R2S1B), but not enough to fulfill all of our demand.  In this example I plan to have 45 on hand at the picking location, 500 available at a bulk location, and total sales demand of 90 units against 10 different sales orders.  The 10 sales orders will represent 8 shipments due to common delivery addresses on some of our orders.  I’ll start by simply posting inventory journals to get the following on-hand balances.


Now we need to enter our sales orders.  Remember that inventory needs to be reserved before we can release to the warehouse, so I’m going to setup my AR parameters to reserve automatically.  This is done under USMF/Accounts receivable/Setup/Accounts receivable parameters.  We could also choose to reserve inventory during the release to warehouse process by marking the “Reserve when orders are released by batch job” checkbox on Warehouse 61.

The screenshot below shows my list of orders.  The highlighted orders will be consolidated into common shipments during the release process.  Note that this will only happen because I have enabled the “Consolidate Shipment at Release to Warehouse” checkbox on Warehouse 61.  Based on this I expect to have a total of 8 shipments on 2 waves when these 10 orders are released to the warehouse.



Now we need to release our orders to the Warehouse.  We’ll be using the Automatic Release of Sales Orders batch job found under USMF/Warehouse management/Periodic.


This is only one of several ways in which orders can be released.  I could also release my orders one at a time from the Sales Order form, I could use the Release to Warehouse form, or I could use the Load Planning workbench to create loads and release by load.  Given that our picking operations are order based, it makes sense to simply use the batch job.

Based on our wave template, work breaks, and warehouse setup the release process will result in 8 shipments split between 2 Shipment waves.  These 2 waves will each have 4 Work Id’s to be processed.  We also have a separate Replenishment wave with 1 Work Id.  Let’s review the results.

The screenshot below shows our 3 waves.  Notice that we have 2 shipment waves and one replenishment wave and that both of our shipment waves require some amount of replenishment.


We can review the Shipments associated with each of our waves by selecting one of the shipment waves and clicking on the Maintain Shipments button in the action pane.  Notice there are 2 shipments on our first wave (USMF-000000259) that do not have an order number listed.  These are the shipments that contain multiple orders due to their common delivery address.


We can review our work by going back to our Waves list page and clicking on Work in the action pane.  Notice that We have a couple of Work ID’s without an Order Number listed.  Once again, these Work ID’s are associated with our multi-order shipments.

Let’s also make note of the fact that the work id for order number 000879 is blocked.  This is because we cannot complete this picking work until our replenishment is completed.  We certainly wouldn’t want to tell the warehouse worker to go pick these goods until the inventory is actually there.  The block will be removed automatically once the associated replenishment work is completed.


The work for our 2nd shipment wave is similar, but there are no consolidated shipments and all of the Work Id’s are blocked due to replenishment requirements.


Our Replenishment Work shows that we need to move 55 units from our bulk location to the picking location.  The reason we’re moving 55 is because we currently have 45 on hand at the picking location, we have a total demand of 90, and our maximum stocking limit is 1 PickMax/100 Pcs.  In short, we can only fit another 55 into this location.

The end result once all of our work is processed is that we will have 10 remaining in our picking location which will be available for future orders.  If 10 is below our defined minimum, then our next Min/Max replenishment execution will create new work to replenish up to our maximum.  In addition, we may see more Demand Replenishment work if we need to ship additional orders before our next Min/Max replenishment execution.

Now that the goods have been delivered to our packing location, the orders can be shipped using the Packing form.  You can learn more about these steps through the following blog post.