BPM: trigger action based on value not in transaction

Trying to display a message if the product group is not correct when order line is saved. This is being implemented as a post-processing directive on Erp.SalesOrder.MasterUpdate.

In English (vs. BPM-ese), the condition is: if Customer Group = INT and Product Group does not begin with “Z,” then display a message. For testing purposes, I have a message for the true side as well.

Here’s the rub: Customer Group is not in the Sales Order business object.

I have tried a bunch of different things, none of which worked, and have the following observations / questions:

  • The issue is how to get an action to be executed based on the value in a field that is not actually in the current transaction / BO. The field value can be looked up based on a value that IS in the current transaction.

  • It seems like there should be a variable to hold the looked-up value to be used in the comparison, but…

  • It seems that variables can be populated only by values or formulas, but not by query results.

  • Query results can be used in the update actions, but I don’t want to actually update a field in the transaction.

Is there any reference material on BPMs? I found two examples in Epicor documentation, but neither quite describes this situation:

  • The Advanced BPM course has example of populating fields in the transaction values from a related table. I don’t want to actually populate anything.

  • The ICE 3.1 Tools User Guide (10.1.500) begins (p. 648) an example to “raise an exception when a customer used on a sales order does not have the State field specified in Customer Maintenance.” However, when it gets to the condition statement (p. 652), the condition has to do with looking for a hold. Seems like the front end of one example and the back end of another. This example, I think, would have been helpful, had the example been followed through all the way.

Thanks for whatever ideas you may have. I suspect the solution is fairly straightforward; but I have not stumbled across it yet.

In the conditions, there is one that says, if the number of rows in the designed query is greater than 1. (Or something along those lines) you can make a query in there to test for your conditions.

2 Likes

Will give it a shot. Thanks.