Amit Gujarathi
Giga Sage
Giga Sage

Hi All,

This is my personalized list of golden rules which I refer to whenever I m doing some development.

It has 4 Components which are as given below :

  1. Definition  : Definition of development entity
  2. Severity : severity of implementation of definition
  3. Area of Impact : Which area on ServiceNow platform it will have impact on
  4. Affected elements : Which elements this definition will  have affect on

 

I have represented in the tabular format for the ease in understanding

Definition

Severity

Area of impact

Affected element

Business Rules defined on the Global table

High

Scalability

Business Rule

Unused Inactivity Monitors

High

Performance

Inactivity Monitors

Potential Recursive Business Rules

High

Performance

Business Rule

Synchronous AJAX call (getReference, getXMLWait) in Client Scripts

High

Performance

Client Script

GlideRecord usage on Client Scripts

High

Performance

Client Script / Portal Widget

Too many fields in a Form Section

Medium

Performance

Form Section

Business Rules using GlideRecord and getRowCount

Medium

Scalability

Business Rule

High Security Settings plugin disabled

High

Security

Plugin

Client Scripts with the console.log debugging method

Medium

Performance

Client Script

Client Scripts without function

Medium

Scalability

Client Script

Document Object Model (DOM) manipulation in Client Scripts

High

Manageability

Client Scripts

Document Object Model (DOM) manipulation in Client Scripts

High

Manageability

Portal Widget - Client Script

Modules pointing to big tables without filter

Medium

Performance

Module

Document Object Model (DOM) manipulation in Client UI Actions

High

Manageability

UI Action

The default system User Preference "Rows per Page" set above 100

Medium

Performance

User Preference

JDBC Data Sources with "Use last run datetime" option unchecked

Warning

Performance

Data Source

Transform Maps with "Run business rules" option enabled

Low

Performance

Transform Map

Business Rules with debugging statements in production

Low

Scalability

Business Rule

Business Rules using eval function

Low

Security

Business Rule

The "Log/trace level of TaskSLAController" System Property not set to "notice"

Low

Performance

System Property

UI Policy Actions without field effects

Low

Performance

UI Policy Action

Client Scripts defined on the Global table

High

Scalability

Client Script

Business Rules using the SOAP getResponse method

High

Performance

Business Rule

Contextual Security Plugin disabled

High

Security

Plugin

The "Update on Iterate" System Property enabled

Medium

Performance

System Property

The "Go To search" System Property set to "contains" operator

Low

Performance

System Property

Debugging properties enabled in production environments

Low

Performance

System Property

The "Security Manager" System Property default behaviour set to "Allow Access"

High

Security

System Property

Client Scripts with empty script field

Low

Performance

Client Script

Document Object Model (DOM) manipulation in UI Policies

High

Manageability

UI Policy

Server UI Actions using GlideRecord and getRowCount

Medium

Scalability

UI Action

Script Includes using GlideRecord and getRowCount

Medium

Scalability

Script Include

Client UI Actions using GlideRecord

High

Performance

UI Action

UI Policies using GlideRecord

High

Performance

UI Policy

Synchronous AJAX call (getReference, getXMLWait) in UI Policies

High

Performance

UI Policy

Synchronous AJAX call (getReference, getXMLWait) in Catalog UI Policies High Performance Catalog UI Policy

Synchronous AJAX call (getReference, getXMLWait) in Client UI Actions

High

Performance

UI Action

Business Rules with hard-coded sys_ids

Medium

Manageability

Business Rule

Users with too many rows per page

Medium

Performance

User Preference

Client Scripts with hard-coded sys_ids

Medium

Manageability

Client Script

Script Includes with hard-coded sys_ids

Medium

Manageability

Script Include

UI Policies with hard-coded sys_ids

Medium

Manageability

UI Policy

UI Actions with hard-coded sys_ids

Medium

Manageability

UI Action

Transform Maps with hard-coded sys_ids

Medium

Manageability

Table Transform Map

Transform Scripts with hard-coded sys_ids

Medium

Manageability

Transform Script

The "Items per Page" System Property includes options over 100

Medium

Performance

System Property

The "Database Rotation" Plugin disabled

Medium

Manageability

Plugin

ACL Rules using GlideRecord

Medium

Performance

Access Control

The "Database Rotation with Default Tables" Plugin disabled

Medium

Manageability

Plugin

SOAP Timeout Value over 500 minutes

High

Performance

System Property

The "Auto-Complete Wait Time" System Property exceeds 750ms

Medium

Performance

System Property

Forms with too many sections

Low

Performance

Forms

The "Auto-complete Search" System Property set to "contains" operator

Low

Manageability

System Property

Script Includes with debugging statements in production

Low

Scalability

Script Include

UI Actions with debugging statements

Low

Scalability

UI Action

Business Rules without function

High

Scalability

Business Rule

Synchronous Business Rules making SOAP or REST calls

High

Performance

Business Rule 

Synchronous Business Rules making SOAP or REST calls

High

Performance

Portal Widget - Server Script

Synchronous AJAX call (getReference, getXMLWait) in Catalog Client Scripts

High

Performance

Catalog Client Script

GlideRecord usage on Catalog Client Scripts

High

Performance

Catalog Client Script

Catalog Client Scripts with the console.log debugging method

Medium

Performance

Catalog Client Script

Catalog Client Scripts without function

Medium

Scalability

Catalog Client Script

Document Object Model (DOM) manipulation in Catalog Client Scripts

High

Manageability

Catalog Client Script

Catalog Client Scripts with empty script field

Low

Performance

Catalog Client Script

Catalog Client Scripts with hard-coded sys_ids

Medium

Manageability

Catalog Client Script

Notification Email Scripts with hard-coded sys_ids

Medium

Manageability

Notification Email Scripts

Portal Widgets with hard-coded sys_ids

Medium

Manageability

Portal Widget - Client and Server Scripts

Angular Providers with hard-coded sys_ids

Medium

Manageability

Angular Providers

Workflows with over 50 activities

Medium

Performance

Workflow

Workflows with over 10 Timer activities

Medium

Performance

Workflow

UI Scripts with hard-coded sys_ids

Medium

Manageability

UI Script

Synchronous AJAX call (getReference, getXMLWait) in UI Scripts

High

Performance

UI Script

GlideRecord usage on UI Scripts

High

Performance

UI Script

Workflows with Notification Activities

Medium

Manageability

Workflow

UI Scripts with the console.log debugging method

Medium

Performance

UI Script

UI Scripts without function

Medium

Scalability

UI Script

Document Object Model (DOM) manipulation in UI Scripts

High

Manageability

UI Script

onBefore Business Rules should not update records on other tables. High Performance BusinessRule
onBefore Transform Scripts should only update the target table. High Performance Transform Script

UI Scripts with empty script field

Low

Performance

UI Script

Scripts should not use gs.sql High Manageability Script Include
Scripts should not use gs.sql High Manageability Business Rule
Scripts should not use gs.sql High Manageability Portal Widget - Server side script
Scripts should not use gs.sql High Manageability Access Control
Scripts should not use gs.sql High Manageability UI Action
Scripts should not use gs.sql High Manageability Transform Map
Scripts should not use gs.sql High Manageability Transform Script
Scripts should not use gs.sql High Manageability Record Producer

Catalog UI Policy Actions without field effects

Low

Performance

Catalog Ui Policy Action

Document Object Model (DOM) manipulation in Catalog UI Policies

High

Manageability

Catalog UI policy

Catalog UI Policies using GlideRecord

High

Performance

Catalog UI policy

Synchronous AJAX call (getReference, getXMLWait) in Catalog UI Policies

High

Performance

Catalog UI policy

Catalog UI Policies with hard-coded sys_ids

Medium

Manageability

Catalog UI policy

Inbound Email Actions with hard-coded sys_ids. Medium Manageability Inbound Email Action
Inbound Email Actions using GlideRecord and getRowCount. Medium Scalability Inbound Email Action
Event Script Action with hard-coded sys_ids. Medium Manageability Script Action
Event Script Action using GlideRecord and getRowCount. Medium Scalability Script Action
SOAP Request Strict Security should be enabled High Security System Property
Java Package Collection mode and Collection mode override properties should be disabled High Security System Property
Client Generated Scripts Sandbox should be enabled High Security System Property
Cookies – HTTP Only should be enabled High Security System Property
Escape HTML should be enabled High Security System Property
CSV Request Authorization should be enabled High Security System Property
SSLv2/SSLv3 should be disabled High Security System Property
AJAXGlideRecord ACL Checking should be enabled High Security System Property
SLA logging level should be set to "notice" High Performance System Property
Basic Auth SOAP Requests setting should be enabled High Security System Property
Old UI enabled or being used

High

Security System Property
Script Request Authorization should be enabled High Security System Property
Escape Jelly should be enabled High Security System Property
Allow Javascript tags in Embedded HTML property should be disabled High Security System Property
Enable AJAXEvaluate should be disabled High Security System Property
Anti-CSRF Token setting should be enabled High Security System Property
Escape XML should be enabled High Security System Property
HTML Sanitizer property should be enabled High Security System Property
Check UI Action Conditions check before Execution should be enabled High Security System Property

Client Scripts should not use unsupported
scripting APIs

High Manageability Client Scripts
Catalog Client Scripts should not use unsupported
scripting APIs
High Manageability Catalog Client Scripts
Creating custom tables in the global scope should be avoided. Warning Manageability Tables
GlideRecord API usage in Scripted REST API Resource. High Security Scripted REST API Resource
REST API Resource modifying data without Authentication check. High Security Scripted REST API Resource
REST API Resource modifying data without Authorization check. High Security Scripted REST API Resource
Modified Out of the Box Element Warning Manageability

All elements

 

Please be sure to bookmark this article as well as mark it as Helpful if you thought it was helpful.

 

Regards,

Amit Gujarathi

Technomonk Youtube 

Amit Gujarathi Linkedin 

TheTechnomonk.com 

ServiceNow Community Amit Gujarathi 

Version history
Last update:
‎05-14-2023 11:28 PM
Updated by:
Contributors