Date and age-based alerts: SugarBPM or scheduled job?

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: 

  1. 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? 
  2. 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:

  1. Develop a daily scheduled job that loops through the records and sets a flag if the criteria are met
  2. 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!

Cheers,

Damien

Parents
  • Develop a daily scheduled job that loops through the records and sets a flag if the criteria are met

    Can a BPM be configured to set the flag instead of a scheduled job?

  • Okay here is an example:

    The Task is -  to provide a single regular perpetual Process that would check for New leads that were not updated to Assigned within t X minutes from registering in Sugar and assign them all to Jim

    Step 1
    Declare LB Service for Criteria check and data processing, provide X as a parameter (minutes_passed)


    Step 2
    Setup simple Process Definition and enable it

    Step 3
    Draw criterion and data processing for running Assignment Logic.
    pls don't lower your expectations in Sugar automation, since there is no-code access to all the out-of-the-box and custom modules.
    E.g. lets 
     - 0. Start processing, read parameter
     - 1. Set the Criterion for scanning data: Find all Leads in the New status
     - 2. Process them all: go through the list of leads found
     - 3. Transform data: if the Lead was created more than minutes_passed ago, then assign it to Jim and set the status to Assigned, then increment the counter of assigned Leads  
     - 4. Note statistics: Create Note record with a number of Leads automatically assigned

    Folow the white line to read:



    Step 4
    Generate Sugar package in a click and install it via Module Loader.

    Done!

    Now, if you create a new note with subject "START PERPETUAL ASSIGNEMENT", that will run Process Definition and you will get a single instance of the perpetual Process



    Whenever the process runs, it  checks the criterion, process leads, then creates the Note record with statistics:

      

    That approach is a common Solution Architectural approach that we use while implementing Sugar and suggest it for Sugar Admins with no coding skills  - approach leverages SugarBPM capabilities along with core Sugar platform configurability without writing a line of custom code or involving costly developers for programming and supporting custom jobs

    I hope this makes sense

    Have a nice weekend!

    Best Regards,
    Dmytro Chupylka

    integroscrm.com
    We make work in Sugar CRM system faster, more convenient and efficient

Reply
  • Okay here is an example:

    The Task is -  to provide a single regular perpetual Process that would check for New leads that were not updated to Assigned within t X minutes from registering in Sugar and assign them all to Jim

    Step 1
    Declare LB Service for Criteria check and data processing, provide X as a parameter (minutes_passed)


    Step 2
    Setup simple Process Definition and enable it

    Step 3
    Draw criterion and data processing for running Assignment Logic.
    pls don't lower your expectations in Sugar automation, since there is no-code access to all the out-of-the-box and custom modules.
    E.g. lets 
     - 0. Start processing, read parameter
     - 1. Set the Criterion for scanning data: Find all Leads in the New status
     - 2. Process them all: go through the list of leads found
     - 3. Transform data: if the Lead was created more than minutes_passed ago, then assign it to Jim and set the status to Assigned, then increment the counter of assigned Leads  
     - 4. Note statistics: Create Note record with a number of Leads automatically assigned

    Folow the white line to read:



    Step 4
    Generate Sugar package in a click and install it via Module Loader.

    Done!

    Now, if you create a new note with subject "START PERPETUAL ASSIGNEMENT", that will run Process Definition and you will get a single instance of the perpetual Process



    Whenever the process runs, it  checks the criterion, process leads, then creates the Note record with statistics:

      

    That approach is a common Solution Architectural approach that we use while implementing Sugar and suggest it for Sugar Admins with no coding skills  - approach leverages SugarBPM capabilities along with core Sugar platform configurability without writing a line of custom code or involving costly developers for programming and supporting custom jobs

    I hope this makes sense

    Have a nice weekend!

    Best Regards,
    Dmytro Chupylka

    integroscrm.com
    We make work in Sugar CRM system faster, more convenient and efficient

Children