My understanding at least… a pre-processing will happen before your Quote Entry adds any NEW records to the QuoteDtl table.
So, yes, I think you’re correct that its a timing issue and you’re trying to look at/compare new records before they’re written.
You could use your pre-processing method containing a condition on the desired new QuoteDtl rows and if true, enables a Post-Processing directive. Then create a post-processing directive which returns your message and see what comes back.
So, your pre-processing would perform a condition check… Epicor would perform its magic and create the new quote lines… once created, the post-processing would kick in and pop up the desired message.
The Update method is equivalent to Save.
So this BPM will run whenever the QuoteEntry is saved - is that the right timing?
There may be a method that runs more timely - like ChangePartNum (Updates Quote Detail information when the Part Number is changed.)