- Post History
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
on 05-14-2023 11:28 PM
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 :
- Definition : Definition of development entity
- Severity : severity of implementation of definition
- Area of Impact : Which area on ServiceNow platform it will have impact on
- 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 |
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
- 1,956 Views