BPM condition results not as expected

This should be a very basic BPM. When a part number is changed on a sales order, I want the BPM to test whether or not the customer is in a specific customer group (zPL). The BPM fires when it’s supposed to, but gets the wrong results and I cannot figure out why…


Rows in query not less than 1 should evaluate to TRUE




When I re-create the query in a BAQ (adding a condition for the order number), it returns the row.

I have verified that the customer is assigned to the zPL customer group.

I have double checked that each message is associated with the matching condition outcome (true or false)

I have not figured out a way to identify why the condition is failing and to bring back whatever the customer group the BPM thinks it is. The Customer table is not part of the Sales Order BO, so those fields are not available to display in the message.

It seems like I am missing something very fundamental.

Any thoughts would be appreciated…


I think that your join to the customer is incorrect… you joined the customer to the BTCustomer field… change the join and retest.


Will do. Those are the fields used in when Epicor automatically joins the two tables in BAQ, which is why I used them.

Still get the false message (using CustNum)

One of the things that you need to pay attention to on those auto joins is where there is more that one dictionary . There are actually 2 for this join.

BUT, since that didn’t fix your issue, did you try raising messages that show what you think should be in your dataset? Before you run the query, put your ttresult field that you are trying to join on to make sure you are actually getting that value in the TT record. Many times the TT records don’t have the full dataset filled out, so it seems like you should be able to get info from it, but it’s not actually populated.


So the query does not appear to be getting any info from ttOrderHed:


The directive is a pre-processing on ChangePartNumMaster


What’s next?

The custNum is on the orderDtl, try ttOrderDtl and see if you have info there.

You are a genius! It did not occur to me to look for the fields in the join…

Thanks so much!

So the challenge you are having is that when the ORder.Update is called, the TT record is only available for the one record that is being updated. it does not show the entire dataset of the OrderHed, OrderDtl, and OrderRel.
If there is ever a time where you need to access OrderHed data after an OrderDtl update, then you will need to read that record for yourself.
BUT you have already found a workaround in your case… in that the customer is available in the OrderDtl record.

1 Like