ITSM — IT Service Management (Zero → Pro)
اقرأ أولاً: ../MASTER_ALL_IN_ONE_SUMMARY.md · ../html/MASTER_ALL_IN_ONE_SUMMARY.html
الدليل الشامل: ../MASTER_ALL_IN_ONE.md · ../html/MASTER_ALL_IN_ONE.html
ممارسة الشاشات: ../html/MASTER_PRACTICE_GUIDE_ALL_TOPICS.html
Australia · Scopex_786686_hr_leave
Australia Instance — نسخة أستراليا
| Setting | Value |
|---|---|
| Region / Datacenter | ServiceNow Australia |
| Release train | Zurich (Sep 2026 EA) · next EA: Brazil |
| URL base | {BASE} — replace with your instance (e.g. https://devXXXX.service-now.com) |
| Scope note | HR Leave app: x_786686_hr_leave |
| Guided Setup | {BASE}/now/guided-setup |
Direct Navigation URLs — روابط التنقل المباشرة
| Page / Tool | Navigation Path | Direct URL | Purpose |
|---|---|---|---|
| Incidents | All > Incident > All | {BASE}/incident_list.do | Incident queue |
| Create Incident | All > Incident > Create New | {BASE}/incident.do?sys_id=-1 | New record |
| Problems | All > Problem > All | {BASE}/problem_list.do | Problem management |
| Changes | All > Change > All | {BASE}/change_request_list.do | Change requests |
| Service Catalog | All > Service Catalog > Maintain Items | {BASE}/sc_cat_item_list.do | Catalog items |
| SLA Definitions | All > Service Level Management > SLA Definitions | {BASE}/contract_sla_list.do | SLA config |
| Assignment Rules | All > System Policy > Assignment | {BASE}/sysrule_assignment_list.do | Auto-assignment |
| Service Operations Workspace | Now Experience > SOW | {BASE}/now/sow/home | Agent workspace |
| Employee Center | Employee Center | {BASE}/esc | Employee self-service |
| Flow Designer | All > Process Automation > Flow Designer | {BASE}/now/flow-designer | Approvals & automation |
| Guided Setup ITSM | All > Guided Setup | {BASE}/now/guided-setup | Initial configuration |
Platform target: ServiceNow Australia (Sep 2026) · next EA: Brazil
URLs: ../../SERVICENOW_DIRECT_URLS_CATALOG.md · 1-week: ../../SERVICENOW_ONE_WEEK_STUDY_DEPLOY_AUSTRALIA.md
HR Leave: Scope x_786686_hr_leaveCIS-ITSM Professional Implementer Guide
الأسلوب: عربية + إنجليزية تكمّلان بعضهما — بدون ترجمة حرفية لأسماء الشاشات.
ملخص ووصف بالعربية (Arabic Summary)
| البند | الشرح |
|---|---|
| ما هو ITSM؟ | إدارة خدمات تقنية المعلومات للموظفين — حوادث، مشاكل، تغييرات، كتالوج، SLA، معرفة |
| لماذا مهم؟ | أساس معظم تطبيقات ServiceNow في المؤسسات — مكتب الخدمة والبوابة الذاتية |
| من يستخدمه؟ | موظف (طلب/بلاغ)، وكيل IT، مدير تغيير، مدير كتالوج |
| ماذا يغطي الملف؟ | §1–12 تقني · §13 خيارات · §14–15 تنفيذ · §16 صفحات + مختبر PDI |
ملخص في سطر: من بلاغ الحادث وطلب الكتالوج حتى SLA والتغيير والمعرفة — دورة ITIL على المنصة.
وصف مختصر: يشرح Incident، Problem، Change، Service Catalog، Knowledge، SOW، Employee Center، قواعد الإسناد، Flow للموافقات، وربط CMDB. مناسب CIS-ITSM والتنفيذ من الصفر.
1) Overview & Business Value
ITSM manages the full lifecycle of IT services for employees. — هو الموديول الأساسي الذي تبدأ منه معظم تطبيقات ServiceNow.
Core processes (ITIL 4 aligned):
- Incident Management — استعادة الخدمة بسرعة بعد عطل.
- Problem Management — معالجة السبب الجذري لمنع التكرار.
- Change Management — تغيير الخدمات بأمان ومخاطر محسوبة.
- Request Management — تلبية الطلبات عبر الكتالوج.
- Service Level Management (SLA) — قياس الالتزام بالأوقات.
- Knowledge Management — توثيق الحلول ونشر المعرفة.
2) Architecture & Data Model
Table hierarchy (المهم للامتحان):
task (base table)
├─ incident
├─ problem
├─ change_request
│ └─ (types: normal / standard / emergency)
├─ sc_request (Request)
│ └─ sc_req_item (RITM)
│ └─ sc_task (Catalog Task)
└─ sla / task_sla (SLA tracking)
Key tables:
| Table | الغرض |
|---|---|
| incident | الحوادث |
| problem | المشكلات |
| change_request | طلبات التغيير |
| change_task | مهام التغيير |
| sc_req_item | عناصر الطلب (RITM) |
| kb_knowledge | مقالات المعرفة |
| cmdb_ci | عناصر التهيئة (مرتبطة بكل العمليات) |
| task_sla | تتبّع الـ SLA |
كل جداول العمليات ترث من task، لذلك تتشارك الحقول الأساسية (number, state, assigned_to, priority).
3) Plugins & Activation — كيف تفتح وتفعّل
Most ITSM is active by default, but these add features:
| Plugin / App | Name |
|---|---|
| Incident Management | core (active by default) |
| Change Management | com.snc.change_management |
| Problem Management | com.snc.problem |
| ITSM Best Practice — Incident | com.snc.incident_management.best_practice |
| Continual Improvement Management | com.sn_cim |
| Vendor Manager Workspace | from Store |
| ITSM Now Assist (GenAI) | from Store (subscription) |
How to activate:
- Navigate: All > System Definition > Plugins — Open direct
- Search the plugin name.
- Right-click → Activate/Repair.
- For Store apps:
Navigate: All > System Applications > All Available Applications > All — Open direct
Then Install. — بعد التفعيل افتح Guided Setup لإكمال الإعداد. Navigate: All > Guided Setup > ITSM — Open direct
4) Guided Setup & All Options — كل الخيارات
ITSM Guided Setup sections:
- Company & Branding — الشعار والألوان.
- Email — إعداد البريد (inbound/outbound).
- Users, Groups & Roles — المستخدمون والفرق.
- Assignment — قواعد الإسناد (Assignment Rules).
- Notifications — الإشعارات.
- Incident — حالات، أولوية، SLA.
- Problem / Change / Request — لكلٍّ إعداده.
- Service Catalog — الكتالوج.
- Knowledge — قواعد المعرفة.
- CMDB — ربط عناصر التهيئة.
Important configuration options (افتحها كلها وجرّبها):
| Option | Navigate |
|---|---|
| Priority Lookup (Impact×Urgency) | All > Incident > Data Lookup … / dl_matcher · Open direct |
| Assignment Rules | All > System Policy > Assignment · Open direct |
| Inbound Email Actions | All > System Policy > Email > Inbound Actions · Open direct |
| SLA Definitions | All > Service Level Management > SLA > SLA Definitions · Open direct |
| Change Models / Types | All > Change > Administration · Open direct |
| State flows / State models | All > … > State Model · Open direct |
| Assignment lookup rules | Assignment Lookup Rules |
5) End-to-End Process Cycle
Incident lifecycle
New → In Progress → On Hold → Resolved → Closed
Major Incident هو حادث حرج يُصعّد ويُدار بفريق خاص.
Problem lifecycle
New → Assess → Root Cause Analysis → Fix in Progress → Resolved → Closed
Change lifecycle (Normal)
New → Assess → Authorize (CAB) → Scheduled → Implement → Review → Closed
Standard Change = معتمد مسبقًا من كتالوج التغيير (لا يحتاج CAB).
Emergency Change = طارئ، موافقة سريعة.
Request lifecycle
Catalog Item → REQ (sc_request) → RITM (sc_req_item) → Catalog Tasks (sc_task) → Closed
6) Development — التطوير
Business Rule example (auto-set priority note)
(function executeRule(current, previous) {
// before insert/update on incident
if (current.impact == 1 && current.urgency == 1) {
current.work_notes = 'Critical P1 — auto-flagged.';
}
})(current, previous);
Assignment via Script (Assignment Rule alternative)
// route network incidents to Network team
if (current.category == 'network') {
current.assignment_group.setDisplayValue('Network');
}
Client Script (onChange of category)
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue === '') return;
if (newValue === 'hardware') {
g_form.setMandatory('cmdb_ci', true);
}
}
Development topics to master:
- Flow Designer for approvals (Change CAB approval flow).
- SLA Definitions + conditions (start/stop/pause).
- Notifications + events.
- UI Policies vs Data Policies.
- Service Catalog items + variables + variable sets.
- Knowledge workflows (publish/retire).
SLA Definition (concept)
SLA يبدأ بشرط (Start)، يتوقف بشرط (Stop)، وقد يتوقف مؤقتًا (Pause) عند On Hold.
7) Administration — الإدارة
Key admin areas:
| Area | Navigate |
|---|---|
| Roles | All > User Administration > Roles (itil, itil_admin, sn_change_write…) · Open direct |
| Groups | All > User Administration > Groups · Open direct |
| Assignment Rules | All > System Policy > Assignment · Open direct |
| SLA | All > Service Level Management · Open direct |
| Data Lookup (priority) | dl_u_priority style tables |
| Inbound Email | All > System Mailboxes · Open direct |
| Update Sets | All > System Update Sets > Local Update Sets · Open direct |
Roles to know:
- itil — agent (يعمل على الحوادث/المشكلات).
- itil_admin — مدير ITIL.
- sn_change_write / change_manager — التغيير.
- knowledge / knowledge_admin — المعرفة.
8) Hands-on Labs — تدريب عملي
Lab 1 — Create & resolve an Incident:
1. Navigate: All > Incident > Create New. — Open direct
2. Set Caller, Short description, Impact=2, Urgency=2.
3. Watch Priority auto-calculate (Moderate).
4. Assign to a group, move to In Progress, then Resolved with resolution code.
Lab 2 — Build a Catalog Item + Request flow:
1. Navigate: All > Service Catalog > Catalog Definitions > Maintain Items. — Open direct
2. Create item “Laptop Request” with variables.
3. Order it from Service Portal → observe REQ/RITM/sc_task.
Lab 3 — Normal Change with CAB approval:
1. Create a Normal change.
2. Build/inspect the approval flow.
3. Move through Assess → Authorize → Scheduled → Implement → Closed.
Lab 4 — SLA:
1. Create SLA Definition on incident (Priority 1, 4h resolution).
2. Open a P1 incident, watch the task_sla timer.
Lab 5 — Knowledge:
1. Create a KB article, submit, publish.
2. Link it from an incident (resolution).
9) Best Practices & Common Mistakes
Best practices:
- Use Flow Designer, not legacy Workflow, for new approvals.
- Keep priority via Impact×Urgency matrix (don’t hardcode).
- Use Assignment Rules / Data Lookup instead of long scripts.
- Always relate the CI (cmdb_ci) for reporting and impact.
Common mistakes:
- خلط Standard و Normal change.
- نسيان شرط Stop في الـ SLA فيبقى يعمل.
- كتابة منطق إسناد في Business Rule بدل Assignment Rule.
- تعديل جداول OOTB بدل الإضافة عبر scope.
10) CIS-ITSM Exam Focus
High-yield topics:
- Task table hierarchy & inheritance.
- Incident vs Problem vs Change differences.
- Change types: Normal / Standard / Emergency + when each.
- Request model: REQ → RITM → sc_task.
- SLA: start/stop/pause conditions, retroactive start.
- Priority = Impact × Urgency (matrix/data lookup).
- Notifications: event-driven vs record-driven.
- Roles: itil, itil_admin, approver_user.
- Knowledge lifecycle and KCS basics.
Exam tip: — ركّز على أي جدول وأي حالة وأي دور — أسئلة CIS كثيرًا ما تختبر التسلسل والوراثة.
11) Portals, Workspaces, Role Hierarchy & Feature Catalog
ملاحظة عن الروابط:
URLs الـ Workspaces قد تختلف قليلًا حسب الإصدار والـ App Config.
إن لم يعمل رابط، افتح: All > Now Experience Framework > UI Builder وتحقّق من الـ path. — Open direct
11.1 Service Portals (end-user)
| Portal | URL | لمن |
|---|---|---|
| Service Portal (default) | /sp | كل المستخدمين |
| Employee Center | /esc | الموظفون (self-service) |
| Employee Center Pro | /esc (Pro features) | الموظفون |
| Knowledge Portal | /kb | الجميع |
| Service Catalog | /sp?id=sc_home | الجميع |
11.2 Workspaces (agents/managers)
| Workspace | URL | لمن |
|---|---|---|
| Service Operations Workspace (SOW) | /now/sow/home | agents (incident/problem/change/CMDB موحّد) |
| Agent Workspace (classic configurable) | /now/cwf/agent | agents |
| Change Management Workspace | /now/sow (Change view) | change managers |
| CMDB Workspace | /now/cmdb/… | CMDB/CI managers |
| Admin / Platform (classic UI) | /nav_to.do | admins/developers |
SOW هو الأحدث ويجمع Incident/Problem/Change/Request مع CMDB والـ AI في مكان واحد.
11.3 Role Hierarchy (تسلسل الأدوار)
admin
└─ itil_admin
└─ itil (agent — incident/problem/change/request)
├─ sn_change_write / change_manager
├─ problem_admin / problem_manager / problem_coordinator
├─ knowledge_admin → knowledge_manager → knowledge
├─ sn_incident_write
└─ approver_user (approvals only)
sn_request_read / catalog roles
ess (Employee Self Service — لا يملك itil)
itil يرث صلاحيات العمل على المهام؛ ess للموظف العادي بلا أدوار تشغيلية.
11.4 Full Business Cycle (موحّد ITSM)
Employee (/esc or /sp)
→ Catalog request OR Incident report
Request → REQ → RITM → sc_task → fulfilled
Incident → triage (priority = impact×urgency)
→ Agent (SOW) works the task
↳ if recurring → Problem (root cause)
↳ if change needed → Change (Normal/Std/Emergency → CAB)
→ SLA timers run (task_sla)
→ Resolve → document in Knowledge (KCS)
→ Close → CSAT survey → report/dashboards
11.5 Feature Catalog (كل ما يمكن تنفيذه)
Process features:
- Incident, Major Incident Management.
- Problem (RCA, Known Error, Workarounds).
- Change (Normal/Standard/Emergency, CAB, Change Calendar, Risk Assessment).
- Request (Catalog Items, Order Guides, Record Producers, Variable Sets).
- Service Level Management (SLA/OLA, definitions, schedules).
- Knowledge Management (KCS, versioning, approval publish/retire).
- Continual Improvement Management (CIM).
- Walk-up Experience.
- Vendor Manager Workspace.
- Incident Communications / Notifications.
Platform features used:
- Flow Designer (approvals/automation).
- Assignment Rules / Data Lookup.
- Service Catalog + Variable Sets.
- Surveys & Assessments (CSAT).
- Performance Analytics + Dashboards.
- Now Assist (GenAI: summarization, resolution).
- Virtual Agent (deflection).
- Predictive Intelligence (categorization/assignment).
12) End-to-End Implementation (Post-Activation)
اقرأ هذا بعد تفعيل البلجن.
هذا هو ترتيب التنفيذ الكامل خطوة بخطوة مع كل القوائم والصفحات والجداول.
12.1 Application Menus map (كل القوائم)
All > Incident
├─ Create New / Open / Open - Unassigned / Resolved / Closed / All
├─ Overview / Assigned to me / Critical Incidents Map
└─ Major Incidents
All > Problem
├─ Create New / Open / Known Errors / All
└─ Problem Tasks
All > Change
├─ Create New / Open / My Approvals / Schedule (Change Calendar)
├─ Normal / Standard / Emergency / Change Tasks
└─ Administration (Models, States, Risk, CAB Definition)
All > Service Catalog
├─ Catalogs / Categories / Catalog Items (Maintain Items)
├─ Order Guides / Record Producers / Variable Sets
└─ Catalog Policies / Catalog UI Policies
All > Knowledge
├─ Articles / Create New / My Knowledge / Knowledge Bases
└─ Knowledge Categories / Homepage
All > Service Level Management
├─ SLA Definitions / SLA / OLA / Workflow
└─ Active SLAs (task_sla)
All > Reports / Dashboards / Performance Analytics
12.2 Core tables to know (Tables & Lists)
| Open list via | Table |
|---|---|
| incident.list | incidents |
| problem.list | problems |
| change_request.list | changes |
| change_task.list | change tasks |
| sc_req_item.list | RITMs |
| sc_task.list | catalog tasks |
| task_sla.list | SLA timers |
| kb_knowledge.list | KB articles |
| cmdb_ci.list | CIs |
أي جدول تفتحه بكتابة اسمه التقني متبوعًا بـ .list في شريط التنقّل.
12.3 End-to-end build order (بعد التفعيل)
- Foundation data:
- Users/Groups/Roles.
All > User Administration > Users / Groups / Roles — Open direct
- Locations, Companies, Departments. - CMDB baseline:
- تأكد من وجود CIs (انظر CMDB.md). - Assignment:
- Assignment Rules أو Data Lookup للإسناد التلقائي.
All > System Policy > Assignment — Open direct - Priority:
- Priority Lookup Rules (Impact × Urgency).
All > Incident > … > Priority Lookup Rules / dl_matcher. — Open direct - SLA:
- SLA Definitions + schedules + conditions.
All > Service Level Management > SLA Definitions. — Open direct - Notifications + Events:
- All > System Notification > Email > Notifications. — Open direct - Service Catalog:
- Catalog → Categories → Items → Variables → Record Producers. - Knowledge:
- Knowledge Base → Categories → Article templates → publish workflow. - Change governance:
- Change Models, Risk Assessment, CAB Definition, Change Calendar. - Flows:
- Flow Designer approvals (Change, Request).
All > Process Automation > Flow Designer. — Open direct - UI/UX:
- Service Portal /sp, Employee Center /esc.
- Service Operations Workspace /now/sow/home. - Reporting:
- Reports, Dashboards, PA indicators. - Test + Deploy:
- ATF tests, Update Set, move to test→prod.
12.4 All configuration pages (الصفحات الإدارية)
| Config | Navigate |
|---|---|
| Incident properties | All > Incident > Administration > … / sys_properties · Open direct |
| Problem properties | All > Problem > Administration · Open direct |
| Change properties / models | All > Change > Administration · Open direct |
| Catalog properties | All > Service Catalog > Catalog Administration · Open direct |
| Knowledge properties | All > Knowledge > Administration > Properties · Open direct |
| SLA properties | All > Service Level Management > Administration · Open direct |
| Assignment rules | All > System Policy > Assignment · Open direct |
| Inbound email actions | All > System Policy > Email > Inbound Actions · Open direct |
Study path note: — للدراسة من الصفر اتبع الملف: STUDY_ROADMAP.md
13) Options & Instance Notes — بدائل وميزات قد لا تظهر
| Resource | Content |
|---|---|
| All modules | MODULE_OPTIONS_AND_INSTANCE_NOTES.md |
| Full scenarios + plugins + roles + customizations | MODULE_IMPLEMENTATION_PLAYBOOK.md → ITSM |
| Platform hub | ../00_TUTORIAL_OPTIONS_REFERENCE.md |
Quick activation: Plugins → Store → Guided Setup → Classic *.list
14) Implementation Scenarios, Options, Best Practices & Customizations
Master detail: MODULE_IMPLEMENTATION_PLAYBOOK.md → ITSM
14.1 Implementation scenarios
| ID | Scenario | Includes |
|---|---|---|
| S1 | Incident + Catalog | Help desk + self-service requests |
| S2 | Full ITIL | + Problem, Change, SLA, Knowledge |
| S3 | Enterprise | + SOW, Major Incident, PA, integrations |
S2 build order: Users/Roles → CMDB → Assignment → Priority matrix → SLA → Catalog → Change models/CAB → Flows → /esc + SOW → UAT → Update Set.
14.2 Options matrix (consultant choices)
| Area | Best practice (A) | Alternative (B) |
|---|---|---|
| Approvals | Flow Designer | Legacy Workflow |
| Assignment | Assignment Rules | BR (avoid) |
| Priority | Impact × Urgency | Manual |
| Agent UI | Service Operations Workspace | Classic lists |
| End user | Employee Center | Service Portal |
14.3 Plugins — activation checklist
| # | Plugin | Search / ID | Scenario |
|---|---|---|---|
| 1 | Incident | core | All |
| 2 | Change | com.snc.change_management | S2+ |
| 3 | Problem | com.snc.problem | S2+ |
| 4 | ITSM BP | Store | Optional |
| 5 | Now Assist | Store | Optional |
Navigate: Plugins → Guided Setup > ITSM
14.4 Roles, groups & security
| Role | Group example | Customize |
|---|---|---|
| itil | Service Desk L1 | Table/field ACLs |
| change_manager | CAB | Change approval |
| knowledge | KB team | KB write |
| Scoped x_* | App team | Extension tables only |
Develop: ACL scripts, user_criteria, domain separation (enterprise).
14.5 Common customizations (what to build)
| Type | Examples |
|---|---|
| Scoped app | Custom fields, catalog items |
| Flow | CAB, catalog fulfillment, major incident |
| BR / events | P1 notify (prefer OOTB) |
| Integration | Inbound email, REST, IntegrationHub |
| Portal | SP widgets, EC topics |
| Reporting | SLA breach, backlog PA |
14.6 Best practice decisions
- Standard Change for repetitive low-risk work.
- Always attach CI to incidents.
- SLA stop on Resolved — verify in UAT.
- Document chosen scenario (S1/S2/S3) in workshop sign-off.
14.7 Go-live checklist
- [ ] Plugins + Guided Setup done
- [ ] Assignment + Priority tested
- [ ] SLA timers verified
- [ ] Catalog + KB smoke test
- [ ] SOW/SP roles correct
- [ ] Update Set committed to test
15) Zero-to-Hero End-to-End Implementation (Scratch → Go-Live)
Framework: MODULE_ZERO_TO_HERO_CONSULTING.md
من ورشة اكتشاف حتى Service Desk + Catalog + Change يعمل على Production.
15.1 Business goals
| Goal | العربي |
|---|---|
| Restore service fast | استعادة الخدمة بسرعة (Incident) |
| Self-service | الموظف يطلب من الكتالوج بدون مكالمة |
| Controlled change | تغييرات آمنة مع موافقات |
| SLA accountability | قياس الالتزام بالوقت |
| Knowledge reuse | حلول متكررة في KB |
15.2 Phase 0 — Discover (Week 1)
- Map as-is: phone/email vs portal, change process, SLAs.
- Define tiers (L1/L2/L3), catalog scope, CAB members.
- Deliverable: ITSM charter + process diagrams.
15.3 Phase 1 — Activate (Week 2)
| Step | Action |
|---|---|
| 1 | PDI/sub-prod |
| 2 | Plugins: Change, Problem (if S2) |
| 3 | Guided Setup > ITSM |
| 4 | Update Set ITSM Wave 1 |
15.4 Phase 2 — Foundation (Week 2–3)
Users, groups, roles (itil, change_manager), companies, locations, CMDB sample CIs (CMDB.md).
15.5 Phase 3 — Core processes (Week 3–8)
| Week | Build |
|---|---|
| 3–4 | Assignment Rules, Priority matrix, Incident lifecycle |
| 4–5 | SLA Definitions + task_sla test |
| 5–6 | Catalog categories, items, Record Producers, flows |
| 6–7 | Change models, CAB Flow, Standard vs Normal |
| 7–8 | Problem/Known Error (if licensed), KB workflow |
15.6 Phase 4 — Channels (Week 8–10)
Employee Center /esc, Service Operations Workspace, email inbound actions.
15.7 Phase 5 — UAT (Week 10–11)
| Scenario | Expected |
|---|---|
| P1 incident | SLA starts, notify manager |
| Catalog laptop | REQ→RITM→fulfill |
| Normal change | CAB approve→implement |
| KB link | Resolve with article |
15.8 Phase 6 — Go-live (Week 12)
Hypercare, war room, daily backlog review.
15.9 Phase 7 — Operate
PA: MTTR, SLA breach %, catalog adoption, change success rate.
15.10 Master checklist
- [ ] Phases 0–6 complete · [ ] CMDB linked · [ ] Training done · [ ] Prod deploy
16) Full E2E Practice · Pages · Requirements · Options (AR + EN)
Extended reference: MODULE_FULL_E2E_PRACTICE.md · Consulting framework: MODULE_ZERO_TO_HERO_CONSULTING.md
هذا القسم يكمّل §15 بـ متطلبات الأعمال، كل الصفحات، كل الخيارات، دورة الاستشارة الكاملة، ومختبر PDI خطوة بخطوة.
16.1 Business goals & success criteria
| Goal (EN) | الهدف (AR) | KPI |
|---|---|---|
| Restore service fast | استعادة الخدمة بسرعة | MTTR, P1 resolution time |
| Self-service adoption | اعتماد الخدمة الذاتية | % incidents via portal vs phone |
| SLA compliance | الالتزام بـ SLA | % tasks meeting SLA |
| Controlled change | تغيير مُحكَم | Change success rate, emergency % |
| Knowledge reuse | إعادة استخدام المعرفة | KB linked to resolve % |
Why the client buys ITSM (consultant pitch):
One platform for employees to request services, agents to resolve, and managers to see SLA and change risk. — منصة واحدة للموظف (طلب/بلاغ)، للفريق (حل وتصعيد)، وللإدارة (SLA ومخاطر التغيير).
16.2 Functional & non-functional requirements
| ID | Requirement (EN) | المتطلب (AR) | Must/Should |
|---|---|---|---|
| FR-01 | Log incident with category, CI, caller | تسجيل حادث مع تصنيف وCI ومتصل | Must |
| FR-02 | Auto priority from Impact × Urgency | أولوية تلقائية من الأثر×الاستعجال | Must |
| FR-03 | Assignment to group/agent by rules | إسناد تلقائي حسب القواعد | Must |
| FR-04 | SLA start/pause/complete on task | SLA يبدأ/يتوقف/ينتهي مع المهمة | Must |
| FR-05 | Catalog order → REQ/RITM/tasks | طلب كتالوج → REQ/RITM/مهام | Must |
| FR-06 | Change types Normal/Standard/Emergency | أنواع تغيير مع موافقات | Should |
| FR-07 | Problem → Known Error → KB | مشكلة → خطأ معروف → معرفة | Should |
| FR-08 | Email-to-incident / inbound actions | بريد → حادث | Should |
| NFR-01 | Role-based access (itil vs ess) | صلاحيات حسب الدور | Must |
| NFR-02 | Audit on state changes | تدقيق تغيير الحالات | Must |
| NFR-03 | Mobile-friendly portal | بوابة متجاوبة | Should |
16.3 Full consultation cycle & deliverables
| Phase | Workshop / activity (EN) | النشاط (AR) | Deliverable |
|---|---|---|---|
| 0 | Executive kickoff | افتتاح مع الراعي | Charter, scope, timeline |
| 1 | Service desk as-is walkthrough | جولة على مكتب الخدمة الحالي | As-is process map, pain points |
| 2 | To-be ITIL alignment | محاذاة ITIL المستهدفة | To-be swimlanes, RACI |
| 3 | Requirements prioritization | أولوية المتطلبات | Backlog (MoSCoW), wireframes |
| 4 | Config sprint | سprints إعداد | Assignment rules, SLA, catalog doc |
| 5 | Integration design | تصميم التكامل | Email, LDAP/SSO, CMDB feed spec |
| 6 | UAT with real agents | UAT مع وكلاء حقيقيين | Signed test pack |
| 7 | Cutover + hypercare | تشغيل + دعم مكثف | Runbook, training deck |
| 8 | Continual improvement | تحسين مستمر | PA dashboards, CSI backlog |
Consultation questions (bilingual):
- How do users report issues today? (phone, email, walk-up)
كيف يبلّغ الموظفون عن المشاكل اليوم؟ - What are your P1/P2 definitions and who gets notified?
ما تعريف P1/P2 ومن يُنبَّه؟ - Which changes need CAB vs pre-approved standard?
أي تغييرات تحتاج CAB وأيها Standard؟ - What catalog items are wave-1 must-have?
ما عناصر الكتالوج الإلزامية للموجة الأولى؟
16.4 All implementation options (A / B / C)
| Decision area | Option A (recommended) | Option B | Option C | When to pick |
|---|---|---|---|---|
| Agent UI | Service Operations Workspace (SOW) | Classic Agent Workspace | Mixed | A if licensed; B for legacy teams |
| End-user channel | Employee Center /esc | Service Portal /sp | Email-only intake | A for modern HR/IT; B if SP mature |
| Approvals | Flow Designer | Workflow (legacy) | Email approval | Always prefer A for new builds |
| Priority | Data Lookup / Priority matrix | Manual only | Custom script | A for consistency |
| SLA engine | SLA Definitions + schedules | Manual tracking | External tool | A native |
| Change approval | CAB Flow + Change Workspace | Email CAB | No formal change | A for regulated orgs |
| Knowledge | KCS publish workflow | Direct publish | No KB phase 1 | A if repeat incidents high |
| CMDB link | Mandatory CI on certain categories | Optional CI | No CMDB | A if impact analysis needed |
Instance note: menus differ if plugins missing — see MODULE_OPTIONS_AND_INSTANCE_NOTES.md → ITSM.
16.5 All pages, menus & workspaces (Navigate)
| Area | Navigate path | Table / object | Primary role |
|---|---|---|---|
| Incidents — all | All > Incident > All · Open direct | incident | itil |
| Incidents — create | All > Incident > Create New · Open direct | incident | itil, ess (via portal) |
| Major incidents | All > Incident > Major Incidents · Open direct | incident | major_incident_manager |
| Problems | All > Problem > All · Open direct | problem | problem_manager |
| Known errors | All > Problem > Known Errors · Open direct | problem | problem_manager |
| Changes — all | All > Change > All · Open direct | change_request | change_manager |
| Change calendar | All > Change > Schedule · Open direct | change_request | change_manager |
| Change models | All > Change > Administration > Models · Open direct | chg_model | admin |
| Catalog items | All > Service Catalog > Maintain Items · Open direct | sc_cat_item | catalog_admin |
| Categories | All > Service Catalog > Categories · Open direct | sc_category | catalog_admin |
| Order guides | All > Service Catalog > Order Guides · Open direct | sc_cat_item (guide) | catalog_admin |
| Record producers | All > Service Catalog > Record Producers · Open direct | sc_cat_item | catalog_admin |
| Variable sets | All > Service Catalog > Variable Sets · Open direct | item_option_new_set | catalog_admin |
| SLA definitions | All > Service Level Management > SLA Definitions · Open direct | contract_sla | admin |
| Active SLAs | All > Service Level Management > SLA · Open direct | task_sla | admin |
| Assignment rules | All > System Policy > Rules > Assignment · Open direct | sysrule_assignment | admin |
| Inbound actions | All > System Policy > Actions > Inbound Actions · Open direct | sysevent_in_email_action | admin |
| Knowledge bases | All > Knowledge > Knowledge Bases · Open direct | kb_knowledge_base | knowledge_admin |
| Articles | All > Knowledge > Articles · Open direct | kb_knowledge | knowledge |
| Flow Designer | All > Process Automation > Flow Designer · Open direct | flows | admin/dev |
| Service Portal config | All > Service Portal > Portals · Open direct | sp_portal | admin |
| Employee Center | All > Employee Center > Configuration · Open direct | EC config | admin |
| SOW | /now/sow/home | workspace | itil |
| Service Portal | /sp | portal | end user |
| Employee Center | /esc | portal | end user |
| Lists (direct) | incident.list, change_request.list, … | — | all |
16.6 Full PDI practice lab (end-to-end — do not skip steps)
Lab goal: Incident + SLA + Catalog + Change + KB + security check.
Time: ~3–4 hours · Roles needed: admin, itil, ess (impersonation)
| Step | Action (EN) | الإجراء (AR) | Verify |
|---|---|---|---|
| 1 | Create group Service Desk L1, add your user | مجموعة مكتب خدمة | Group exists |
| 2 | Assign itil to agent user | دور itil للوكيل | Agent sees Incident menu |
| 3 | Option A: Assignment Rule — category Software → group | قاعدة إسناد | New incident routes |
| 4 | Set Impact=1, Urgency=1 on test incident | أثر واستعجال | Priority = 1 |
| 5 | Create SLA Definition P1 response 4h on incident | تعريف SLA | task_sla record created |
| 6 | Move incident to In Progress → On Hold → Resume | حالات SLA | Pause/resume works |
| 7 | Create catalog category + item (simple variable) | عنصر كتالوج | Item visible on /sp |
| 8 | Impersonate end user — order item | طلب من البوابة | REQ + RITM created |
| 9 | Fulfill RITM as agent | تنفيذ RITM | Request closed |
| 10 | Create Normal Change, attach to CI if CMDB exists | تغيير Normal | Approval requested |
| 11 | Option A: Approve via Flow notification | موافقة Flow | State → Scheduled |
| 12 | Publish KB article, link on resolve | مقال معرفة | Article on incident |
| 13 | Impersonate ess — confirm no Change menu | أمان ess | Access denied |
| 14 | Open SOW — same incident visible | SOW | Unified view |
| 15 | Export Update Set ITSM Lab 16 | Update Set | Ready for interview demo |
UAT scripts (sign-off):
| # | Scenario | Pass criteria |
|---|---|---|
| U1 | P1 incident | SLA breach warning, assignment correct |
| U2 | Catalog laptop request | End-to-end REQ closed |
| U3 | Normal change rejected | Stays in assess, no implement |
| U4 | KB deflection | User finds article in portal search |
16.7 Related pages by process (quick map)
Incident lifecycle pages:
Create → incident.do · Work → SOW or incident form · SLA → task_sla.list
Resolve → Close codes · Major → Major Incident workspace
Request lifecycle:
Order → /sp?id=sc_cat_item · REQ → sc_request.list · RITM → sc_req_item.list
Tasks → sc_task.list · Flow → Flow Designer execution
Change lifecycle:
Model → chg_model · Request → change_request · Tasks → change_task
Calendar → change_request (Schedule) · CAB → Flow approval task
16.8 Sign-off checklist (consulting)
- [ ] Requirements FR-01–FR-08 demonstrated in UAT
- [ ] Options document records A/B/C choices per area (§16.4)
- [ ] All §16.5 pages visited once by implementer
- [ ] RACI signed for incident owner, change manager, catalog admin
- [ ] Training completed for agents + end-user quick guide (AR+EN)
- [ ] Hypercare runbook includes Navigate paths for war room
§17 — Power User Playbook (ITSM)
Day-in-the-life recipes, role workflows, and 20 production-grade scripts.
ملف عملي مكثّف لكل دور — موظف، وكيل، مدير حادث/تغيير/مشكلة، مؤلف معرفة.
17.1 Personas — what each role does in a day
| Persona | Primary table(s) | Day-1 menus | Main outcome |
|---|---|---|---|
| Employee (End-user, ess) | incident, sc_request, sysapproval_approver | /esc Employee Center | Open request/incident, approve, check status |
| Service Desk Agent — Tier 1 (itil) | incident, kb_knowledge, sc_task | SOW /now/sow/home | Triage, fix < 15 min, deflect to KB |
| Tier 2 Specialist (itil + group) | incident, problem, task_ci | Incident form, Problem | Diagnose, link Problem, escalate |
| Major Incident Manager (major_incident_manager) | incident (MI flag), change_request | Major Incident Workspace | Declare MI, comms, post-mortem |
| Change Manager (change_manager / change_coordinator) | change_request, change_task, change_conflict | Change Workspace, CAB calendar | Approve / schedule / freeze windows |
| Problem Manager (problem_manager) | problem, kb_knowledge | Problem list, Known Errors | RCA, Known Error → KB |
| Knowledge Author (knowledge) | kb_knowledge | Knowledge Workspace | Author, retire, KCS publish |
| Process Owner (itil_admin) | All ITSM tables | Performance Analytics | KPIs, CSI backlog, governance |
لكل دور قائمة طاولة عمل خاصة. الدور الأكثر استعمالاً هو itil لوكلاء المكتب، وess لكل الموظفين تلقائيًا.
⚠️ لا تعطِ دور admin لوكلاء الإنتاج — استخدم أدوار ITSM المحددة.
17.2 End-user (Employee) — day in the life
Step-by-step on /esc (Employee Center):
| # | Action (EN) | الإجراء (AR) | Where |
|---|---|---|---|
| 1 | Open https:// |
افتح بوابة الموظف | Browser |
| 2 | Search “laptop” in unified search bar | بحث “laptop” | EC search |
| 3 | Click Order a Laptop (catalog item) | اختيار طلب لابتوب | Catalog |
| 4 | Fill model, justification, attach manager email if required | تعبئة النموذج وإرفاق التبرير | Item form |
| 5 | Submit → REQ created, RITM created, tasks generated | الإرسال — يولد REQ + RITM + مهام | Confirmation page |
| 6 | Track in “My Requests” tile | متابعة من بلاطة طلباتي | EC home |
| 7 | Report broken laptop via Get Help → Report an issue | بلاغ عطل من Get Help | EC |
| 8 | Set short_description, category Hardware, urgency 2 | وصف، فئة، استعجال | New incident |
| 9 | Attach screenshot (drag-drop on the form) | إرفاق صورة شاشة | Attachments |
| 10 | Browse KB: “How to reset Windows password” — read & close intent | تصفّح KB قبل التذكرة | KB tile |
| 11 | Approve an order: open approval, comment, Approve or Reject | اعتماد طلب — تعليق ثم قرار | My Approvals |
| 12 | Add comment to ongoing incident from EC → “Need update” | تعليق على حادث جاري | Incident detail |
Approval inbox (mobile/desktop):
/esc → My Approvals → click record → Comment → Approve | Reject
On mobile: Now Mobile app → Approvals tab → swipe right (approve) / left (reject)
⚠️ Employee never sees Change / Problem unless granted; that’s ess security working.
17.3 Tier 1 Agent recipes — first 15 minutes of an incident
Recipe A — Triage incoming incident (SOW)
Navigate: /now/sow/home → Lists → My Group's Work → New incident
1) Read short_description + caller VIP flag
2) Set Category (or accept Predictive Intelligence suggestion)
3) Confirm CI via "Find CI by short description" (§17.10.14)
4) Set Impact + Urgency → Priority computed via matrix
5) Reassign to right group if not your queue
6) Add work note: "Initial triage complete"
Recipe B — Use Now Assist Summarize Incident
// Pre-req: Now Assist for ITSM licensed + enabled
// On the incident form, click the "Summarize" button in the UI
// It calls the Generative AI controller and returns a single-paragraph synopsis
// To trigger programmatically (e.g. from a Flow):
var gr = new GlideRecord('incident');
gr.get('<sys_id>');
var summary = new sn_nowassist.NowAssistInline().summarize(gr);
gs.info('Summary: ' + summary);
Recipe C — Search KB and link the article
1) On the incident, side panel → Knowledge → "Suggest articles"
2) Predictive Intelligence ranks top 3 by short_description
3) Click "Attach" on the relevant article
4) The kb_use record is logged → analytics later
5) Add work note: "Sent KB0010234 to user; awaiting confirmation"
Recipe D — Resolve & set close code
State → Resolved
Close code → "Solved (Permanently)" | "Solved (Workaround)" | "User Education" | "Not reproducible"
Resolution notes → mandatory; auto-populated from Now Assist if licensed
Save → SLA stops, survey triggers (§17.10.19)
Recipe E — Escalate to Tier 2
Assignment group → <Tier 2 group>
State → In Progress (do NOT mark Pending)
Work note (private) → reason for escalation, what you tried, links to KB
Notify Assignee → checkbox
⚠️ Never use “On Hold” to dump on another team — that pauses SLA and hides the work.
17.4 Tier 2 Specialist recipes
Recipe A — Pick up & investigate
1) Filter incident list: Assignment Group is <my group> AND State != Resolved
2) Open oldest by priority, then by Opened
3) Run diagnostics referencing CI relationships (CMDB.md §17.3)
4) If pattern across multiple incidents → create Problem (Recipe B)
Recipe B — Create related Problem from one or many incidents
// Script Action on incident — "Create Problem from this incident"
(function createProblemFromIncidents(currentIncident) {
var prb = new GlideRecord('problem');
prb.initialize();
prb.short_description = 'Pattern: ' + currentIncident.short_description;
prb.description = 'Created from ' + currentIncident.number + '\n' + currentIncident.description;
prb.cmdb_ci = currentIncident.cmdb_ci;
prb.priority = currentIncident.priority;
prb.assignment_group = currentIncident.assignment_group;
prb.assigned_to = gs.getUserID();
var prbId = prb.insert();
// Link the incident
currentIncident.problem_id = prbId;
currentIncident.update();
gs.addInfoMessage(‘Created Problem ’ + prb.number);
return prbId;
})(current);
Recipe C — Link multiple related incidents to one Problem
// Background script — link last 5 password-reset incidents to a Problem
var problemId = '<problem_sys_id>';
var inc = new GlideRecord('incident');
inc.addQuery('short_description', 'CONTAINS', 'password reset');
inc.addQuery('state', '!=', 6); // not resolved
inc.orderByDesc('opened_at');
inc.setLimit(5);
inc.query();
while (inc.next()) {
inc.problem_id = problemId;
inc.update();
}
gs.info('Linked ' + inc.getRowCount() + ' incidents');
Recipe D — RCA template (paste into Problem description)
1. Symptoms : ...
2. Affected CIs : ...
3. First detected : <timestamp> by <source>
4. Investigation :
- Hypothesis 1 — Result
- Hypothesis 2 — Result
5. Root cause : ...
6. Workaround : ...
7. Permanent fix : <change_request number, if any>
8. Prevention : KB article, monitor, automation
نموذج RCA لا يتغيّر بين الحالات — استخدمه دائمًا لتضمن جودة موحدة.
17.5 Major Incident Manager — playbook
Declare a Major Incident:
1) On incident → Priority = 1 (Critical) → fill business impact
2) Click "Promote to Major Incident" (form button)
3) Choose MI Type (Candidate / Confirmed)
4) Notifications fire to MI distribution list (sys_user_group "Major Incident Comms")
5) MI Workspace opens → war-room timeline
During the war-room:
- Pin the MI tab → /now/major_incident/<sys_id>
- Run "Communications" workflow → Sends to status page + Teams + email
- Capture timeline entries every 15 min (auto-prompt)
- Link related incidents (mass-link via §17.10.3)
- Assign comms lead, technical lead, exec liaison
Status page comms snippet (post to public page via REST):
var r = new sn_ws.RESTMessageV2();
r.setEndpoint('https://api.statuspage.io/v1/pages/<pageId>/incidents');
r.setHttpMethod('POST');
r.setRequestHeader('Authorization', 'OAuth ' + gs.getProperty('statuspage.token'));
r.setRequestHeader('Content-Type', 'application/json');
r.setRequestBody(JSON.stringify({
incident: {
name: current.short_description.toString(),
status: 'investigating',
impact_override: 'critical',
body: 'We are investigating an issue affecting ' + current.cmdb_ci.name
}
}));
var resp = r.execute();
gs.info('Status page: ' + resp.getStatusCode());
Post-mortem (after MI close):
Within 5 business days:
1) Use Problem template (§17.4 Recipe D)
2) Hold blameless retro — record attendees in problem.work_notes
3) Action items become change_request OR problem_task
4) Publish KB article (Known Error) — link from problem.kb_knowledge
⚠️ Major Incident does NOT skip Change for the fix — emergency change still needs CAB chair approval.
17.6 Change Manager — full week loop
Monday — CAB calendar review:
Navigate: All > Change > Schedule
View: Week
Filter: State IN (Assess, Authorize, Scheduled) AND Type IN (Normal, Emergency)
Action: Open each → check Risk + Conflict
Tuesday — risk assessment script (auto-rate risk on insert):
// Business Rule: before insert on change_request — set risk score
(function riskScore() {
var score = 0;
if (current.type == 'emergency') score += 30;
if (current.cmdb_ci && current.cmdb_ci.business_criticality == '1') score += 20;
if (gs.daysBetween(current.start_date, current.end_date) > 1) score += 10;
var hasBackout = current.backout_plan && current.backout_plan.length > 50;
if (!hasBackout) score += 25;
var hasTestPlan = current.test_plan && current.test_plan.length > 50;
if (!hasTestPlan) score += 15;
current.risk = score >= 70 ? ‘high’ : (score >= 40 ? ‘moderate’ : ‘low’);
current.risk_value = score;
})();
Wednesday — conflict detection (via change_conflict):
// Script Action — find conflicts before CAB
(function findChangeConflict(chg) {
var conf = new GlideRecord('change_request');
conf.addQuery('cmdb_ci', chg.cmdb_ci);
conf.addQuery('sys_id', '!=', chg.sys_id);
conf.addQuery('start_date', '<=', chg.end_date);
conf.addQuery('end_date', '>=', chg.start_date);
conf.addQuery('state', 'IN', '-2,-3,-4'); // Assess, Authorize, Scheduled
conf.query();
var conflicts = [];
while (conf.next()) {
conflicts.push(conf.number + ' on ' + conf.cmdb_ci.name);
// Create change_conflict record
var c = new GlideRecord('change_conflict');
c.initialize();
c.change = chg.sys_id;
c.conflicting_change = conf.sys_id;
c.reason = 'Overlapping window on same CI';
c.insert();
}
if (conflicts.length) {
chg.work_notes = 'CONFLICTS DETECTED: ' + conflicts.join(', ');
chg.update();
}
})(current);
Thursday — freeze window enforcement:
// Business Rule before_insert/update on change_request
(function blockInFreeze() {
var freeze = new GlideRecord('change_freeze_window');
freeze.addActiveQuery();
freeze.addQuery('start_date', '<=', current.start_date);
freeze.addQuery('end_date', '>=', current.start_date);
freeze.query();
if (freeze.next() && current.type != 'emergency') {
gs.addErrorMessage('Change blocked: inside freeze window "' + freeze.name + '". Only emergency changes allowed.');
current.setAbortAction(true);
}
})();
Friday — post-implementation review (PIR):
After end_date passes:
1) Change → "Review" state
2) Fill close_code (Successful / Successful with issues / Unsuccessful)
3) Capture actual_start / actual_end
4) Link any incident created within 48h of change (regression detection)
5) Sign-off via approver → state Closed
أتمتة CAB توفر ساعات أسبوعية لمدير التغيير — لا تترك أي شيء يدوي.
17.7 Knowledge Author recipes
| # | Recipe | Steps |
|---|---|---|
| K1 | Create article from incident | Open incident → Side panel → “Create KB” → fills short/long desc from incident |
| K2 | Request review | KB article → State → “Review” → assigns to KB owner via Flow |
| K3 | Retire article | State → “Retired” → keeps history; users no longer see in search |
| K4 | Analytics on article hits | All > Knowledge > Analytics → views/votes/feedback per article · Open direct |
| K5 | Publish from template | New → Choose template (How-to / FAQ / Troubleshoot) → fill blocks |
KB workflow (Flow Designer) auto-archive after 365 days no use:
// Scheduled job — Monthly KB hygiene
var kb = new GlideRecord('kb_knowledge');
kb.addQuery('workflow_state', 'published');
kb.addQuery('sys_view_count', '<', 5);
kb.addQuery('sys_updated_on', '<', gs.daysAgo(365));
kb.query();
while (kb.next()) {
kb.workflow_state = 'retired';
kb.retired = gs.nowDateTime();
kb.work_notes = 'Auto-retired: 365 days inactive, <5 views';
kb.update();
}
gs.info('Retired ' + kb.getRowCount() + ' stale KB articles');
⚠️ Retire, don’t delete — articles may be cited from old incidents.
17.8 Process Owner (Continual Service Improvement)
| Activity | Cadence | Tool |
|---|---|---|
| KPI review (MTTR, FCR, SLA%) | Weekly | Performance Analytics dashboard |
| Top categories analysis | Monthly | Reports → group by category |
| Survey feedback review | Monthly | Survey results table |
| Process audit | Quarterly | GRC if licensed, else manual |
| Roadmap refresh | Bi-annual | CSI register (KB or custom table) |
دور Process Owner هو ضامن استمرار التحسين بعد Go-Live — بدونه يموت ITSM ببطء.
17.9 Quick-fire navigation cheatsheet
incident.list → all incidents (URL)
incident.do?sys_id=-1 → new incident form
sn_si_incident.list → security incidents (SecOps)
problem.list → problem records
change_request.list → all changes
change_request_calendar.do → CAB calendar
sc_req_item.list → request items (RITM)
kb_knowledge.list → all KB articles
contract_sla.list → SLA definitions
task_sla.list → live SLAs on tasks
/now/sow/home → Service Operations Workspace
/now/major_incident → Major Incident Workspace
/esc → Employee Center
/sp → Service Portal
/now/cwf/agent → Configurable Workspace agent home
17.10 Top 20 ITSM scripts — copy/paste ready
All scripts assume scope global unless stated. Adjust group/category sys_ids before running.
⚠️ Always test in dev first. Add try/catch where you’ll schedule daily.
1) Auto-assign by CI assignment group
// Business Rule — before insert/update on incident
// When: current.cmdb_ci changes
(function autoAssignByCI() {
if (!current.cmdb_ci) return;
var ci = new GlideRecord('cmdb_ci');
if (ci.get(current.cmdb_ci) && !ci.support_group.nil()) {
if (current.assignment_group.nil()) {
current.assignment_group = ci.support_group;
current.work_notes = 'Auto-assigned via CI support group: ' + ci.support_group.getDisplayValue();
}
}
})();
2) Auto-close resolved incident after 5 days
// Scheduled Job — daily 02:00
var gr = new GlideRecord('incident');
gr.addQuery('state', 6); // Resolved
gr.addQuery('resolved_at', '<', gs.daysAgo(5));
gr.query();
while (gr.next()) {
gr.state = 7; // Closed
gr.close_code = gr.close_code || 'Solved (Permanently)';
gr.work_notes = 'Auto-closed after 5 days in Resolved.';
gr.update();
}
gs.info('Auto-closed ' + gr.getRowCount() + ' incidents');
3) Major Incident detector — 5+ related incidents in 30 min
// Scheduled Job — every 5 min
var ga = new GlideAggregate('incident');
ga.addQuery('opened_at', '>', gs.minutesAgo(30));
ga.addQuery('state', '!=', 7);
ga.addAggregate('COUNT', 'cmdb_ci');
ga.groupBy('cmdb_ci');
ga.addHaving('COUNT', '>=', 5);
ga.query();
while (ga.next()) {
var ciId = ga.cmdb_ci.toString();
if (!ciId) continue;
var alreadyMI = new GlideRecord('incident');
alreadyMI.addQuery('cmdb_ci', ciId);
alreadyMI.addQuery('major_incident_state', '!=', '');
alreadyMI.addQuery('opened_at', '>', gs.hoursAgo(2));
alreadyMI.query();
if (alreadyMI.hasNext()) continue;
var seed = new GlideRecord(‘incident’);
seed.addQuery(‘cmdb_ci’, ciId);
seed.orderBy(‘opened_at’);
seed.setLimit(1);
seed.query();
if (seed.next()) {
seed.major_incident_state = ‘proposed’;
seed.update();
gs.eventQueue(‘major.incident.candidate’, seed, ga.getAggregate(‘COUNT’, ‘cmdb_ci’), ciId);
}
}
4) Reopen blocker if user replies via email
// Inbound Action — on incoming email matching incident
(function reopenIfUserReplied(email, current) {
if (current.state == 6 || current.state == 7) {
if (gs.daysBetween(current.resolved_at, gs.nowDateTime()) < 7) {
current.state = 2; // In Progress
current.reopen_count = (parseInt(current.reopen_count) || 0) + 1;
current.comments = 'Reopened via email reply:\n\n' + email.body_text;
current.work_notes = 'Auto-reopened: user replied within 7 days of resolution.';
current.update();
} else {
// Too old — create new incident, link
var clone = new GlideRecord('incident');
clone.initialize();
clone.short_description = '[Re-open requested] ' + current.short_description;
clone.description = email.body_text;
clone.parent_incident = current.sys_id;
clone.caller_id = current.caller_id;
clone.insert();
}
}
})(email, current);
5) CAB auto-bypass for Standard changes
// Business Rule — before insert on change_request
(function autoApproveStandard() {
if (current.type == 'standard') {
current.state = -1; // Implement (skip Assess + Authorize)
current.approval = 'approved';
current.work_notes = 'Auto-approved: Standard change from pre-approved template ' +
current.std_change_producer_version.getDisplayValue();
}
})();
6) CI relationship traverser — blast radius
// Script Include or Background script — find downstream CIs
function findBlastRadius(rootCiSysId, maxDepth) {
var visited = {};
var queue = [{id: rootCiSysId, depth: 0}];
var result = [];
while (queue.length) {
var node = queue.shift();
if (visited[node.id] || node.depth > (maxDepth || 5)) continue;
visited[node.id] = true;
result.push(node.id);
var rel = new GlideRecord('cmdb_rel_ci');
rel.addQuery('parent', node.id);
rel.query();
while (rel.next()) {
queue.push({id: rel.child.toString(), depth: node.depth + 1});
}
}
return result;
}
// Usage:
var blast = findBlastRadius('<ci_sys_id>', 4);
gs.info('Blast radius: ' + blast.length + ' downstream CIs');
7) SLA pause when assigned to vendor
// Business Rule — after update on incident
(function pauseSlaForVendor() {
if (current.assignment_group.getDisplayValue().toString().indexOf('Vendor') < 0) return;
var sla = new GlideRecord('task_sla');
sla.addQuery('task', current.sys_id);
sla.addQuery('active', true);
sla.addQuery('stage', '!=', 'paused');
sla.query();
while (sla.next()) {
sla.stage = 'paused';
sla.update();
}
current.work_notes = 'SLA paused (vendor handling).';
})();
8) KB article suggestion via AI Search
// On incident form — UI Action "Suggest KB"
var aisRoute = '/api/sn_ais/search';
var payload = {
indexes: ['kb_knowledge'],
query: g_form.getValue('short_description'),
size: 3
};
var ga = new GlideAjax('AISearchAjax');
ga.addParam('sysparm_name', 'search');
ga.addParam('sysparm_payload', JSON.stringify(payload));
ga.getXMLAnswer(function(answer) {
var hits = JSON.parse(answer);
var html = hits.map(function(h) { return '<li><a href="kb_view.do?sys_id=' + h.id + '">' + h.title + '</a></li>'; }).join('');
g_form.showFieldMsg('short_description', '<ul>' + html + '</ul>', 'info', true);
});
9) Bulk update stale incidents (>30d)
// Background script — close stale "Pending" incidents
var stale = new GlideRecord('incident');
stale.addQuery('state', 3); // On Hold / Pending
stale.addQuery('sys_updated_on', '<', gs.daysAgo(30));
stale.query();
while (stale.next()) {
stale.state = 6;
stale.close_code = 'Closed/Resolved by Caller';
stale.close_notes = 'Auto-closed: no activity 30 days. Reopen if needed.';
stale.update();
}
gs.info('Stale closed: ' + stale.getRowCount());
10) Change conflict detector — see §17.6 Wednesday script.
11) Outage announcement creator
// Script Action — when CI marked operational_status = "Non Operational"
(function createOutage(ci) {
var out = new GlideRecord('cmdb_ci_outage');
out.initialize();
out.cmdb_ci = ci.sys_id;
out.type = 'outage';
out.begin = gs.nowDateTime();
out.short_description = 'Outage on ' + ci.name;
out.message = 'Service ' + ci.name + ' is currently impacted. Engineering is engaged.';
var outId = out.insert();
// Public announcement
var ann = new GlideRecord(‘announcement’);
ann.initialize();
ann.title = ‘Service degraded: ’ + ci.name;
ann.message = out.message;
ann.style = ‘critical’;
ann.active = true;
ann.insert();
return outId;
})(current);
12) Top contributor leaderboard (weekly)
// Scheduled Job — weekly Mon 08:00
var ga = new GlideAggregate('incident');
ga.addQuery('resolved_at', '>=', gs.daysAgo(7));
ga.addAggregate('COUNT');
ga.groupBy('resolved_by');
ga.orderByAggregate('COUNT', 'desc');
ga.setLimit(5);
ga.query();
var board = [];
while (ga.next()) {
board.push({
agent: ga.resolved_by.getDisplayValue(),
resolved: ga.getAggregate('COUNT')
});
}
gs.eventQueue('itsm.leaderboard.weekly', null, JSON.stringify(board), '');
13) Trigger Now Assist resolution notes
// UI Action on incident — "Generate resolution notes"
(function {
if (!current.work_notes) {
gs.addErrorMessage('Add work notes first — model needs context.');
return;
}
var na = new sn_nowassist.NowAssistInline();
var notes = na.generateResolutionNotes(current);
current.close_notes = notes;
current.update();
gs.addInfoMessage('Resolution notes generated.');
})();
14) Auto-link CMDB CI by short description
// Business Rule — before insert on incident
(function linkCiBySD() {
if (!current.cmdb_ci.nil()) return;
var sd = (current.short_description || '').toString().toLowerCase();
var ci = new GlideRecord('cmdb_ci');
ci.addQuery('operational_status', '1');
ci.addEncodedQuery('nameLIKE' + sd.split(' ')[0]);
ci.setLimit(1);
ci.query();
if (ci.next()) {
current.cmdb_ci = ci.sys_id;
current.work_notes = 'CI auto-linked via short_description: ' + ci.name;
}
})();
15) Detect duplicate incident by similarity
// Business Rule — after insert on incident
(function flagDuplicates() {
var dup = new GlideRecord('incident');
dup.addQuery('caller_id', current.caller_id);
dup.addQuery('cmdb_ci', current.cmdb_ci);
dup.addQuery('opened_at', '>', gs.hoursAgo(2));
dup.addQuery('sys_id', '!=', current.sys_id);
dup.addQuery('state', '!=', 7);
dup.query();
if (dup.next()) {
current.parent_incident = dup.sys_id;
current.work_notes = 'Possible duplicate of ' + dup.number;
current.update();
}
})();
16) Auto-tag VIPs
// Business Rule — before insert on incident
(function tagVip() {
var u = new GlideRecord('sys_user');
if (u.get(current.caller_id) && (u.vip == true || u.vip == 'true')) {
current.priority = 1;
current.impact = 1;
current.urgency = 1;
current.assignment_group = gs.getProperty('itsm.vip.group');
current.work_notes = 'VIP caller — priority elevated, routed to VIP queue.';
}
})();
17) Mass-notify users on outage CI
// Script Action — outage_create event
(function notifyAffectedUsers(ci) {
// Find users with incidents on this CI in past 7d
var inc = new GlideRecord('incident');
inc.addQuery('cmdb_ci', ci.sys_id);
inc.addQuery('opened_at', '>', gs.daysAgo(7));
inc.query();
var users = {};
while (inc.next()) users[inc.caller_id.toString()] = true;
Object.keys(users).forEach(function(userId) {
gs.eventQueue(‘outage.notify.user’, null, userId, ci.sys_id);
});
})(current);
18) P1 escalation timer
// Scheduled Job — every 5 minutes
var p1 = new GlideRecord('incident');
p1.addQuery('priority', 1);
p1.addQuery('state', 'IN', '1,2'); // New, In Progress
p1.addQuery('opened_at', '<', gs.minutesAgo(30));
p1.addQuery('escalation', 0);
p1.query();
while (p1.next()) {
p1.escalation = 1;
p1.work_notes = 'Auto-escalated: P1 unresolved 30 minutes.';
p1.update();
gs.eventQueue('itsm.p1.escalate', p1, p1.assignment_group.toString(), '');
}
19) Survey trigger on close
// Business Rule — after update on incident, state changed to 7
(function triggerSurvey() {
if (current.state != 7 || previous.state == 7) return;
if (current.contact_type == 'self-service' || current.opened_by == current.caller_id) {
gs.eventQueue('asmt.send.survey', current, 'incident_satisfaction', current.caller_id.toString());
}
})();
20) Major incident dashboard refresher
// Scheduled Job — every 10 minutes
var ind = new GlideRecord('pa_indicators');
ind.addQuery('name', 'CONTAINS', 'Major Incident');
ind.query();
while (ind.next()) {
var dc = new sn_pa.PADataCollector();
dc.collectIndicator(ind.sys_id.toString());
}
gs.info('Refreshed ' + ind.getRowCount() + ' MI indicators');
17.11 Power-user keyboard shortcuts
| Key | Action |
|---|---|
| j then t | Jump to “Tasks” |
| Ctrl+i | Toggle Form view info |
| Alt+s | Save record |
| Alt+m | Insert and stay |
| g + g | Open Global search |
| Ctrl+Shift+J | Open JS background scripts |
اختصارات Forms مفيدة جدًا للوكلاء — اطبعها وعلقها بجانب الشاشة.
§18 — From-Scratch Implementation (Day 0 → Day 30)
A 30-day pragmatic ITSM rollout. Each day is independently sign-off-able.
خطة بناء ITSM من الصفر في 30 يومًا — كل يوم له مخرجات وتسليم.
18.1 Day 0 — Prep (the week before)
ITIL maturity self-assessment (score each 1–5):
| Process | Score | Notes |
|---|---|---|
| Incident management | __ | Defined? Measured? Automated? |
| Problem management | __ | RCA culture? KE in KB? |
| Change management | __ | CAB? Standard pre-approved? |
| Service catalog | __ | Items? Approvals? Fulfilment? |
| Knowledge management | __ | KCS adopted? Author training? |
| CMDB | __ | (See CMDB.md) |
Stakeholder map (RACI):
| Role | Person | R | A | C | I |
|---|---|---|---|---|---|
| Exec sponsor | __ | A | I | ||
| CIO/IT Director | __ | A | C | ||
| Service Desk Lead | __ | R | C | ||
| Change Advisory Board chair | __ | R | I | ||
| HR (for catalog tie-ins) | __ | C | I | ||
| Security/Risk | __ | C | I |
Vendor map:
| Vendor | Function | SLA contact | Support portal |
|---|---|---|---|
| Microsoft (M365) | Email, Teams | ____ | admin.microsoft.com |
| AWS/Azure | Cloud infra | ____ | console |
| Telco | WAN/MPLS | ____ | ___ |
| MSP/L3 | Server ops | ____ | ___ |
Success criteria (must agree before Day 1):
- All P1/P2 incidents created in ServiceNow within 5 minutes of detection
- 100% of changes recorded; no rogue prod changes
- KB deflection target: 20% by month 3
- SLA breach rate < 5% by month 6
- CSAT >= 4.0 / 5.0
- Update Set "ITSM_Baseline_v1" exported and version-controlled
لا تنتقل ليوم 1 قبل الحصول على توقيع الراعي على معايير النجاح.
18.2 Day 1 — Activate plugins & confirm CMDB
Navigate: All > System Definition > Plugins
Activate (with demo data DISABLED for prod):
- com.snc.incident (Incident Management)
- com.snc.problem (Problem Management)
- com.snc.change_request (Change Management)
- com.snc.knowledge (Knowledge Management)
- com.snc.service_catalog (Service Catalog)
- com.snc.service_portal (Service Portal)
- com.snc.service_portal.employee_center (Employee Center)
- com.snc.sla (Service Level Management)
- com.snc.major_incident_mgmt (Major Incident)
Confirm CMDB present — see CMDB.md Day 1. — بدون CMDB لن يعمل تحليل التأثير ولا ربط CI بالحادث.
⚠️ Do NOT activate plugins straight on prod. Use a clone of prod, test, then promote via Update Set.
18.3 Day 2–3 — Categories, groups, on-call
Categories & subcategories:
Navigate: All > System Definition > Choice Lists
Filter: Table = incident · Element = category
Add:
hardware → laptop, desktop, monitor, peripheral
software → office, browser, antivirus, custom_app
network → wifi, vpn, dns, lan
access → ad, mfa, vpn, app_access
inquiry → how_to, policy
Assignment groups (seed list):
| Group | Manager | Role | Members |
|---|---|---|---|
| Service Desk L1 | ____ | itil | 8 |
| Network Ops | ____ | itil | 4 |
| Server Ops | ____ | itil | 5 |
| Application Support | ____ | itil | 6 |
| Security Ops | ____ | sn_si.admin | 3 |
| Major Incident Comms | ____ | major_incident_manager | 2 |
On-call rotation seed:
Navigate: All > On-Call Scheduling > Schedules
Create: "Server Ops 24x7"
Roster: 4 engineers, weekly rotation Mon 08:00
Escalation: 5 min, 15 min, 30 min, Manager
18.4 Day 4–5 — Incident states, priority matrix, SLAs
Incident states (default + custom):
| Value | Label | When |
|---|---|---|
| 1 | New | Created, not yet picked up |
| 2 | In Progress | Agent working |
| 3 | On Hold (Pending Caller) | Waiting on customer |
| 6 | Resolved | Fix applied, monitoring |
| 7 | Closed | Confirmed; auto after 5d |
| 8 | Cancelled | Wrong record |
Priority matrix (Data Lookup dl_matrix):
Impact \ Urgency | 1 High | 2 Medium | 3 Low
1 High | 1 | 2 | 3
2 Medium | 2 | 3 | 4
3 Low | 3 | 4 | 5
SLA targets (seed):
| Priority | Response | Resolution | Schedule |
|---|---|---|---|
| P1 (Critical) | 15 min | 4 hours | 24x7 |
| P2 (High) | 30 min | 8 hours | 24x7 |
| P3 (Moderate) | 4 hours | 24 hours | Business hours |
| P4 (Low) | 1 day | 5 days | Business hours |
| P5 (Planning) | 3 days | 30 days | Business hours |
Navigate: All > Service Level Management > SLA Definitions
Create one definition per Priority. Use "Run on" → Task SLAs.
18.5 Day 6–7 — Change Types, CAB, Calendar
Change Types:
| Type | When | Approval | Lead time |
|---|---|---|---|
| Standard | Pre-approved low-risk repeatable | None (template) | None |
| Normal | Most changes | CAB | 5 business days |
| Emergency | Restore service / security patch | E-CAB chair | None (post-justify) |
CAB meeting (recurring):
Wednesdays 14:00–15:00 — chaired by Change Manager
Quorum: Change Mgr + Tech Lead + Security + Business rep
Agenda template (Knowledge article):
1) Implemented since last CAB
2) Pending Authorize
3) Pending Schedule
4) Conflicts (§17.10.10)
5) Freeze windows
Change Schedule view:
Navigate: All > Change > Schedule
Filter: this week + next two weeks
Color: by risk
18.6 Day 8–9 — Problem, RCA, Known Errors
Problem states:
New → Assess → RCA → Fix in Progress → Resolved → Closed
RCA workflow — see §17.4 Recipe D for template.
Known Errors KB:
Create kb_knowledge_base: "Known Errors"
Visibility: itil + ess (read)
Each KE article auto-created when problem.known_error = true
18.7 Day 10–12 — Knowledge bases & workflow
Knowledge bases (seed):
| KB | Audience | Owner |
|---|---|---|
| IT — Public | All employees | IT Comms |
| IT — Internal | itil | Service Desk Mgr |
| HR — Policies | All | HR (links to HR Leave module) |
| Security | itil + sec | CISO office |
| Known Errors | itil + ess | Problem Mgr |
KB workflow with approval:
Draft → Review → Published
Review state requires kb_owner approval (Flow)
Auto-archive after 365d inactive (§17.7 script)
Article templates — create 3:
1. How-to (steps, screenshots, related)
2. FAQ (Q&A list)
3. Troubleshoot (Problem → Cause → Resolution)
18.8 Day 13–14 — Service Catalog (10 items)
Wave-1 catalog items:
| # | Item | Type | Approvals |
|---|---|---|---|
| 1 | Laptop request | Catalog item | Manager |
| 2 | Password reset | Record producer | None |
| 3 | Software install | Catalog item | Manager + Security |
| 4 | Access request | Catalog item | Manager + System owner |
| 5 | RMA / hardware return | Record producer | None |
| 6 | Conference room booking | Catalog item | Facilities |
| 7 | VIP request (escalated) | Record producer | None |
| 8 | Project access | Order guide | PMO + Manager |
| 9 | Contractor onboarding | Order guide | HR + Manager + Security |
| 10 | Terminate access | Record producer | HR confirmation |
Record Producer #2 — Password reset:
// Script — record producer for incident table, category=access
(function() {
current.short_description = 'Password reset request for ' + producer.system_name;
current.category = 'access';
current.subcategory = 'ad';
current.urgency = 2;
current.impact = 3;
current.caller_id = gs.getUserID();
current.assignment_group = gs.getProperty('itsm.password.reset.group');
current.contact_type = 'self-service';
current.description = 'System: ' + producer.system_name +
'\nReason: ' + producer.reason +
'\nLast known login: ' + (producer.last_login || 'unknown');
})();
Record Producer #5 — RMA:
(function() {
current.short_description = 'RMA — ' + producer.asset_tag;
current.category = 'hardware';
current.subcategory = producer.device_type;
current.cmdb_ci = (function() {
var ci = new GlideRecord('cmdb_ci_hardware');
ci.addQuery('asset_tag', producer.asset_tag);
ci.query();
return ci.next() ? ci.sys_id.toString() : '';
})();
current.description = 'Defect: ' + producer.defect_description +
'\nFirst seen: ' + producer.first_seen +
'\nShipping: ' + producer.shipping_address;
})();
Record Producer #10 — Terminate access:
(function() {
current.short_description = 'Terminate access for ' + producer.user.getDisplayValue();
current.category = 'access';
current.urgency = 1;
current.impact = 2;
current.assignment_group = gs.getProperty('itsm.offboarding.group');
current.description = 'User: ' + producer.user.getDisplayValue() +
'\nLast day: ' + producer.last_day +
'\nManager: ' + producer.manager.getDisplayValue() +
'\nSystems to disable: ' + producer.systems_list +
'\nForward email to: ' + producer.email_forward;
})();
18.9 Day 15–16 — Service Portal & branding
Navigate: All > Service Portal > Portals
Clone "Service Portal" → "IT Hub" → URL suffix /ithub
Update widgets:
- Header logo (PNG max 200×60)
- Color theme (primary, accent, header)
- Homepage tiles: Get Help · Request Something · Knowledge · My Items
Test impersonate ess → must work on mobile width 375px
Employee Center:
Navigate: All > Employee Center > Configuration
Topic taxonomy: IT · HR · Finance · Facilities
Featured items (top 5 from §18.8)
Search collections: KB + Catalog + Articles
18.10 Day 17 — Notifications
Notifications to seed (sysevent_email_action):
| # | Event | Trigger | Recipient |
|---|---|---|---|
| 1 | Incident assigned | incident.assignment_group changes | Group |
| 2 | Incident resolved | state changes to 6 | Caller |
| 3 | Incident closed | state changes to 7 | Caller |
| 4 | Change scheduled | state changes to scheduled | CI subscribers |
| 5 | Change implemented | state = implement complete | Stakeholders |
| 6 | Request RITM created | sc_req_item.insert | Requester |
| 7 | Approval needed | approval = requested | Approver |
| 8 | P1 escalation | event itsm.p1.escalate | Manager |
| 9 | Major Incident declared | MI flag = proposed | MI distribution |
| 10 | Survey | event asmt.send.survey | Caller |
Bilingual templates — provide both EN + AR body fields; respect user language sys_user.preferred_language.
18.11 Day 18–19 — Reports & ITSM dashboard
4-tile ITSM Dashboard:
| Tile | Indicator | Source |
|---|---|---|
| P1 Open | Count(incident.priority=1 AND active=true) | Real-time |
| SLA Breach Rate | Sum(task_sla.has_breached=true) / Sum(all) × 100 | Daily |
| MTTR | Avg(resolved_at − opened_at) for last 30d | Daily |
| Change Success Rate | Closed Successful / Closed × 100 | Weekly |
Build:
Navigate: All > Performance Analytics > Dashboards
New → "ITSM Operations"
Add 4 widgets: Single Score for each tile
Set refresh: 5 min real-time, others daily
Share with: itil_admin, change_manager, exec_viewer
18.12 Day 20 — PA Indicators & Data Collector
Navigate: All > Performance Analytics > Indicator Source
Create source: "All Incidents" → table incident, conditions: active=true
Indicators:
- INC Volume (count, daily)
- MTTR (avg duration resolved-opened, daily)
- FCR rate (resolved_at - opened_at < 1h)
- P1 Volume
Data Collector: nightly 02:00
18.13 Day 21–22 — ATF regression suite (10 tests)
Navigate: All > Automated Test Framework > Tests
Create:
T1 — Create incident as ess, save, verify caller_id auto-set
T2 — Set Impact=1, Urgency=1, verify Priority=1
T3 — Create Standard change, verify auto-approved
T4 — Create Normal change, verify CAB approval task
T5 — Resolve incident, verify task_sla stopped
T6 — Order catalog item, verify REQ+RITM+SC_TASK
T7 — Approve REQ as manager, verify state → Approved
T8 — Inbound email creates incident with caller from email
T9 — Impersonate ess, verify cannot see change.list
T10 — Major incident promotion, verify MI workspace opens
Schedule: Nightly 22:00, alert on fail
18.14 Day 23 — AI / Now Assist features
Navigate: All > Now Assist > Setup
Enable:
- Predictive Categorization (incident)
- Resolution Notes (incident)
- Similar Incidents
- Summarize Incident
- Now Assist for KB authoring
Train: 90 days of historic incidents (>5000 records min)
Test: open new test incident, verify category suggested with confidence > 0.7
18.15 Day 24–25 — Integrations
Outlook email-to-incident:
1) Create mailbox [email protected]
2) Configure ServiceNow Email Properties: incoming POP3/IMAP/OAuth
3) Inbound Action "Create Incident from email" (default OOTB)
4) Test: send email → check incident.list within 2 min
Teams notifications:
Spoke: Microsoft Teams Spoke (Integration Hub)
Subflow: "Post to Teams channel on P1 incident"
Trigger: incident.priority = 1 AND state inserts
Action: Teams - Post message to channel "MI War Room"
JIRA bi-directional:
Spoke: Atlassian Jira Spoke
Use cases:
- ServiceNow incident → JIRA bug (when category=software AND subcategory=defect)
- JIRA issue status change → ServiceNow incident work note
Auth: OAuth + dedicated service account
18.16 Day 26 — ACL hardening
| Table | Operation | Role | Condition |
|---|---|---|---|
| incident | read | itil OR ess (own caller_id) | — |
| incident | write | itil | assignment_group in user’s groups |
| change_request | read | itil | — |
| change_request | write | change_manager OR change_coordinator | — |
| problem | read | itil | — |
| problem | write | problem_manager | — |
| kb_knowledge | read | any | published only |
| kb_knowledge | write | knowledge author | own KB |
| sysapproval_approver | read | self | approver = self |
| sc_request | read | itil OR self | requested_for = self OR is_approver |
⚠️ Do NOT use Any role on incident. Always specify itil or stricter.
18.17 Day 27 — UAT 30-scenario plan
Categories: 10 end-user + 10 agent + 5 change + 3 catalog + 2 KB
Pass/fail captured in atf_test_result-like table or simple spreadsheet
Sample scenarios:
UC-01 ess opens incident from /esc
UC-02 ess orders laptop, manager approves
UC-03 itil triages new incident, sets priority via matrix
UC-04 itil escalates P2 to Tier 2
UC-05 itil resolves with close code
UC-06 itil reopens within 7 days
UC-07 ess gets survey on close
UC-08 MI declared, comms fire
UC-09 problem from incident, link 5 incidents
UC-10 KE published to KB
UC-11 standard change auto-approved
UC-12 normal change → CAB approval
UC-13 emergency change with post-justify
UC-14 change conflict detected
UC-15 freeze window blocks new change
...
UC-30 PA dashboard renders all 4 tiles within 3 sec
18.18 Day 28 — Training & video
Audiences:
1) Admin (4 hours) — config, ACLs, scripts, troubleshooting
2) Agent (2 hours) — SOW, triage recipes (§17), KB linking
3) End-user (15 minutes) — EC tour, raise issue, approvals, my items
Deliverables:
- Slides EN + AR
- Recorded video (≤ 10 min each)
- Quick reference card (1 page bilingual)
- LMS handoff
18.19 Day 29 — Go-Live readiness review
Sign-off checklist:
[ ] All UAT scenarios PASS (≥ 28/30)
[ ] ATF regression GREEN for 3 consecutive nights
[ ] Update Set "ITSM_Baseline_v1" exported, committed to source-control
[ ] Notifications tested with real email + Teams
[ ] CMDB pre-loaded with critical CIs (see CMDB.md Day 8)
[ ] Knowledge base seeded with ≥ 50 articles
[ ] Catalog has 10 wave-1 items live
[ ] PA dashboard renders for exec_viewer role
[ ] War-room runbook printed & distributed
[ ] Hypercare squad on call 24x7 for week 1
[ ] Comms sent to all employees (T-7, T-1, Go-Live)
18.20 Day 30 — Hypercare day-1 monitoring
- Every 30 min: check incident.list backlog
- Every hour: review P1 / P2 count
- Stand-up at 10:00 and 16:00 with squad
- Watch for: ACL errors, missing fields, slow loads (Cache Inspector)
- Communication: daily exec email "ITSM Go-Live Day N status"
- Capture issues in a tracker — fix-forward not rollback unless critical
18.21 Common pitfalls
| Pitfall | Symptom | Fix |
|---|---|---|
| No CMDB before ITSM | Incidents lack CI; impact blind | Phase CMDB first (see CMDB.md Day 1–8) |
| Too many categories | Agent confusion, low FCR | Cap at 5 top + 4 sub each |
| SLA on wrong state | False breaches | Use Pause conditions thoroughly |
| Standard changes still go to CAB | CAB drowning | Auto-approve via §17.10.5 |
| KB unmaintained | Stale, untrusted, low deflection | Auto-retire script §17.7 |
| ACL too open | Data leak risk | Day 26 hardening + audit |
| Notification storm | Email fatigue | Consolidate digest + Teams routing |
| Workspace not adopted | Agents stay on classic | Train on SOW (§17.3) + remove classic shortcut |
| No PA Data Collector schedule | Empty dashboards | Day 20 schedule nightly |
| Survey ignored | Low response rate | Trigger on close, < 3 questions, mobile-friendly |
18.22 Post Go-Live month-1 KPIs
| KPI | Target | Source |
|---|---|---|
| Adoption — % incidents from /esc (not phone) | ≥ 40% | incident.contact_type |
| MTTR (median, P3) | ≤ 24h | PA |
| SLA breach rate (overall) | ≤ 7% | PA |
| Change success rate | ≥ 95% | change_request.close_code |
| CSAT (top 2 box) | ≥ 80% | Survey results |
| KB deflection (search-then-no-ticket) | ≥ 15% | KB analytics |
| First Contact Resolution (FCR) | ≥ 35% | resolved_at - opened_at < 1h |
| ATF regression pass rate | ≥ 95% | ATF dashboard |
لو لم تصل لهذه الأرقام في الشهر الأول، خذها كموجة CSI ولا تنتظر — اعقد retro أسبوعي.
18.23 Final implementation checklist
- [ ] §18.1 Stakeholder map signed
- [ ] §18.2 Plugins activated; CMDB linked
- [ ] §18.3 Groups + on-call seeded
- [ ] §18.4 SLAs live for all 5 priorities
- [ ] §18.5 CAB calendar populated
- [ ] §18.6 Problem & KE workflow live
- [ ] §18.7 KB seeded (≥ 50 articles)
- [ ] §18.8 10 catalog items live (3 with Record Producer code)
- [ ] §18.9 EC + Service Portal branded
- [ ] §18.10 10 notifications active, bilingual templates
- [ ] §18.11 4-tile dashboard rendering for exec
- [ ] §18.12 PA Data Collector nightly
- [ ] §18.13 10 ATF tests GREEN
- [ ] §18.14 Now Assist live
- [ ] §18.15 Email + Teams + JIRA integrations validated
- [ ] §18.16 ACLs hardened, audit log on
- [ ] §18.17 UAT 28/30 passed
- [ ] §18.18 3 training tracks delivered
- [ ] §18.19 Go-Live sign-off captured
- [ ] §18.20 Hypercare week 1 monitored daily
- [ ] §18.21 Pitfall scan done
- [ ] §18.22 Month-1 KPIs reviewed in retro
§19 — CIS-ITSM Exam & Z-to-Hero Feature Labs
19.1 Exam bank linkage
Primary bank: C:\SVCProject\EXAM_BANK_ITSM_360.md (~120 questions, 103 KB)
Coverage: Incident, Problem, Change (Std/Normal/Emergency), Knowledge, Catalog, SLA, Workflows, Workspace, Reports, PA.
19.2 Z-to-Hero Feature Labs (15 labs)
| Lab | Feature | Bank Q area |
|---|---|---|
| L1 | Create P1 incident → CI link → SLA starts | Incident basics |
| L2 | Major Incident → mass-communication + parent/child incidents | Major Inc |
| L3 | Problem from incident → workaround → known error | Problem mgmt |
| L4 | Standard Change template + auto-approve | Change types |
| L5 | Normal Change + multi-level CAB approval | Change wf |
| L6 | Emergency Change + post-implementation review | Emergency |
| L7 | Knowledge article (KCS) from resolved incident | KB |
| L8 | Catalog Item “Hardware Request” with approval | Catalog |
| L9 | SLA pause on “Awaiting Info” + resume on “In Progress” | SLA |
| L10 | Service Operations Workspace /now/sow/home | SOW |
| L11 | Assignment Rule by category + skill | Assignment |
| L12 | Priority Lookup matrix (Impact × Urgency) | Priority |
| L13 | Reports: incident backlog + SLA breach dashboard | Reports |
| L14 | Now Assist: summarize incident + suggest KB | AI in ITSM |
| L15 | Bulk close 50 incidents via list action + reason | Productivity |
19.3 Top 20 ITSM concepts to master
- Task hierarchy: task → incident, problem, change_request, sc_request, sc_req_item, sc_task
- State model (incident 1-Active to 7-Closed)
- Priority = Impact × Urgency via Data Lookup
- Assignment Rule order of evaluation
- SLA: definition, start condition, pause condition, stop condition
- Change Types: Standard (pre-approved), Normal (CAB), Emergency (post-review)
- Change Approval: Approval Definition vs Flow approval
- Change Risk: assessment matrix
- Problem Workaround vs Resolution vs Known Error
- Knowledge: KCS lifecycle (Capture, Structure, Reuse, Improve)
- Service Catalog: Item vs Record Producer vs Order Guide
- RITM lifecycle: Request → RITM → SC Task
- Major Incident: declare → child/parent linking → comms
- Notifications: Event-driven (preferred) vs direct subscription
- Service Operations Workspace components
- Performance Analytics: Indicators for incident, problem, change
- Incident → Problem auto-promotion logic
- ATF for ITSM: incident creation + state transitions
- Reports vs Dashboards vs PA
- ITSM Pro features: Now Assist, Vendor Mgr, DevOps integration
19.4 5 sample CIS-ITSM questions
Q. Which is the correct order of evaluation for Assignment Rules?
A. By order field ascending; first matching rule applies
B. Random
C. By sys_created_on desc
D. Domain → order → first matchAnswer: D (in domain-separated instances) — otherwise just order ascending.
Q. A change is rejected after CAB. What state does it move to?
A. Closed
B. Cancelled
C. Authorize → Reject
D. Implement (skipped)Answer: Depends on workflow — usually moves to Closed with reason “Rejected”.
Q. When should you use a Record Producer vs Catalog Item?
A. RP creates any record type; Item creates only sc_req_item
B. RP needs Flow; Item needs Workflow
C. RP is faster
D. They’re identicalAnswer: A
Q. SLA stop condition for incident is typically…
A. state=resolved OR state=closed
B. state=closed
C. state=in_progress
D. priority=4Answer: A
Q. Service Operations Workspace URL is…
A. /now/sow/home
B. /sp?id=service_ops
C. /itil_homepage.do
D. /now/sow/agentAnswer: A
(Use the full bank EXAM_BANK_ITSM_360.md for remaining 115+ questions.)
19.5 What “Hero” looks like for ITSM
- Designs end-to-end Incident → Problem → Change workflow
- Defines SLA with pause/stop conditions
- Configures Major Incident process with child linking + comms
- Implements Knowledge-Centered Service (KCS)
- Builds Service Catalog with Variable Sets + Flow fulfillment
- Sets up Service Operations Workspace with custom KPI tiles
- Integrates Now Assist for summarization + suggestion
- Passes CIS-ITSM with ≥85% on first attempt
Hands-on Labs — مختبرات عملية
Step-by-step labs for PDI / Australia instance. Replace
{BASE}with your instance URL.
مختبرات خطوة بخطوة — استبدل{BASE}برابط نسختك.
-
Lab 1 — Create & resolve an incident / إنشاء حادث وحله
- Open {BASE}/incident.do?sys_id=-1.
- Set Caller, Category, Short description; submit.
- Assign to your group; move state to In Progress → Resolved → Closed.
- Verify SLA record on Related Lists → Task SLAs. -
Lab 2 — Priority matrix / مصفوفة الأولوية
- Open an incident; change Impact and Urgency.
- Confirm Priority auto-calculates via Data Lookup.
- Document the matrix in a personal cheat sheet. -
Lab 3 — Catalog request E2E / طلب كتالوج من البداية للنهاية
- Browse {BASE}/esc or {BASE}/sp.
- Order a catalog item; track REQ → RITM → catalog tasks.
- Complete fulfillment tasks and close the request. -
Lab 4 — Standard Change auto-approval / تغيير قياسي
- Create a Standard Change from a template at {BASE}/change_request.do?sys_id=-1.
- Walk through Implement → Review → Close without CAB. -
Lab 5 — Assignment rule / قاعدة إسناد
- At {BASE}/sysrule_assignment_list.do, create a rule matching Category = Software.
- Create a matching incident; verify auto-assignment. -
Lab 6 — Knowledge publish / نشر مقال معرفة
- Create KB article at {BASE}/kb_knowledge.do?sys_id=-1.
- Submit for review; publish; link from a resolved incident. -
Lab 7 — Service Operations Workspace / مساحة عمل الوكيل
- Open {BASE}/now/sow/home.
- Use List, Record, and Activity stream to work three incidents. -
Lab 8 — Flow approval for Change / موافقة Flow للتغيير
- Build a simple approval Flow at {BASE}/now/flow-designer.
- Attach to Normal Change model; test end-to-end.
Best Practices — أفضل الممارسات
| Area | Best practice (EN) | أفضل ممارسة (AR) |
|---|---|---|
| Assignment | Use Assignment Rules, not Business Rules | استخدم Assignment Rules وليس Business Rules |
| Priority | Impact × Urgency via Data Lookup — never manual override culture | الأولوية عبر Data Lookup — لا ثقافة تجاوز يدوي |
| SLA | Define pause (On Hold) and stop (Resolved/Closed) conditions upfront | حدّد شروط الإيقاف المؤقت والنهائي مسبقًا |
| Change | Standard for repeatable; Normal + CAB for risky; Emergency with post-review | Standard للمتكرر؛ Normal + CAB للخطير؛ Emergency مع مراجعة لاحقة |
| Catalog | Variable Sets for reuse; Flow Designer for fulfillment | Variable Sets للإعادة؛ Flow Designer للتنفيذ |
| Agent UI | Prefer Service Operations Workspace over classic lists | فضّل SOW على القوائم الكلاسيكية |
| CMDB | Link CI on incidents where impact analysis matters | اربط CI بالحوادث حيث تحليل التأثير مهم |
| Knowledge | KCS: capture on resolve, review quarterly | KCS: التقاط عند الحل، مراجعة ربع سنوية |
Common mistakes to avoid / أخطاء شائعة:
- Duplicate assignment logic in BR + Assignment Rules — duplicates cause race conditions.
- SLA without schedule → runs 24/7 incorrectly.
- Catalog items without fulfillment Flow → RITM stuck in Open.
Deployment Checklist — قائمة النشر
| # | Task (EN) | المهمة (AR) | Verify |
|---|---|---|---|
| 1 | Activate ITSM plugins (Change, Problem if needed) | تفعيل إضافات ITSM | Plugins list |
| 2 | Configure roles & groups (itil, change_manager, catalog_admin) | الأدوار والمجموعات | User has correct role |
| 3 | Assignment Rules + Priority matrix | قواعد الإسناد ومصفوفة الأولوية | Test incident auto-assigns |
| 4 | SLA Definitions + schedules | تعريفات SLA + جداول | Task SLA fires |
| 5 | Service Catalog wave-1 items + Flows | عناصر كتالوج الموجة الأولى | End-to-end order works |
| 6 | Change models (Standard/Normal/Emergency) | نماذج التغيير | Each type routes correctly |
| 7 | Employee Center / Service Portal branding | هوية البوابة | User can submit request |
| 8 | SOW layout for agents | تخطيط SOW للوكلاء | Agent can work queue |
| 9 | Inbound email actions (if used) | إجراءات البريد الوارد | Email creates incident |
| 10 | ATF smoke tests + Update Set | اختبارات ATF + Update Set | Tests pass; US complete |
| 11 | UAT sign-off + training materials | UAT + مواد تدريب | Signed pack |
| 12 | Production deploy + hypercare plan | نشر إنتاج + خطة hypercare | Runbook ready |
Direct URLs Quick Reference
| Page | Navigation | URL |
|---|---|---|
| Incidents (list) | All > Incident > All | {BASE}/incident_list.do |
| Incident (new) | All > Incident > Create New | {BASE}/incident.do?sys_id=-1 |
| Problems | All > Problem > All | {BASE}/problem_list.do |
| Changes | All > Change > All | {BASE}/change_request_list.do |
| Change calendar | All > Change > Schedule | {BASE}/change_request_calendar.do |
| Change models | All > Change > Administration | {BASE}/chg_model_list.do |
| Catalog items | All > Service Catalog > Maintain Items | {BASE}/sc_cat_item_list.do |
| Categories | All > Service Catalog > Categories | {BASE}/sc_category_list.do |
| Record producers | All > Service Catalog > Record Producers | {BASE}/sc_cat_item_producer_list.do |
| SLA definitions | All > SLA > SLA Definitions | {BASE}/contract_sla_list.do |
| Active SLAs | All > SLA > SLA | {BASE}/task_sla_list.do |
| Assignment rules | All > System Policy > Assignment | {BASE}/sysrule_assignment_list.do |
| Inbound email | All > System Policy > Inbound Actions | {BASE}/sysevent_in_email_action_list.do |
| Knowledge articles | All > Knowledge > Articles | {BASE}/kb_knowledge_list.do |
| Knowledge bases | All > Knowledge > Knowledge Bases | {BASE}/kb_knowledge_base_list.do |
| Flow Designer | All > Process Automation > Flow Designer | {BASE}/now/flow-designer |
| Service Portal | Service Portal | {BASE}/sp |
| Employee Center | Employee Center | {BASE}/esc |
| Service Operations Workspace | Now Experience > SOW | {BASE}/now/sow/home |
| Plugins | All > System Definition > Plugins | {BASE}/v_plugin_list.do |
| Update Sets | All > System Update Sets | {BASE}/sys_update_set_list.do |
| Guided Setup | All > Guided Setup | {BASE}/now/guided-setup |
§20 — Deep Implementation Labs (Create → Configure → Deploy)
Purpose: Production-grade, step-by-step labs with copy/paste scripts, SLA wiring, assignment rules, ATF smoke tests, and
{BASE}URLs for every ITSM component touched.
Prerequisite: Replace{BASE}with your instance (e.g.https://devXXXX.service-now.com). Run all config in dev/sub-prod first; promote via Update Set.
Update Set: CreateITSM_Wave2_Incident_Problem_Changeat {BASE}/sys_update_set_list.do before Step 20.0.
| Lab | Time | Outcome |
|---|---|---|
| 20.1 Incident E2E | 90 min | Categories, assignment, SLA, BR, deploy |
| 20.2 Problem E2E | 60 min | RCA workflow, Known Error, KB link |
| 20.3 Change E2E | 90 min | Normal/Standard/Emergency, CAB Flow, deploy |
| 20.4 SLA Suite | 45 min | 5 priority SLAs + schedules + pause/stop |
| 20.5 Assignment Rules | 30 min | 6 rules + lookup + verification |
| 20.6 ATF Smoke Suite | 60 min | 12 automated regression tests |
| 20.7 URL Master Index | — | Every component URL in one table |
20.0 — Pre-Lab Foundation (do once)
20.0.1 Create Update Set
| Step | Action | URL |
|---|---|---|
| 1 | Open Local Update Sets | {BASE}/sys_update_set_list.do |
| 2 | Click New | — |
| 3 | Name = ITSM_Wave2_Incident_Problem_Change |
— |
| 4 | State = In Progress | — |
| 5 | Submit → Make This My Current Set | — |
20.0.2 Verify plugins active
| Plugin | Search term | URL |
|---|---|---|
| Incident | com.snc.incident |
{BASE}/v_plugin_list.do |
| Problem | com.snc.problem |
{BASE}/v_plugin_list.do |
| Change | com.snc.change_management |
{BASE}/v_plugin_list.do |
| SLA | com.snc.sla |
{BASE}/v_plugin_list.do |
| ATF | com.glide.automated_testing_framework |
{BASE}/v_plugin_list.do |
20.0.3 Seed groups & roles (background script)
Run at {BASE}/sys.scripts.do:
// ITSM Lab 20.0 — seed groups (idempotent)
var groups = [
{name: 'Service Desk L1', desc: 'Tier 1 incident triage'},
{name: 'Network Ops', desc: 'Network incidents'},
{name: 'Server Ops', desc: 'Server / infrastructure'},
{name: 'Application Support', desc: 'Business apps'},
{name: 'Problem Management', desc: 'RCA and Known Errors'},
{name: 'CAB Approvers', desc: 'Change Advisory Board'}
];
groups.forEach(function(g) {
var gr = new GlideRecord('sys_user_group');
gr.addQuery('name', g.name);
gr.query();
if (!gr.next()) {
gr.initialize();
gr.name = g.name;
gr.description = g.desc;
gr.insert();
gs.info('Created group: ' + g.name);
} else {
gs.info('Group exists: ' + g.name);
}
});
20.0.4 Assign itil role to lab agent
| Step | Navigate | URL |
|---|---|---|
| 1 | Open your user record | {BASE}/sys_user_list.do |
| 2 | Roles tab → Edit | — |
| 3 | Add itil, sn_change_write, problem_task |
— |
| 4 | Groups tab → add Service Desk L1 + CAB Approvers | — |
20.0.5 Verification script
// Run after 20.0.3 — expect 6 groups
var ga = new GlideAggregate('sys_user_group');
ga.addQuery('name', 'IN', 'Service Desk L1,Network Ops,Server Ops,Application Support,Problem Management,CAB Approvers');
ga.addAggregate('COUNT');
ga.query();
ga.next();
gs.info('Groups found: ' + ga.getAggregate('COUNT'));
20.1 — Incident Management Lab (Create → Configure → Deploy)
Goal: Full incident pipeline — categories, priority matrix, assignment rule, P1/P3 SLAs, Business Rule for VIP, notification, UAT, Update Set export.
Phase A — Configure (30 min)
A1. Incident categories
| Step | Field | Value |
|---|---|---|
| 1 | Navigate | All > System Definition > Choice Lists → {BASE}/sys_choice_list.do?sysparm_query=name%3Dincident%5Eelement%3Dcategory |
| 2 | Verify OOTB | hardware, software, network, inquiry |
| 3 | Add if missing | access (label: Access / Identity) |
A2. Subcategories for hardware
| Step | Navigate | URL |
|---|---|---|
| 1 | Choice Lists filter: table=incident, element=subcategory | {BASE}/sys_choice_list.do?sysparm_query=name%3Dincident%5Eelement%3Dsubcategory |
| 2 | Add | laptop, desktop, monitor, printer |
A3. Priority matrix (Impact × Urgency)
| Step | Navigate | URL |
|---|---|---|
| 1 | Open Priority Lookup Rules | {BASE}/dl_matcher_list.do?sysparm_query=table%3Dincident |
| 2 | Confirm matrix: I1×U1→P1, I1×U2→P2, I2×U1→P2, I2×U2→P3, I3×U3→P4 | — |
| 3 | If custom: All > Incident > Administration > Priority Lookup | {BASE}/incident_list.do |
A4. Incident properties
| Property | Recommended | URL to check |
|---|---|---|
glide.ui.incident.read_only.number |
true | {BASE}/sys_properties_list.do?sysparm_query=name%3Dglide.ui.incident.read_only.number |
com.snc.incident.autoclose.resolved |
5 (days) | {BASE}/sys_properties_list.do?sysparm_query=nameSTARTSWITHcom.snc.incident |
Phase B — Assignment rule for incidents (see §20.5 Lab-INC-01)
Create rule INC — Software → Application Support at {BASE}/sysrule_assignment_list.do (detailed in §20.5).
Phase C — Business Rules (15 min)
C1. VIP auto-escalation BR
| Field | Value |
|---|---|
| Navigate | {BASE}/sys_script_list.do?sysparm_query=collection%3Dincident |
| Name | ITSM Lab — VIP caller priority boost |
| Table | incident |
| When | before insert, before update |
| Filter | Caller changes OR new record |
| Advanced | true |
Script:
(function executeRule(current, previous) {
if (!current.caller_id) return;
var u = new GlideRecord('sys_user');
if (!u.get(current.caller_id)) return;
if (u.vip != true && u.vip != 'true') return;
current.impact = 1;
current.urgency = 1;
var grp = new GlideRecord('sys_user_group');
grp.addQuery('name', 'Service Desk L1');
grp.query();
if (grp.next()) current.assignment_group = grp.sys_id;
current.work_notes = 'VIP caller — priority elevated by ITSM Lab BR.';
})(current, previous);
C2. Auto-link CI from asset tag in short description
| Field | Value |
|---|---|
| Name | ITSM Lab — Link CI by asset tag pattern |
| When | before insert |
| Advanced | true |
(function executeRule(current, previous) {
if (!current.cmdb_ci.nil()) return;
var sd = (current.short_description || '').toString();
var match = sd.match(/ASSET[- ]?(\w+)/i);
if (!match) return;
var tag = match[1];
var ci = new GlideRecord('cmdb_ci');
ci.addQuery('asset_tag', tag);
ci.setLimit(1);
ci.query();
if (ci.next()) {
current.cmdb_ci = ci.sys_id;
current.work_notes = 'CI linked via asset tag: ' + ci.name;
}
})(current, previous);
Phase D — Create & walk incident lifecycle (20 min)
| # | Step | URL / Action | Expected |
|---|---|---|---|
| 1 | Open new incident form | {BASE}/incident.do?sys_id=-1 | Blank form |
| 2 | Caller = your user | — | caller_id set |
| 3 | Category = software, Subcategory = office | — | — |
| 4 | Short description = Outlook sync failure ASSET-LT-0042 |
— | CI auto-links if asset exists |
| 5 | Impact = 2, Urgency = 2 | — | Priority = 3 (Moderate) |
| 6 | Submit | — | Number INCxxxx generated |
| 7 | Verify assignment group = Application Support | — | Rule INC-SW-01 fired |
| 8 | State → In Progress | — | task_sla timer running (§20.4) |
| 9 | Work notes = “Reset profile, monitoring” | — | Audit entry |
| 10 | State → On Hold, Hold reason = Awaiting Caller | — | SLA paused |
| 11 | State → In Progress | — | SLA resumed |
| 12 | State → Resolved, Close code = Solved (Permanently) | — | SLA stopped |
| 13 | Resolution notes = “Outlook profile recreated” | — | — |
| 14 | State → Closed (or wait auto-close) | — | Final state 7 |
| 15 | Related Lists → Task SLAs | {BASE}/task_sla_list.do?sysparm_query=task%3D |
stage = completed |
P1 incident quick test:
| Field | Value |
|---|---|
| Impact | 1 — High |
| Urgency | 1 — High |
| Expected Priority | 1 — Critical |
| Expected SLA | P1 Response 15m + P1 Resolution 4h (§20.4) |
| Verify | {BASE}/task_sla_list.do?sysparm_query=task.priority%3D1 |
Phase E — Notification (5 min)
| Step | Navigate | URL |
|---|---|---|
| 1 | Email Notifications | {BASE}/sysevent_email_action_list.do?sysparm_query=event_name%3Dincident.assigned |
| 2 | Verify OOTB “Incident assigned to you” is active | — |
| 3 | Optional: clone for VIP — event itsm.vip.incident |
{BASE}/sysevent_register_list.do |
Phase F — Deploy (10 min)
| Step | Action | URL |
|---|---|---|
| 1 | Review captured records in Update Set | {BASE}/sys_update_set.do?sys_id= |
| 2 | Complete Update Set | — |
| 3 | Export XML | Right-click Update Set → Export to XML |
| 4 | In TEST: Retrieved Update Sets → Import | {BASE}/sys_remote_update_set_list.do |
| 5 | Preview → Commit | — |
| 6 | Re-run P1 test incident in TEST | {BASE}/incident.do?sys_id=-1 |
Incident lab verification script:
// Background: {BASE}/sys.scripts.do — last 5 incidents with SLA status
var inc = new GlideRecord('incident');
inc.orderByDesc('sys_created_on');
inc.setLimit(5);
inc.query();
while (inc.next()) {
var sla = new GlideRecord('task_sla');
sla.addQuery('task', inc.sys_id);
sla.query();
var slaStatus = sla.next() ? sla.stage + ' / breached=' + sla.has_breached : 'NO SLA';
gs.info(inc.number + ' | P' + inc.priority + ' | state=' + inc.state + ' | SLA=' + slaStatus);
}
20.2 — Problem Management Lab (Create → Configure → Deploy)
Goal: Problem from incident pattern, RCA workflow, Known Error flag, KB article link, deploy.
Phase A — Configure (20 min)
A1. Problem states (verify OOTB)
| State value | Label | URL |
|---|---|---|
| 1 | New | {BASE}/problem.do?sys_id=-1 |
| 2 | Assess | — |
| 3 | Root Cause Analysis | — |
| 4 | Fix in Progress | — |
| 5 | Resolved | — |
| 6 | Closed | — |
A2. Problem properties
| Navigate | URL |
|---|---|
| All > Problem > Administration > Properties | {BASE}/problem_list.do |
A3. Assignment rule PRB-01
| Field | Value |
|---|---|
| URL | {BASE}/sysrule_assignment.do?sys_id=-1 |
| Name | PRB — All problems → Problem Management |
| Table | problem |
| Order | 200 |
| Condition | [Active] [is] [true] |
| Set field | Assignment group = Problem Management |
Phase B — Script: Create Problem from incident (UI Action alternative)
Navigate: {BASE}/sys_ui_action_list.do?sysparm_query=table%3Dincident
Or run once as background script to create problem from latest incident:
// ITSM Lab 20.2 — Create Problem from most recent open incident
var inc = new GlideRecord('incident');
inc.addQuery('state', '!=', 7);
inc.addQuery('problem_id', '');
inc.orderByDesc('opened_at');
inc.setLimit(1);
inc.query();
if (!inc.next()) {
gs.error('No suitable incident found');
} else {
var prb = new GlideRecord('problem');
prb.initialize();
prb.short_description = 'RCA: ' + inc.short_description;
prb.description = 'Pattern investigation from ' + inc.number + '\n\n' + inc.description;
prb.cmdb_ci = inc.cmdb_ci;
prb.priority = inc.priority;
var grp = new GlideRecord('sys_user_group');
grp.addQuery('name', 'Problem Management');
grp.query();
if (grp.next()) prb.assignment_group = grp.sys_id;
prb.assigned_to = gs.getUserID();
var prbId = prb.insert();
inc.problem_id = prbId;
inc.update();
prb.number = prb.number; // refresh
prb.get(prbId);
gs.info('Created ' + prb.number + ' linked to ' + inc.number);
}
Phase C — Walk Problem lifecycle (25 min)
| # | Step | Field / Action | Expected |
|---|---|---|---|
| 1 | Open problem list | {BASE}/problem_list.do | See PRB record |
| 2 | State → Assess | — | Assignment confirmed |
| 3 | Paste RCA template (§17.4 Recipe D) into Description | — | Structured RCA |
| 4 | State → Root Cause Analysis | — | — |
| 5 | Workaround = “Restart service X every 4h” | work_around field | — |
| 6 | State → Fix in Progress | — | — |
| 7 | Create related Normal Change (Related Links → Create Change) | {BASE}/change_request.do?sys_id=-1 | CHG linked |
| 8 | After change implements: State → Resolved | — | — |
| 9 | Known error = true | known_error checkbox | — |
| 10 | Create KB from Problem (Knowledge panel) | {BASE}/kb_knowledge.do?sys_id=-1 | KB draft |
| 11 | Publish KB article | workflow_state = published | — |
| 12 | Link KB to problem.kb_knowledge | — | Cross-reference |
| 13 | State → Closed | — | Final |
Known Errors list verify:
{BASE}/problem_list.do?sysparm_query=known_error%3Dtrue
Phase D — Business Rule: Auto-flag recurring incidents
| Field | Value |
|---|---|
| Table | incident |
| When | after insert |
| Name | ITSM Lab — Flag 3+ same CI in 24h |
(function executeRule(current, previous) {
if (!current.cmdb_ci) return;
var ga = new GlideAggregate('incident');
ga.addQuery('cmdb_ci', current.cmdb_ci);
ga.addQuery('opened_at', '>', gs.daysAgo(1));
ga.addQuery('sys_id', '!=', current.sys_id);
ga.addAggregate('COUNT');
ga.query();
if (!ga.next()) return;
if (parseInt(ga.getAggregate('COUNT'), 10) >= 2) {
current.work_notes = 'PATTERN ALERT: 3+ incidents on same CI in 24h — consider Problem record.';
current.update();
}
})(current, previous);
Phase E — Deploy
Same Update Set workflow as §20.1 Phase F. Include: assignment rule PRB-01, BR, any KB base config.
20.3 — Change Management Lab (Create → Configure → Deploy)
Goal: Standard (auto-approve), Normal (CAB Flow), Emergency (post-review) — full lifecycle with scripts.
Phase A — Change models & types (15 min)
| Type | When | Approval | URL |
|---|---|---|---|
| Standard | Pre-approved template | None | {BASE}/std_change_producer_list.do |
| Normal | Most production changes | CAB Flow | {BASE}/chg_model_list.do |
| Emergency | Urgent restore/security | E-CAB chair | {BASE}/change_request.do?sys_id=-1&sysparm_stack=no |
A1. Verify Change models
| Step | Navigate | URL |
|---|---|---|
| 1 | Change Models | {BASE}/chg_model_list.do |
| 2 | Open “Normal” model | — |
| 3 | Confirm states: New → Assess → Authorize → Scheduled → Implement → Review → Closed | — |
| 4 | State flows | {BASE}/chg_policy_list.do |
A2. CAB Definition
| Step | Navigate | URL |
|---|---|---|
| 1 | CAB Definition | {BASE}/cab_definition_list.do |
| 2 | Create “Weekly CAB” if missing | — |
| 3 | Members = CAB Approvers group | {BASE}/sys_user_group_list.do?sysparm_query=name%3DCAB%20Approvers |
| 4 | Meeting schedule = Wednesday 14:00 | — |
Phase B — Flow Designer CAB approval (20 min)
| Step | Navigate | URL |
|---|---|---|
| 1 | Flow Designer | {BASE}/now/flow-designer |
| 2 | New Flow → Trigger: Service Catalog or Record Updated (change_request) | — |
| 3 | Condition: type = normal AND state changes to Authorize | — |
| 4 | Action: Ask for Approval → Group = CAB Approvers | — |
| 5 | If Approved → Update Record state = Scheduled | — |
| 6 | If Rejected → Update Record state = Closed, close_code = Cancelled | — |
| 7 | Activate flow | — |
| 8 | Attach to Normal Change model approval | {BASE}/chg_model_list.do |
Standard Change auto-approve BR (if not OOTB):
Navigate: {BASE}/sys_script_list.do?sysparm_query=collection%3Dchange_request
(function executeRule(current, previous) {
if (current.type != 'standard') return;
if (current.operation() != 'insert') return;
current.state = -1; // Implement
current.approval = 'approved';
current.work_notes = 'ITSM Lab: Standard change auto-approved.';
})(current, previous);
Phase C — Lab C1: Standard Change (15 min)
| # | Step | Value | URL |
|---|---|---|---|
| 1 | New change | Type = Standard | {BASE}/change_request.do?sys_id=-1 |
| 2 | Select template | “Restart Windows Server” (or any OOTB std template) | — |
| 3 | Short description | Lab — Standard restart APP-SRV-01 |
— |
| 4 | CI | pick any server CI | {BASE}/cmdb_ci_server_list.do |
| 5 | Submit | — | State jumps to Implement (auto-approved) |
| 6 | Fill implementation plan | “Graceful restart during maintenance window” | — |
| 7 | State → Review | — | — |
| 8 | Close code = Successful | — | — |
| 9 | State → Closed | — | Done without CAB |
Phase D — Lab C2: Normal Change with CAB (25 min)
| # | Step | Value | Expected |
|---|---|---|---|
| 1 | New change, Type = Normal | — | {BASE}/change_request.do?sys_id=-1 |
| 2 | Short description | Lab — Deploy HR Leave patch v2.1 |
— |
| 3 | Risk | Moderate | — |
| 4 | Impact | 2 — Medium | — |
| 5 | Category | Application | — |
| 6 | CI | HR application server | — |
| 7 | Start date | Tomorrow 22:00 | — |
| 8 | End date | Tomorrow 23:00 | — |
| 9 | Backout plan | “Restore previous WAR from backup” (50+ chars) | — |
| 10 | Test plan | “Validate leave request submit in TEST” | — |
| 11 | State → Assess | — | Assignment to change group |
| 12 | State → Authorize | — | Approval task created |
| 13 | Approve as CAB member | {BASE}/sysapproval_approver_list.do | State → Scheduled |
| 14 | State → Implement | — | Change tasks available |
| 15 | Complete change_task records | {BASE}/change_task_list.do | All closed |
| 16 | State → Review | — | PIR |
| 17 | Close code = Successful | — | — |
| 18 | State → Closed | — | — |
Change calendar verify:
{BASE}/change_request_calendar.do
Phase E — Lab C3: Emergency Change (15 min)
| # | Step | Value | Expected |
|---|---|---|---|
| 1 | New change, Type = Emergency | — | — |
| 2 | Short description | Lab — EMERGENCY: Restore VPN gateway |
— |
| 3 | Justification | “Production VPN down, 200 users affected” | — |
| 4 | State → Authorize | — | Expedited approval |
| 5 | Approve immediately | — | State → Scheduled |
| 6 | Implement → Review → Closed | — | Post-implementation review mandatory |
| 7 | Work notes | “Emergency justified — root cause ticket INCxxx” | — |
Conflict detection script (run before CAB):
// Background: {BASE}/sys.scripts.do — check overlapping changes on same CI
var chgSysId = '<paste_change_sys_id>';
var chg = new GlideRecord('change_request');
if (!chg.get(chgSysId)) { gs.error('Change not found'); }
var conflict = new GlideRecord('change_request');
conflict.addQuery('cmdb_ci', chg.cmdb_ci);
conflict.addQuery('sys_id', '!=', chg.sys_id);
conflict.addQuery('start_date', '<=', chg.end_date);
conflict.addQuery('end_date', '>=', chg.start_date);
conflict.addQuery('state', 'IN', '-2,-3,-4');
conflict.query();
while (conflict.next()) {
gs.warn('CONFLICT: ' + conflict.number + ' overlaps on ' + conflict.cmdb_ci.name);
}
Phase F — Deploy Change config
| Artifact | Verify URL |
|---|---|
| Change models | {BASE}/chg_model_list.do |
| CAB Definition | {BASE}/cab_definition_list.do |
| Flow (CAB approval) | {BASE}/now/flow-designer |
| Business Rules | {BASE}/sys_script_list.do?sysparm_query=collection%3Dchange_request |
| Update Set export | {BASE}/sys_update_set_list.do |
20.4 — SLA Configuration Lab (Complete Step-by-Step)
Goal: Five priority-based SLA definitions with schedules, start/pause/stop conditions, retroactive start, and breach notifications.
20.4.1 — Schedules (prerequisite)
| Schedule | Hours | URL |
|---|---|---|
| 24 x 7 | Always on | {BASE}/cmn_schedule_list.do |
| 8x5 Business | Mon–Fri 08:00–17:00 | {BASE}/cmn_schedule_list.do |
Create 8x5 schedule if missing:
| Step | Field | Value |
|---|---|---|
| 1 | Navigate | {BASE}/cmn_schedule.do?sys_id=-1 |
| 2 | Name | ITSM Lab — 8x5 Business Hours |
| 3 | Time zone | Australia/Sydney (or your org TZ) |
| 4 | Define spans | Mon–Fri 08:00–17:00 |
20.4.2 — SLA Definition template (repeat for P1–P5)
Open SLA Definitions: {BASE}/contract_sla_list.do
P1 Critical — Response SLA
| Field | Value |
|---|---|
| Name | ITSM Lab — P1 Incident Response |
| Type | SLA |
| Table | incident |
| Duration | 15 minutes |
| Schedule | 24 x 7 |
| Condition | [Priority] [is] [1 - Critical] |
| Start condition | [State] [changes to] [In Progress] OR [State] [is] [New] (retroactive) |
| Pause condition | [State] [is] [On Hold] |
| Stop condition | [State] [is one of] [Resolved, Closed] |
| When to cancel | [State] [is] [Cancelled] |
| Retroactive start | ✓ (starts from opened_at if already In Progress) |
P1 Critical — Resolution SLA
| Field | Value |
|---|---|
| Name | ITSM Lab — P1 Incident Resolution |
| Duration | 4 hours |
| Schedule | 24 x 7 |
| Same conditions as Response | — |
| Set operators | — |
P2 High — Response / Resolution
| SLA | Duration | Schedule |
|---|---|---|
| P2 Response | 30 minutes | 24 x 7 |
| P2 Resolution | 8 hours | 24 x 7 |
| Condition | [Priority] [is] [2 - High] |
— |
P3 Moderate — Response / Resolution
| SLA | Duration | Schedule |
|---|---|---|
| P3 Response | 4 hours | 8x5 Business |
| P3 Resolution | 24 hours | 8x5 Business |
| Condition | [Priority] [is] [3 - Moderate] |
— |
P4 Low / P5 Planning
| Priority | Response | Resolution | Schedule |
|---|---|---|---|
| P4 | 1 day | 5 days | 8x5 |
| P5 | 3 days | 30 days | 8x5 |
20.4.3 — SLA properties to verify
| Property | Purpose | URL |
|---|---|---|
com.snc.sla.engine.version |
SLA engine version | {BASE}/sys_properties_list.do?sysparm_query=name%3Dcom.snc.sla.engine.version |
com.snc.sla.compatibility.breach |
Breach behavior | {BASE}/sys_properties_list.do?sysparm_query=nameSTARTSWITHcom.snc.sla |
20.4.4 — SLA test procedure (hands-on)
| # | Action | Verify at |
|---|---|---|
| 1 | Create P1 incident | {BASE}/incident.do?sys_id=-1 |
| 2 | Save → check Related Lists → Task SLAs (2 records: Response + Resolution) | Form Related Lists |
| 3 | Open task_sla list filtered to incident | {BASE}/task_sla_list.do?sysparm_query=task%3D |
| 4 | Confirm stage = in_progress, breach_time populated | — |
| 5 | Set State = On Hold | stage → paused, pause_time set |
| 6 | Set State = In Progress | stage → in_progress, pause_duration increased |
| 7 | Set State = Resolved | stage → completed, end_time set |
| 8 | Confirm has_breached = false (if within target) | — |
SLA verification script:
// {BASE}/sys.scripts.do — audit active SLAs on open incidents
var sla = new GlideRecord('task_sla');
sla.addQuery('task.active', true);
sla.addQuery('stage', '!=', 'cancelled');
sla.orderByDesc('sys_created_on');
sla.setLimit(10);
sla.query();
while (sla.next()) {
gs.info(sla.task.number + ' | ' + sla.sla.name + ' | stage=' + sla.stage +
' | breach=' + sla.has_breached + ' | time_left=' + sla.time_left);
}
20.4.5 — SLA breach notification
| Step | Navigate | URL |
|---|---|---|
| 1 | SLA Workflow / Notifications | {BASE}/sysevent_email_action_list.do?sysparm_query=nameLIKEsla |
| 2 | Enable “SLA breach warning” (75% elapsed) | — |
| 3 | Enable “SLA breached” notification to assignment group manager | — |
| 4 | Event registry | {BASE}/sysevent_register_list.do?sysparm_query=nameLIKEsla |
20.5 — Assignment Rules Lab (Complete Step-by-Step)
Goal: Six production assignment rules with order, conditions, scripts, and automated verification.
Open Assignment Rules: {BASE}/sysrule_assignment_list.do
Evaluation order: Rules run by Order ascending — first match wins. Lower number = higher priority.
Rule catalog
| Order | Name | Table | Condition | Set |
|---|---|---|---|---|
| 50 | INC-VIP-01 | incident | Caller VIP is true | Group: Service Desk L1, Assign to: (none) |
| 100 | INC-NET-01 | incident | Category is network | Group: Network Ops |
| 110 | INC-HW-01 | incident | Category is hardware | Group: Service Desk L1 |
| 120 | INC-SW-01 | incident | Category is software | Group: Application Support |
| 130 | INC-ACC-01 | incident | Category is access | Group: Service Desk L1 |
| 200 | PRB-01 | problem | Active is true | Group: Problem Management |
| 300 | CHG-APP-01 | change_request | Category is Application | Group: Application Support |
Step-by-step: Create INC-SW-01
| Step | Field | Value |
|---|---|---|
| 1 | Navigate | {BASE}/sysrule_assignment.do?sys_id=-1 |
| 2 | Name | INC-SW-01 — Software to Application Support |
| 3 | Table | incident |
| 4 | Active | true |
| 5 | Order | 120 |
| 6 | Condition | [Category] [is] [software] |
| 7 | Assignment | Group = Application Support |
| 8 | Script (optional) | see below |
| 9 | Submit | — |
Optional script (Assign to least-loaded agent in group):
// Assignment Rule script — round-robin by open incident count
var groupId = 'Application Support'; // or use current assignment_group
var grp = new GlideRecord('sys_user_group');
grp.addQuery('name', groupId);
grp.query();
if (!grp.next()) return;
var bestUser = null;
var minCount = 999999;
var m = new GlideRecord('sys_user_grmember');
m.addQuery('group', grp.sys_id);
m.query();
while (m.next()) {
var ga = new GlideAggregate('incident');
ga.addQuery('assigned_to', m.user);
ga.addQuery('active', true);
ga.addAggregate('COUNT');
ga.query();
var cnt = ga.next() ? parseInt(ga.getAggregate('COUNT'), 10) : 0;
if (cnt < minCount) { minCount = cnt; bestUser = m.user; }
}
if (bestUser) current.assigned_to = bestUser;
Assignment Lookup Rules (alternative for complex routing)
| Navigate | URL |
|---|---|
| Assignment Lookup Rules | {BASE}/dl_matcher_list.do?sysparm_query=table%3Dincident |
| Data Lookup Definitions | {BASE}/dl_definition_list.do |
Use when routing depends on multiple fields (category + subcategory + location).
Verification procedure
| # | Create incident with | Expected group | URL |
|---|---|---|---|
| 1 | Category = network | Network Ops | {BASE}/incident.do?sys_id=-1 |
| 2 | Category = software | Application Support | — |
| 3 | Category = hardware | Service Desk L1 | — |
| 4 | Caller VIP = true (any category) | Service Desk L1 (rule 50 wins) | — |
| 5 | New problem | Problem Management | {BASE}/problem.do?sys_id=-1 |
| 6 | Normal change, Category = Application | Application Support | {BASE}/change_request.do?sys_id=-1 |
Assignment audit script:
// {BASE}/sys.scripts.do — unassigned open incidents (should be zero after rules)
var inc = new GlideRecord('incident');
inc.addQuery('active', true);
inc.addQuery('assignment_group', '');
inc.query();
gs.info('Unassigned open incidents: ' + inc.getRowCount());
while (inc.next()) gs.warn(' ' + inc.number + ' — ' + inc.short_description);
20.6 — ATF Smoke Test Suite (Create → Schedule → Deploy)
Goal: 12 Automated Test Framework tests covering Incident, Problem, Change, SLA, Assignment, Catalog, and security — runnable nightly.
Prerequisites:
| Item | URL |
|---|---|
| ATF plugin active | {BASE}/v_plugin_list.do |
| ATF Test Generator | {BASE}/sys_atf_test_generator.do |
| Test suite list | {BASE}/sys_atf_test_suite_list.do |
| Test list | {BASE}/sys_atf_test_list.do |
20.6.1 — Create test suite
| Step | Field | Value |
|---|---|---|
| 1 | Navigate | {BASE}/sys_atf_test_suite.do?sys_id=-1 |
| 2 | Name | ITSM Lab 20 — Smoke Suite |
| 3 | Active | true |
| 4 | Description | Regression for Incident/Problem/Change/SLA/Assignment |
20.6.2 — Test definitions (12 tests)
ATF-01 — Incident: Priority matrix P1
| Step type | Configuration |
|---|---|
| 1. Open existing record / New record | Table: incident, {BASE}/incident.do?sys_id=-1 |
| 2. Set field values | impact=1, urgency=1 |
| 3. Submit form | — |
| 4. Field value validation | priority = 1 |
ATF-02 — Incident: Assignment rule software
| Step | Detail |
|---|---|
| Create incident | category=software |
| Assert | assignment_group.name = Application Support |
ATF-03 — Incident: SLA starts on insert
| Step | Detail |
|---|---|
| Create P1 incident | impact=1, urgency=1, state=In Progress |
| Server-side script step | see script below |
// ATF server step — assert task_sla exists
var incSysId = test.getRecordSysId('incident');
var sla = new GlideRecord('task_sla');
sla.addQuery('task', incSysId);
sla.query();
assertTrue(sla.hasNext(), 'Expected task_sla record for P1 incident');
ATF-04 — Incident: SLA pause on hold
| Step | Detail |
|---|---|
| Update incident | state=3 (On Hold) |
| Server script | assert task_sla.stage = paused |
ATF-05 — Incident: Resolve stops SLA
| Step | Detail |
|---|---|
| Update | state=6, close_code=Solved (Permanently) |
| Server script | assert task_sla.stage = completed |
ATF-06 — Problem: Create and assign
| Step | Detail |
|---|---|
| New problem | {BASE}/problem.do?sys_id=-1 |
| Assert | assignment_group = Problem Management |
ATF-07 — Change: Standard auto-approve
| Step | Detail |
|---|---|
| New change_request | type=standard, use std template |
| Assert | state = Implement OR approval = approved |
ATF-08 — Change: Normal creates approval
| Step | Detail |
|---|---|
| New change | type=normal, state→Authorize |
| Assert | sysapproval_approver record exists |
ATF-09 — Catalog: Order creates REQ/RITM
| Step | Detail |
|---|---|
| Impersonate | end-user with ess role |
| Open catalog item | {BASE}/sp?id=sc_cat_item&sys_id= |
| Order | — |
| Server script | assert sc_request + sc_req_item created |
ATF-10 — Security: ess cannot read change_request.list
| Step | Detail |
|---|---|
| Impersonate | ess user |
| Navigate | change_request.list |
| Assert | Access denied OR empty list per ACL |
ATF-11 — Knowledge: Publish workflow
| Step | Detail |
|---|---|
| Create kb_knowledge | {BASE}/kb_knowledge.do?sys_id=-1 |
| Set workflow_state | published |
| Assert | valid_to > today |
ATF-12 — SOW loads for itil user
| Step | Detail |
|---|---|
| Impersonate | itil agent |
| Navigate | {BASE}/now/sow/home |
| Assert | Page title contains “Service Operations” OR workspace loads |
20.6.3 — Schedule nightly run
| Step | Navigate | URL |
|---|---|---|
| 1 | Create schedule | {BASE}/sysauto_atf_test_list.do |
| 2 | Name | ITSM Smoke — Nightly 22:00 |
| 3 | Test suite | ITSM Lab 20 — Smoke Suite |
| 4 | Run time | 22:00 daily |
| 5 | On failure | email admin group |
20.6.4 — Run manually & read results
| Action | URL |
|---|---|
| Run test suite now | {BASE}/sys_atf_test_suite.do?sys_id= |
| Test results | {BASE}/sys_atf_test_result_list.do |
| Latest result detail | {BASE}/sys_atf_test_result.do?sys_id= |
Pass criteria for deploy: 12/12 green for 3 consecutive nightly runs (matches §18.19).
20.6.5 — ATF deploy checklist
| # | Task | URL |
|---|---|---|
| 1 | Export test suite in Update Set | {BASE}/sys_update_set_list.do |
| 2 | Import to TEST | {BASE}/sys_remote_update_set_list.do |
| 3 | Run suite in TEST | {BASE}/sys_atf_test_suite_list.do |
| 4 | Fix failures → new Update Set | — |
| 5 | Promote to PROD after sign-off | — |
20.7 — Master URL Index (Every ITSM Component)
Single reference — replace
{BASE}with your instance. All links open the corresponding list or form.
20.7.1 — Core process tables
| Component | List URL | New record URL | Table |
|---|---|---|---|
| Incident | {BASE}/incident_list.do | {BASE}/incident.do?sys_id=-1 | incident |
| Problem | {BASE}/problem_list.do | {BASE}/problem.do?sys_id=-1 | problem |
| Problem Task | {BASE}/problem_task_list.do | {BASE}/problem_task.do?sys_id=-1 | problem_task |
| Change Request | {BASE}/change_request_list.do | {BASE}/change_request.do?sys_id=-1 | change_request |
| Change Task | {BASE}/change_task_list.do | {BASE}/change_task.do?sys_id=-1 | change_task |
| Change Conflict | {BASE}/change_conflict_list.do | — | change_conflict |
| Change Freeze | {BASE}/change_freeze_window_list.do | {BASE}/change_freeze_window.do?sys_id=-1 | change_freeze_window |
| Standard Change Producer | {BASE}/std_change_producer_list.do | — | std_change_producer |
| Task SLA (active timers) | {BASE}/task_sla_list.do | — | task_sla |
| SLA Definition | {BASE}/contract_sla_list.do | {BASE}/contract_sla.do?sys_id=-1 | contract_sla |
20.7.2 — Service Catalog & Request
| Component | List URL | New record URL |
|---|---|---|
| Catalog | {BASE}/sc_catalog_list.do | {BASE}/sc_catalog.do?sys_id=-1 |
| Category | {BASE}/sc_category_list.do | {BASE}/sc_category.do?sys_id=-1 |
| Catalog Item | {BASE}/sc_cat_item_list.do | {BASE}/sc_cat_item.do?sys_id=-1 |
| Record Producer | {BASE}/sc_cat_item_producer_list.do | — |
| Order Guide | {BASE}/sc_cat_item_guide_list.do | — |
| Variable | {BASE}/item_option_new_list.do | — |
| Variable Set | {BASE}/item_option_new_set_list.do | — |
| Request (REQ) | {BASE}/sc_request_list.do | — |
| RITM | {BASE}/sc_req_item_list.do | — |
| Catalog Task | {BASE}/sc_task_list.do | — |
| User Criteria | {BASE}/user_criteria_list.do | — |
20.7.3 — Knowledge
| Component | URL |
|---|---|
| Knowledge Bases | {BASE}/kb_knowledge_base_list.do |
| Articles | {BASE}/kb_knowledge_list.do |
| New Article | {BASE}/kb_knowledge.do?sys_id=-1 |
| KB Categories | {BASE}/kb_category_list.do |
| Article Templates | {BASE}/kb_template_list.do |
| Knowledge Portal | {BASE}/kb |
20.7.4 — Administration & Policy
| Component | URL |
|---|---|
| Assignment Rules | {BASE}/sysrule_assignment_list.do |
| Assignment Lookup | {BASE}/dl_matcher_list.do |
| Business Rules | {BASE}/sys_script_list.do |
| Client Scripts | {BASE}/sys_script_client_list.do |
| UI Policies | {BASE}/sys_ui_policy_list.do |
| Data Policies | {BASE}/sys_data_policy_list.do |
| UI Actions | {BASE}/sys_ui_action_list.do |
| Notifications (email) | {BASE}/sysevent_email_action_list.do |
| Inbound Actions | {BASE}/sysevent_in_email_action_list.do |
| Events | {BASE}/sysevent_register_list.do |
| Flow Designer | {BASE}/now/flow-designer |
| Scheduled Jobs | {BASE}/sysauto_script_list.do |
| Properties | {BASE}/sys_properties_list.do |
| Choice Lists | {BASE}/sys_choice_list.do |
20.7.5 — Change administration
| Component | URL |
|---|---|
| Change Models | {BASE}/chg_model_list.do |
| Change Policies | {BASE}/chg_policy_list.do |
| CAB Definition | {BASE}/cab_definition_list.do |
| CAB Meeting | {BASE}/cab_meeting_list.do |
| Change Calendar | {BASE}/change_request_calendar.do |
| Risk Assessment | {BASE}/risk_assessment_list.do |
20.7.6 — Users, groups, security
| Component | URL |
|---|---|
| Users | {BASE}/sys_user_list.do |
| Groups | {BASE}/sys_user_group_list.do |
| Roles | {BASE}/sys_user_role_list.do |
| Group Members | {BASE}/sys_user_grmember_list.do |
| ACLs | {BASE}/sys_security_acl_list.do |
| Approvals | {BASE}/sysapproval_approver_list.do |
| Impersonation log | {BASE}/sys_log_list.do?sysparm_query=sourceLIKEimpersonation |
20.7.7 — CMDB (ITSM cross-links)
| Component | URL |
|---|---|
| All CIs | {BASE}/cmdb_ci_list.do |
| Servers | {BASE}/cmdb_ci_server_list.do |
| Applications | {BASE}/cmdb_ci_appl_list.do |
| Relationships | {BASE}/cmdb_rel_ci_list.do |
| Outages | {BASE}/cmdb_ci_outage_list.do |
| Service | {BASE}/cmdb_ci_service_list.do |
20.7.8 — Portals & workspaces
| Component | URL |
|---|---|
| Service Portal | {BASE}/sp |
| Service Portal home | {BASE}/sp?id=index |
| Catalog home | {BASE}/sp?id=sc_home |
| Employee Center | {BASE}/esc |
| Service Operations Workspace | {BASE}/now/sow/home |
| Agent Workspace (classic) | {BASE}/now/cwf/agent |
| Major Incident Workspace | {BASE}/now/major-incident |
| Portal config | {BASE}/sp_portal_list.do |
| Widgets | {BASE}/sp_widget_list.do |
20.7.9 — Reporting & analytics
| Component | URL |
|---|---|
| Reports | {BASE}/sys_report_list.do |
| Dashboards | {BASE}/pa_dashboards_list.do |
| PA Indicators | {BASE}/pa_indicators_list.do |
| PA Data Collector | {BASE}/pa_collection_list.do |
| Surveys | {BASE}/asmt_assessment_list.do |
20.7.10 — Development & deploy
| Component | URL |
|---|---|
| Studio | {BASE}/$studio.do |
| Background Scripts | {BASE}/sys.scripts.do |
| Update Sets (local) | {BASE}/sys_update_set_list.do |
| Retrieved Update Sets | {BASE}/sys_remote_update_set_list.do |
| Plugins | {BASE}/v_plugin_list.do |
| Guided Setup | {BASE}/now/guided-setup |
| REST API Explorer | {BASE}/$restapi.do |
| System Logs | {BASE}/syslog_list.do |
| ATF Tests | {BASE}/sys_atf_test_list.do |
| ATF Test Suites | {BASE}/sys_atf_test_suite_list.do |
| ATF Results | {BASE}/sys_atf_test_result_list.do |
| ATF Schedule | {BASE}/sysauto_atf_test_list.do |
20.7.11 — HR Leave app cross-reference (scope x_786686_hr_leave)
| Component | URL |
|---|---|
| HR Leave Application | {BASE}/sys_app.do?sys_id=c84db0e8839f0b509f02b0d6feaad3c9 |
| Leave Requests | {BASE}/x_786686_hr_leave_req_v2_list.do |
| HR Leave Business Rules | {BASE}/sys_script_list.do?sysparm_query=collectionSTARTSWITHx_786686_hr_leave |
20.8 — Integrated Deploy Runbook (Dev → Test → Prod)
Single cutover sequence after Labs 20.1–20.6 pass locally.
| Phase | Step | Action | URL |
|---|---|---|---|
| DEV | 1 | Complete Update Set ITSM_Wave2_Incident_Problem_Change |
{BASE}/sys_update_set_list.do |
| DEV | 2 | Run ATF suite — 12/12 pass | {BASE}/sys_atf_test_suite_list.do |
| DEV | 3 | Export Update Set to XML | Update Set → Export |
| DEV | 4 | Document: assignment rules, SLA targets, change models in sign-off sheet | — |
| TEST | 5 | Import Retrieved Update Set | {BASE}/sys_remote_update_set_list.do |
| TEST | 6 | Preview → Commit → fix collisions | — |
| TEST | 7 | Manual UAT: P1 incident, Normal change, Problem+KB | §20.1–20.3 verify tables |
| TEST | 8 | Run ATF suite in TEST | {BASE}/sys_atf_test_result_list.do |
| TEST | 9 | 3 nightly greens | — |
| PROD | 10 | Change request for prod deploy (eat your own dog food) | {BASE}/change_request.do?sys_id=-1 |
| PROD | 11 | Import Update Set during maintenance window | {BASE}/sys_remote_update_set_list.do |
| PROD | 12 | Smoke: 1 P3 incident + 1 catalog order + SOW load | {BASE}/now/sow/home |
| PROD | 13 | Hypercare 7 days — daily backlog review | {BASE}/incident_list.do?sysparm_query=active%3Dtrue |
Post-deploy health script (run in PROD):
// ITSM Wave2 health check — {BASE}/sys.scripts.do
var checks = [];
// 1. Assignment rules active
var ar = new GlideAggregate('sysrule_assignment');
ar.addQuery('active', true);
ar.addQuery('table', 'IN', 'incident,problem,change_request');
ar.addAggregate('COUNT');
ar.query(); ar.next();
checks.push('Assignment rules: ' + ar.getAggregate('COUNT'));
// 2. SLA definitions
var sla = new GlideAggregate('contract_sla');
sla.addQuery('active', true);
sla.addQuery('collection', 'incident');
sla.addAggregate('COUNT');
sla.query(); sla.next();
checks.push('Incident SLAs: ' + sla.getAggregate('COUNT'));
// 3. Open P1 count
var p1 = new GlideAggregate('incident');
p1.addQuery('priority', 1);
p1.addQuery('active', true);
p1.addAggregate('COUNT');
p1.query(); p1.next();
checks.push('Open P1 incidents: ' + p1.getAggregate('COUNT'));
checks.forEach(function(c) { gs.info('HEALTH — ' + c); });
20.9 — §20 Lab Sign-Off Checklist
- [ ] 20.0 Foundation: 6 groups, roles, Update Set current
- [ ] 20.1 Incident: P1/P3 lifecycle, VIP BR, CI link BR, SLA pause/resume/stop
- [ ] 20.2 Problem: RCA, Known Error, KB linked, pattern BR
- [ ] 20.3 Change: Standard + Normal + Emergency all closed successfully
- [ ] 20.4 SLA: 10 definitions (5 priorities × response+resolution), schedules wired
- [ ] 20.5 Assignment: 7 rules verified with test incidents/problems/changes
- [ ] 20.6 ATF: 12/12 smoke tests green × 3 nights
- [ ] 20.7 URLs: bookmark §20.7 master index
- [ ] 20.8 Deploy: TEST commit + PROD smoke complete
- [ ] Update Set exported and stored in source control
Estimated total lab time: 6–8 hours (single implementer) · Recommended: split across 2 days with UAT on day 2.
§20 added: Deep Implementation Labs — Incident / Problem / Change create-configure-deploy, SLA suite, assignment rules, ATF smoke tests, master URL index.