🚀

Getting Started

Your first steps into the ServiceNow ecosystem — setting up your environment and understanding the platform.

Lesson 1

ServiceNow Admin — What Will You Learn?

✓ Done

Course 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.

🧠 ServiceNow is a cloud-based Platform-as-a-Service (PaaS) that runs on a multi-instance architecture. Every customer gets their own dedicated instance hosted on ServiceNow's data centres. This is different from multi-tenant SaaS — your data and configuration are completely isolated from other customers.

Topics You Will Master

AreaKey Topics
Platform BasicsArchitecture, UI, Users, Groups, Roles
ITSM ModulesIncident, Problem, Change, Knowledge Management
Platform ConfigForms, Views, Dictionary, Update Sets, Tables
ScriptingClient Scripts, Business Rules, Script Includes, UI Policies
AutomationWorkflows, Flow Designer, Email Notifications, SLAs
IntegrationImport Sets, Transform Maps, REST
CatalogCatalog Items, Record Producers, Order Guides
💡 Get a free Personal Developer Instance (PDI) at developer.servicenow.com immediately. Every concept in this guide should be practised on your own instance.
Lesson 2

Introduction — Creating Your Developer Account

✓ Done

Why 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.

  1. Go to developer.servicenow.com
  2. Click Sign Up and fill in your personal details (name, email, location).
  3. Use a personal email address — not a work or college email.
  4. Verify your email address by clicking the link ServiceNow sends you.
  5. Log in and click Request Instance.
  6. Select the latest available release (e.g., Zurich/Xanadu).
  7. Wait 10–15 minutes — your instance URL will be emailed to you.
  8. Log in with username admin and your set password.
📝 Your PDI hibernates after inactivity. Log in at least once every 10 days to keep it active. If it hibernates, you can wake it from the developer portal — your data will still be there.
💼 Real-World Example: Your instance URL will look like: https://dev12345.service-now.com — this is your personal practice environment.
Lesson 3

Steps to Start Your ServiceNow Career

✓ Done

ServiceNow Career Pathways

ServiceNow has over 40 products and several career tracks. Understanding which path suits you helps you focus your learning effectively.

Career PathFocusEntry Certification
System AdministratorPlatform config, users, ITSM modulesCSA — Certified System Administrator
DeveloperScripting, custom apps, integrationsCAD — Certified Application Developer
ITSM ConsultantIncident, Problem, Change, SLAsCIS-ITSM — Certified Implementation Specialist
HR SpecialistHR Service DeliveryCIS-HR
Security OperationsSecOps, Vulnerability ResponseCIS-SecOps
Platform ArchitectEnterprise design, governanceCTA — Certified Technical Architect

Recommended Learning Path for Beginners

  1. Complete this administration course end-to-end.
  2. Set up your PDI and practise every topic hands-on.
  3. Complete the free ServiceNow Fundamentals course on nowlearning.servicenow.com.
  4. Attempt the CSA exam — 60 multiple-choice questions, 90 minutes, 70% passing score.
  5. After CSA, pursue CAD or a CIS specialisation based on your job role.
  6. Join the ServiceNow Community at community.servicenow.com for real-world support.
🔑 The CSA certification is the entry point for virtually all ServiceNow admin and developer roles. Most job descriptions list it as a requirement or strong preference.
🏗️

Platform Fundamentals

Core architecture, UI terminology, products, and user management — the foundation every admin must know.

Lesson 4

User Administration

✓ Done

Who 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.

🧠 ServiceNow's permission model follows: User → Group → Role → Application Access. A user is added to a group; the group holds roles; roles grant access to modules, tables, and records. This three-layer model provides flexible, scalable access control.

Key User Fields

FieldPurpose
User IDUnique login name (e.g., john.smith)
First / Last NameDisplay name throughout the platform
EmailUsed for notifications and login
DepartmentOrganisational unit
ManagerUsed for approval routing
ActiveUnchecked = user cannot log in
RolesDirect roles assigned to this user (not recommended — use groups instead)

Step-by-Step: Create a User

  1. Navigate to User Administration > Users.
  2. Click New.
  3. Fill in User ID, First Name, Last Name, and Email.
  4. Set Department and Manager.
  5. Click Submit.
  6. To set a password: open the user record → click Set Password in the top right.
  7. 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 RoleWhat it Grants
adminFull system access — use sparingly
itilStandard ITSM agent access (Incident, Problem, Change)
catalogAccess to manage Service Catalog items
approver_userCan approve requests
report_publisherCan publish reports
knowledgeCan create and manage Knowledge articles
💡 Never assign the 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.
💼 Real-World Example: At Waste Management (a real ServiceNow customer), IT admins created groups for each team: 'Network Team', 'Desktop Support', 'Service Desk'. Each group has the roles needed for their work, and users are simply added to the appropriate group when onboarded.
Lesson 5

User Interface — ServiceNow Terminology

✓ Done

The ServiceNow UI Structure

Understanding the UI terminology is essential — these terms come up constantly in admin work, documentation, and interviews.

UI ElementDescription
Banner/HeaderThe top strip with logo, search, notifications, and user menu
Application NavigatorThe left sidebar with all application menus and modules
Content FrameThe main area where records, lists, and forms are displayed
BreadcrumbsThe navigation path shown at the top of the content frame
ModuleA clickable link in the Application Navigator (e.g., 'All Incidents')
ApplicationA group of related modules (e.g., 'Incident Management')
List ViewTabular view showing multiple records at once
Form ViewDetailed view of a single record with all its fields
Related ListsTabs at the bottom of a form showing associated records

Useful Navigation Shortcuts

ShortcutAction
table_name.list in nav filterOpen any table's list view directly
table_name.do in nav filterOpen a new blank form for any table
sys_user.listOpen the Users list
incident.listOpen the Incidents list
Ctrl+Alt+GGlobal text search
📝 The Application Navigator filter box (top of left nav) is one of the most powerful tools in ServiceNow. Typing part of any module name instantly filters the nav — much faster than scrolling.
🧠 In ServiceNow's architecture, the content frame is an iFrame that loads application content independently of the navigation. This is why you can deep-link directly to records using their sys_id: https://instance.service-now.com/incident.do?sys_id=abc123
Lesson 6

ServiceNow Products

✓ Done

The 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 FamilyKey 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 EngineNo-code/low-code app builder, IntegrationHub, RPA
Security OperationsVulnerability 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
💡 As an admin, you will primarily work in ITSM, HR, and the core platform. But knowing the full product range makes you more valuable — clients often expand to new products and want admins who understand the ecosystem.
💼 Real-World Example: A company starting with ServiceNow typically buys ITSM first. After 1–2 years, they expand to ITOM (for infrastructure discovery), then HRSD (for employee services). Your admin skills apply across all products.
Lesson 7

ServiceNow Architecture

✓ Done

How 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.

🧠 ServiceNow uses MySQL as its underlying database with a proprietary abstraction layer called the Glide framework. The database contains over 6,000 tables, each representing a data entity. The Glide framework provides the ORM (Object-Relational Mapping), scripting APIs (GlideRecord, GlideSystem, etc.), and UI rendering layer.

The 3-Instance Architecture (Standard)

InstancePurposeWho Uses It
Development (Dev)Build and test new features, customisationsAdmins and developers
Test/UATUser acceptance testing before productionTesters, business stakeholders
Production (Prod)Live system used by all employeesAll end users

How Data Flows: User → Group → Role → Access

  1. Company purchases ServiceNow → receives instance URLs.
  2. Admin creates User accounts for each employee.
  3. Admin creates Groups (e.g., Network Team, Service Desk).
  4. Admin assigns Roles to Groups (e.g., itil role to Service Desk group).
  5. Users are added to Groups → they inherit all group roles.
  6. Roles control which modules, tables, and records users can see and edit.

Key Platform Concepts

ConceptDescription
InstanceYour dedicated ServiceNow environment (dev/test/prod)
Scope/ApplicationA container for customisations (Global or custom app scope)
Sys IDA unique 32-character identifier for every record in ServiceNow
TableA database entity (e.g., incident, sys_user, sc_cat_item)
GlideRecordThe server-side API for querying and manipulating tables
Update SetA container for capturing and transporting configuration changes
MID ServerA Java application installed on-premise that bridges ServiceNow to your network
🔑 Every record in ServiceNow has a sys_id — a unique 32-character GUID. This is the primary key used in all relationships, scripts, and API calls. Getting comfortable with sys_ids is fundamental to advanced admin work.
📋

IT Service Management (ITSM)

The core ITSM processes — Incident, Problem, Change, and Knowledge Management — built on ITIL best practices.

Lesson 8

Incident Management

✓ Done

What 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.

💼 Real-World Example: Your Wi-Fi stops working at home — that's an incident. At an organisation: an employee's laptop won't connect to the network, the email server goes down, or a business application throws an error. All are incidents.
🧠 ServiceNow Incident Management is built on ITIL v4 (Information Technology Infrastructure Library) best practices. ITIL defines incident management as a key process within the Service Operation lifecycle. Incidents are stored in the incident table, which extends the base task table.

Incident Lifecycle

StateMeaningWho Acts
NewIncident just created, not yet acknowledgedService Desk
In ProgressBeing actively investigated and workedAssigned Agent
On HoldWaiting for user, vendor, or third partyAssigned Agent
ResolvedFix applied, waiting for user confirmationAssigned Agent
ClosedUser confirmed, incident officially closedSystem/User

Key Incident Fields

FieldPurpose
NumberAuto-generated unique ID (INC0001234)
CallerWho reported the incident
Short DescriptionOne-line summary — crucial for search and reporting
Category / SubcategoryClassification for routing and metrics
PriorityCalculated from Impact × Urgency (P1–P5)
Assignment GroupTeam responsible for resolution
Assigned ToIndividual agent working the incident
StateCurrent lifecycle stage
Resolution NotesHow the incident was resolved (required to close)

Priority Matrix (Impact × Urgency)

High UrgencyMedium UrgencyLow Urgency
High ImpactP1 — CriticalP2 — HighP3 — Moderate
Medium ImpactP2 — HighP3 — ModerateP4 — Low
Low ImpactP3 — ModerateP4 — LowP5 — Planning
💡 P1 Incidents (Critical) require immediate response — typically within 15 minutes. Most organisations have a dedicated P1 war room process. As an admin, ensure your SLA definitions and escalation rules correctly handle P1 incidents.

Step-by-Step: Create an Incident

  1. Navigate to Incident > Create New.
  2. Set the Caller (who reported it).
  3. Enter a clear Short Description.
  4. Select Category and Subcategory.
  5. Set Impact and Urgency — Priority auto-calculates.
  6. Assign to the correct Assignment Group.
  7. Click Submit.
⚠️ Never close an incident without resolution notes. SLA reports, audit logs, and knowledge article creation all depend on resolution notes being filled in correctly.
Lesson 9

Problem Management

✓ Done

Incident vs Problem — The Critical Difference

Many people confuse incidents and problems. Here's the clear distinction:

IncidentProblem
DefinitionUnplanned interruption to a serviceRoot cause of one or more incidents
GoalRestore service ASAPFind and eliminate root cause permanently
SpeedUrgent — fix nowInvestigative — take time to find root cause
ExampleServer down — restart itWhy does the server keep going down?
💼 Real-World Example: Email server crashes every Monday morning (incident). Problem Management investigates and discovers the root cause: a scheduled backup job conflicts with a memory-intensive process at 7 AM Monday. Fixing the backup schedule eliminates the recurring incident.
🧠 Problems are stored in the problem table. A problem can have multiple linked Problem Tasks (assigned to different people for investigation) and results in a Known Error once the root cause is identified — even before a permanent fix exists.

Problem Lifecycle

StateDescription
OpenProblem raised, investigation starting
Known ErrorRoot cause identified, workaround available, permanent fix pending
Pending ChangeFix requires a Change Request — waiting for change window
ResolvedRoot cause eliminated, no further incidents expected
ClosedConfirmed 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.

💡 Linking Incidents to Problems to Changes to Knowledge Articles creates a powerful chain of traceability. This 'golden chain' is highly valued by ITIL-mature organisations and is a frequent CSA exam topic.
Lesson 10

Change Management

✓ Done

What 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.

💼 Real-World Example: Upgrading a database server, installing a security patch, deploying new application code, or migrating to a new data centre — all are changes that must go through the Change Management process.

Change Types

TypeDescriptionApproval RequiredExample
StandardPre-approved, low-risk, routineNo (pre-approved)Resetting a user password, routine patch
NormalPlanned change, requires full assessment and approvalYes — CAB approvalDeploying a new application version
EmergencyUrgent — must be implemented immediately to restore serviceYes — ECAB (Emergency CAB)Critical security patch for active exploit
🧠 ServiceNow's Change Management uses a Change Advisory Board (CAB) workflow where changes are reviewed by stakeholders before approval. The CAB Workbench module allows admins to manage CAB meetings, agendas, and bulk approvals. Changes are stored in the change_request table.

Change Lifecycle (Normal Change)

  1. New — Change request created with justification, risk, and implementation plan.
  2. Assess — Risk and impact assessed.
  3. Authorize — Sent to CAB for review and approval.
  4. Scheduled — Change window assigned and approved.
  5. Implement — Change implemented during the scheduled window.
  6. Review — Post-implementation review confirming success or documenting issues.
  7. Closed — Change officially closed.
⚠️ The most common cause of P1 incidents in production environments is unauthorised changes. Change Management exists to prevent this. As an admin, ensure your Change Management workflows enforce proper approvals before implementation.
Lesson 11

Change Management — Continuation

✓ Done

Change 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 LevelScore RangeTypical Action
Low0–30Streamlined approval — may skip full CAB
Moderate31–60Standard CAB review required
High61–80Senior management approval + detailed rollback plan
Critical81–100Executive 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.

📝 ServiceNow's Change Management integrates with CI (Configuration Item) records from the CMDB. When a change is raised, you attach the affected CIs — this creates a history of changes on each CI and allows impact analysis before approval.

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.

💡 For the CSA exam: know the three change types (Standard, Normal, Emergency), the change lifecycle stages, and the role of the CAB. These are heavily tested topics.
Lesson 12

Knowledge Management

✓ Done

What 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.

💼 Real-World Example: Instead of every agent spending 30 minutes troubleshooting 'VPN not connecting', one agent solves it and writes a Knowledge Article. Every future agent finds the article in 30 seconds and resolves the incident in 5 minutes.
🧠 Knowledge Articles are stored in the kb_knowledge table. They belong to Knowledge Bases (kb_knowledge_base) and are organised into Knowledge Categories. ServiceNow's Knowledge Management follows the KCS (Knowledge-Centered Service) methodology.

Knowledge Article Lifecycle

StateDescription
DraftBeing written — not visible to users
ReviewSubmitted for peer review
PublishedLive and searchable by users
RetiredOutdated, removed from search but kept for history

Step-by-Step: Create a Knowledge Article

  1. Navigate to Knowledge > Create New.
  2. Select the Knowledge Base to publish to.
  3. Choose a Category.
  4. Enter a clear, searchable Short Description (this is the article title in search results).
  5. Write the article body — use clear headings, steps, and screenshots.
  6. Set Valid To date to ensure outdated articles are retired.
  7. Click Publish (or Submit for Review if approval workflow is configured).
💡 Configure Knowledge Feedback to let users rate articles. Low-rated articles need updating. High engagement on an article signals a high-frequency issue worth investigating as a Problem.
🔑 Link Knowledge Articles to Incidents! When closing an incident, agents should link the KB article used. This builds metrics on article effectiveness and is tracked by the 'KB Article Usage' report.
⚙️

Platform Configuration

Forms, views, dictionary, update sets, and table management — the tools that shape your ServiceNow environment.

Lesson 13

Form Design

✓ Done

What 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.

🧠 Forms are controlled by Form Layouts stored in sys_ui_section and sys_ui_element tables. Each layout is tied to a specific table and view. Changes made in Form Designer are configuration changes — they should be captured in an Update Set before moving to production.

Accessing Form Designer

  1. Open any form (e.g., an Incident record).
  2. Right-click on the form header bar (the grey bar at the top of the form).
  3. Select Configure > Form Layout.
  4. Alternatively, navigate directly: System UI > Forms.

Form Designer Actions

ActionHow To
Add a fieldDrag from Available Fields (left) to Selected Fields (right)
Remove a fieldDrag from Selected back to Available, or click X
Reorder fieldsDrag up/down in the Selected Fields column
Add a sectionClick 'Add Section' — sections create visual groupings with headings
Set 2-column layoutClick the 1-col/2-col toggle for each section
Add a separatorDrag the Separator element to create a horizontal line
⚠️ Changes in Form Designer affect ALL users who see that form in that view. Test changes in Dev before pushing to Prod. Consider creating a new View instead of modifying the default if different teams need different layouts.
💡 Use the Annotation field type (a read-only label) to add instructions directly on the form. This reduces training time and help desk calls about confusing fields.
Lesson 14

Form Sections & Views

✓ Done

What 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.

💼 Real-World Example: The Incident table has a 'Default' view for agents (all technical fields) and an 'Ess' view for end users (simplified — just Category, Description, and Attachments). End users don't need to see Priority, Sys ID, or Assignment Group.

Step-by-Step: Create a New View

  1. Open the table's Form Layout (right-click form header → Configure → Form Layout).
  2. In the View field at the top, click the dropdown and select New.
  3. Enter a name for the new view (e.g., 'Manager View' or 'Mobile View').
  4. Arrange fields specifically for this view's audience.
  5. Save.
📝 To control which view a user sees, use View Rules (covered in the next lesson) or add ?sysparm_view=view_name to the URL.
Lesson 15

View Rules

✓ Done

What 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.

💼 Real-World Example: When a Service Desk agent opens an Incident, they see the full 'Default' view with all technical fields. When a VIP user opens the same incident from the portal, the 'ESS' view shows only relevant customer-facing information.
  1. Navigate to System UI > View Rules.
  2. Click New.
  3. Set the Table (e.g., incident).
  4. Set the View to show when the condition is met.
  5. Set the Conditions (e.g., Role is 'itil', or State is 'Resolved').
  6. Set the Order — lower order = higher priority.
  7. Save and test by logging in as a user with the relevant role.
💡 View Rules are evaluated in order number sequence. The first matching rule wins. Always put most-specific rules at lower order numbers.
Lesson 16

Dictionary Properties

✓ Done

What 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 entries are stored in the sys_dictionary table. Every field in ServiceNow — whether on the Incident table, User table, or any custom table — has a corresponding dictionary entry that defines its metadata. Modifying dictionary entries is a powerful but risky admin action.

Dictionary Entry Key Properties

PropertyDescriptionExample
Column LabelField display name users see'Short Description'
Column NameDatabase field name (internal)'short_description'
TypeData type (String, Integer, Reference, etc.)String
Max LengthMaximum characters allowed160 for Short Description
MandatoryWhether field must be filled to saveYes for Short Description
Default ValueValue pre-populated when form loads'Unknown' for Category
Read OnlyPrevents users from editing the fieldTrue for Number field
Dependent FieldField only shows when another field has a specific valueSubcategory depends on Category
  1. Navigate to System Definition > Dictionary.
  2. Filter by Table name to find fields for a specific table.
  3. Click a dictionary entry to open and modify it.
  4. Common changes: update the Label, set/remove Mandatory, change Max Length.
  5. Always capture dictionary changes in an Update Set before making them.
⚠️ Reducing the Max Length of a field that already has data longer than the new limit can corrupt existing records. Always check data before shrinking field lengths.
Lesson 17

Dictionary Properties — Continuation

✓ Done

Field Types Reference

TypeDescriptionStored As
StringFree text fieldVARCHAR
IntegerWhole numbersINT
DecimalNumbers with decimal placesDECIMAL
BooleanTrue/False checkboxTINYINT(1)
DateDate only (no time)DATE
Date/TimeDate and timeDATETIME
ReferenceLink to another table recordVARCHAR (stores sys_id)
List (Glide List)Multiple references to another tableVARCHAR (comma-separated sys_ids)
ChoiceSelect box from a defined listVARCHAR
JournalAppend-only work notes / commentsSeparate journal table
HTMLRich text editorTEXT
Translated TextSupports multiple languagesVARCHAR 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.

💡 Use the Dependent field feature to create cascading dropdowns (e.g., Subcategory options change based on which Category is selected). This keeps forms clean and reduces incorrect selections.
Lesson 18

Process Flow

✓ Done

What 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.

💼 Real-World Example: On an Incident form, the process flow shows: New → In Progress → On Hold → Resolved → Closed. The current state is highlighted. This visual indicator reduces user confusion about record status.
  1. Navigate to System Definition > Process Flow.
  2. Click New.
  3. Set the Table (e.g., incident).
  4. Add stages and map them to the table's State field values.
  5. Save, then add the Process Flow formatter to the form layout via Form Designer.
📝 Process Flows work alongside the existing State field — they're purely visual. You can customise colours and icons for each stage to make the flow more intuitive for end users.
Lesson 19

Child Tables (Extended Tables)

✓ Done

Table 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.

🧠 The base table in ServiceNow is task. Incident, Problem, Change Request, Service Catalog Task, and many others all extend the task table. This means they inherit common fields (Number, State, Assigned To, Priority, etc.) and can use shared workflows, business rules, and reports.
Parent TableChild Tables (examples)
taskincident, problem, change_request, sc_task, hr_case, sn_customerservice_case
sc_cat_itemsc_cat_item_producer (Record Producer), sc_cat_item_guide (Order Guide)
cmdb_cicmdb_ci_server, cmdb_ci_computer, cmdb_ci_network_gear
sys_user_groupGroup (all groups extend this)
💼 Real-World Example: A Business Rule written on the task table fires for Incidents, Problems, Changes, and ALL other task extensions — giving you broad coverage with a single rule. Conversely, a Business Rule on incident only fires for Incidents.
💡 When creating custom tables, consider whether they should extend an existing table. Extending 'task' gives you state management, assignment, SLAs, approvals, and work notes for free.
Lesson 20

Data Lookup Rules

✓ Done

What 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.

💼 Real-World Example: When an Incident is created with Category = 'Network' and Subcategory = 'VPN', a Data Lookup Rule automatically sets Assignment Group = 'Network Team' and Priority = 3. Agents don't have to manually set these fields.
  1. Navigate to System Policy > Data Lookup Rules (or search 'Data Lookup').
  2. Click New.
  3. Set the Table (e.g., incident).
  4. Set the Field to set (e.g., assignment_group).
  5. Add Match Conditions (e.g., category = 'network' AND subcategory = 'vpn').
  6. Set the Value to assign (e.g., sys_id of Network Team group).
  7. Set the Order — lower order = evaluated first.
  8. Test by creating an incident with matching values.
📝 Data Lookup Rules run server-side on save — they're like Business Rules but configurable without scripting. They're ideal for routing and auto-categorisation logic that doesn't need complex conditional logic.
💻

Development Fundamentals

Scripting and configuration tools that make ServiceNow truly customisable — the skills that separate good admins from great ones.

Lesson 21

Update Sets

✓ Done

What 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.

🧠 Update Sets capture changes to the sys_update_xml table. Every configuration change (form layouts, business rules, client scripts, etc.) generates an XML record in the current Update Set. These XML records can be exported as a file and imported into another instance. Note: Update Sets capture configuration, not data (they don't move incident records, users, etc.).

What Update Sets DO and DON'T Capture

Captured ✅NOT Captured ❌
Business Rules, Client Scripts, UI PoliciesIncident/Problem/Change records (data)
Form layouts, Dictionary changesUser accounts
Workflows, Flow Designer flowsGroup memberships
Catalog Items, VariablesImport Set data
Notifications, SLA definitionsReport filters (personal)
ACLs, RolesScheduled job execution history

Step-by-Step: Using Update Sets

  1. Navigate to System Update Sets > Local Update Sets.
  2. Click New → give it a descriptive name (e.g., 'INC-123 Fix Priority Field').
  3. Set it as your Current Update Set (click 'Make Current').
  4. Make all your configuration changes — they are automatically captured.
  5. When done, open the Update Set and click Complete.
  6. Click Export to XML to download the update set file.
  7. In the target instance: System Update Sets > Retrieved Update Sets → Import XML.
  8. Click Preview to check for conflicts, then Commit.
⚠️ Always Preview an Update Set before Committing to production. The preview step shows conflicts with existing customisations and lets you resolve them safely.
Lesson 22

Tables & Filters

✓ Done

Working 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

MethodHow
Application Navigator filterType table_name.list (e.g., incident.list)
System Definition > TablesBrowse all tables, view field definitions
URLhttps://instance.service-now.com/table_name.list

Building List Filters

The Filter Builder (breadcrumb area above a list) lets you build complex queries visually:

  1. Click the funnel icon above any list to open the Filter Builder.
  2. Add conditions: Field + Operator + Value.
  3. Use AND for all conditions to be true, OR for any.
  4. Click Run to apply the filter.
  5. 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);
}
💡 Learn GlideRecord thoroughly — it's the most frequently used API in all ServiceNow scripting. Almost every Business Rule, Script Include, and Scheduled Job uses GlideRecord.
Lesson 23

Client vs Server — Understanding Script Execution

✓ Done

The 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-SideServer-Side
Where it runsUser's browser (JavaScript)ServiceNow server (Rhino JS engine)
API availableg_form, g_user, g_list, GlideAjaxGlideRecord, GlideSystem (gs), GlideUser
Can access DB?No (only via GlideAjax call to server)Yes — direct database access
Script typesClient Scripts, UI Policies, UI Actions (client)Business Rules, Script Includes, Scheduled Jobs
Runs when?On form load, field change, submitOn database insert, update, delete, query
🧠 The architectural reason for this split: client-side scripts run in the browser for instant UI responsiveness (no server round-trip). Server-side scripts run on the server for database operations, business logic, and security enforcement. You cannot use GlideRecord in a Client Script — it has no database access.
💼 Real-World Example: If you want to look up a user's manager when a field changes: you need GlideAjax — a client-side script that makes an asynchronous call to a server-side Script Include, which queries the database and returns the result to the client.
// 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);
    });
}
Lesson 24

Client Scripts

✓ Done

What 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

TypeWhen it RunsSignatureCommon Use
onLoadWhen the form first loadsfunction onLoad() {}Hide fields, set defaults, pre-populate values
onChangeWhen a specific field value changesfunction onChange(control, oldValue, newValue, isLoading) {}Show/hide related fields, validate input, look up data
onSubmitWhen the user clicks Submitfunction onSubmit() { return true/false; }Final validation — return false to block submission
onCellEditWhen a cell in a list is editedfunction onCellEdit(sysIDs, table, oldValues, newValue, callback) {}Validate list edits

g_form API Reference

MethodPurposeExample
g_form.getValue('field')Get a field's current valueg_form.getValue('priority')
g_form.setValue('field', val)Set a field valueg_form.setValue('state', '6')
g_form.setVisible('field', bool)Show or hide a fieldg_form.setVisible('close_notes', true)
g_form.setMandatory('field', bool)Make mandatory or optionalg_form.setMandatory('reason', true)
g_form.setReadOnly('field', bool)Make read-onlyg_form.setReadOnly('number', true)
g_form.showFieldMsg('field', msg, type)Show info/error under fieldg_form.showFieldMsg('email', 'Invalid format', 'error')
g_form.clearValue('field')Clear a fieldg_form.clearValue('assignment_group')
g_form.addOption('field', val, label)Add a choice optiong_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);
    }
}
💡 Always check 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.
Lesson 25

UI Policy

✓ Done

What 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

ScenarioUse UI PolicyUse Client Script
Show/hide field based on another field value✅ YesOnly if conditions are very complex
Make field mandatory based on state✅ YesOnly 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)
  1. Navigate to System UI > UI Policies (or right-click form → Configure → UI Policies).
  2. Click New.
  3. Set the Table.
  4. Set Conditions (the when clause).
  5. Enable Reverse if false to auto-undo when condition is no longer met.
  6. Save, then open the UI Policy Actions related list.
  7. Add actions: Field + Set Mandatory/Visible/Read-Only to true/false.
  8. Test on the form.
📝 UI Policies run client-side (in the browser) and are converted to JavaScript internally. They execute when the form loads AND whenever a watched field changes.
Lesson 26

UI Policy — Continuation

✓ Done

Advanced 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 PolicyCatalog UI Policy
Applies toStandard forms (Incident, Problem, etc.)Service Catalog request forms only
LocationSystem UI > UI PoliciesCatalog Item > Catalog UI Policies related list
Field referencesUses field names (e.g., 'priority')Uses variable names (e.g., 'urgency_level')
💡 Always set 'Reverse if false' on UI Policies that show/hide fields. Without it, once a field is hidden, it stays hidden even if the triggering condition becomes false again — which confuses users.
Lesson 27

UI Pages

✓ Done

What 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.

🧠 UI Pages are stored in the sys_ui_page table. They consist of: HTML (structure), Client Script (browser-side JavaScript), and Processing Script (server-side GlideScript). They use the Jelly templating language for server-side rendering.
💼 Real-World Example: A custom 'Bulk Update' UI Page that lets agents select 20 incidents and update them all to 'Resolved' in one click — something the standard list view doesn't support natively.
  1. Navigate to System UI > UI Pages.
  2. Click New.
  3. Enter a Name (used in the URL: /instance.service-now.com/name.do).
  4. Write your HTML — use Jelly tags for dynamic server data.
  5. Write Client Script for browser interaction.
  6. Write Processing Script for server actions (form submissions).
  7. Access via URL: /your_page_name.do
📝 UI Pages are powerful but complex. For most custom interfaces, prefer Service Portal Widgets (modern) or UI Macros (simpler embeds). UI Pages are best for standalone custom applications within ServiceNow.
Lesson 28

UI Macros

✓ Done

What 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.

💼 Real-World Example: A 'Related Articles' UI Macro that displays relevant Knowledge Articles on an Incident form, automatically searched based on the incident's category. Embed it as a Form Formatter on any form that needs it.

UI Macro vs UI Page

UI MacroUI Page
PurposeReusable snippet embedded in other pagesStandalone full page
Standalone URLNoYes
Embedded in formYes — via Form FormatterPossible but unusual
ComplexitySimplerFull application capability
  1. Navigate to System UI > UI Macros.
  2. Click New.
  3. Enter a Name.
  4. Write your XML/Jelly template.
  5. To embed on a form: go to Form Design → add a Formatter element → select your macro.
Lesson 29

Data Policy

✓ Done

What 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.

🧠 Data Policies are stored in sys_data_policy2. They fire as a Business Rule equivalent — server-side — ensuring data integrity regardless of the access method. This is critical for data quality in integrations where records are created via REST API or Import Sets.
UI PolicyData 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 behaviourData integrity across ALL access methods
  1. Navigate to System Policy > Data Policies.
  2. Click New.
  3. Set the Table and Conditions.
  4. Add Data Policy Rules: Field + Mandatory/Read-Only.
  5. Enable Apply to Import Sets if you want enforcement during imports.
  6. Save and test.
💡 Use Data Policies for critical compliance fields — e.g., 'Risk Assessment must be completed before a Change can be Approved'. UI Policies alone won't prevent API-based bypasses.
🔧

Advanced Configuration

Business Rules, scripting, access control, reporting, and SLAs — the tools that define production-grade ServiceNow implementations.

Lesson 30

Business Rules

✓ Done

What 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.

🧠 Business Rules are stored in sys_script. They use the Rhino JavaScript engine server-side. The 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

WhenOrderUse Case
BeforeRuns before saveModify field values before database write (e.g., auto-format a phone number)
AfterRuns after saveTrigger workflows, create related records, send notifications
AsyncRuns after save, in backgroundLong-running operations that shouldn't delay the UI response
DisplayRuns when record is displayedModify 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);
}
⚠️ Avoid infinite loops in Business Rules. If a Business Rule updates a field on save, and that triggers another save, and that triggers another Business Rule... you get an infinite loop. Use current.setWorkflow(false) or check current.operation() to prevent this.
💡 Use Async Business Rules for anything that takes more than a second — sending emails, creating multiple records, or calling external APIs. Synchronous rules delay the user's save action.
Lesson 31

Script Includes

✓ Done

What 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.

🧠 Script Includes are stored in sys_script_include. They follow a class-based pattern using ServiceNow's 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

TypeCalled FromPattern
RegularOther server scripts (Business Rules, Scheduled Jobs)var myObj = new MyScriptInclude(); myObj.doSomething();
Ajax-enabledClient Scripts via GlideAjaxExtends 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);
💡 Extract repeated logic from Business Rules into Script Includes. If you find yourself copy-pasting the same 10 lines across 5 Business Rules, it belongs in a Script Include.
Lesson 32

Access Controls (ACLs)

✓ Done

What 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.

🧠 ACLs are stored in sys_security_acl. They are evaluated in a security pipeline: when a user attempts to access a table or field, ServiceNow checks all matching ACLs in priority order. If no ACL grants access, access is denied (deny-by-default model). The admin role bypasses all ACLs.

ACL Components

ComponentDescription
OperationWhat action: read, write, create, delete, execute
Object TypeTable (row-level) or Field (column-level)
RoleRequired role(s) — user must have at least one
ConditionOptional record-level filter (e.g., 'only own records')
ScriptAdvanced — JavaScript for complex conditions

ACL Evaluation Order

  1. Is the user admin? → Full access, skip all ACL checks.
  2. Is security disabled for this session? → Full access.
  3. Find all ACL records matching the table/field and operation.
  4. Sort by specificity (field ACLs override table ACLs).
  5. For each ACL: check role → check condition → check script.
  6. If any matching ACL grants access → allowed.
  7. 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'));
⚠️ Be very careful when creating ACLs that restrict the 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.
Lesson 33

Reports & Dashboards — Reports

✓ Done

What 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

TypeBest ForExample
Bar ChartComparing categoriesIncidents by Assignment Group
Pie/DonutShowing proportionsIncidents by Priority (% each)
Line ChartTrends over timeIncidents created per day (last 30 days)
ListTabular data with detailsAll P1 Incidents in the last week
Single ScoreKPI metric displayTotal Open Incidents
HeatmapFrequency by two dimensionsIncidents by Day of Week × Hour of Day
Pivot TableCross-tabulationIncidents by Category × Priority
Box PlotDistribution analysisResolution time distribution by team
  1. Navigate to Reports > Create New (or click 'New' in Reports).
  2. Give the report a Name.
  3. Select the Table to report on.
  4. Choose the Report Type (bar, pie, list, etc.).
  5. Configure the Group By field (x-axis for bar charts, slices for pie).
  6. Add Filters to limit the data (e.g., only last 30 days, only P1).
  7. Set Aggregation (Count, Sum, Average).
  8. Click Run to preview, then Save.
  9. Click Share to publish to specific users or groups.
💡 Use the Trend report type with a daily grouping to create an incident trend chart. This is the most commonly requested report in any ITSM implementation review.
Lesson 34

Dashboards

✓ Done

What 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.

  1. Navigate to Reports > Dashboards or Self-Service > Dashboards.
  2. Click New → enter a name.
  3. Choose a Layout (1-column, 2-column, 3-column, etc.).
  4. Click the + button to add widgets.
  5. Select Report to add an existing report, or choose other widget types.
  6. Resize and rearrange widgets by dragging.
  7. Click Share to grant access to specific users or groups.
  8. Use Set as Homepage to make it the default landing page for a group.
Widget TypeUse Case
ReportAny saved report (chart, list, score)
GaugeKPI with threshold colours (green/amber/red)
ClockCurrent time for global teams
URLEmbed an external webpage
HTMLCustom formatted text or announcements
📝 Role-based dashboard access: users only see dashboards shared with their roles or groups. Create separate dashboards for Service Desk managers, agents, and executives — each with the metrics relevant to their job.
Lesson 35

Service Level Agreements (SLAs)

✓ Done

What 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.

💼 Real-World Example: SLA: 'All Priority 1 Incidents must be responded to within 15 minutes and resolved within 4 hours.' ServiceNow starts the SLA clock when the incident is created and triggers alerts at 50%, 75%, and 100% of the time limit.
🧠 SLAs in ServiceNow consist of SLA Definitions (the rules) and Task SLAs (the runtime instances attached to individual records). Task SLAs are stored in task_sla and are attached to any record extending the task table. The SLA engine recalculates timers based on schedules (business hours), pausing conditions (On Hold), and reset conditions.

SLA Components

ComponentPurpose
SLA DefinitionThe template — name, target time, conditions, schedule
DurationHow long the SLA allows (e.g., 4 Hours)
ScheduleBusiness hours or 24/7 — excludes non-working time from the clock
Start ConditionWhen the SLA clock starts (e.g., State = New)
Stop ConditionWhen the SLA is met (e.g., State = Resolved)
Pause ConditionClock pauses (e.g., State = On Hold — waiting for user)
Breach ConditionWhen SLA is breached (clock reaches 100%)
  1. Navigate to Service Level Management > SLA > SLA Definitions.
  2. Click New.
  3. Set the Name, Table, and Type (Response/Resolution).
  4. Set the Duration (e.g., 4 Hours).
  5. Select a Schedule (e.g., 8am–6pm Mon–Fri).
  6. Define Start, Pause, Stop, Reset conditions.
  7. Add Workflow or Notifications for breach alerts.
  8. Save and test on a real incident.
💡 Always attach a Schedule to SLAs. Without one, the clock runs 24/7 including weekends — a P3 incident created Friday at 5pm would breach its SLA by Saturday morning, even though no agents work then.
Lesson 36

SLA & Metric Definitions

✓ Done

OLA vs SLA vs UC

TypeFull NamePartiesExample
SLAService Level AgreementIT provider ↔ Business customerP1 resolved in 4 hours
OLAOperational Level AgreementIT team ↔ IT teamNetwork team responds to handoff in 30 min
UCUnderpinning ContractIT provider ↔ External vendorVendor 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'.

  1. Navigate to Metrics > Definitions.
  2. Click New.
  3. Set the Table and the Field to track.
  4. Define the Start and End conditions.
  5. The metric automatically captures elapsed time between conditions for every matching record.
  6. Use the captured data in reports to identify bottlenecks.
📝 Metric Definitions are excellent for capacity planning. Tracking 'time spent waiting for approval' across all change requests reveals whether the CAB process is a bottleneck in your change pipeline.
🔗

Integration & Automation

Email, import sets, catalog items, workflows, and flow designer — connecting ServiceNow to the rest of your IT ecosystem.

Lesson 37

Email Notifications

✓ Done

What 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.

🧠 Notifications are stored in sysevent_email_action. They are triggered by Events (stored in sysevent) or by direct database conditions. The email body uses notification variables (e.g., ${number}, ${caller_id.name}) for dynamic content.

Notification Components

ComponentPurpose
NameInternal identifier for the notification
TableWhich table this notification applies to
When to sendEvent name or condition (e.g., 'Incident Updated')
Who to notifyRecipients: specific users, field values, groups, or script
SubjectEmail subject line (can use variables like ${number})
Message bodyHTML email content with dynamic variables
Send conditionsConditions that must be true for the notification to send
  1. Navigate to System Notification > Email > Notifications.
  2. Click New.
  3. Set the Name and Table.
  4. Choose the trigger: Record inserted/updated or Event fired.
  5. Set Send when conditions (e.g., Priority changes to 1).
  6. In the Who will receive tab: add users, field references (e.g., Caller), or groups.
  7. In the What it will contain tab: write the subject and body using notification variables.
  8. 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 Desk
💡 Use Notification Digests for high-volume tables. Instead of sending one email per update, digest groups multiple updates into a single email — preventing notification fatigue.
Lesson 38

Email Notifications Using Events

✓ Done

Event-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 NotificationEvent-Based Notification
Triggered automatically by record save conditionsTriggered by explicitly queuing an event via script
Good for simple 'when record updates' scenariosGood for complex conditions or reusable notification patterns
No additional setup neededRequires: Script fires event → Event Registry → Notification listens for event

How to Use Event-Based Notifications

  1. Create the event in the Event Registry: System Policy > Events > Registry.
  2. In a Business Rule or Script, fire the event: gs.eventQueue('incident.priority_escalated', current, gs.getUserID(), current.priority);
  3. Create a Notification with Send When set to 'Event is fired'.
  4. Select the event name from the Event Registry.
  5. The notification fires whenever the event is queued.
💼 Real-World Example: When an Incident is escalated from P2 to P1 by a Business Rule, the rule fires the event 'incident.escalated_to_p1'. A notification listens for this event and sends alerts to the IT Manager, Service Desk Lead, and Assigned Agent simultaneously.
📝 Events are processed asynchronously from a queue. There may be a small delay between when the event is fired and when the notification is sent. For truly urgent alerts (P1 escalation), consider a direct notification in addition to the event.
Lesson 39

Import Sets

✓ Done

What 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.

🧠 Import Sets work in two stages: (1) Data is loaded into a staging table (import set table, prefix 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

  1. Prepare your data file (CSV is most common).
  2. Navigate to System Import Sets > Load Data.
  3. Select Create table or choose an existing import set table.
  4. Upload your file — ServiceNow creates a staging table with your columns.
  5. The data is now in the staging table — not yet in the target table.
  6. Create a Transform Map to map staging columns to target fields.
  7. Run the transform: System Import Sets > Run Transform.
  8. Review the Transform Log for errors, skipped records, and successes.
Transform ResultMeaning
InsertedNew record created in target table
UpdatedExisting record found and updated
SkippedRecord ignored (usually duplicate or no match found)
ErrorRecord failed to import — check the error message
💡 Always test your Import Set with a small sample file (5–10 rows) before running the full import. Check the Transform Log carefully — 'Skipped' records are silently ignored and can cause data quality issues if not investigated.
Lesson 40

Import Sets — Continuation

✓ Done

Coalesce 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.

💼 Real-World Example: When importing users from HR, coalesce on Employee ID or Email Address. If an employee already exists in sys_user with that email, their record is updated (not duplicated). Without coalesce, every import would create new records.
// 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 → INSERT

Data Source Configuration (Scheduled Imports)

For recurring imports (e.g., nightly HR sync), configure a Data Source:

  1. Navigate to System Import Sets > Data Sources.
  2. Click New and configure the source type (File, JDBC, REST, etc.).
  3. Link it to your Import Set Table and Transform Map.
  4. Create a Scheduled Import to run automatically (e.g., every night at 1 AM).
📝 For large imports (100,000+ records), use Scheduled Imports with the max_rows_per_import property set to process records in batches. This prevents timeout issues and keeps the system responsive.
Lesson 41

Import Sets — Transform Maps

✓ Done

Transform 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 TypeWhen it RunsUse Case
onStartBefore any records are transformedSet global variables, log import start
onBeforeBefore each record is transformedValidate or pre-process each row
onAfterAfter each record is transformedPost-processing, create related records
onCompleteAfter all records transformedSend summary email, update import log
Field ScriptPer-field transformationFormat 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
}
💡 Document your Transform Maps thoroughly — include comments explaining why specific mappings or transformations were made. Months later, when someone needs to modify the import, the context will be invaluable.
Lesson 42

Catalog Items

✓ Done

Quick Reference: Catalog Architecture

This lesson consolidates catalog knowledge from an admin perspective, focusing on maintenance and governance rather than initial setup.

Admin TaskNavigationNotes
View all catalog itemsService Catalog > Catalog Definitions > Maintain ItemsFilter by category or search by name
Manage categoriesService Catalog > CategoriesOrder numbers control display sequence
View active requestsService Catalog > Open RequestsFilter by RITM state and assignment group
Catalog health dashboardService Catalog > ReportsTrack 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.
📝 Run a monthly report on catalog items with zero requests in the last 90 days. These are candidates for retirement. Keeping the catalog lean and relevant is the #1 factor in portal adoption rates.
Lesson 43

Workflows

✓ Done

Workflow Quick Reference for Admins

This lesson consolidates workflow knowledge with a focus on production management and troubleshooting.

Workflow Administration Tasks

TaskNavigationNotes
View all workflowsWorkflow > Workflow EditorFilter by Table to find relevant workflows
See running contextsWorkflow > Active ContextsShows all currently running workflow instances
Cancel a stuck workflowActive Contexts → open context → CancelUse with caution — cancellation is permanent
See workflow historyWorkflow > All ContextsFull history of all completed and cancelled contexts
Check for errorsSystem Logs > All → Source = WorkflowCritical 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);
💡 Create a 'Workflow Testing' catalog item in your Dev instance that you can submit to test workflow changes without creating real requests. Attach a script that auto-closes the RITM after the test.
Lesson 44

Flow Designer

✓ Done

Flow 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

ScenarioRecommendation
New automation requirementAlways use Flow Designer
Existing workflow works fineLeave it — don't migrate for the sake of it
Existing workflow needs significant changesMigrate to Flow Designer at that point
Complex multi-path approval chainsFlow Designer handles this better with If/Else blocks
Integration with external systemsFlow Designer — use pre-built Spokes

Flow Designer Administration

  1. Manage all flows: Process Automation > Flow Designer.
  2. Check execution history: open a flow → Executions tab → click any execution for full log.
  3. Deactivate a flow: open it → toggle Active to Off.
  4. Flow versions: similar to workflows, flows maintain version history.
  5. Error handling: add Error Handler steps to flows that call external APIs — API calls can fail.
  6. 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.

💡 Next step: take the ServiceNow CSA practice exam on nowlearning.servicenow.com. You should be ready to score 80%+ after completing this guide.