Hello Sugar lovers!
We're getting more and more requirements to perform actions after a date or age has been reached: sleeping opportunities, renewal reminders, escalate accounts without activity... These generally cannot be solved by a report (dashboard or scheduled) since the reporting engine does not allow calculations (eg days before renewal, age since last contact...).
My first intuition sent me towards a simple BPM with an event-based gateway and/or wait event (no dependency on a developer resource, easily maintainable), but:
- Once the process has started and is "waiting", a priori you can't change the "alert" date, for instance if a contract start date changes (for whatever reason), the delay is recalculated, or any other criteria changes. Can you?
- This will create a waiting process instance for each and every record until it is "closed". AFAIK these processes are polled every minute, which could take a massive hit on performance after a while. Is that correct?
So what we generally do is:
- Develop a daily scheduled job that loops through the records and sets a flag if the criteria are met
- Design a BPM that is triggered on the flag change and that performs the necessary actions (sending an email etc)
This works, but any change in the criteria requires code-level modifications (+packaging, deployment...).
I'd live to read your view on this!