Currently, I’m using Acumatica 2026 R1. I’m adding a custom state in SO Shipments SO302000 (state name : Transferred) that is supposed to be processed through the UpdateIN action.
What I did :
- Created a customization project with an extended workflow for SO302000 (inheriting the default workflow).
- Modify a transition from Confirmed with Triggered By Action = Update IN (updateIN), to target my state. (Replaced Completed with Transferred)
- Published the project.
What happens :
The action executes normally, but the shipment still ends up in Completed. My transition never fires.
What I found in the source :
UpdateInventoryExtension.UpdateIN fires, then runs the real work inside PXLongOperation.StartOperation on a new SOShipmentEntry instance. Inside PostShipment:
using (PXTransactionScope ts = new PXTransactionScope())
{
SetSuppressWorkflowOnUpdateIN();
foreach (var args in GetPostShipmentArgs(shiporder, docgraph, list))
{
PostShipment(args);
}
ts.Complete();
}and inside PostShipment(PostShipmentArgs) calls method UpdateStatusOnPostShipment(SOShipment shipment) that assign the status directly:
protected virtual void UpdateStatusOnPostShipment(SOShipment shipment)
{
if (shipment.UnbilledOrderCntr == 0 &&
shipment.BilledOrderCntr == 0 &&
shipment.ReleasedOrderCntr == 0 &&
shipment.Released == true)
{
shipment.Status = SOShipmentStatus.Completed;
}
}My conclusion is that the workflow engine is suppressed for the whole scope, the status is written in code, and what the UI shows afterwards is just the record re-read by actualizeRecordBy. So no editor-defined transition on this action can ever take effect.
Questions
Is that conclusion correct, or is there a supported way to make an action-triggered transition fire on Update IN?
Any pointers appreciated!