Simple BPM Condition (OrderHed TermsCode) not resolving correctly


I’m banging my head against a wall with a simple condition in a BPM.

Post-Processing Method Directive, on SalesOrder Update Method

Very simple expression:

My TRUE and FALSE messages:

THAT’S IT! Super simple, right?

Every single time I change the Terms on an Order, it resolves as ‘False’, even though it pulls the correct code into the message.

This example should be false:

However, this one should be true, as it even pulls in the correct TermsCode to the Info Message:

What am I missing?

The ultimate purpose of this BPM is to send an email to the Order EntryPerson notifying them that the Finance department has updated the order’s Terms to a very specific TermsCode.

The Finance department will be updating the Order TermsCode via an updatable dashboard, potentially updating multiple dashboard rows at once.

In a POST Condition there is no such thing as a Changed Row (Added, Updated or Deleted) its just a single row (Unchanged) because the RowMod gets stripped in the BASE and the 2 Rows that a PRE has get squashed into 1.

You can either look for Unchanged, or you can do a PRE that checks for the Condition (TermsCode changed from any to any) and then use the Enable Post Directive Widget… then in the POST you can check in a Condition if it was enabled from the PRE and fire a message. (This is only if you want to show it, when someone changed the value).

I just started doing it all in a PRE and dont bother with POST because the BASE will crush your Info Messages if an exception happens. They are queued until the BPM is completed successfully otherwise, the queue gets crushed.


For Emails Epicor recommends to use a Data Directive that is Standard Type (not In-Transaction). But depending on the case, I’ve done it in POST as well.

Either use a Standard Data Directive or I would still do it in the POST, using the PRE method to enable the POST Directive.

1 Like

I did the PRE/POST strategy and it worked great. Thank you!