An important thing for anyone in the manufacturing or distribution space is understanding how much inventory is currently available for a given item. Not only that, but understanding how much of that inventory is already spoken for and how much demand is upcoming. Sometimes, inventory is “available”, but Dynamics doesn’t seem to let you use it. Here’s why.
Example with on-hand inventory
Here’s a brief example of what can happen. Let’s say, for example’s sake, that we have an inventory minimum of 10 pieces setup for item Fulfill. This item has a 15-day purchase lead time. It’s included as the only component in the bill of materials for item BOMItem. There’s also 10 pieces of inventory on-hand to satisfy the safety stock demand. The below screenshot shows the net requirements on the Fulfill item in this case:Alright. Now that this example is setup, let’s get to the issue. Let’s pretend that we want to sell 5 pieces of item BOMItem (which is a produced item consuming a single Fulfill.) In theory, we have enough on hand inventory to build 10 pieces of BOMItem and it should only take the time needed to assemble it. We’ll see, though, by default, that AX will not plan to consume the on-hand inventory and will tell us we need to order more material, wait the requisite lead-time (15 calendar days in our example), and then be able to satisfy our sales order. To model this in our example, I’ve created a sales order for 5 pieces of BOMItem. I’ve put in a delivery date of 11/25/15 (which is 3 business days after today’s date and we should easily be able to satisfy it.) If we enable CTP delivery date control, AX will say that there’s not enough availability to deliver our BOMItem in the time we want to ship it. To look into this further, we can look at the sales line explosion and see exactly what’s happening. The following screenshot shows the sales line explosion and indicates the BOMItem being constrained by the fact that there’s no Fulfill inventory available for coverage.
Why is this happening?
I have on-hand inventory, but AX is telling me that this order is going to be late (as illustrated by the futures date shown.) This is caused by the way that coverage is calculated. When coverage is calculated, the requirements that need coverage by receipts are ordered by date. As, by default, safety stock’s requirement date is today’s date (the session date of whenever master scheduling is run), safety stock consumes the on-hand inventory first. By the time AX gets to the planned production order, there’s no uncovered inventory remaining – AX needs to generate a planned order to ensure adequate coverage. Now, it’s possible to pull the existing on-hand inventory for use in upper level planned orders – this pegging doesn’t physical reserve this inventory for the safety stock. It does, however, cause some confusion and incorrect dates when look at the futures date.
How “Fulfill minimum” can help
As Tad mentioned, it is possible to change the requirement date of the safety stock requirement and allow for other, more important requirements to use the existing on-hand inventory. This feature is controlled by the “Fulfill minimum” field on the item coverage settings for this item.There are 4 options available for this field: Today’s date, today’s date + procurement lead time, first issue, and coverage time fence. Again, these options change the safety stock’s requirement date and affect when they show up in the net requirements. As seen in the screenshot above, the default setting is “Today’s date.” This selection makes the safety stock show up first when requirements are calculated and can cause non-optimized futures messages to be calculate. Safety stock is given the lowest priority during calculations, though, so if additional requirements also have the same requirement date, those other requirements will get first crack at the on-hand inventory. Tad’s recommendation was to change this field to something other than today’s date. Doing this will free up the on-hand inventory and allow the sales order to consume the on-hand inventory and not calculate futures messages. The first alternate option is to choose today’s date + procurement lead time. This option, quite obviously, moves the safety stock requirement to today’s date plus the procurement lead time (notice only the procurement lead time works here.) In our example’s case, selecting this option moves the requirement date of the safety stock out to 12/7/15. Since this is now after our planned production order’s requirement on 11/25, our on-hand inventory is consumed first by our sales order and then by our safety stock. In the screenshot below, you can see the BOM line being covered by 5 pieces of on-hand inventory and the safety stock getting the other 5 leftover pieces. Additionally, the new planned purchase order is for 5 pieces and has a requirement date of 12/7 (which accounts for the purchase lead time.) When we update the explosion, we see the Fulfill item requirement is now using the on-hand inventory and our futures date goes away. Similarly, the other two options also move the requirement date of the safety stock requirement. The “first issue” moves the safety stock requirement date to the first date there’s other demand for the item. If there is no additional demand other than the safety stock, the safety stock will not be seen by master planning until additional demand is seen. The “coverage time fence” option moves the requirement date all the way out to the end of the coverage time fence. This option can be useful to keep the fact that safety stock is required, but it also makes the requirement much looser and won’t tie any additional inventory up. This post is just another example of the complexities and flexibility of Dynamics AX. If you’re having issues with planned demand not pegging properly to on-hand inventory, take a look at this option and let me know what you find!