During one of my projects in Dynamics AX 2012, I ran into this situation over and over where a client opened tickets showing sales orders that were put in an on-hold status (retail module activated only). The client was unable to navigate out of it because the orders were delivered, and the on-hold status prevented the client from invoicing.
This seemed like a code issue at first as I could not imagine how a user could create this scenario. I tried repeatedly to recreate the scenario, but couldn’t. This seemed like a Catch 22 to have an order with an active hold code, but with a status ‘Delivered’, as seen below:
- If the order is on hold (active hold code applied, not removed), it is not possible to process the order
- If the order is delivered, it is not possible to put a hold code on it anymore
Because this situation kept popping up over and over, I spent a lot of time brainstorming and trying to reproduce the issue until I finally managed to. There isn’t a good solution to removing the hold code once it happens, other than removing from the AOT directly.
The objective of this blog post is to be aware of how this situation can be created, and to ensure users are trained to avoid this situation in the first place. The key to understanding how this scenario could be reproduced is that the active hold code does not prevent one action on the sales order: short closing or otherwise known as cancelling remaining quantities.
The following situation will show you how an order can be stuck in a delivered status with an active hold code:
1. Create a sales order and deliver a partial amount on the order.
2. Customer calls and says they are not sure if they want the remaining quantity or not. The customer asks you to temporarily put the order on hold.
3. A couple of days later the customer calls back and asks you to cancel the remaining quantity on the order as they don’t need it anymore. They also ask you to send them an invoice for the quantity you have already delivered.
The customer service rep doesn’t check the hold status, but goes ahead and cancels the remaining quantity on the sales order line.
4. The order status automatically changes to ‘Delivered’ as that is now the status of the whole order, there are no outstanding lines anymore. However the on-hold has not been removed and hence the scenario of a delivered sales order stuck in an on-hold status is created.
5. The user tries to invoice the order, but because of the active hold code, the system does not allow it.
6. The user tries to remove the hold code, but the option is not available anymore, as the order status is now Delivered.
To prevent this situation from happening, make sure to advise users to remove the hold code before they are cancelling remaining quantity on sales orders.
However, if you do find yourself in this particular situation, the only way to navigate it is to ask a system admin to go into the AOT and find the appropriate tables where the hold code can be marked as ‘cleared’.
"We met our three project goals of 100% completion of critical business requirements at Go Live, completed with 90% Best Practices or better, and GO Live done in a timely manner."