Production order trace ingredients in Dynamics AX

Once in a while we come across a production environment where one of the ingredients or components is being consumed at a very low rate. It may be a trace ingredient (like a vitamin) or it might be packaging material that you buy in bulk (e.g. rolls) but use in smaller units (each or metre).

There are a couple of considerations here (three actually).

Firstly, we can define the number of decimal places that we can enter for each unit of measure. There are units of measure like ‘each’ or ‘piece’ that will always be considered as a whole number, but of course there are other units like kilograms where we will want to reference partial quantities:

As shown above, you set the ‘Decimal precision’ on the unit.

Secondly, we have to remember that when we use an alternate unit of measure (like grams) on our production order bill of material – or purchase order line, or sales order line – the system’s going to record the underlying inventory transaction in the inventory unit of the item. So if we setup BOM line consumption in grams and the item’s inventory unit is Kg, then the inventory transactions will all be recorded in Kg’s.

Finally, although the underlying SQL database is recording quantities to [I think] 12 place of decimal precision, the inventory transaction and on-hand forms display only 2 decimal places by default – and this display is rounded.

So I’ve created a very simple production order – I’m using a batch production order and a formula, but this discussion applies equally to production orders and BOM’s.

To make 1 of my finished item TS-FORMULA-1, I need one each of my two components, and 1 gram of TS-TINY. And the inventory unit of TS-TINY is Kg:

So the inventory transaction of one of my components shows that I’m going to use 1.00:

But I’m not planning to use any of my trace ingredient at all:

You’ll be tempted at this point to say that the problem is that I’ve only defined 2 decimal places on my Kg unit – and of course 1g = 0.001Kg.

So why not just increase the decimal precision on Kg to 3?

This is what you get:

The inventory transaction looks like zero but it isn’t. it’s 0.001 rounded to 2 decimal places.

My rule here is you shouldn’t use more decimal precision on units than you display on your inventory transactions and on hand. You do not want any of these ‘not quite zero’ inventory transactions and on-hand quantities in your system.

If you don’t want to show lots of decimal places on the inventory transaction and on hand displays a simple way round this problem is to use the ‘Rounding-up’ option on the BOM/Formula line:

Although there are three options (four if you count No rounding up) I’ve only ever used ‘Consumption’. Hiding under the drop-list in the screenshot above is the Multiple that you want to round to:

So now I’ve specified that when the production order is estimated, the system’s going to round consumption up to the nearest 10g = 0.01 Kg’s in my example:

Much neater!

The example normally quoted for the rounding up parameter is something like a can of paint or a bottle of ingredient – which once opened can’t be re-used. In that case your rounding up multiple is 1.00, meaning that you’ll always consume a whole number of units into your production order say 5, even though you only need 4.25.

Alternate items in formulas in AX 2012

A 2x ex-colleague, Steve Bradford, (I’ve worked with him in two separate companies) posted a query to the Microsoft Dynamics AX community forum here.

He’d got an odd result when he setup the Alternate item functionality. Here how it goes. In a Formula create a ‘Plan group’. The primary item in the plan group gets a BOM line quantity, and a priority of 1. Alternate items get assigned to the same Plan group with a quantity of zero – and they’ll be processed in Priority sequence. Here I’ve just got two normal components (TS-A and TS-B), and one pair of Alternate items (TS-SUB1 and TS-SUB2)

Next I post an inventory journal so that I’ve plenty on-hand for TS-A and TS-B and TS-SUB2, and a limited quantity of TS-SUB1 (the primary item in the Plan group).

Next I’ll setup a monthly forecast for my formula item. I’ve got enough stock of TS-SUB1 for the first month’s forecast, but not enough for later months. I generate some planned production orders by opening the item’s Net requirements and updating master planning for this item. Looking at the ‘Derived requirements’ for my first planned batch order I see that the demand, as expected, uses up my stock of TS-SUB1:

And the next planned order uses the alternate item:

OOPS – that was a surprise!

However, thinking about it, the processing that is required here relates to the fact that the system’s not going to create a planned supply for this item, but instead, if the alternate item is available, the alternate item is going to be used as the supply – so really we need to run a full regenerative master plan across all items (or at the very least plan the formula item and it’s components).

After master scheduling has been run across all items I see:

That’s better!

There’s a common requirement for this scenario – where an item is being replaced by a new item (or version), but where you want to use up the existing stock before starting to use the new item. Fairly typical in packaging. Master planning handles this run-out / cut-over scenario well, but unfortunately this functionality is only available to Formula items – it’s not available to traditional BOM items, which is a shame, because I’ve come across this scenario in those discrete manufacturing environments more often than in the Batch order processes using Formulas – where the formula cut-over is often more tightly controlled.

Although master planning handles the Alternate items well, the production order falls short. Using the same on-hand scenario as above (only 100 of TS-SUB1 available) I’ve created a batch production order for 200, and estimated it – all of the demand is assigned to TSSUB1 even though I don’t have enough of that item and I have an alternate item available.

When I start the production order, the alternate item will only be shown on the picking list if I tick the ‘Complete picking list journal’ check-box (remember that the alternate items have a zero BOM line quantity):

There’s nothing on the Picking list journal to indicate the alternate item and how it relates to its Plan group:

And nothing on the standard Production picking list journal report either:

The link between the Alternate items (the Plan group) isn’t shown on the Max. report as finished inquiry either, although it would be a minor customisation to include that information:

So some hits, some misses – this functionality can be useful but probably needs minor customisations if it’s going to be widely used.