We created a custom auto-start process that ran as expected in our test environment. But when we tried to recreate it in our production environment, it did not auto-start when we expected it to.
In this particular case, the customer had one process that auto-started whenever a timesheet was submitted and then changed the status of the timesheet to approved. They had a second process that auto-started whenever a timesheet was submitted and the total number of hours in the timesheet was >= 1000. This process would change the timesheet status to rejected.
NOTE: This problem could happen with any set of auto-start processes with similar sets of conditions.
ALTERNATE SYMPTOM: Process that ran successfully previously is no longer working.
Whenever the conditions for the second process were met, the conditions for the first process were met as well. If the process engine launched the process that checked the number of hours first everything worked as expected. Whenever the process engine launched the other process first, the status of the timesheet was changed to approved and the conditions for the process that checks the number of hours were no longer met. So that process was never launched.
When the conditions for more than one process are met at the same time, there is no guarantee as to which process will launch first. Any changes made by the process that launched first will affect what the process that is next in line will do.
Redesign the processes.
One potential resolution to this particular customer's problem would be to combine the two processes so that the process that launches whenever the timesheet is submitted also checks the number of hours in the timesheet and rejects the timesheet if there are more than 1000 hours and approves the timesheet if the hours are less than or equal to 1000 hours.
Another resolution for this customer would be to change the start condition that checks the hours so that it does not run until the process is approved.
Obviously, if the conditions for two processes were different, the actual changes that need to be made to the process design would differ. The important thing is to make sure that there is no ambiguity that would cause this type of behavior.