I am trying to write a simple Pre-processing Method Directive for AR Invoice Entry. We are still in transition from Classic to Kinetic, currently on 2023.1. Given that we already had one directive tied to the UpdateMaster method for ARInvoice I added the new directive there. The new BPM fires from the Classic form, but it is not firing in Kinetic (browser). Looking at the Network tab of Developer Tools, the method being called is UpdateMasterUsingPasteInsertRowMod. If I tie my BPM to this method, it fires in the browser, but not in Classic.
Am I missing something basic that would help to reconcile these methods, or do I really have to rewrite all my BPM’s and maintain one version for Classic and one for Kinetic?
Classic and browser can, as you see, call different methods. You can try to see if there’s an underlying method that both call (this is not always easy to figure out), but I wouldn’t bet on it. Sometimes you do need separate BPM’s until you transition out of Classic.
While there can be some differences in the Methods that the Classic UI calls vs the Browser UI, this particular case is a bug.
The UpdateMasterUsingPasteInsertRowMod Method should be calling UpdateMaster upon completion of whatever special logic needed to be run on Paste Insert and the BPM on UpdateMaster would then be executed.
This is the same pattern we use for UpdateMaster itself, where it calls the Update Method at the completion of the data validation logic. While the UpdateMasterUsingPasteInsertRowMod is not calling the external UpdateMaster Method, it is calling the UpdateMaster code which is then calling the Update Method.
In many cases you can move your BPM from UpdateMaster to Update and it will execute as you expect, and you should try that in this case to avoid duplicating your BPM logic.