Batch disposition codes in Dynamics AX 2012

Working in New Zealand means that I get to work with a lot of food manufacturing companies, and that means that Quality management figures in most of our Dynamics AX implementations.

Batch disposition codes are an important part of the Dynamics AX quality control process. The normal configuration is that QC department staff have a security profile that will let them change a batch’s batch disposition code – normal sales and inventory users can’t do that.

You create as many Batch disposition codes as you need. The setup is found at Inventory management > Setup > Batch disposition > Batch disposition master. Here I’m creating a batch disposition code that will stop the batch from being reserved to, or picked on, a sales order:


The first field on the setup is the Batch disposition status – if you set that to ‘Available’ all the other settings default and can’t be changed:


It may not be obvious from this screen-shot, but all of those checkboxes are de-activated.

Apart from the fact that these are mostly ‘yes we have no bananas’ yes/no flags – you can see that we have settings for Sales orders; Inventory transfers (transfer journals and transfer orders); Production orders; and Master planning. Except for the master planning setting you tick the box to block that action. Note. These are all blocks on issues – there’s no way to block a receipt with a batch disposition code. For sales, ‘Block shipping’ prevents the sales order delivery note posting (WMI or WMII), but you can still ‘Send’ an inventory shipment (WMS II). However, you cannot confirm an outbound shipment in an advanced warehouse management warehouse (WHS).

I’ve setup an item with two batches. Inventory management > Inquires > Dimensions > Batches:


And I’ve created some on-hand inventory by posting an inventory adjustment journal.
Inventory management > Journals > Item transactions > Inventory adjustment > Lines:


As mentioned above, no blocks on receipt. The batch which ought to be reserved first has my ‘No-Pick’ batch disposition code. The other batch is ‘Available’. Next, I create a sales order for this item:


If I select Automatic reservation, unsurprisingly, the system chooses the later (Available) batch:


If you want to try manual reservation, although the on-hand will show you both batches:


The reservation form won’t let you reserve the blocked batch:


You can try to get around this blocking by creating a picking list for a WMI style warehouse without reserving inventory. The reason I’m doing this is that I’m working with a company making food products – but they don’t have racking in the warehouse. Pallets are stacked one on top of each other, so Dynamics AX reservations which works on FIFO or FEFO principles doesn’t work for them because the system is often reserving pallets or batches which are inaccessible. They prefer to create sales order picking lists without reservations and then update the picking list with the batches/pallets actually picked.

So on the picking list registration for we’ll see something like this:


If I try to update that picking list without entering a batch number I’ll get a not particularly helpful error message:


No matter, I know I need to enter a batch number and the system’s offering me two:


But if I enter the [earlier] batch that has got ‘Block picking’ ticked I get this error:


So that’s a pretty robust system. Simple and effective. And the system maintains a log of all changes to batch disposition codes, Inventory management > Inquires > Batches > Batch disposition history:


In advanced warehousing WHS warehouses the system’s a bit more rigorous. You cannot release the sales order to the warehouse unless you have the inventory reserved – and we’ve already seen that automatic reservation follows the batch disposition codes, thus there’s no work-around to release work to the warehouse. If you allow reservation, but blocking picking, well that doesn’t work either – because you get a work creation error like ‘Batch TS-B2 cannot be picked as batch disposition code setting is blocked for picking’:


You can setup a batch disposition code that allows reservation and picking, but blocks shipping:


That will allow you to release sales order picking work to the warehouse and complete that work, but you cannot move any further through the process without changing the batch disposition code. When you try to confirm the outbound shipment you get an error:


So the moral is: “if you are batch tracking, get to know your batch disposition codes and use them”.

Inventory trace in Dynamics AX 2012 R2

I’m lucky, I spend most of my time working on implementation projects, which means that I’ve been working in Dynamics AX 2012 since it was released, but last week I visited one of our customer sites and they’ve been using AX 2009 since 2010. Wow –there’s a lot of functionality missing! Process industries; Warehouse management; Transport management; Trade allowance management – they’ve all become staples for me, including this function: Inventory trace.

Now you’ll probably know that an Inventory trace function has been around in Dynamics AX since, well forever. The scenario here is typically a food company – and we’re wanting to track the batches of ingredients and raw materials that have made it into a batch of finished goods product. I’m in the demo hyper-v image and I’m using the ‘Contoso Orange Juice’ USP2 company. If we look at a typical finished goods product like Apple Cheesecake and look at its inventory transactions we’ll see some production receipts and some sales order issues tracked by batch.


Select an issue (for example) and click on Inventory > Trace:


There’s some pretty self-explanatory setup options on the Setup tab, including a direction: forwards or backwards. Forwards is forwards from a raw material to a finished goods – obviously here we’re wanting to trace backwards from our finished goods to the raw materials. Click on the little + sign to expand the tree (sorry I don’t know a short-cut to expand the whole tree) and we quickly see the ‘Production’ production order receipt for this batch and the ‘Production line’ production order issues of raw materials ingredients and intermediates. You also quickly get back to the purchase order receipts of your raw materials:


Right-click > View details will take to each individual inventory transaction – and from there you can start another trace – but of course, now, there’s an easier way

A new function was introduced in Dynamics AX 2012 R2 CU6 and it’s the Inventory trace form Inventory management > Inquires > Tracing > Item tracing:


Here I’ve opened the form and typed in my item number and batch. This form does require an item number and a batch number. There’s the same Trace direction option on this form as we saw above, but this time it’s more to do with the way the trace tree is displayed than the actual trace direction. So as you can see above, you’ve only got one option – click on the ‘Trace’ button:


So our tree is displayed as above – but we’re in a much richer work-bench style form here with lots of useful functions. First up is the Batches button:


Up pops a list of all of the batches involved in the supply chain tree, and from this form [if you have the appropriate security profile] you can immediately lock down any other batches by changing their Batch disposition code.

Obviously the supply chain tree can quickly get complex. Fear not. Click on the Transaction button and all of the inventory transactions in the tree are presented in the familiar list grid:


Of course you can filter in grid – or export to Excel and filter.

The Customers button gives you the list of customers you’re just about to ring:


Here you’ve got instant access to their contact details and sales history.

Shipped sales order lists the inventory transactions related to sales:


But you probably went to ‘Not shipped sales orders’ and got on the phone to the warehouse first:


I’m sure you’ve got the idea by now – just one more thing to show off. The ‘Shipped to customers’ report:


Actually we found that was one thing we could improve on – we were working on an implementation where all export sales orders went through off-shore distribution companies, so the first time we printed this report the only customer details we saw related to the intercompany sales from the manufacturing company – fortunately it was a simple modification to add the ultimate end customer details from the selling company into this report.

Tucked away at the bottom of the form are a series of fast-tabs that give you lots more useful information – this time related to whichever inventory transaction you select in the tree.

In this simple example I’ve traced back from a finished goods batch – you can trace forwards from a raw material batch – or start in the middle with an intermediate or coproduct. You can even enter the vendor batch number and trace forward form that (providing that you registered the vendor batch number when you did the purchase receipt as explained here ).

If you’re interested in this topic you can find a great demo script on PartnerSource – search for “AX 2012 Solution demos” and/or “SCM demo script – Item Tracing” (or get your partner to do that for you – that’s your reseller partner, not your spouse). If you’ve got a log-in to PartnerSource the page you want is here.


Vendor batch registration in AX 2012

For purchased, batch tracked, raw materials and items, the inventory batch master allows you to record a vendor batch number for your own internal batch number:

Inventory management > Inquires > Dimensions > Batches:


These details are updated via the ‘Reset vendor batch details’ menu option shown above, but you can also setup the system to prompt you to enter this information when you are receiving a purchase order.

There is a ‘Purchase registration’ setup option on the Item model group (Inventory management > Setup > Inventory > item model groups):

Let’s setup an item using this Item model group, a tracking dimension group with batch tracking, and a batch number group which creates batch numbers automatically (and sets the batch number to the purchase order number). Then create a purchase order:

We’ll use the Arrival overview to start the receipt process (Inventory management > Periodic > Arrival overview):


Select the purchase order / lines and click ‘Start arrival’. The system creates an arrival journal for the selected lines and displays an Infolog:

Double-click on the journal number in the Infolog as a short-cut to the journal (or from the Arrival overview form use the Journals > Show arrivals from lines option). The system takes you to the Journal header:

(As an aside, later we’re going to post the Purchase order product receipt from this journal header. On the General tab is a field where you can enter the Packing slip / Delivery note number. I like to personalise this form to show that field in the overview grid and enter it at this point). Also I’m not using pallets here so I need to un-tick the ‘Check picking locations’ option on the journal names setup (or the journal header, and lines).

Click on the Lines button to display the lines:

Here’s where you are going to record the put-away location for your items and confirm the received quantity. There’s a function to split lines (but beware of the function to delete lines – it deletes all lines, not just the one you’ve selected).

When you click ‘Post’ to register the receipt, after the journal is posted, a pop-up form appears, and here’s where you record the vendor batch details:

If you select the Batch number line in the bottom grid you can use the document handler to attach documents to the Inventory batch record, and you can use the Description tab to record any other relevant details.

Close the Vendor batch details and Arrival journal lines forms, and post the Purchase order product receipt from the journal header and you’re done.

Of course, you’ll be wanting to use the new Warehouse management functionality, so create a purchase order as above and then use Purchase Receive in the Warehouse management mobile functions:

Enter the purchase order number:

Enter the item:

Enter the quantity:

And confirm the unit of measure:

And the system displays:

If you leave any fields blank you’ll get a warning, and then you get:

From the purchase order you can see that your purchase order receipt is registered, and the vendor batch details have been recorded:

That’s really cool.