Delivery date control "ATP" obeys first-come-first-serve

Delivery date control in AX 2012 / AX 7 makes sure that ability to deliver is maintained and that the first order is the first one to claim delivery if the stock is limited. This works even if you do not use stock reservations before the picking list.


In the above example sales orders 762, 763, and 764 are "fighting" to get the same article. We have a stock level to start on but there is not enough to cover all 3 sales orders. Order 762 and 763 were, as the number indicates, registered first in AX and all though their delivery date comesafterorder 764 it should be 764 to move to the date of the next arrival.

"ATP + margins" complies to this scenario. The sales assistant is warned when a new sales order is created for an item, which is already sold out on previously registered orders. Even if the delivery date on the new order is earlier than on those orders already existing.

Demo creating order 764

In the following I will use item 110001 for a test. The stock levels look like this:

ATPPic 01

There are 14 pcs physically present on stock (never mind the Danish labels). Today is in the very beginning of July 2016 and for 4th of August an purchase of 50 pcs is ordered. Please note that nothing is reserved.

Already 10 pcs of the item are placed on sales order 763 for delivery on 7th of July. On the next order 764 I will attempt to sell 10 pcs. I do not exceed the 64 pcs total stock and it is in fact physically possible to take what is on stock in front of order 763.

ATPPic 02

At the very moment that I key in the 10 pcs (and I have gone to the next field) the delivery date control will do its work and postpone the delivery date to 4th of August 2016. Before I keyed in the quantity the delivery date was 4th of July as it is set on the sales order header. If I attempt to force 4th of July into the field of requested shipping date the following will happen:

ATPPic 03

All the way from the requested 4th of July (as just keyed in on the sales line in the back ground) to the 3rd of August you will see yellow warning triangles in the delivery control dialog. I will not be allowed to just take the 10 pcs in front of order 763.

The sales assistant can force it

If you want, you can force a date through by deactivating the delivery date control on the line or press the Escape-button on the keyboard. Then the date on the sales line will remain as it was keyed in.

The order with the first delivery date will also be the first one to be picked when picking lists are created daily. Only if the selection criteria for creating picking lists are so wide that it could include both 763 and 764 in one run then 763 will be the first to get a picking list if the sort order so allowed it. Considering that picking lists are probably created for a window of orders within "today" and maybe "tomorrow" then it is not likely.

The net requirement overview

If the sales assistant wishes to get an insight into how much could be sold on order 764 now and how much would have to wait then the net requirement overview is a good tool. It can be called directly from the sales line:

ATPPic 04

It is possible to take the last 4 pcs for delivery on 7th of July. More is not possible on that day as the net requirement accumulated quantity otherwise will go below zero. That would lead to unwanted consequences. It is easy to see why the delivery date control suggests 4th of August as this is the day the next purchase order will arrive.

Internal issue margins

Large quantities of arrivals to stock could mean that the workers on stock will be busy for an entire day getting all the stuff placed in racks. To anticipate the time for internal handling you could setup issue margin on the item requirement group setup for the item.

The "ATP + margins" will only obey that parameter as a margin. It is addressing internal handling time when conducting sales and thus it does not precisely attack the issue concerning extra time to place new goods on stock from arrivals. Probably some programmers out there will step up and fix that (which I already did of course).

Why not just CTP then?

Another delivery date control type is "Capable to promise". That one runs like net requirement calculation. So why not just use that and get all the margin parameters available in AX. The reason could be that you do not want the delivery date control to create planned orders, which it will if you run it with CTP.