Just curious to know what the average level of customization is with the system? We’re about a year into live with Epicor Kinetic and we have circa 40 BPMs active.
Another question, are most doing them in house or are you farming them out to a consultant/3rd party to do?
on one project, we had somewhere around 150 BPMs on the Sales Order objects and sales order data tables… these become a complex dance as they can sometimes step on each other. Data BPMs were required for tweaking things like the OrderRel table during a save. i typically always like to use method directives, and specifically Object.Update Pre processing or post processing method, but there are times when you have to do other things.
But also, when you look at BPMs, you also need to look at WHAT THEY DO… I classify BPMs into several major categories:
Data Validation or Data Defaulting BPMs… basically these look at data, and set or throw errors. These typically are very quick and are only working in memory
Data Updating / Automation BPMs. These are BPMs that are triggered by one action (method or data) and then proceed to update some other table, or update the current table before writing. These are more intrusive
Advanced BPMs that do lots-o-stuff… something like calculating commissions, or building an order from a set of criteria. These can be tricky due to the fact that this type of BPM might trigger other BPMs.
Epicor Functions have been a huge benefit for reducing these. Since Functions became available, it’s much easier now to use BPMs as simple triggers, and set all the logic for these in Epicor Functions.
There are a ton of things you can do in a ubaq. I was first shown by a consultant in e9 that I could make changes to incoming data in post processing on getlist and it was life changing. Then it was a mix of baq to ABL, but now it is a mix of sql to C#.
We also drive communications between production and sales with updatable dashboards that give real time data, so no emails and all of the data lives in Epicor.
We also create jobs and do most functions of job entry and order job wizard from a dashboard in large groups.
Fortunately, where I work now hasn’t been so gung-ho on recreating the wheel everytime you turn around, so we have a grand total of 22 active BPM’s; of which, 4 are change logs (we also seem to have competent users and non-paranoid management who don’t want to track any and everything).
Fun fact, I went to work for one company who setup changelogs for every field of every table, and then couldn’t figure out why their database was growing astronomically! I scaled back the change logs immensely and purged the change logs for the previous 6 out of 8 years, and reduced the database size by nearly 40%.
I literally just purged one month at a time for their very first year after going live, and then 6 months at a time after that, because each purge took 8-10 hours to complete (They had created all of their change logs before going live, so every single data load leading up to their go-live generated change logs - including the DMTs).