Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

How to pause the workflow till next schedule start time?

Raj90
Tera Guru

Hello Team,

 

I have a requirement related to implementing an 'On Call Support' feature for the incident process. To clarify, my working hours are from 9:30 AM to 6:00 PM. If an incident is created after working hours (from 6:00 PM to 9:29 AM), I want a specific workflow (On Call Functionality) to execute.

 

Here's how I've implemented the logic: If a request is created after 6:00 PM, it waits for 15 minutes using a configured timer. During this time, the incident remains assigned to the default group (Group-1). After 6:45 PM, if no action occurs, the incident is then assigned to a predefined on-call support group (Group-2).

 

Within Group-2, if there are two users, the first user receives a call for 5 minutes (as per our defined time). If user-1 doesn't respond, the incident is escalated to user-2. If neither user responds, I want the workflow to pause until the next working day begins at 9:30 AM. At that time, the incident should be reassigned back to Group-1.

 

My concern is how to pause the workflow timer from the moment Group-2 users don't respond until the next day's working hours (9:30 AM) and then reassign it to Group-1.

 

Thanks,

Raj

1 REPLY 1

Ratnakar7
Mega Sage

Hi @Raj90 ,

 

To achieve the workflow pause until the next working day, you can follow these steps in your ServiceNow workflow:

  1. Identify Working Hours:

    • Determine your working hours. In your case, it's from 9:30 AM to 6:00 PM.
  2. Calculate Time Remaining Until Next Working Day:

    • When neither user in Group-2 responds, calculate the time remaining until the next working day (9:30 AM of the next day).
  3. Use "Wait for" Timer Event:

    • Use a "Wait for" Timer Event in the workflow.
    • Calculate the time remaining from the current time until the next working day.
    • Set the timer to wait until the calculated time.
  4. Assign Back to Group-1:

    • After the "Wait for" Timer Event, add an activity to assign the incident back to Group-1.

Here's an example of what the workflow logic might look like:

(function executeRule(current, previous /*null when async*/) {
    // Assuming 'responseReceived' is a flag indicating if users in Group-2 responded
    var responseReceived = current.responseReceived;

    if (!responseReceived) {
        // Calculate time remaining until 9:30 AM of the next working day
        var now = gs.nowDateTime();
        var nextWorkingDay = new GlideDateTime();
        nextWorkingDay.setDisplayValue('09:30:00');
        nextWorkingDay.addDays(1); // Next working day

        // Calculate the duration until the next working day
        var duration = new GlideDuration(nextWorkingDay.getNumericValue() - now.getNumericValue());
        var durationSeconds = duration.getNumericValue() / 1000;

        // Wait for the calculated duration
        gs.sleep(durationSeconds);

        // Assign the incident back to Group-1
        current.assignment_group = 'Group-1';
        current.update();
    }
})(current, previous);

 

Thanks,

Ratnakar