From 98af50cdd405b2e1bbd66035bf0838e209ff0dc7 Mon Sep 17 00:00:00 2001 From: Trupti Ahire Date: Mon, 6 Oct 2025 16:31:01 +0530 Subject: [PATCH 1/2] Round Robin Method for Incident Assignment Logic --- .../README.md | 2 + ...nd Robin method for Incident Assignment.js | 73 +++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 Server-Side Components/Business Rules/Round Robin for Incident Assignment/README.md create mode 100644 Server-Side Components/Business Rules/Round Robin for Incident Assignment/Round Robin method for Incident Assignment.js diff --git a/Server-Side Components/Business Rules/Round Robin for Incident Assignment/README.md b/Server-Side Components/Business Rules/Round Robin for Incident Assignment/README.md new file mode 100644 index 0000000000..2c1b802a31 --- /dev/null +++ b/Server-Side Components/Business Rules/Round Robin for Incident Assignment/README.md @@ -0,0 +1,2 @@ +UseCase - Create a code snippet for assigning Incidents using the Round Robin method. + diff --git a/Server-Side Components/Business Rules/Round Robin for Incident Assignment/Round Robin method for Incident Assignment.js b/Server-Side Components/Business Rules/Round Robin for Incident Assignment/Round Robin method for Incident Assignment.js new file mode 100644 index 0000000000..f29223d420 --- /dev/null +++ b/Server-Side Components/Business Rules/Round Robin for Incident Assignment/Round Robin method for Incident Assignment.js @@ -0,0 +1,73 @@ +(function executeRule(current, previous /*null when async*/) { + + var agg = new GlideAggregate('incident'); + agg.addQuery('assignment_group', current.assignment_group); + agg.addAggregate('count'); + agg.query(); + + var ga = new GlideAggregate('sys_user_grmember'); + ga.addQuery('group', current.assignment_group); + ga.addAggregate('count'); + ga.query(); + + if (agg.next() && ga.next()) { + if (Number(agg.getAggregate('count')) <= Number(ga.getAggregate('count')) { + + var grmem = new GlideRecord('sys_user_grmember'); + grmem.addQuery('group', current.assignment_group); + grmem.query(); + + while (grmem.next()) { + + var inc = new GlideRecord('incident'); + inc.addQuery('assignment_group', grmem.group); + inc.addQuery('assigned_to', grmem.user); + inc.query(); + + if (!inc.hasNext()) { + current.assigned_to = grmem.user; + current.update(); + return; + } + } + + } else { + var min_assignement_group_count, rec_sys_id = null; + var count = new GlideAggregate('incident'); + count.addQuery('assignment_group', current.assignment_group); + count.groupBy('assigned_to'); + count.addNotNullQuery('assigned_to'); + count.addAggregate('count'); + count.query(); + + if (count.next()) { + min_assignement_group_count = Number(count.getAggregate('count')); + rec_sys_id = count.getValue('assigned_to'); + } + + count.query(); + + while (count.next()) { + var countfinal = Number(count.getAggregate('count')); + if (countfinal < min_assignement_group_count) { + min_assignement_group_count = countfinal; + rec_sys_id = count.getValue('assigned_to'); + } + } + + if (rec_sys_id == null) { + var gr_inc = new GlideRecord('sys_user_grmember'); + gr_inc.addQuery('group', current.assignment_group); + gr_inc.query(); + if (gr_inc.next()) { + rec_sys_id = gr_inc.user; + } + } + + current.assigned_to = rec_sys_id; + current.update(); + } + + } + +})(current, previous); From b93e117383950b8993d57b8b4e54cdaca33f626c Mon Sep 17 00:00:00 2001 From: Trupti Ahire Date: Mon, 6 Oct 2025 17:11:03 +0530 Subject: [PATCH 2/2] Round Robin Method for Incident Assignment Logic --- .../Round Robin for Incident Assignment/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Server-Side Components/Business Rules/Round Robin for Incident Assignment/README.md b/Server-Side Components/Business Rules/Round Robin for Incident Assignment/README.md index 2c1b802a31..8fddf435d7 100644 --- a/Server-Side Components/Business Rules/Round Robin for Incident Assignment/README.md +++ b/Server-Side Components/Business Rules/Round Robin for Incident Assignment/README.md @@ -1,2 +1,8 @@ -UseCase - Create a code snippet for assigning Incidents using the Round Robin method. +UseCase - + + + +When a new Incident is created, the system should automatically assign it to the next available member of the assignment group — in a Round Robin fashion (i.e., distributing incidents evenly among all group members). + +It will also work for New addition of new user. and distribute the incident equally to all the users.