Skip to content

Conversation

@anjimuvva
Copy link
Contributor

PR Description:

This ServiceNow background script identifies assignment groups that have no active members.
Such groups can cause issues with incident routing, task assignment, or notification delivery, since tickets assigned to these groups may never reach an active user.

Pull Request Checklist

Overview

  • Put an x inside of the square brackets to check each item.
  • I have read and understood the CONTRIBUTING.md guidelines
  • My pull request has a descriptive title that accurately reflects the changes and the description has been filled in above.
  • I've included only files relevant to the changes described in the PR title and description
  • I've created a new branch in my forked repository for this contribution

Code Quality

  • My code is relevant to ServiceNow developers
  • My code snippets expand meaningfully on official ServiceNow documentation (if applicable)
  • I've disclosed use of ES2021 features (if applicable)
  • I've tested my code snippets in a ServiceNow environment (where possible)

Repository Structure Compliance

  • I've placed my code snippet(s) in one of the required top-level categories:
    • Core ServiceNow APIs/
    • Server-Side Components/
    • Client-Side Components/
    • Modern Development/
    • Integration/
    • Specialized Areas/
  • I've used appropriate sub-categories within the top-level categories
  • Each code snippet has its own folder with a descriptive name

Documentation

  • I've included a README.md file for each code snippet
  • The README.md includes:
    • Description of the code snippet functionality
    • Usage instructions or examples
    • Any prerequisites or dependencies
    • (Optional) Screenshots or diagrams if helpful

Restrictions

  • My PR does not include XML exports of ServiceNow records
  • My PR does not contain sensitive information (passwords, API keys, tokens)
  • My PR does not include changes that fall outside the described scope

@mskoddow mskoddow self-assigned this Oct 30, 2025
Copy link
Contributor

@mskoddow mskoddow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This script is pretty inefficient and does not follow best practices, like

  • iterating all user groups and firing the same query on sys_user_grmember over and over again
  • usage of grp.sys_id
  • usage of hasNext() without setting the query limit to 1

@anjimuvva
Copy link
Contributor Author

updated my code to reduce iteration calls.

@mskoddow
Copy link
Contributor

mskoddow commented Oct 30, 2025

Sorry, I cannot see the value of such an approach as you can already query empty user groups in one go:
https://[your instance].service-now.com/now/nav/ui/classic/params/target/sys_user_group_list.do%3Fsysparm_query%3Dactive%253Dtrue%255ERLQUERYsys_user_grmember.group%252C%253D0%252Cm2m%255Euser.active%253Dtrue%255EENDRLQUERY%26sysparm_view%26sysparm_clear_stack%3Dtrue%26sysparm_first_row%3D1

You just need to leverage so-called related list conditions. In that case the encoded query for your scenario is:

active=true^RLQUERYsys_user_grmember.group,=0,m2m^user.active=true^ENDRLQUERY

Use that encoded query with the help of SN Utils in the list view of the sys_user_group table!

@mskoddow mskoddow closed this Oct 31, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants