Over the years, whenever I’ve had a BPM break in an upgrade, the cause was most often the UI changing which BO Methods it calls or the sequence in which it calls them. I’m mostly talking about the small little “helper” methods like ChangeCustomer or ChangePartNum, etc., not the “big” ones like Update or MasterUpdate. (By the way, I’ve NEVER had a BPM break because I used code instead of a widget… I don’t buy the argument that widgets are inherently more upgrade resistant, but that’s a different topic… )
Anyway, this has taught me to avoid putting method directives on those helper methods, but that’s not always possible. So, it’s something that we’ve just lived with during upgrades, accepting that a handful of directives are prone to breaking due to client side changes.
But nowadays we have Classic UI, Kinetic UI, and other clients like EKW, and they often call different BO Methods! In my code I am constantly finding myself having to write in client dependent conditions - if classic do this, if ekw do that, etc., or just have separate directives geared for the different clients. It’s super frustrating and adds a whole other layer of complexity on the Classic to Browser transition. There have been several posts about this:
More BPM Method Confusion - Kinetic ERP - Epicor User Help Forum
BPM - Working in Classic not in Kinetic - Kinetic ERP - Epicor User Help Forum
Enter Functions. Let’s say I’m creating a Sales Order in a Function. I do a client trace and mimic the BO Method calls in the Function. But… do I mimic the Classic UI method sequences or the Kinetic UI method sequences? For example, Classic will call OnChangeofSoldToCreditCheck, then ChangeSoldToID, then ChangeCustomer when entering the custID and tabbing off. Whereas Kinetic only calls ChangeOrderHedCustomerCustID.
My gut says use the Kinetic methods in Functions, but my hesitation is that we’re still primarily using Classic Sales Order entry. I guess my concern is that the Kinetic method calls could create a slightly different data structure and perhaps miss something that is needed in Classic UI but not needed in Kinetic UI. That said, I have not heard of any issues where you create a record in Kinetic and then run into issues trying to update it in Classic (or vice versa), so maybe I shouldn’t worry.
Another consideration is that I’m writing this Function in v2022.2. Kinetic UI was not as mature two years ago, so how much should I even trust its sequence of BO method calls in the first place? It’s probably already changed a bunch by v2024.2…