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.

Building round robin algorithm in ServiceNow Incident module

Gopi22
Tera Guru

Hi Everyone,

 

I'm working on a requirement to implement a round-robin algorithm in the ServiceNow incident module. The goal is to assign tickets to group members in a round-robin fashion when the group's type is set to 'round-robin'.

Here's the approach I've taken so far:

1) Created a Checkbox field: Added a 'roundrobin' checkbox field in the 'sys_user_grmember' table to enable/disable round-robin assignment.

2) Added a Date/Time field: Introduced a 'roundrobindate' field to track assignment times.

 

Logic:

When an incident is assigned to a group, a business rule sorts the group members who have the 'roundrobin' checkbox checked. It then sorts these members by the 'roundrobindate' field in ascending order, identifying the member who was assigned a ticket the earliest. The ticket is then assigned to this member.

Has anyone implemented something similar or have suggestions to improve this approach?

Note: I am calling a script include (logic) from my business rule. Sharing the code here for reference.

Thanks in advance!

 

Code

 

 

setAssignedToTwo: function(assGrp) {
        let grMem = new GlideRecord('sys_user_grmember');
        grMem.addEncodedQuery("group=" + assGrp + "^u_grp_mem_round_robin=true");
        grMem.orderBy('u_grp_mem_rr_date');
        grMem.query();

        if (grMem.next()) {
            current.assigned_to = grMem.user.sys_id;
            current.update();
            grMem.u_grp_mem_rr_date = gs.nowDateTime();
            grMem.update();
        }
    },

 

1 REPLY 1

Kieran Anson
Kilo Patron

Have you looked at using Advanced Work Assignment rather than this customisation?