I am facing some issues with BPM’s that are executed asynchronously. Some of the processes are getting stuck and does not come into notice. I know that this is a know bug but does anyone have alternative or suggestions here?
We have several async BPM process one of it is part settings synchronization across all companies. Also the user who is updating part setting in one company does not have access to all companies hence we use user impersonate option and run this Part synchronization process asynchronous using the current user session.
Initially, We did use global parts and multi company process but eventually the records were also getting stuck in IntQueIn and IntQueOut tables hence we decided to build a separate program.
But again, there are several process that we run async, part setting was one of them.
Sad, Epicor have not yet not yet solved this problem
At least finding the reason to stuck would also help.
Edited:
What would be best approach to create sales orders and purchase orders in other companies when manually created in one company.
Note: User does not have access to all companies.
Thanks Jose!
Indeed it is a good option but from my past experience even Multi company processes are getting stuck. Records get stuck in IntQueIn and IntQueOut tables and one has to run multi company manually to make it work (scheduling of multi company process won’t help), even this won’t help for us.
More of a comment around async code execution in general. We use 1 that is core to “keeping the lights on” and uses the CustShip BO. I noticed that if you wrap your entire code block in a try-catch, the task will be removed from the ice.bpactionqueue in the event of an error from the BO or SQL lock. I tried the same process without this and our task in this table also got stuck. SQL Locking, and certain BO errors will prevent the task from being removed from the queue.
We have been using this async bpm for over a year and have not had any instances where the ice.bpactionqueue record did not get cleared out, even on an error. We also had instances where the task agent pooped and on restart picked up the exact data in bpactionqueue flawlessly
If you are purely using widgets, that I have no recommendation on.
TLDR: Use sparingly and only after extensive testing.
Since V8, Async BPM has been a bit unreliable. In the Progress days, they used a Java-based messaging product (forgot the name) but was very reliable.
This is where web-hooks would be EXTREMELY useful. They are a top-requested feature and CDC seemed to be the beginning of such a capability but haven’t seen anything since. It would be the third leg of integration after REST and Epicor Functions to make Epicor/Kinetic a first-class integration machine.
I’ve been using Multi-Company for 7 years and we have many companies running on it. You can run Continuous which will pile through (not the best option but it will keep going).
But the answer to records getting stuck is because the data is bad. Folks need to think about their setup data and govern it. Not everyone should be able to setup a Terms Code. it should be requested and configured across all companies etc…
Do I think MC in Epicor is kind of crap, I do, but it works when done right, but its still crappy – perhaps one day Epicor will simple treat Multi-Company as “EDI”.
IIRC, the multi company direct server process had a limit of 100 transactions per batch. If you have it running every X minutes, and the queue grows larger than 100 records in that time, then some will be pushed to the next batch (and the next batch, and the next…). Schedule the process often enough so the batches don’t roll over. Take a look at the logs and see if that’s happening!