Getting Started
Your first steps into the ServiceNow ecosystem — setting up your environment and understanding the platform.
ServiceNow Admin — What Will You Learn?
✓ DoneCourse Overview
This course covers everything a ServiceNow Administrator needs to know — from platform fundamentals to advanced scripting, ITSM modules, integrations, and automation. By the end, you will be prepared for real-world admin roles and the ServiceNow CSA (Certified System Administrator) certification.
Topics You Will Master
| Area | Key Topics |
|---|---|
| Platform Basics | Architecture, UI, Users, Groups, Roles |
| ITSM Modules | Incident, Problem, Change, Knowledge Management |
| Platform Config | Forms, Views, Dictionary, Update Sets, Tables |
| Scripting | Client Scripts, Business Rules, Script Includes, UI Policies |
| Automation | Workflows, Flow Designer, Email Notifications, SLAs |
| Integration | Import Sets, Transform Maps, REST |
| Catalog | Catalog Items, Record Producers, Order Guides |
Introduction — Creating Your Developer Account
✓ DoneWhy You Need a Developer Account
To practise ServiceNow, you need access to a live instance. ServiceNow provides free Personal Developer Instances (PDIs) to registered developers. Without one, you cannot practise the hands-on skills that employers require.
- Go to developer.servicenow.com
- Click Sign Up and fill in your personal details (name, email, location).
- Use a personal email address — not a work or college email.
- Verify your email address by clicking the link ServiceNow sends you.
- Log in and click Request Instance.
- Select the latest available release (e.g., Zurich/Xanadu).
- Wait 10–15 minutes — your instance URL will be emailed to you.
- Log in with username
adminand your set password.
https://dev12345.service-now.com — this is your personal practice environment.Steps to Start Your ServiceNow Career
✓ DoneServiceNow Career Pathways
ServiceNow has over 40 products and several career tracks. Understanding which path suits you helps you focus your learning effectively.
| Career Path | Focus | Entry Certification |
|---|---|---|
| System Administrator | Platform config, users, ITSM modules | CSA — Certified System Administrator |
| Developer | Scripting, custom apps, integrations | CAD — Certified Application Developer |
| ITSM Consultant | Incident, Problem, Change, SLAs | CIS-ITSM — Certified Implementation Specialist |
| HR Specialist | HR Service Delivery | CIS-HR |
| Security Operations | SecOps, Vulnerability Response | CIS-SecOps |
| Platform Architect | Enterprise design, governance | CTA — Certified Technical Architect |
Recommended Learning Path for Beginners
- Complete this administration course end-to-end.
- Set up your PDI and practise every topic hands-on.
- Complete the free ServiceNow Fundamentals course on nowlearning.servicenow.com.
- Attempt the CSA exam — 60 multiple-choice questions, 90 minutes, 70% passing score.
- After CSA, pursue CAD or a CIS specialisation based on your job role.
- Join the ServiceNow Community at community.servicenow.com for real-world support.
Platform Fundamentals
Core architecture, UI terminology, products, and user management — the foundation every admin must know.
User Administration
✓ DoneWho is a User in ServiceNow?
A user is anyone who logs into your ServiceNow instance. This includes IT staff (agents/admins), end users (employees raising requests), and managers (approvers). All users are stored in the sys_user table.
Key User Fields
| Field | Purpose |
|---|---|
| User ID | Unique login name (e.g., john.smith) |
| First / Last Name | Display name throughout the platform |
| Used for notifications and login | |
| Department | Organisational unit |
| Manager | Used for approval routing |
| Active | Unchecked = user cannot log in |
| Roles | Direct roles assigned to this user (not recommended — use groups instead) |
Step-by-Step: Create a User
- Navigate to
User Administration > Users. - Click New.
- Fill in User ID, First Name, Last Name, and Email.
- Set Department and Manager.
- Click Submit.
- To set a password: open the user record → click Set Password in the top right.
- To add to a group: scroll to the Groups related list → click Edit.
Groups and Roles
Groups are stored in sys_user_group. Roles are stored in sys_user_role. Assign roles to groups, not individual users — this makes access management scalable.
| Common Role | What it Grants |
|---|---|
| admin | Full system access — use sparingly |
| itil | Standard ITSM agent access (Incident, Problem, Change) |
| catalog | Access to manage Service Catalog items |
| approver_user | Can approve requests |
| report_publisher | Can publish reports |
| knowledge | Can create and manage Knowledge articles |
admin role to regular users. Create custom roles with only the permissions needed — this follows the Principle of Least Privilege and is a CSA exam topic.User Interface — ServiceNow Terminology
✓ DoneThe ServiceNow UI Structure
Understanding the UI terminology is essential — these terms come up constantly in admin work, documentation, and interviews.
| UI Element | Description |
|---|---|
| Banner/Header | The top strip with logo, search, notifications, and user menu |
| Application Navigator | The left sidebar with all application menus and modules |
| Content Frame | The main area where records, lists, and forms are displayed |
| Breadcrumbs | The navigation path shown at the top of the content frame |
| Module | A clickable link in the Application Navigator (e.g., 'All Incidents') |
| Application | A group of related modules (e.g., 'Incident Management') |
| List View | Tabular view showing multiple records at once |
| Form View | Detailed view of a single record with all its fields |
| Related Lists | Tabs at the bottom of a form showing associated records |
Useful Navigation Shortcuts
| Shortcut | Action |
|---|---|
table_name.list in nav filter | Open any table's list view directly |
table_name.do in nav filter | Open a new blank form for any table |
sys_user.list | Open the Users list |
incident.list | Open the Incidents list |
Ctrl+Alt+G | Global text search |
https://instance.service-now.com/incident.do?sys_id=abc123ServiceNow Products
✓ DoneThe ServiceNow Product Portfolio
ServiceNow is not just an ITSM tool — it's a platform with 40+ products across multiple business domains. Understanding the product landscape helps you speak intelligently with clients and understand the full scope of admin possibilities.
| Product Family | Key Products |
|---|---|
| IT Service Management (ITSM) | Incident, Problem, Change, Request, Knowledge Management |
| IT Operations Mgmt (ITOM) | Discovery, Event Management, Cloud Management, AIOps |
| IT Business Mgmt (ITBM) | Project Portfolio, Agile, Test Management, Resource Management |
| HR Service Delivery (HRSD) | Employee Onboarding, Case Management, Employee Center |
| Customer Service Mgmt (CSM) | Case Management, Customer Portal, Field Service |
| App Engine | No-code/low-code app builder, IntegrationHub, RPA |
| Security Operations | Vulnerability Response, Incident Response, Threat Intelligence |
| Governance, Risk & Compliance (GRC) | Risk Management, Policy Management, Audit Management |
| IT Asset Management (ITAM) | Hardware/Software Asset tracking, License Management |
ServiceNow Architecture
✓ DoneHow ServiceNow is Delivered
ServiceNow is a cloud-based, multi-instance SaaS platform. Each customer receives a dedicated instance — not shared infrastructure — which provides security, performance isolation, and the ability to customise without affecting other customers.
The 3-Instance Architecture (Standard)
| Instance | Purpose | Who Uses It |
|---|---|---|
| Development (Dev) | Build and test new features, customisations | Admins and developers |
| Test/UAT | User acceptance testing before production | Testers, business stakeholders |
| Production (Prod) | Live system used by all employees | All end users |
How Data Flows: User → Group → Role → Access
- Company purchases ServiceNow → receives instance URLs.
- Admin creates User accounts for each employee.
- Admin creates Groups (e.g., Network Team, Service Desk).
- Admin assigns Roles to Groups (e.g., itil role to Service Desk group).
- Users are added to Groups → they inherit all group roles.
- Roles control which modules, tables, and records users can see and edit.
Key Platform Concepts
| Concept | Description |
|---|---|
| Instance | Your dedicated ServiceNow environment (dev/test/prod) |
| Scope/Application | A container for customisations (Global or custom app scope) |
| Sys ID | A unique 32-character identifier for every record in ServiceNow |
| Table | A database entity (e.g., incident, sys_user, sc_cat_item) |
| GlideRecord | The server-side API for querying and manipulating tables |
| Update Set | A container for capturing and transporting configuration changes |
| MID Server | A Java application installed on-premise that bridges ServiceNow to your network |
IT Service Management (ITSM)
The core ITSM processes — Incident, Problem, Change, and Knowledge Management — built on ITIL best practices.
Incident Management
✓ DoneWhat is an Incident?
An incident is an unplanned interruption to an IT service or a reduction in the quality of an IT service. The goal of incident management is to restore normal service operation as quickly as possible with minimal business impact.
Incident Lifecycle
| State | Meaning | Who Acts |
|---|---|---|
| New | Incident just created, not yet acknowledged | Service Desk |
| In Progress | Being actively investigated and worked | Assigned Agent |
| On Hold | Waiting for user, vendor, or third party | Assigned Agent |
| Resolved | Fix applied, waiting for user confirmation | Assigned Agent |
| Closed | User confirmed, incident officially closed | System/User |
Key Incident Fields
| Field | Purpose |
|---|---|
| Number | Auto-generated unique ID (INC0001234) |
| Caller | Who reported the incident |
| Short Description | One-line summary — crucial for search and reporting |
| Category / Subcategory | Classification for routing and metrics |
| Priority | Calculated from Impact × Urgency (P1–P5) |
| Assignment Group | Team responsible for resolution |
| Assigned To | Individual agent working the incident |
| State | Current lifecycle stage |
| Resolution Notes | How the incident was resolved (required to close) |
Priority Matrix (Impact × Urgency)
| High Urgency | Medium Urgency | Low Urgency | |
|---|---|---|---|
| High Impact | P1 — Critical | P2 — High | P3 — Moderate |
| Medium Impact | P2 — High | P3 — Moderate | P4 — Low |
| Low Impact | P3 — Moderate | P4 — Low | P5 — Planning |
Step-by-Step: Create an Incident
- Navigate to
Incident > Create New. - Set the Caller (who reported it).
- Enter a clear Short Description.
- Select Category and Subcategory.
- Set Impact and Urgency — Priority auto-calculates.
- Assign to the correct Assignment Group.
- Click Submit.
Problem Management
✓ DoneIncident vs Problem — The Critical Difference
Many people confuse incidents and problems. Here's the clear distinction:
| Incident | Problem | |
|---|---|---|
| Definition | Unplanned interruption to a service | Root cause of one or more incidents |
| Goal | Restore service ASAP | Find and eliminate root cause permanently |
| Speed | Urgent — fix now | Investigative — take time to find root cause |
| Example | Server down — restart it | Why does the server keep going down? |
Problem Lifecycle
| State | Description |
|---|---|
| Open | Problem raised, investigation starting |
| Known Error | Root cause identified, workaround available, permanent fix pending |
| Pending Change | Fix requires a Change Request — waiting for change window |
| Resolved | Root cause eliminated, no further incidents expected |
| Closed | Confirmed resolved, post-implementation review done |
Known Error Database (KEDB)
When the root cause of a problem is identified (even if not yet fixed), a Known Error record is created. This serves as a reference for the Service Desk — if an incident matches a Known Error, agents can apply the documented workaround immediately, reducing resolution time.
Change Management
✓ DoneWhat is a Change?
A change is the addition, modification, or removal of anything that could have an effect on IT services. Change Management ensures changes are implemented in a controlled, risk-assessed manner to prevent incidents caused by poorly planned changes.
Change Types
| Type | Description | Approval Required | Example |
|---|---|---|---|
| Standard | Pre-approved, low-risk, routine | No (pre-approved) | Resetting a user password, routine patch |
| Normal | Planned change, requires full assessment and approval | Yes — CAB approval | Deploying a new application version |
| Emergency | Urgent — must be implemented immediately to restore service | Yes — ECAB (Emergency CAB) | Critical security patch for active exploit |
Change Lifecycle (Normal Change)
- New — Change request created with justification, risk, and implementation plan.
- Assess — Risk and impact assessed.
- Authorize — Sent to CAB for review and approval.
- Scheduled — Change window assigned and approved.
- Implement — Change implemented during the scheduled window.
- Review — Post-implementation review confirming success or documenting issues.
- Closed — Change officially closed.
Change Management — Continuation
✓ DoneChange Risk Assessment
Every Normal and Emergency change must have a Risk Assessment completed before approval. ServiceNow provides a built-in Risk Calculator that scores changes based on configurable questions.
| Risk Level | Score Range | Typical Action |
|---|---|---|
| Low | 0–30 | Streamlined approval — may skip full CAB |
| Moderate | 31–60 | Standard CAB review required |
| High | 61–80 | Senior management approval + detailed rollback plan |
| Critical | 81–100 | Executive sign-off required, phased implementation |
Rollback Plan — Why It's Mandatory
Every change must document a rollback plan — what steps will be taken if the change fails and the service needs to be restored. Without a rollback plan, a failed change can turn into a P1 incident with no clear recovery path.
Conflict Detection
ServiceNow can automatically detect change conflicts — when two changes affect the same CI during overlapping windows. The Conflict Detection feature flags these before the change is approved, preventing accidental double-changes.
Knowledge Management
✓ DoneWhat is Knowledge Management?
Knowledge Management captures, stores, and shares solutions and information across the organisation. It reduces incident resolution time (agents find answers faster), enables self-service (users solve issues themselves), and preserves institutional knowledge when staff leave.
Knowledge Article Lifecycle
| State | Description |
|---|---|
| Draft | Being written — not visible to users |
| Review | Submitted for peer review |
| Published | Live and searchable by users |
| Retired | Outdated, removed from search but kept for history |
Step-by-Step: Create a Knowledge Article
- Navigate to
Knowledge > Create New. - Select the Knowledge Base to publish to.
- Choose a Category.
- Enter a clear, searchable Short Description (this is the article title in search results).
- Write the article body — use clear headings, steps, and screenshots.
- Set Valid To date to ensure outdated articles are retired.
- Click Publish (or Submit for Review if approval workflow is configured).
Platform Configuration
Forms, views, dictionary, update sets, and table management — the tools that shape your ServiceNow environment.
Form Design
✓ DoneWhat is Form Design?
The Form Designer (or Form Layout) allows admins to control which fields appear on a record's form, in what order, how many columns, and how they are grouped into sections. It's one of the most frequently used admin tools.
Accessing Form Designer
- Open any form (e.g., an Incident record).
- Right-click on the form header bar (the grey bar at the top of the form).
- Select Configure > Form Layout.
- Alternatively, navigate directly:
System UI > Forms.
Form Designer Actions
| Action | How To |
|---|---|
| Add a field | Drag from Available Fields (left) to Selected Fields (right) |
| Remove a field | Drag from Selected back to Available, or click X |
| Reorder fields | Drag up/down in the Selected Fields column |
| Add a section | Click 'Add Section' — sections create visual groupings with headings |
| Set 2-column layout | Click the 1-col/2-col toggle for each section |
| Add a separator | Drag the Separator element to create a horizontal line |
Form Sections & Views
✓ DoneWhat are Form Sections?
Sections divide a form into logical groupings. For example, an Incident form might have sections: Incident Details, Resolution, and Related Information. Sections can be collapsed, improving readability of complex forms.
What are Views?
A View is a named form layout that shows different fields to different users. The same table can have multiple views — the correct view is displayed based on the user's role or a URL parameter.
Step-by-Step: Create a New View
- Open the table's Form Layout (right-click form header → Configure → Form Layout).
- In the View field at the top, click the dropdown and select New.
- Enter a name for the new view (e.g., 'Manager View' or 'Mobile View').
- Arrange fields specifically for this view's audience.
- Save.
?sysparm_view=view_name to the URL.View Rules
✓ DoneWhat are View Rules?
View Rules automatically switch which form view is displayed to a user based on conditions — such as their role, the record's state, or other field values. This ensures each user sees exactly the right fields for their context.
- Navigate to
System UI > View Rules. - Click New.
- Set the Table (e.g., incident).
- Set the View to show when the condition is met.
- Set the Conditions (e.g., Role is 'itil', or State is 'Resolved').
- Set the Order — lower order = higher priority.
- Save and test by logging in as a user with the relevant role.
Dictionary Properties
✓ DoneWhat is the Dictionary?
The Data Dictionary defines every field on every table in ServiceNow. It controls field labels, types, lengths, default values, mandatory settings, and reference relationships. The dictionary is the source of truth for all data definitions.
Dictionary Entry Key Properties
| Property | Description | Example |
|---|---|---|
| Column Label | Field display name users see | 'Short Description' |
| Column Name | Database field name (internal) | 'short_description' |
| Type | Data type (String, Integer, Reference, etc.) | String |
| Max Length | Maximum characters allowed | 160 for Short Description |
| Mandatory | Whether field must be filled to save | Yes for Short Description |
| Default Value | Value pre-populated when form loads | 'Unknown' for Category |
| Read Only | Prevents users from editing the field | True for Number field |
| Dependent Field | Field only shows when another field has a specific value | Subcategory depends on Category |
- Navigate to
System Definition > Dictionary. - Filter by Table name to find fields for a specific table.
- Click a dictionary entry to open and modify it.
- Common changes: update the Label, set/remove Mandatory, change Max Length.
- Always capture dictionary changes in an Update Set before making them.
Dictionary Properties — Continuation
✓ DoneField Types Reference
| Type | Description | Stored As |
|---|---|---|
| String | Free text field | VARCHAR |
| Integer | Whole numbers | INT |
| Decimal | Numbers with decimal places | DECIMAL |
| Boolean | True/False checkbox | TINYINT(1) |
| Date | Date only (no time) | DATE |
| Date/Time | Date and time | DATETIME |
| Reference | Link to another table record | VARCHAR (stores sys_id) |
| List (Glide List) | Multiple references to another table | VARCHAR (comma-separated sys_ids) |
| Choice | Select box from a defined list | VARCHAR |
| Journal | Append-only work notes / comments | Separate journal table |
| HTML | Rich text editor | TEXT |
| Translated Text | Supports multiple languages | VARCHAR with translation table |
Choice Lists
For fields of type Choice, the options come from the sys_choice table. You can manage choices by right-clicking a choice field on a form → Configure Choices, or navigating to System Definition > Choice Lists.
Process Flow
✓ DoneWhat is Process Flow?
The Process Flow formatter displays a visual progress indicator at the top of a form, showing the current stage of a record's lifecycle. It gives users an at-a-glance view of where a record is in its process.
- Navigate to
System Definition > Process Flow. - Click New.
- Set the Table (e.g., incident).
- Add stages and map them to the table's State field values.
- Save, then add the Process Flow formatter to the form layout via Form Designer.
Child Tables (Extended Tables)
✓ DoneTable Inheritance in ServiceNow
ServiceNow uses table inheritance (extension) extensively. A child table inherits all fields from its parent table, plus adds its own specific fields. This is one of the most important architectural concepts in ServiceNow.
| Parent Table | Child Tables (examples) |
|---|---|
| task | incident, problem, change_request, sc_task, hr_case, sn_customerservice_case |
| sc_cat_item | sc_cat_item_producer (Record Producer), sc_cat_item_guide (Order Guide) |
| cmdb_ci | cmdb_ci_server, cmdb_ci_computer, cmdb_ci_network_gear |
| sys_user_group | Group (all groups extend this) |
Data Lookup Rules
✓ DoneWhat are Data Lookup Rules?
Data Lookup Rules automatically populate field values based on matching conditions — without any scripting. For example, automatically set the Assignment Group based on the Category and Subcategory of an Incident.
- Navigate to
System Policy > Data Lookup Rules(or search 'Data Lookup'). - Click New.
- Set the Table (e.g., incident).
- Set the Field to set (e.g., assignment_group).
- Add Match Conditions (e.g., category = 'network' AND subcategory = 'vpn').
- Set the Value to assign (e.g., sys_id of Network Team group).
- Set the Order — lower order = evaluated first.
- Test by creating an incident with matching values.
Development Fundamentals
Scripting and configuration tools that make ServiceNow truly customisable — the skills that separate good admins from great ones.
Update Sets
✓ DoneWhat is an Update Set?
An Update Set is a container that captures configuration changes made in ServiceNow so they can be exported from one instance and imported into another (e.g., Dev → Test → Prod). Update Sets are the primary mechanism for moving customisations through environments.
What Update Sets DO and DON'T Capture
| Captured ✅ | NOT Captured ❌ |
|---|---|
| Business Rules, Client Scripts, UI Policies | Incident/Problem/Change records (data) |
| Form layouts, Dictionary changes | User accounts |
| Workflows, Flow Designer flows | Group memberships |
| Catalog Items, Variables | Import Set data |
| Notifications, SLA definitions | Report filters (personal) |
| ACLs, Roles | Scheduled job execution history |
Step-by-Step: Using Update Sets
- Navigate to
System Update Sets > Local Update Sets. - Click New → give it a descriptive name (e.g., 'INC-123 Fix Priority Field').
- Set it as your Current Update Set (click 'Make Current').
- Make all your configuration changes — they are automatically captured.
- When done, open the Update Set and click Complete.
- Click Export to XML to download the update set file.
- In the target instance:
System Update Sets > Retrieved Update Sets→ Import XML. - Click Preview to check for conflicts, then Commit.
Tables & Filters
✓ DoneWorking with Tables
ServiceNow has 6,000+ tables. Understanding how to navigate, filter, and query them is a core admin skill — both through the UI and scripts.
Accessing Tables
| Method | How |
|---|---|
| Application Navigator filter | Type table_name.list (e.g., incident.list) |
| System Definition > Tables | Browse all tables, view field definitions |
| URL | https://instance.service-now.com/table_name.list |
Building List Filters
The Filter Builder (breadcrumb area above a list) lets you build complex queries visually:
- Click the funnel icon above any list to open the Filter Builder.
- Add conditions: Field + Operator + Value.
- Use AND for all conditions to be true, OR for any.
- Click Run to apply the filter.
- Click Save to create a named filter for reuse.
GlideRecord — Querying Tables via Script
// Query all P1 Incidents assigned to the Network Team
var gr = new GlideRecord('incident');
gr.addQuery('priority', '1');
gr.addQuery('assignment_group.name', 'Network Team');
gr.query();
while (gr.next()) {
gs.log('Incident: ' + gr.number + ' - ' + gr.short_description);
}Client vs Server — Understanding Script Execution
✓ DoneThe Most Important Concept in ServiceNow Scripting
ServiceNow scripts run in two different environments: client-side (in the user's browser) and server-side (on ServiceNow's servers). Knowing the difference is fundamental — using the wrong type causes scripts to fail silently.
| Client-Side | Server-Side | |
|---|---|---|
| Where it runs | User's browser (JavaScript) | ServiceNow server (Rhino JS engine) |
| API available | g_form, g_user, g_list, GlideAjax | GlideRecord, GlideSystem (gs), GlideUser |
| Can access DB? | No (only via GlideAjax call to server) | Yes — direct database access |
| Script types | Client Scripts, UI Policies, UI Actions (client) | Business Rules, Script Includes, Scheduled Jobs |
| Runs when? | On form load, field change, submit | On database insert, update, delete, query |
// WRONG - GlideRecord does NOT work in Client Scripts
function onChange(control, oldValue, newValue) {
var gr = new GlideRecord('sys_user'); // ERROR: GlideRecord undefined
gr.get(newValue);
}
// CORRECT - Use GlideAjax for server data in Client Scripts
function onChange(control, oldValue, newValue) {
var ga = new GlideAjax('MyScriptInclude');
ga.addParam('sysparm_name', 'getManager');
ga.addParam('sysparm_user_id', newValue);
ga.getXMLAnswer(function(answer) {
g_form.setValue('manager', answer);
});
}
Client Scripts
✓ DoneWhat are Client Scripts?
Client Scripts run in the user's browser and control form behaviour in real-time — showing/hiding fields, validating input, auto-populating values, and preventing bad submissions. They are stored in the sys_script_client table.
Client Script Types
| Type | When it Runs | Signature | Common Use |
|---|---|---|---|
| onLoad | When the form first loads | function onLoad() {} | Hide fields, set defaults, pre-populate values |
| onChange | When a specific field value changes | function onChange(control, oldValue, newValue, isLoading) {} | Show/hide related fields, validate input, look up data |
| onSubmit | When the user clicks Submit | function onSubmit() { return true/false; } | Final validation — return false to block submission |
| onCellEdit | When a cell in a list is edited | function onCellEdit(sysIDs, table, oldValues, newValue, callback) {} | Validate list edits |
g_form API Reference
| Method | Purpose | Example |
|---|---|---|
| g_form.getValue('field') | Get a field's current value | g_form.getValue('priority') |
| g_form.setValue('field', val) | Set a field value | g_form.setValue('state', '6') |
| g_form.setVisible('field', bool) | Show or hide a field | g_form.setVisible('close_notes', true) |
| g_form.setMandatory('field', bool) | Make mandatory or optional | g_form.setMandatory('reason', true) |
| g_form.setReadOnly('field', bool) | Make read-only | g_form.setReadOnly('number', true) |
| g_form.showFieldMsg('field', msg, type) | Show info/error under field | g_form.showFieldMsg('email', 'Invalid format', 'error') |
| g_form.clearValue('field') | Clear a field | g_form.clearValue('assignment_group') |
| g_form.addOption('field', val, label) | Add a choice option | g_form.addOption('category', 'net', 'Network') |
// Example: Show 'On Hold Reason' only when State = On Hold
function onChange(control, oldValue, newValue, isLoading) {
if (newValue == '3') { // 3 = On Hold
g_form.setVisible('hold_reason', true);
g_form.setMandatory('hold_reason', true);
} else {
g_form.setVisible('hold_reason', false);
g_form.setMandatory('hold_reason', false);
}
}isLoading in onChange scripts. If isLoading == true, the form is just loading — you probably don't want your script to fire yet. Add if (isLoading) return; at the top of most onChange scripts.UI Policy
✓ DoneWhat are UI Policies?
UI Policies control field visibility, mandatory state, and read-only state based on conditions — without requiring JavaScript. They're the no-code alternative to Client Scripts for simple field behaviour rules.
UI Policy vs Client Script — When to Use Each
| Scenario | Use UI Policy | Use Client Script |
|---|---|---|
| Show/hide field based on another field value | ✅ Yes | Only if conditions are very complex |
| Make field mandatory based on state | ✅ Yes | Only if conditions are very complex |
| Auto-calculate a total from two fields | ❌ No | ✅ Yes — needs onChange calculation |
| Look up data from another table | ❌ No | ✅ Yes — needs GlideAjax |
| Validate email format on submit | ❌ No | ✅ Yes — needs onSubmit regex |
| Multiple conditions (AND/OR) | ✅ Yes (condition builder) | ✅ Yes (more flexibility) |
- Navigate to
System UI > UI Policies(or right-click form → Configure → UI Policies). - Click New.
- Set the Table.
- Set Conditions (the when clause).
- Enable Reverse if false to auto-undo when condition is no longer met.
- Save, then open the UI Policy Actions related list.
- Add actions: Field + Set Mandatory/Visible/Read-Only to true/false.
- Test on the form.
UI Policy — Continuation
✓ DoneAdvanced UI Policy Techniques
Script field in UI Policy
For conditions too complex for the condition builder, enable Use scripts on the UI Policy to write a JavaScript condition that returns true/false.
// Show 'Escalation Reason' only for P1 or P2 incidents with SLA breach
function() {
var priority = g_form.getValue('priority');
var slaBreached = g_form.getValue('sla_due');
var now = new Date();
return (priority <= 2); // Show for P1 and P2
}Catalog UI Policies vs Regular UI Policies
| Regular UI Policy | Catalog UI Policy | |
|---|---|---|
| Applies to | Standard forms (Incident, Problem, etc.) | Service Catalog request forms only |
| Location | System UI > UI Policies | Catalog Item > Catalog UI Policies related list |
| Field references | Uses field names (e.g., 'priority') | Uses variable names (e.g., 'urgency_level') |
UI Pages
✓ DoneWhat are UI Pages?
UI Pages are custom HTML/JavaScript/CSS pages hosted within ServiceNow. They allow you to create completely custom interfaces — dashboards, wizards, confirmation dialogs, and landing pages — that go beyond what standard forms and lists support.
- Navigate to
System UI > UI Pages. - Click New.
- Enter a Name (used in the URL:
/instance.service-now.com/name.do). - Write your HTML — use Jelly tags for dynamic server data.
- Write Client Script for browser interaction.
- Write Processing Script for server actions (form submissions).
- Access via URL:
/your_page_name.do
UI Macros
✓ DoneWhat are UI Macros?
UI Macros are reusable HTML/Jelly snippets that can be embedded in UI Pages, form formatters, or other ServiceNow UI elements. They're the component library of classic ServiceNow UI development.
UI Macro vs UI Page
| UI Macro | UI Page | |
|---|---|---|
| Purpose | Reusable snippet embedded in other pages | Standalone full page |
| Standalone URL | No | Yes |
| Embedded in form | Yes — via Form Formatter | Possible but unusual |
| Complexity | Simpler | Full application capability |
- Navigate to
System UI > UI Macros. - Click New.
- Enter a Name.
- Write your XML/Jelly template.
- To embed on a form: go to Form Design → add a Formatter element → select your macro.
Data Policy
✓ DoneWhat is a Data Policy?
A Data Policy enforces field rules (mandatory, read-only) at the database level — not just in the browser. Unlike UI Policies (browser-only), Data Policies are enforced regardless of how a record is accessed: via the UI, API, import, or scripting.
| UI Policy | Data Policy | |
|---|---|---|
| Enforced in browser? | ✅ Yes | ✅ Yes |
| Enforced via REST API? | ❌ No | ✅ Yes |
| Enforced via Import Sets? | ❌ No | ✅ Yes |
| Enforced via scripts? | ❌ No | ✅ Yes (if 'Apply to Import Sets' enabled) |
| Use when... | Pure UI behaviour | Data integrity across ALL access methods |
- Navigate to
System Policy > Data Policies. - Click New.
- Set the Table and Conditions.
- Add Data Policy Rules: Field + Mandatory/Read-Only.
- Enable Apply to Import Sets if you want enforcement during imports.
- Save and test.
Advanced Configuration
Business Rules, scripting, access control, reporting, and SLAs — the tools that define production-grade ServiceNow implementations.
Business Rules
✓ DoneWhat are Business Rules?
Business Rules are server-side scripts that run automatically when a record is inserted, updated, deleted, or queried. They are the most powerful automation tool in ServiceNow — running on the server with full database access regardless of how the record was modified.
current object represents the record being processed; previous holds the previous values before the save. The gs (GlideSystem) object provides utility methods.Business Rule Timing
| When | Order | Use Case |
|---|---|---|
| Before | Runs before save | Modify field values before database write (e.g., auto-format a phone number) |
| After | Runs after save | Trigger workflows, create related records, send notifications |
| Async | Runs after save, in background | Long-running operations that shouldn't delay the UI response |
| Display | Runs when record is displayed | Modify UI display variables (scratch pad) |
Common Business Rule Operations
// BEFORE Business Rule: Auto-set Priority from Impact & Urgency
if (current.impact == '1' && current.urgency == '1') {
current.priority = '1'; // Critical
} else if (current.impact <= '2' || current.urgency <= '2') {
current.priority = '2'; // High
}
// AFTER Business Rule: Create a follow-up task when Incident is resolved
if (current.state == '6' && current.state.changesTo('6')) {
var task = new GlideRecord('sc_task');
task.short_description = 'Follow up on resolved incident: ' + current.number;
task.assignment_group = current.assignment_group;
task.insert();
}
// Checking if a field changed
if (current.assignment_group.changes()) {
// Assignment group was just changed
gs.eventQueue('incident.reassigned', current, current.assignment_group, current.assigned_to);
}current.setWorkflow(false) or check current.operation() to prevent this.Script Includes
✓ DoneWhat are Script Includes?
Script Includes are reusable JavaScript libraries stored in ServiceNow that can be called from Business Rules, Client Scripts (via GlideAjax), Scheduled Jobs, REST APIs, and other scripts. They're ServiceNow's equivalent of a shared function library.
Class.create() syntax. When called from a Client Script, they must extend AbstractAjaxProcessor and be called via GlideAjax — because client-side code cannot directly call server-side code.Two Types of Script Includes
| Type | Called From | Pattern |
|---|---|---|
| Regular | Other server scripts (Business Rules, Scheduled Jobs) | var myObj = new MyScriptInclude(); myObj.doSomething(); |
| Ajax-enabled | Client Scripts via GlideAjax | Extends AbstractAjaxProcessor, methods return values |
// Regular Script Include
var IncidentUtils = Class.create();
IncidentUtils.prototype = {
initialize: function() {},
getPriorityLabel: function(priority) {
var labels = {'1':'Critical','2':'High','3':'Moderate','4':'Low','5':'Planning'};
return labels[priority] || 'Unknown';
},
reassignToOnCallGroup: function(incidentSysId) {
var gr = new GlideRecord('incident');
if (gr.get(incidentSysId)) {
gr.assignment_group.setDisplayValue('On-Call Team');
gr.update();
}
},
type: 'IncidentUtils'
};
// Call from Business Rule:
var utils = new IncidentUtils();
var label = utils.getPriorityLabel(current.priority);Access Controls (ACLs)
✓ DoneWhat are Access Controls?
Access Control Lists (ACLs) define who can do what with which data in ServiceNow. They control read, write, create, and delete operations on tables and individual fields, evaluated against a user's roles and conditions.
ACL Components
| Component | Description |
|---|---|
| Operation | What action: read, write, create, delete, execute |
| Object Type | Table (row-level) or Field (column-level) |
| Role | Required role(s) — user must have at least one |
| Condition | Optional record-level filter (e.g., 'only own records') |
| Script | Advanced — JavaScript for complex conditions |
ACL Evaluation Order
- Is the user
admin? → Full access, skip all ACL checks. - Is security disabled for this session? → Full access.
- Find all ACL records matching the table/field and operation.
- Sort by specificity (field ACLs override table ACLs).
- For each ACL: check role → check condition → check script.
- If any matching ACL grants access → allowed.
- If no ACL matches or grants access → denied.
// ACL Script example: User can only edit incidents they created
// In the ACL 'Script' field:
answer = (gs.getUserID() == current.opened_by.sys_id ||
gs.hasRole('itil_admin'));read operation on core tables like incident or sys_user. A misonfigured read ACL can break existing reports, widgets, and workflows that query those tables.Reports & Dashboards — Reports
✓ DoneWhat is Reporting in ServiceNow?
ServiceNow's built-in reporting engine allows admins and users to create visual reports from any table, share them, schedule email delivery, and publish them to dashboards — without any external BI tool.
Report Types
| Type | Best For | Example |
|---|---|---|
| Bar Chart | Comparing categories | Incidents by Assignment Group |
| Pie/Donut | Showing proportions | Incidents by Priority (% each) |
| Line Chart | Trends over time | Incidents created per day (last 30 days) |
| List | Tabular data with details | All P1 Incidents in the last week |
| Single Score | KPI metric display | Total Open Incidents |
| Heatmap | Frequency by two dimensions | Incidents by Day of Week × Hour of Day |
| Pivot Table | Cross-tabulation | Incidents by Category × Priority |
| Box Plot | Distribution analysis | Resolution time distribution by team |
- Navigate to
Reports > Create New(or click 'New' in Reports). - Give the report a Name.
- Select the Table to report on.
- Choose the Report Type (bar, pie, list, etc.).
- Configure the Group By field (x-axis for bar charts, slices for pie).
- Add Filters to limit the data (e.g., only last 30 days, only P1).
- Set Aggregation (Count, Sum, Average).
- Click Run to preview, then Save.
- Click Share to publish to specific users or groups.
Dashboards
✓ DoneWhat are Dashboards?
Dashboards are configurable pages that display multiple reports, widgets, and data visualisations in a single view. They provide at-a-glance operational visibility for managers, teams, and executives.
- Navigate to
Reports > DashboardsorSelf-Service > Dashboards. - Click New → enter a name.
- Choose a Layout (1-column, 2-column, 3-column, etc.).
- Click the + button to add widgets.
- Select Report to add an existing report, or choose other widget types.
- Resize and rearrange widgets by dragging.
- Click Share to grant access to specific users or groups.
- Use Set as Homepage to make it the default landing page for a group.
| Widget Type | Use Case |
|---|---|
| Report | Any saved report (chart, list, score) |
| Gauge | KPI with threshold colours (green/amber/red) |
| Clock | Current time for global teams |
| URL | Embed an external webpage |
| HTML | Custom formatted text or announcements |
Service Level Agreements (SLAs)
✓ DoneWhat is an SLA?
A Service Level Agreement defines the committed response and resolution times for IT services. In ServiceNow, SLAs automatically track whether incidents and requests are being handled within agreed timeframes and trigger escalations when breaches occur.
SLA Components
| Component | Purpose |
|---|---|
| SLA Definition | The template — name, target time, conditions, schedule |
| Duration | How long the SLA allows (e.g., 4 Hours) |
| Schedule | Business hours or 24/7 — excludes non-working time from the clock |
| Start Condition | When the SLA clock starts (e.g., State = New) |
| Stop Condition | When the SLA is met (e.g., State = Resolved) |
| Pause Condition | Clock pauses (e.g., State = On Hold — waiting for user) |
| Breach Condition | When SLA is breached (clock reaches 100%) |
- Navigate to
Service Level Management > SLA > SLA Definitions. - Click New.
- Set the Name, Table, and Type (Response/Resolution).
- Set the Duration (e.g., 4 Hours).
- Select a Schedule (e.g., 8am–6pm Mon–Fri).
- Define Start, Pause, Stop, Reset conditions.
- Add Workflow or Notifications for breach alerts.
- Save and test on a real incident.
SLA & Metric Definitions
✓ DoneOLA vs SLA vs UC
| Type | Full Name | Parties | Example |
|---|---|---|---|
| SLA | Service Level Agreement | IT provider ↔ Business customer | P1 resolved in 4 hours |
| OLA | Operational Level Agreement | IT team ↔ IT team | Network team responds to handoff in 30 min |
| UC | Underpinning Contract | IT provider ↔ External vendor | Vendor resolves hardware within 8 hours |
Metric Definitions
Metric Definitions work alongside SLAs to track additional time-based measurements on any field transition. They're useful for measuring things that aren't covered by SLAs — like 'time an incident spent in On Hold state'.
- Navigate to
Metrics > Definitions. - Click New.
- Set the Table and the Field to track.
- Define the Start and End conditions.
- The metric automatically captures elapsed time between conditions for every matching record.
- Use the captured data in reports to identify bottlenecks.
Integration & Automation
Email, import sets, catalog items, workflows, and flow designer — connecting ServiceNow to the rest of your IT ecosystem.
Email Notifications
✓ DoneWhat are Notifications?
Notifications are automated email (or SMS/push) messages sent when specific events occur in ServiceNow. They inform users about record updates, approvals, SLA breaches, and assignment changes — keeping everyone in the loop without manual communication.
${number}, ${caller_id.name}) for dynamic content.Notification Components
| Component | Purpose |
|---|---|
| Name | Internal identifier for the notification |
| Table | Which table this notification applies to |
| When to send | Event name or condition (e.g., 'Incident Updated') |
| Who to notify | Recipients: specific users, field values, groups, or script |
| Subject | Email subject line (can use variables like ${number}) |
| Message body | HTML email content with dynamic variables |
| Send conditions | Conditions that must be true for the notification to send |
- Navigate to
System Notification > Email > Notifications. - Click New.
- Set the Name and Table.
- Choose the trigger: Record inserted/updated or Event fired.
- Set Send when conditions (e.g., Priority changes to 1).
- In the Who will receive tab: add users, field references (e.g., Caller), or groups.
- In the What it will contain tab: write the subject and body using notification variables.
- Test using Preview Notification before activating.
Subject: [${number}] Incident Assigned to You: ${short_description}
Body:
Hello ${assigned_to.first_name},
A Priority ${priority.getDisplayValue()} incident has been assigned to you.
Incident: ${number}
Summary: ${short_description}
Category: ${category.getDisplayValue()}
Please log in to review and begin work:
${URI_REF}
Thank you,
IT Service DeskEmail Notifications Using Events
✓ DoneEvent-Based vs Direct Notifications
Notifications can be triggered in two ways: directly (based on record insert/update conditions) or via the Event Queue (decoupled from record saves, fired explicitly by scripts).
| Direct Notification | Event-Based Notification |
|---|---|
| Triggered automatically by record save conditions | Triggered by explicitly queuing an event via script |
| Good for simple 'when record updates' scenarios | Good for complex conditions or reusable notification patterns |
| No additional setup needed | Requires: Script fires event → Event Registry → Notification listens for event |
How to Use Event-Based Notifications
- Create the event in the Event Registry:
System Policy > Events > Registry. - In a Business Rule or Script, fire the event:
gs.eventQueue('incident.priority_escalated', current, gs.getUserID(), current.priority); - Create a Notification with Send When set to 'Event is fired'.
- Select the event name from the Event Registry.
- The notification fires whenever the event is queued.
Import Sets
✓ DoneWhat are Import Sets?
Import Sets allow you to load data from external sources (CSV, Excel, XML, JDBC, REST) into ServiceNow tables. They are the primary mechanism for bulk data loading — migrating legacy data, syncing HR records, or ingesting monitoring alerts.
u_) — a temporary holding area. (2) A Transform Map maps fields from the staging table to the target ServiceNow table (e.g., sys_user, incident). This two-stage process allows validation and transformation before data reaches production tables.Import Set Process
- Prepare your data file (CSV is most common).
- Navigate to
System Import Sets > Load Data. - Select Create table or choose an existing import set table.
- Upload your file — ServiceNow creates a staging table with your columns.
- The data is now in the staging table — not yet in the target table.
- Create a Transform Map to map staging columns to target fields.
- Run the transform:
System Import Sets > Run Transform. - Review the Transform Log for errors, skipped records, and successes.
| Transform Result | Meaning |
|---|---|
| Inserted | New record created in target table |
| Updated | Existing record found and updated |
| Skipped | Record ignored (usually duplicate or no match found) |
| Error | Record failed to import — check the error message |
Import Sets — Continuation
✓ DoneCoalesce Fields — Finding Existing Records
The Coalesce setting on a Transform Map field tells ServiceNow to use that field as a unique key for matching existing records. If a record with the same coalesce value exists, it's updated; if not, a new record is inserted.
// Example: Import Set Transform Map with coalesce
// Field: email (coalesce = true) maps to sys_user.email
// If sys_user with this email exists → UPDATE
// If not → INSERTData Source Configuration (Scheduled Imports)
For recurring imports (e.g., nightly HR sync), configure a Data Source:
- Navigate to
System Import Sets > Data Sources. - Click New and configure the source type (File, JDBC, REST, etc.).
- Link it to your Import Set Table and Transform Map.
- Create a Scheduled Import to run automatically (e.g., every night at 1 AM).
max_rows_per_import property set to process records in batches. This prevents timeout issues and keeps the system responsive.Import Sets — Transform Maps
✓ DoneTransform Map Deep Dive
Transform Maps are the intelligence layer of Import Sets — they define exactly how data flows from the staging table to the target table, including field mapping, data transformation, and conditional logic.
Transform Map Script Options
| Script Type | When it Runs | Use Case |
|---|---|---|
| onStart | Before any records are transformed | Set global variables, log import start |
| onBefore | Before each record is transformed | Validate or pre-process each row |
| onAfter | After each record is transformed | Post-processing, create related records |
| onComplete | After all records transformed | Send summary email, update import log |
| Field Script | Per-field transformation | Format phone numbers, map status codes |
// Field Script Example: Map legacy status codes to ServiceNow states
// Source field 'legacy_status' maps to target 'state'
// In the Transform Map field script:
if (source.legacy_status == 'OPEN') {
answer = '1'; // ServiceNow state: New
} else if (source.legacy_status == 'WIP') {
answer = '2'; // Work in Progress
} else if (source.legacy_status == 'CLOSED') {
answer = '3'; // Closed Complete
} else {
answer = '1'; // Default to New
}Catalog Items
✓ DoneQuick Reference: Catalog Architecture
This lesson consolidates catalog knowledge from an admin perspective, focusing on maintenance and governance rather than initial setup.
| Admin Task | Navigation | Notes |
|---|---|---|
| View all catalog items | Service Catalog > Catalog Definitions > Maintain Items | Filter by category or search by name |
| Manage categories | Service Catalog > Categories | Order numbers control display sequence |
| View active requests | Service Catalog > Open Requests | Filter by RITM state and assignment group |
| Catalog health dashboard | Service Catalog > Reports | Track request volume, SLA compliance, top items |
Catalog Item Governance Best Practices
- Set Availability restrictions — don't show hardware items to contractors who can't order them.
- Use Delivery Time fields to set user expectations and reduce 'Where is my request?' tickets.
- Review and retire catalog items annually — stale items confuse users and inflate the catalog.
- Link every item to a workflow or flow — orphan items with no automation create manual work for Service Desk.
- Enable No Quantity for one-time requests to prevent users from ordering 10 laptops by accident.
- Use Variable Sets for common fields — this ensures consistent data collection across items.
Workflows
✓ DoneWorkflow Quick Reference for Admins
This lesson consolidates workflow knowledge with a focus on production management and troubleshooting.
Workflow Administration Tasks
| Task | Navigation | Notes |
|---|---|---|
| View all workflows | Workflow > Workflow Editor | Filter by Table to find relevant workflows |
| See running contexts | Workflow > Active Contexts | Shows all currently running workflow instances |
| Cancel a stuck workflow | Active Contexts → open context → Cancel | Use with caution — cancellation is permanent |
| See workflow history | Workflow > All Contexts | Full history of all completed and cancelled contexts |
| Check for errors | System Logs > All → Source = Workflow | Critical for debugging production issues |
Workflow Versioning
ServiceNow keeps all previous versions of a workflow. Running contexts use the version that was published when they started — updating a workflow doesn't break in-flight contexts. New contexts use the latest published version.
// Workflow script to access catalog item variables
// In a 'Run Script' workflow activity:
var ritm = current; // current = the RITM record
var laptop_model = ritm.variables.laptop_model + '';
var justification = ritm.variables.business_justification + '';
// Send an email with variable data
gs.eventQueue('send.custom.notification', ritm, laptop_model, justification);Flow Designer
✓ DoneFlow Designer — Admin Best Practices
As you transition from Workflows to Flow Designer, here are the admin-level considerations for managing flows in production.
Flow vs Workflow — Migration Guidance
| Scenario | Recommendation |
|---|---|
| New automation requirement | Always use Flow Designer |
| Existing workflow works fine | Leave it — don't migrate for the sake of it |
| Existing workflow needs significant changes | Migrate to Flow Designer at that point |
| Complex multi-path approval chains | Flow Designer handles this better with If/Else blocks |
| Integration with external systems | Flow Designer — use pre-built Spokes |
Flow Designer Administration
- Manage all flows:
Process Automation > Flow Designer. - Check execution history: open a flow → Executions tab → click any execution for full log.
- Deactivate a flow: open it → toggle Active to Off.
- Flow versions: similar to workflows, flows maintain version history.
- Error handling: add Error Handler steps to flows that call external APIs — API calls can fail.
- Flow variables: use Flow Variables tab to define reusable data within a flow.
// Run Script action in Flow Designer
// 'inputs' holds values passed to the step
// 'outputs' is what you return
(function execute(inputs, outputs) {
var incidentNum = inputs.incident_number;
var gr = new GlideRecord('incident');
gr.addQuery('number', incidentNum);
gr.query();
if (gr.next()) {
outputs.caller_email = gr.caller_id.email + '';
outputs.priority = gr.priority + '';
}
})(inputs, outputs);📌 Section Summary
You have now completed the full ServiceNow Administration course. You understand the platform architecture, all major ITSM modules, configuration tools, scripting APIs, access control, reporting, SLAs, notifications, import sets, and automation — everything needed to manage a production ServiceNow environment and pass the CSA certification.