From 0dba886e51af3d9bf911bdce8415d093513da0af Mon Sep 17 00:00:00 2001 From: chaitanyalal18 <42643661+chaitanyalal18@users.noreply.github.com> Date: Mon, 13 Oct 2025 11:49:57 +0530 Subject: [PATCH 1/6] Create README.md Information on working of the script. --- Server-Side Components/Scheduled Jobs/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 Server-Side Components/Scheduled Jobs/README.md diff --git a/Server-Side Components/Scheduled Jobs/README.md b/Server-Side Components/Scheduled Jobs/README.md new file mode 100644 index 0000000000..876ebc38bb --- /dev/null +++ b/Server-Side Components/Scheduled Jobs/README.md @@ -0,0 +1,10 @@ +There are instances where groups are created but remain without members for an extended period, making them ineffective. +This script helps identify such groups that have no members within a specified timeframe and make them inactive. + +Scenario- +Deactivate the active groups which doesn't have members for last 6 months. +Approach- +1. A scheduled job runs daily or weekly to identify groups without members. +2. To track when a group becomes memberless, a DateTime field (e.g. u_memberless_date) is added to the sys_user_group table and populated with the current date when no members are found. +3. If members are added later, the field value is cleared. +4. Groups that remain memberless for over six months (based on the u_memberless_date) are automatically deactivated. From bb7629d30f9a6d8f078337478cc1ac4b2e4f7b59 Mon Sep 17 00:00:00 2001 From: chaitanyalal18 <42643661+chaitanyalal18@users.noreply.github.com> Date: Mon, 13 Oct 2025 11:51:29 +0530 Subject: [PATCH 2/6] Create Deactivate memberless group --- .../Scheduled Jobs/Deactivate memberless group | 1 + 1 file changed, 1 insertion(+) create mode 100644 Server-Side Components/Scheduled Jobs/Deactivate memberless group diff --git a/Server-Side Components/Scheduled Jobs/Deactivate memberless group b/Server-Side Components/Scheduled Jobs/Deactivate memberless group new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/Server-Side Components/Scheduled Jobs/Deactivate memberless group @@ -0,0 +1 @@ + From 574451612a64b39982050fb7992432fb802cf779 Mon Sep 17 00:00:00 2001 From: chaitanyalal18 <42643661+chaitanyalal18@users.noreply.github.com> Date: Mon, 13 Oct 2025 11:57:12 +0530 Subject: [PATCH 3/6] Rename Server-Side Components/Scheduled Jobs/README.md to Server-Side Components/Scheduled Jobs/Deactivate Memberless Group/README.md Utility script to deactivate memberless group --- .../Scheduled Jobs/{ => Deactivate Memberless Group}/README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Server-Side Components/Scheduled Jobs/{ => Deactivate Memberless Group}/README.md (100%) diff --git a/Server-Side Components/Scheduled Jobs/README.md b/Server-Side Components/Scheduled Jobs/Deactivate Memberless Group/README.md similarity index 100% rename from Server-Side Components/Scheduled Jobs/README.md rename to Server-Side Components/Scheduled Jobs/Deactivate Memberless Group/README.md From 6990d5a5a04342386ff3f89da8b99f7034d805cf Mon Sep 17 00:00:00 2001 From: chaitanyalal18 <42643661+chaitanyalal18@users.noreply.github.com> Date: Mon, 13 Oct 2025 11:59:30 +0530 Subject: [PATCH 4/6] Delete Server-Side Components/Scheduled Jobs/Deactivate memberless group Delete obsolete file --- .../Scheduled Jobs/Deactivate memberless group | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Server-Side Components/Scheduled Jobs/Deactivate memberless group diff --git a/Server-Side Components/Scheduled Jobs/Deactivate memberless group b/Server-Side Components/Scheduled Jobs/Deactivate memberless group deleted file mode 100644 index 8b13789179..0000000000 --- a/Server-Side Components/Scheduled Jobs/Deactivate memberless group +++ /dev/null @@ -1 +0,0 @@ - From ebf05ab2216bb2b37fef18ca669e8ad45fed38c9 Mon Sep 17 00:00:00 2001 From: chaitanyalal18 <42643661+chaitanyalal18@users.noreply.github.com> Date: Mon, 13 Oct 2025 12:53:51 +0530 Subject: [PATCH 5/6] Update README.md Updating readme file --- .../Scheduled Jobs/Deactivate Memberless Group/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Server-Side Components/Scheduled Jobs/Deactivate Memberless Group/README.md b/Server-Side Components/Scheduled Jobs/Deactivate Memberless Group/README.md index 876ebc38bb..0f394b83cf 100644 --- a/Server-Side Components/Scheduled Jobs/Deactivate Memberless Group/README.md +++ b/Server-Side Components/Scheduled Jobs/Deactivate Memberless Group/README.md @@ -5,6 +5,6 @@ Scenario- Deactivate the active groups which doesn't have members for last 6 months. Approach- 1. A scheduled job runs daily or weekly to identify groups without members. -2. To track when a group becomes memberless, a DateTime field (e.g. u_memberless_date) is added to the sys_user_group table and populated with the current date when no members are found. +2. To track when a group becomes memberless, a Date field (e.g. u_memberless_date) is added to the sys_user_group table and populated with the current date when no members are found. 3. If members are added later, the field value is cleared. 4. Groups that remain memberless for over six months (based on the u_memberless_date) are automatically deactivated. From c9f943f71696aa098d745f2d5d5aa23efec7f6ae Mon Sep 17 00:00:00 2001 From: chaitanyalal18 <42643661+chaitanyalal18@users.noreply.github.com> Date: Mon, 13 Oct 2025 12:54:53 +0530 Subject: [PATCH 6/6] Create deactivate group.js adding scripts with comments --- .../deactivate group.js | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Server-Side Components/Scheduled Jobs/Deactivate Memberless Group/deactivate group.js diff --git a/Server-Side Components/Scheduled Jobs/Deactivate Memberless Group/deactivate group.js b/Server-Side Components/Scheduled Jobs/Deactivate Memberless Group/deactivate group.js new file mode 100644 index 0000000000..d67f9b99a8 --- /dev/null +++ b/Server-Side Components/Scheduled Jobs/Deactivate Memberless Group/deactivate group.js @@ -0,0 +1,33 @@ +var groupGr = new GlideRecord('sys_user_group'); +groupGr.addActiveQuery(); +groupGr.query(); +while (groupGr.next()) { + var groupSysId = groupGr.sys_id.toString(); + // Query Group member table + var memberGr = new GlideRecord('sys_user_grmember'); + memberGr.addQuery('group', groupSysId); + memberGr.query(); + if (memberGr.hasNext()) { + // If group has member but date is also populated that means member has joined recently. Clear the field value. + if (!gs.nil(groupGr.u_memberless_date)) { + groupGr.u_memberless_date = ''; + groupGr.update(); + } + } else { + var today = new GlideDate(); + if (gs.nil(groupGr.u_memberless_date)) { + // If group doesn't have member populate the fields with today's date if doesn't have a value. + groupGr.u_memberless_date = today; + groupGr.update(); + } else { + // If the field value is present compare the dates and deactivate group accordingly. + var fieldDate = groupGr.getValue('u_memberless_date'); + today.addMonths(-6); + if (fieldDate < today) { + groupGr.active = false; + groupGr.description = "Group has been deactivated for not having members in last 6 months."; + groupGr.update(); + } + } + } +}