ITAM — IT Asset 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} |
| 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 |
|---|---|---|---|
| Hardware Assets | All > Asset > Hardware Assets | {BASE}/alm_hardware_list.do | HAM inventory |
| Asset Models | All > Asset > Models | {BASE}/cmdb_model_list.do | Product models |
| Stockrooms | All > Inventory > Stockrooms | {BASE}/alm_stockroom_list.do | Warehouse locations |
| Consumables | All > Inventory > Consumables | {BASE}/alm_consumable_list.do | Consumable items |
| Software Licenses | All > Software Asset > Licenses | {BASE}/alm_license_list.do | SAM licenses |
| Entitlements | All > Software Asset > Entitlements | {BASE}/alm_entitlement_list.do | License entitlements |
| Purchase Orders | All > Procurement > Purchase Orders | {BASE}/proc_po_list.do | Procurement |
| Asset Workspace | Now Experience > Asset | {BASE}/now/asset/home | Asset agent workspace |
| Reclamation Rules | All > Software Asset > Reclamation | {BASE}/samp_sw_reclamation_rule_list.do | Unused software |
| Guided Setup ITAM | 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_leaveHAM · SAM · Procurement · Stockroom · Contracts · CMDB Integration
Professional Implementer, Practice Labs & Consultant Guide
الأسلوب: عربية + إنجليزية تكمّلان بعضهما — بدون ترجمة حرفية لأسماء الشاشات.
Interview deep revision:
File: ../interview/MODULES_INTERVIEW_REVISION.md (§ ITAM)Related modules:
CMDB.md (CI & relationships) · ITOM.md (Discovery feeds CIs) · ITSM.md (requests) · FSM.md (parts/stockroom) · HRSD.md (employee assets)
ملخص ووصف بالعربية (Arabic Summary)
| البند | الشرح |
|---|---|
| ما هو ITAM؟ | إدارة أصول IT — عتاد (HAM)، تراخيص (SAM)، مستودعات، دورة حياة الأصل |
| لماذا مهم؟ | يعرف المؤسسة ماذا تملك، أين الأجهزة، وهل البرمجيات مرخّصة |
| من يستخدمه؟ | Asset manager، SAM analyst، IT procurement |
| ماذا يغطي الملف؟ | Models، Stockroom، Catalog→Asset، SAM · §16 مختبر HAM |
ملخص في سطر: من الشراء والاستلام حتى النشر والتقاعد — مع امتثال التراخيص (SAM).
وصف مختصر: يغطي alm_asset، الكتالوج، المستودعات، ربط CMDB، واختياري Software Entitlements وreclamation. يتكامل مع ITSM وHRSD.
1) Overview & Business Value
ITAM manages the financial and operational lifecycle of IT assets from request → procure → receive → deploy → maintain → retire. — ITAM = إدارة أصول تقنية المعلومات (عتاد + برمجيات + مخزون + عقود). الهدف: معرفة ماذا تملك، أين هو، من يستخدمه، كم يكلف، وهل البرمجيات مرخّصة بشكل صحيح.
HAM vs SAM vs CMDB (interview must-know)
| Area | Focus | Primary tables |
|---|---|---|
| HAM — Hardware Asset Management | Laptops, servers, monitors — lifecycle, stockroom, assignment | alm_hardware, alm_asset |
| SAM — Software Asset Management | Licenses, entitlements, compliance, reclamation | alm_license, entitlement tables |
| CMDB | Configuration & service impact — relationships, Discovery | cmdb_ci_* |
| Procurement | PO, receiving, vendor | proc_po, proc_po_item |
- CMDB يجيب: “ماذا يتعطل إذا سقط هذا الخادم؟” (تأثير الخدمة).
- ITAM يجيب: “كم لابتوب عندنا؟ من يحمله؟ متى ينتهي العقد؟ هل لدينا تراخيص كافية؟” (مالي + دورة حياة).
- غالبًا سجل الأصل (alm_hardware) يرتبط بـ CI (cmdb_ci_computer) عبر serial / asset tag / model.
Business outcomes (consultant talking points)
- Reduce shadow IT and duplicate purchases.
- Audit-ready hardware/software inventory.
- Optimize license spend (reclamation, true-up).
- Faster onboarding (catalog → PO → asset → user).
- Accurate depreciation and contract renewal.
2) Architecture & Data Model
Service Catalog / Request (ITSM)
↓
Procurement (PO → Receive)
↓
Asset created (alm_hardware) — state: in_stock
↓
Deploy / Assign to user or location
↓
In use → Maintain → Retire / Dispose
↓
(Optional) SAM: normalize installs → match entitlements → compliance
↓
Link to CMDB CI for service impact (cmdb_ci_computer)
Core table hierarchy
alm_asset (base — all assets)
├─ alm_hardware (physical IT hardware)
├─ alm_consumable (consumables — toner, cables)
└─ alm_license (software licenses / entitlements view)
Supporting:
├─ alm_model (product catalog / model)
├─ alm_stockroom (warehouse / depot)
├─ alm_transfer_order (move between stockrooms)
├─ proc_po / proc_po_item (purchase orders)
├─ ast_contract / contract (vendor contracts — SAM)
└─ cmdb_ci_* (configuration — linked, not owned by ITAM)
Key tables (know for CIS & interviews)
| Table | الغرض |
|---|---|
| alm_asset | Base asset record (tag, cost, stockroom, state) |
| alm_hardware | Hardware-specific (serial, assigned_to, CI link) |
| alm_consumable | Consumable quantity tracking |
| alm_license | Software license / entitlement records |
| alm_model | Model definition (manufacturer, category) |
| alm_stockroom | Stockroom / warehouse |
| alm_m2m_stockroom_model | Min/max stock per model per room |
| alm_transfer_order | Inter-stockroom transfer |
| proc_po | Purchase order header |
| proc_po_item | PO line items |
| cmdb_ci_computer | CI linked to laptop/server (CMDB) |
| sc_req_item | Catalog request line (procurement trigger) |
Asset lifecycle states (hardware — typical)
| State / substate | المعنى |
|---|---|
| on_order | Ordered, not received |
| in_stock | In stockroom, available |
| in_use | Deployed to user/location |
| in_maintenance | Repair / RMA |
| retired / disposed | End of life |
الحالات قابلة للتخصيص عبر Asset Lifecycle / workflows — راجع إعداد العميل قبل الامتحان.
ITAM ↔ CMDB relationship
Discovery (ITOM) → creates/updates cmdb_ci_computer
HAM receive/deploy → creates alm_hardware
Integration rule / BR / Asset-CI action → links serial + model
Incident/Change on CI → impact visible; Asset shows financial owner
3) Plugins & Activation
3.1 Plugin / application map
| Capability | Plugin / App (search name) | Notes |
|---|---|---|
| Asset Management (core) | com.snc.asset_management | Base alm_* |
| Hardware Asset Management | com.snc.hardware_asset_management | HAM |
| Software Asset Management | com.snc.software_asset_management | SAM — often licensed |
| Procurement | com.snc.procurement | PO / receiving |
| Contract Management | com.snc.contract_management | Contracts for SAM |
| ITAM Workspace / dashboards | Store apps (version-dependent) | Search “Asset” in Store |
أسماء البلجنز قد تظهر في الواجهة باسم Hardware Asset Management أو IT Asset Management — ابحث بالكلمات: asset, hardware, software, procurement.
3.2 How to activate (step-by-step — practice on PDI)
Step 1 — Open Plugins
Navigate: All > System Definition > Plugins — Open direct
Step 2 — Activate in this order (recommended)
- Asset Management (com.snc.asset_management) → Activate → wait for completion.
- Hardware Asset Management (com.snc.hardware_asset_management) → Activate.
- Procurement (com.snc.procurement) → Activate (if doing PO labs).
- Software Asset Management → from Store if not in Plugins (license on production).
Step 3 — Store apps (if needed)
Navigate: All > System Applications > All Available Applications > All — Open direct
Search: Hardware Asset, Software Asset, IT Asset
Install / Request → wait for plugin dependency install.
Step 4 — Guided Setup
Navigate: All > Guided Setup — Open direct
Search: IT Asset, Hardware Asset, Procurement
Complete: models, stockrooms, lifecycle, catalog linkage.
Step 5 — Validate menus exist
After activation you should see:
All > Asset
All > Procurement (or Asset > Procurement)
If menus missing: check plugin state = Active, clear cache, verify asset / ham_admin role.
3.3 Activation checklist (consultant)
| # | Check |
|---|---|
| 1 | Plugins Active (no errors in plugin log) |
| 2 | Guided Setup phases completed |
| 3 | At least one alm_stockroom |
| 4 | alm_model records for laptops/desktops you will order |
| 5 | Catalog item linked to model + procurement flow |
| 6 | Roles assigned to test users |
| 7 | Sample PO receive → asset in stock → deploy |
تنبيه:
فعّل على Sub-Production أولًا. ITAM يغيّر جداول alm_ و proc_ — استخدم Update Set للنقل.
4) Guided Setup & All Options
Guided Setup sections (typical)
| Section | What you configure |
|---|---|
| Foundation | Stockrooms, models, categories |
| Lifecycle | States, transitions, retire rules |
| Procurement | Vendors, PO templates, receiving |
| Catalog | Hardware request items → asset model |
| SAM (if licensed) | Publishers, products, entitlements, discovery sources |
| CMDB integration | Asset-CI linking rules |
| Roles & security | asset, ham_admin, sam_admin |
Important navigation (admin)
| Option | Navigate |
|---|---|
| Assets (all) | All > Asset > Portfolios > All Assets or alm_asset.list · Open direct |
| Hardware assets | All > Asset > Hardware Assets or alm_hardware.list · Open direct |
| Models | All > Asset > Model Library or alm_model.list · Open direct |
| Stockrooms | All > Asset > Stockrooms or alm_stockroom.list · Open direct |
| Transfer orders | All > Asset > Transfer Orders · Open direct |
| Purchase orders | All > Procurement > Purchase Orders · Open direct |
| Receive PO | Open PO → Receive |
| Software licenses | All > Asset > Software Licenses (SAM) · Open direct |
| Contracts | All > Contract Management > Contracts · Open direct |
| Asset workspace | Search Application Navigator: Asset workspace |
| Properties | All > Asset > Administration > Properties (path may vary) · Open direct |
Configuration options consultants set with client
| Option | Decision |
|---|---|
| Asset tagging scheme | Auto-number vs client prefix |
| Stockroom per site | One per country/DC vs central |
| Who can deploy/retire | Roles + ACLs |
| Catalog vs direct PO | Self-service laptop request? |
| CI linking | Auto on serial match vs manual |
| SAM normalization | Which discovery sources (SCCM, AD, etc.) |
| Depreciation | Financial integration (ERP) |
5) End-to-End Process Cycle
Cycle A — Hardware (HAM) full lifecycle
1. Request
Employee orders "Laptop" from Service Catalog (ITSM)
→ sc_request / sc_req_item created
-
Procure
Procurement generates proc_po from catalog flow
→ Vendor fulfills → PO line received -
Receive → Asset
Receive PO → alm_hardware created (state: in_stock)
→ Stockroom populated -
Deploy
Assign to user (assigned_to) → state: in_use
→ Optional: link cmdb_ci_computer (CMDB) -
Maintain
Repair / loaner / transfer between stockrooms (alm_transfer_order) -
Retire
Retire/dispose → compliance + audit trail
→ May update/remove CI per policy
Cycle B — Software (SAM) high level
Define software model + publisher
→ Create contract + entitlements (seats/metrics)
→ Discovery / integration imports installs (normalized)
→ Reconciliation: installs vs entitlements
→ Compliance dashboard (under/over licensed)
→ Reclamation candidates (unused licenses)
Cycle C — Consumables (stockroom)
Model (consumable) → stock in alm_stockroom
→ FSM / manual issue reduces quantity
→ Reorder when below min (alm_m2m_stockroom_model)
6) Development
6.1 When to customize
- Auto-create asset on PO receive (often OOTB — verify before scripting).
- Link CI when serial number matches Discovery.
- Notify manager on deploy/retire.
- Integration to ERP (cost center, PO number).
6.2 Business Rule example — link CI by serial (concept)
// alm_hardware after insert/update — pseudo pattern
if (current.serial_number && !current.ci) {
var ci = new GlideRecord('cmdb_ci_computer');
ci.addQuery('serial_number', current.serial_number);
ci.query();
if (ci.next()) {
current.ci = ci.sys_id;
current.update();
}
}
استخدم Asset-CI association OOTB إن وُجد في إصدارك قبل كتابة BR.
6.3 Flow Designer use cases
- Manager approval for expensive hardware catalog request.
- Retire approval before disposal.
- SAM reclamation workflow (notify owner → reclaim).
6.4 Integration patterns
| Pattern | Tool |
|---|---|
| ERP PO / asset sync | IntegrationHub / Import Sets / ESB |
| Discovery → CI | ITOM Discovery (ITOM.md) |
| CI → Asset | Identification by serial, asset tag |
| SCCM / Intune installs | SAM content connectors |
| HR joiner/leaver | HRSD Lifecycle → revoke assets |
6.5 Script includes & APIs (awareness)
- AssetandCI / asset APIs (version-specific — search instance).
- GlideRecord on alm_hardware, alm_asset — standard platform.
- REST: table API alm_hardware for integrations.
7) Administration
7.1 Key roles
| Role | Purpose |
|---|---|
| asset | Basic asset user |
| asset_manager / ham_admin | HAM configuration |
| sam_admin | SAM configuration |
| procurement_admin | PO / vendors |
| stockroom_admin | Stockroom operations |
| contract_manager | Contracts (SAM) |
| cmdb_admin | CI side (with ITAM team) |
| itil | May consume assets in incidents (read) |
7.2 Role hierarchy
admin
└─ asset_manager / ham_admin / sam_admin
├─ procurement_admin
├─ stockroom_admin
└─ asset (operate assigned assets)
7.3 Admin areas
| Area | Navigate |
|---|---|
| Roles | All > User Administration > Roles · Open direct |
| ACLs | sys_security_acl — alm_asset, alm_hardware |
| Asset properties | All > Asset > Administration · Open direct |
| Model categories | Model library |
| Lifecycle | Asset lifecycle configuration |
| Procurement settings | All > Procurement > Administration · Open direct |
7.4 Security notes
- Restrict retire and cost fields to asset managers.
- Separate stockroom ACLs by location (domain separation in enterprise).
- SAM compliance data may be sensitive — limit sam_admin.
8) Hands-on Labs — تدريب عملي (complete steps)
نفّذ على PDI بعد تفعيل §3. اربط كل lab بملفات: CMDB.md, ITSM.md.
Lab 0 — Prerequisites (15 min)
- Activate plugins per §3.2.
- Navigate: All > Guided Setup → complete Hardware Asset foundation. — Open direct
- Create stockroom:
- Navigate: All > Asset > Stockrooms → New. — Open direct
- Name: Riyadh IT Stock, Type: warehouse. - Create model:
- Navigate: All > Asset > Model Library → New. — Open direct
- Name: Laptop Standard 14”, Category: Computer, Asset class: hardware.
Done when: stockroom + model exist.
Lab 1 — Manual hardware asset (20 min)
- Navigate: alm_hardware.list → New.
- Fill:
- Model: Laptop Standard 14”
- Stockroom: Riyadh IT Stock
- Serial number: SN-LAB-001
- Asset tag: auto or AT-001 - Save → verify Substate = in_stock (or equivalent).
- Open record → Deploy (or action menu Deploy):
- Assigned to: your test user.
- Verify state → in_use.
Done when: asset assigned and in use.
Lab 2 — Procurement receive → asset (45 min)
A — Vendor (one-time)
- Navigate: All > Procurement > Vendors → New vendor Lab Vendor. — Open direct
B — Purchase order
- Navigate: All > Procurement > Purchase Orders → New. — Open direct
- Add line: Model Laptop Standard 14”, Quantity 2.
- Submit / approve PO per your instance workflow.
C — Receive
- Open PO → Receive (or Receive Line).
- Navigate: alm_hardware.list → filter Created today.
- Confirm 2 assets, state in_stock, correct stockroom.
D — Deploy one
- Deploy one laptop to a user; leave one in stock.
Done when: PO received and assets visible in stockroom report.
Lab 3 — Service Catalog → asset (60 min)
- In ITSM catalog (ITSM.md Lab 2 pattern):
- Create catalog item Standard Laptop linked to model Laptop Standard 14”.
- Enable procurement / asset fulfillment per Guided Setup. - Order from Service Portal as end user.
- Fulfill PO → Receive → verify asset created.
- Assign to requester.
Done when: end-to-end catalog → asset without manual PO entry.
Lab 4 — Stockroom transfer (20 min)
- Create second stockroom Jeddah IT Stock.
- Navigate: All > Asset > Transfer Orders → New. — Open direct
- From: Riyadh → To: Jeddah, select asset in stock.
- Complete transfer → verify asset stockroom updated.
Lab 5 — Link asset to CI (30 min)
Option A — Manual
- Create or open cmdb_ci_computer with same serial as Lab 1 asset.
- On alm_hardware, set Configuration item field to that CI.
Option B — With Discovery (if ITOM active)
- Run Discovery on a VM with serial (ITOM.md Lab 2).
- Verify CI created → link or auto-link to asset.
Done when: CI visible on asset form and asset tag on CI (if configured).
Lab 6 — Retire asset (15 min)
- Open deployed asset → Retire / disposal workflow.
- Verify state retired / disposed.
- Confirm assigned_to cleared per policy.
Lab 7 — SAM awareness (30 min — if licensed)
- Navigate: All > Asset > Software Licenses (or SAM menu). — Open direct
- Create publisher + software model + license entitlement (e.g. 100 seats).
- Review compliance dashboard (demo data acceptable on PDI).
- Interview prep: explain reconciliation without building full connector.
Lab 8 — Consultant dry-run (interview)
Explain in 5 minutes:
- HAM vs SAM vs CMDB.
- Catalog → PO → Receive → Deploy.
- Two stockrooms + transfer.
- Why retire matters for audit.
- One integration point (Discovery or ERP).
9) Best Practices & Common Mistakes
Best practices
- Define models before mass asset creation (avoid messy free-text).
- One authoritative stockroom per site; use transfers, not duplicate records.
- Link CI early for service management; keep asset as financial/lifecycle master.
- Use catalog + procurement for joiners — not ad-hoc POs.
- SAM: normalize software titles before entitlement matching.
- Align lifecycle states with HR offboarding (HRSD).
Common mistakes
| Mistake | Fix |
|---|---|
| Assets without models | Enforce model on catalog/PO |
| Duplicate assets same serial | IRE-style rules / unique serial ACL |
| CMDB and asset out of sync | Link policy on serial; periodic audit job |
| SAM without discovery source | Installs unknown → false compliance |
| Retiring asset but not reclaiming license | SAM reclamation process |
| Wrong role on stockroom | ACL per stockroom/location |
10) CIS / Interview Focus
High-yield topics
- HAM vs SAM vs CMDB (three-way comparison).
- Tables: alm_asset, alm_hardware, alm_license, proc_po.
- Lifecycle: in_stock → in_use → retired.
- Catalog → REQ/RITM → PO → receive → asset.
- Stockroom, transfer order, model library.
- Contract + entitlement (SAM).
- Integration: Discovery/CI, ERP, HR joiner-leaver.
- Compliance / true-up / reclamation vocabulary.
Sample Q&A
Q: What is the difference between HAM and SAM?
A: HAM manages physical hardware lifecycle and stockrooms. SAM manages software licenses, entitlements, and compliance.
Q: ITAM vs CMDB?
A: CMDB is configuration and service impact. ITAM is asset lifecycle, cost, stockroom, and licensing. They integrate via CI link.
Q: How does a laptop request become an asset?
A: Catalog item → request → procurement PO → receive → alm_hardware in stock → deploy to user.
Q: What table stores the hardware record?
A: alm_hardware (extends alm_asset).
11) Portals, Workspaces, Role Hierarchy & Feature Catalog
11.1 Portals (end users)
| Surface | URL / Navigate | Use |
|---|---|---|
| Service Portal | /sp | Request hardware via catalog |
| Employee Center | /esc | Same catalog experience (modern) |
الموظف لا يدخل “Asset Workspace” — يطلب من الكتالوج.
11.2 Workspaces & agent UI
| Surface | Navigate | لمن |
|---|---|---|
| Asset / ITAM Workspace | Application Navigator → Asset / IT Asset Management | Asset managers |
| Hardware Asset lists | alm_hardware.list | Agents |
| Procurement | All > Procurement · Open direct | Buyers |
| SAM workspace | All > Software Asset (if licensed) · Open direct | SAM team |
| CMDB Workspace | /now/cmdb | CI relationship view |
| Service Operations Workspace | /now/sow/home | ITSM + CI context |
روابط Workspace تختلف حسب الإصدار — تحقق من:
All > Now Experience Framework > UI Builder — Open direct
11.3 Role hierarchy
admin
└─ ham_admin / sam_admin / asset_manager
├─ procurement_admin
├─ stockroom_admin
├─ contract_manager (SAM)
└─ asset (user-level operations)
11.4 Full business cycle (consultant view)
Strategy: HAM scope, SAM scope, CMDB integration policy
→ Models + categories + stockrooms
→ Lifecycle + approvals
→ Catalog + procurement templates
→ PO/Receive/Deploy operations
→ CI linking (Discovery + rules)
→ SAM entitlements + compliance (if licensed)
→ Retire/dispose + audit
→ PA dashboards: stock levels, license position, aging hardware
11.5 Feature catalog
HAM features:
- Model library, stockrooms, transfers.
- Asset lifecycle (deploy, retire, RMA).
- Procurement integration.
- Barcode / asset tag (if enabled).
SAM features:
- Publishers, products, entitlements.
- Normalization, reconciliation, compliance.
- Reclamation, true-up preparation.
Platform integrations:
- ITSM Service Catalog.
- CMDB / Discovery (ITOM).
- FSM parts inventory.
- HRSD onboarding/offboarding.
- GRC (policy attestation on asset data — optional).
12) End-to-End Implementation (Post-Activation)
نفّذ بعد §3 و §4 — مشروع عميل حقيقي أو PDI capstone.
12.1 Application menus map
All > Asset
├─ Portfolios / All Assets / Hardware Assets
├─ Model Library
├─ Stockrooms
├─ Transfer Orders
├─ Software Licenses (SAM)
└─ Administration / Properties / Lifecycle
All > Procurement
├─ Purchase Orders
├─ Vendors
└─ Receive / Administration
All > Contract Management (SAM contracts)
All > Configuration (CMDB — CI link)
└─ Computers / CI Class Manager
All > Service Catalog (hardware items)
All > Guided Setup (IT Asset / HAM / SAM)
12.2 Core tables to bookmark
| List URL | Table |
|---|---|
| alm_asset.list | All assets |
| alm_hardware.list | Hardware |
| alm_model.list | Models |
| alm_stockroom.list | Stockrooms |
| alm_transfer_order.list | Transfers |
| proc_po.list | Purchase orders |
| alm_license.list | Licenses (SAM) |
| cmdb_ci_computer.list | Computers (CMDB) |
12.3 End-to-end build order (consultant playbook)
| Phase | Activities | Owner |
|---|---|---|
| 1 — Discover | Process workshops: request, approve, buy, receive, deploy, retire | BA / Consultant |
| 2 — Activate | Plugins + Guided Setup (§3) | Admin |
| 3 — Foundation | Models, categories, stockrooms, vendors | Asset manager |
| 4 — Lifecycle | States, transitions, retire rules | Admin + IT |
| 5 — Security | Roles, ACLs, domains | Admin |
| 6 — Catalog | Hardware items, variables, approvals | ITSM + ITAM |
| 7 — Procurement | PO templates, receiving rules | Procurement |
| 8 — CMDB | CI class, link rules, Discovery scope (CMDB.md, ITOM.md) | CMDB team |
| 9 — SAM | Entitlements, connectors, compliance dashboards | SAM team |
| 10 — Integrate | HR joiner/leaver, ERP, FSM parts | Integration |
| 11 — Test | Labs §8 + UAT scripts | QA |
| 12 — Train | Agents, stockroom, end users (catalog only) | Change mgmt |
| 13 — Go-live | Hypercare, audit first stock take | PM |
12.4 UAT scenarios (minimum)
- Catalog laptop request → PO → receive → deploy.
- Transfer between stockrooms.
- Retire with approval.
- CI appears on asset after deploy/Discovery.
- (SAM) Compliance report runs without error.
12.5 Post-go-live operations
- Monthly stockroom reconciliation.
- Quarterly SAM true-up review.
- Annual model catalog cleanup.
- CMDB ↔ Asset reconciliation report.
Quick reference — module relationships
ITSM (catalog/request)
↓
Procurement (PO)
↓
ITAM (alm_hardware)
↙ ↘
HAM SAM
↓ ↓
stockroom licenses
↓
CMDB (cmdb_ci) ← ITOM Discovery
↓
ITSM incident (CI impact)
Study path:
- Foundation: CMDB.md → ITAM.md (this file) → ITOM.md
- Service: ITSM.md → HRSD.md / FSM.md
- Interview: ../interview/MODULES_INTERVIEW_REVISION.md
- Plat4mation ITAM prep: ../interview/PLAT4MATION_INTERVIEW_PREP.md
13) Options & Instance Notes
| Resource | Content |
|---|---|
| Instance gaps | MODULE_OPTIONS_AND_INSTANCE_NOTES.md → ITAM |
| Full implementation | MODULE_IMPLEMENTATION_PLAYBOOK.md → ITAM |
14) Implementation Scenarios, Options, Best Practices & Customizations
Playbook: MODULE_IMPLEMENTATION_PLAYBOOK.md → ITAM · Labs: §8
14.1 Scenarios
| ID | Scenario | Path |
|---|---|---|
| S1 | HAM manual | Models + stockroom + deploy/retire |
| S2 | HAM + Procurement | Catalog → PO → receive |
| S3 | + SAM | Entitlements + compliance |
14.2 Options matrix
| Area | A | B |
|---|---|---|
| Request | Service Catalog item | Direct PO |
| CI link | Serial auto-match | Manual |
| SAM data | Discovery connector | Import licenses |
| Retire | Flow approval | Manual state |
14.3 Plugins (order)
com.snc.asset_management → com.snc.hardware_asset_management → com.snc.procurement → SAM (Store)
14.4 Roles
ham_admin, sam_admin, procurement_admin, stockroom_admin, asset, contract_manager.
14.5 Common developments
Catalog fulfillment flows, transfer orders, ERP outbound REST, barcode scanning, HR joiner/leaver asset tasks, reclamation workflows (SAM), custom depreciation fields.
14.6 Best practices
Model library before bulk assets; never skip stockroom reconciliation; align retire with HR offboarding.
14.7 Go-live
- [ ] Catalog→PO→receive UAT
- [ ] CI link policy documented
- [ ] SAM true-up process (if S3)
15) Zero-to-Hero End-to-End Implementation (Scratch → Go-Live)
Framework: MODULE_ZERO_TO_HERO_CONSULTING.md · Labs §8
من مكتبة Models حتى Catalog → PO → Asset → Retire.
15.1 Business goals
| Goal | العربي |
|---|---|
| Know what you own | معرفة الأصول وموقعها |
| Lifecycle control | من طلب حتى التخلص |
| License compliance | SAM — تراخيص كافية |
| Cost / audit | جاهزية التدقيق المالي |
15.2 Phase 0 — Discover
Asset types, stockrooms, procurement process, joiner/leaver, SAM scope.
15.3 Phase 1 — Activate (order)
Asset → HAM → Procurement → SAM (Store).
15.4 Phase 2 — Foundation (Week 2–4)
Models, categories, stockrooms, vendors, lifecycle states.
15.5 Phase 3 — HAM process (Week 4–8)
Catalog item → PO → receive → deploy → transfer → retire (§8 labs).
15.6 Phase 4 — CMDB link (Week 6–8)
Serial match policy, Discovery optional (CMDB.md).
15.7 Phase 5 — SAM (if S3) (Week 8–12)
Entitlements, discovery source, compliance dashboard, reclamation.
15.8 Phase 6 — UAT & go-live
End-to-end laptop request, stockroom reconciliation, ERP mock.
15.9 Phase 7 — Operate
Monthly stock take, SAM true-up quarterly, model catalog cleanup.
15.10 Master checklist
- [ ] Plugins · [ ] Catalog→asset UAT · [ ] Roles · [ ] ERP integration optional
16) Full E2E Practice · Pages · Requirements · Options (AR + EN)
HAM + SAM Pro · Links to CMDB.md and catalog (ITSM.md).
16.1 Business goals
| Goal (EN) | الهدف (AR) | KPI |
|---|---|---|
| Asset lifecycle visibility | رؤية دورة الأصل | Time deploy→retire |
| Stockroom accuracy | دقة المستودع | Inventory variance |
| License compliance (SAM) | امتثال تراخيص | True-up cost avoided |
| Cost allocation | توزيع التكلفة | Chargeback reports |
Why buy ITAM: English: Know what you own, where it is, and whether software is licensed. — ITAM يربط شراء → مخزون → مستخدم → تقاعد ويمنع غرامات التراخيص.
16.2 Requirements
| ID | EN | AR | Track |
|---|---|---|---|
| AM-R01 | Model/category catalog | كatalog موديلات | HAM |
| AM-R02 | Stockrooms + transfer rules | مستودعات ونقل | HAM |
| AM-R03 | Catalog request creates asset task | طلب → أصل | HAM |
| AM-R04 | Asset CI sync | مزامنة CI | HAM+CMDB |
| AM-R05 | Software entitlements | استحقاقات | SAM |
| AM-R06 | Discovery/AD for installs | اكتشاف تثبيتات | SAM |
| AM-R07 | Reclamation workflow | استرداد تراخيص | SAM |
16.3 Consultation cycle
| Phase | EN | AR | Deliverable |
|---|---|---|---|
| 0 | Asset types in scope (laptop, mobile, SW) | أنواع الأصول | Scope |
| 1 | As-is (ERP, spreadsheets) | الوضع الحالي | Gap |
| 2 | HAM process design | عملية HAM | Swimlane |
| 3 | Stockrooms + catalog | مستودعات | Config |
| 4 | SAM (if licensed) | SAM | Entitlement model |
| 5 | UAT full lifecycle | UAT | Sign-off |
16.4 Options (A / B / C)
| Area | A | B | C |
|---|---|---|---|
| Request intake | Service Catalog | HR case | |
| Asset record | alm_asset native | Custom table | ERP only |
| Deploy | Fulfillment task + asset task | Manual assign | Third-party tool |
| SAM discovery | ServiceNow Discovery | SCCM import | Manual entitlements |
| Retirement | Dispose workflow + certificate | Status only | ERP drives |
16.5 All pages (Navigate)
| Page | Navigate |
|---|---|
| Asset Management | All > Asset > Assets · Open direct |
| Models | All > Asset > Model Categories / Models · Open direct |
| Stockrooms | All > Asset > Stockrooms · Open direct |
| Asset Tasks | All > Asset > Tasks · Open direct |
| Hardware Inventory | alm_hardware.list |
| Consumables | All > Asset > Consumables · Open direct |
| Contract Management | All > Contract > Contracts · Open direct |
| Software Models | All > Software Asset > Software Models · Open direct |
| Entitlements | All > Software Asset > Entitlements · Open direct |
| License Workbench | All > Software Asset > Licensing · Open direct |
| Reclamation | All > Software Asset > Reclamation · Open direct |
| HAM Workspace | /now/asset/ (version varies) |
16.6 Full PDI lab — HAM track (14 steps)
| Step | EN | AR | Verify |
|---|---|---|---|
| 1 | Create Model Category + Model (laptop) | موديل | Model saved |
| 2 | Create Stockroom HQ IT | مستودع | Stockroom active |
| 3 | Receive 3 assets into stockroom | استلام | qty=3 |
| 4 | Create catalog item linked to model | كتالوج | Order creates RITM |
| 5 | Order as user — fulfill | طلب | Asset task |
| 6 | Deploy asset to user | نشر | Assigned user |
| 7 | Transfer asset between stockrooms | نقل | Location updated |
| 8 | Retire one asset | تقاعد | State retired |
| 9 | Link asset serial to CI (if CMDB) | CI | Relationship |
| 10 | Run stockroom report | تقرير | qty matches |
| 11 | Document Option A/B/C | خيارات | Doc |
| 12 | Role test: asset user vs admin | أمان | ACL |
| 13 | UAT: new hire laptop E2E | UAT | Pass |
| 14 | Update Set ITAM Lab 16 | Export | Done |
SAM add-on (if licensed): Create software model → entitlement → run discovery → compliance dashboard → reclamation candidate.
16.7 Sign-off
- [ ] Model catalog approved · [ ] Stockroom owners named · [ ] Catalog→deploy tested · [ ] SAM true-up process documented (if SAM)
§17 — Power User Playbook (ITAM)
Daily operating manual for HAM Pro, SAM Pro, Procurement & Audit.
دليل التشغيل اليومي لإدارة العتاد، البرمجيات، الشراء، والتدقيق.
17.1 Personas & Daily Mission
| Persona | Primary Tables / Workspaces | Daily Mission (EN) |
|---|---|---|
| Asset Manager | alm_asset, alm_hardware, dashboards | Govern lifecycle states, reconcile stockrooms, sign off audits |
| Procurement Officer | proc_po, proc_po_item, vendors | Issue POs, receive shipments, track vendor performance |
| License Manager (SAM) | alm_license, cmdb_sam_sw_install, License Workbench | Maintain license positions, run true-ups, drive reclamation |
| Hardware Lifecycle Coordinator | alm_hardware, Asset Workspace | Move assets through deploy → maintain → retire → dispose |
| Auditor | sys_audit, alm_asset_audit, evidence repo | Sample assets, verify proof of ownership, compliance attestation |
| End-user (requester) | Service Portal / Employee Center | Request laptops/software, return assets |
| الشخصية | الجداول/مساحات العمل | المهمة اليومية |
|---|---|---|
| مدير الأصول | الأصول، عتاد، لوحات | حوكمة دورة الحياة وتسوية المستودعات |
| مسؤول الشراء | أوامر الشراء، الموردون | إصدار PO واستلام الشحنات |
| مدير التراخيص | تراخيص، تثبيتات | إدارة الموقف التراخيصي والاسترداد |
| منسق العتاد | عتاد، مساحة عمل | حركة الأصل في كل الحالات |
| المدقق | أدلة، عينات | التحقق من الملكية والامتثال |
| المستخدم النهائي | بوابة الخدمة | طلب الأصول والإرجاع |
17.2 Day-in-Life — A Typical Monday
08:00 Open new-hire queue (HR Cases linked to assets)
→ All > User Administration > Users (filter: created last 24h)
→ For each: assign laptop, monitor, headset from stockroom.
09:00 Stockroom count check at HQ
→ All > Asset > Stockrooms → HQ IT → verify physical vs system. — Open direct
10:00 Vendor reconciliation: open vendor portal export →
diff against alm_asset → flag missing receipts.
11:00 SAM Workbench — License Position
→ All > Software Asset > Licensing — Open direct
Investigate any “Non-compliant” lines.
13:00 EOL hardware retirement batch
→ alm_hardware.list filter: warranty < today, in_use=false
→ Bulk Retire → schedule disposal.
14:00 Procurement: receive PO #INV-3421 (2 laptops) → stockroom in_stock.
15:00 Audit prep — pull random 25 hardware assets, verify physical tags.
16:30 Refresh forecast (3-yr lifecycle): export to Power BI. — يوم الاثنين النموذجي: تعيينات الموظفين الجدد، جرد المستودع، تسوية المورد، الموقف التراخيصي، تقاعد العتاد، استلام PO، وعينة تدقيق.
17.3 Hardware Asset Manager (HAM Pro) Recipes
Recipe A — Create asset model + product model linkage
- Navigate: All > Asset > Model Categories → ensure category exists (Computer / Monitor / Peripheral). — Open direct
- Navigate: All > Asset > Model Library → New: — Open direct
- Name: Dell Latitude 7450 — i7 — 16GB
- Manufacturer: Dell
- Asset class: hardware
- Model categories: Computer
- Hardware type: Laptop - Optional product model (for SAM/Procurement linkage):
- Navigate: All > Product Catalog > Product Models → link via Model field. — Open direct - Bind cost: Set acquisition cost, depreciation method (SL straight line, 36 months).
// Bulk-create models from CSV (background script)
var rows = [
{ name: 'Dell Latitude 7450', mfr: 'Dell', type: 'Laptop', cost: 2200 },
{ name: 'HP EliteBook 845', mfr: 'HP', type: 'Laptop', cost: 2050 },
{ name: 'iPhone 15 Pro', mfr: 'Apple', type: 'Phone', cost: 1500 }
];
rows.forEach(function(r) {
var m = new GlideRecord('cmdb_model');
m.initialize();
m.name = r.name;
m.manufacturer.setDisplayValue(r.mfr);
m.hardware_type = r.type;
m.cost = r.cost;
m.asset_class = 'hardware';
m.insert();
});
عرّف الفئة ثم الموديل، اربط الموديل بالكتالوج، حدد التكلفة وطريقة الإهلاك.
Recipe B — Stockroom inventory adjustments
- Navigate: All > Asset > Stockrooms → open stockroom. — Open direct
- Related list Stockroom Items → counts per model.
- To adjust (audit corrections):
// Adjust quantity for a consumable stockroom row
var row = new GlideRecord('alm_consumable');
row.addQuery('model.name', 'Cat6 Cable 2m');
row.addQuery('stockroom.name', 'HQ IT');
row.query();
if (row.next()) {
var delta = 50;
row.quantity = parseInt(row.quantity, 10) + delta;
row.work_notes = 'Quarterly audit reconciliation +' + delta;
row.update();
}
For hardware (serialized): use Transfer Order instead of mass-edit.
Recipe C — Asset assignment to user via portal
- Navigate: /sp → catalog item Request a Laptop.
- End-user submits → RITM created → Procurement task fires.
- Fulfiller side: Navigate: All > Asset > Hardware Assets → state in_stock → click Deploy. — Open direct
- Set assigned_to, location, deployment date → state moves to in_use.
Auto-deploy on new hire (Business Rule on sys_user after insert):
(function executeRule(current) {
if (!current.department || current.department.getDisplayValue() != 'Engineering') return;
var asset = new GlideRecord('alm_hardware');
asset.addQuery('model.short_description', 'CONTAINS', 'Laptop');
asset.addQuery('install_status', '6'); // In stock
asset.setLimit(1);
asset.query();
if (asset.next()) {
asset.assigned_to = current.sys_id;
asset.install_status = '1'; // Installed/In use
asset.update();
gs.eventQueue('asset.assigned', asset, current.email, '');
}
})(current);
المستخدم يطلب من البوابة، الموظف ينفّذ النشر، أو BR ينفذها تلقائيًا للهندسة.
Recipe D — Asset → Incident linkage
- On an Incident record → Affected CI = laptop’s CI.
- Form auto-displays linked asset (alm_hardware) via Asset/CI relationship.
- To enforce link in BR:
// Before BR on incident — copy asset from CI
(function(current) {
if (!current.cmdb_ci || current.u_asset) return;
var asset = new GlideRecord('alm_hardware');
asset.addQuery('ci', current.cmdb_ci);
asset.setLimit(1);
asset.query();
if (asset.next()) current.u_asset = asset.sys_id;
})(current);
Recipe E — Retirement workflow (wipe, dispose, recycle)
State machine:
in_use → retired (logical retirement, kept on record)
retired → disposed (physically gone)
Sub-states for tracking:
- pending_wipe
- pending_disposal_vendor
- disposal_certificate_received
Steps:
- Open asset → action Retire.
- Trigger flow: ITAM Retire:
- Create wipe task → assigned to Field Tech.
- Field Tech uploads certificate (attachment).
- Send to disposal vendor.
- Vendor returns certificate of destruction (CoD).
- Asset moved to disposed, retired_date stamped.
// Validate disposal certificate uploaded
(function executeRule(current) {
if (current.install_status != '7' /* Retired */) return;
var att = new GlideRecord('sys_attachment');
att.addQuery('table_name', 'alm_hardware');
att.addQuery('table_sys_id', current.sys_id);
att.addQuery('file_name', 'CONTAINS', 'CoD');
att.query();
if (!att.hasNext()) {
gs.addErrorMessage('Cannot fully retire without Certificate of Destruction attached.');
current.setAbortAction(true);
}
})(current);
Recipe F — RMA workflow
- Asset in in_use → Issue reported → set substate pending_repair.
- Open ticket with vendor (RMA number captured in u_rma_number).
- Track loaner (separate asset record) issued to user during RMA.
- On return: vendor sends replacement → swap serials in record, attach RMA doc, return loaner to stock.
Recipe G — Disposal certificate upload
Add the Attachment UI Action with required-attachment validation (see Recipe E script). Store certs in dedicated table u_disposal_certificates for audit. — وصفات HAM: موديلات، مستودع، تخصيص، ربط حادثة، تقاعد، RMA، شهادات التخلص.
17.4 Software Asset Manager (SAM Pro) Recipes
Recipe A — Publisher onboarding (Microsoft, Adobe, Oracle, SAP)
- Navigate: All > Software Asset > Libraries > Software Publishers. — Open direct
- Verify publisher exists (curated content normally pre-loaded).
- If missing → New (rare): include normalization rules and product mapping.
- Navigate: All > Software Asset > Libraries > Software Models → assign content publisher. — Open direct
- Activate Content Service subscription so SN keeps the library updated.
Vendor-specific notes:
| Vendor | Watch out |
|---|---|
| Microsoft | M365 user-based vs device-based; ECM/EMS bundles |
| Adobe | Named-user only (Creative Cloud), no concurrent |
| Oracle | NUP, Processor, ULA; license metrics tightly defined |
| SAP | Indirect access; named users by classification |
Recipe B — License Position calculation
- Navigate: All > Software Asset > Licensing > License Workbench. — Open direct
- Select software (e.g. Adobe Acrobat Pro).
- Workbench shows: Entitlements vs Installations vs Compliance Position.
- Click Recalculate to force engine run.
// Recalc license positions programmatically
var calc = new sn_sam.LicenseEngineAPI();
var sw = new GlideRecord('cmdb_software_product_model');
sw.addQuery('install_status', '1');
sw.query();
while (sw.next()) calc.scheduleReconciliation(sw.sys_id);
Recipe C — True-up / true-down
True-up = buy more licenses to cover overage.
True-down = retire entitlements not needed (or harvest).
Quarterly process:
1. Export License Position to CSV.
2. Highlight rows where Compliance < 0 (over-deployed) → True-up purchase.
3. Highlight rows where Compliance > 25% buffer → True-down candidate.
4. Approval via CHG → update entitlement quantity → re-run engine.
Recipe D — Reclamation policy (idle 90d)
- Navigate: All > Software Asset > Reclamation > Reclamation Candidates. — Open direct
- Configure rule: “Reclaim if last_used > 90 days AND no exception”.
- Reclamation rule script (custom):
var sw = new GlideRecord('cmdb_sam_sw_install');
sw.addQuery('publisher.name', 'Adobe');
sw.addQuery('last_used', '<', gs.daysAgoStart(90));
sw.query();
while (sw.next()) {
var rec = new GlideRecord('samp_sw_reclamation_candidate');
rec.initialize();
rec.installation = sw.sys_id;
rec.user = sw.installed_on.assigned_to;
rec.policy = 'Idle 90 days';
rec.insert();
}
- Approval flow notifies user → 14 days to justify → else automated uninstall via SCCM/Intune spoke.
Recipe E — Engineering vs Standard editions
Distinguish via Software Model Edition field; license metric tracked separately. Engineering edition often costlier — bind to Engineering AD group only.
Recipe F — Subscription vs Perpetual
| Type | Tracking | True-up |
|---|---|---|
| Perpetual + Maintenance | Count + version coverage | Yes if version uplift |
| Subscription (named) | Active named users by month | Re-true at renewal |
| Subscription (concurrent) | Peak concurrent users | Adjust upon renewal |
| SaaS (Microsoft 365) | API-pulled actual usage | Right-size monthly |
Recipe G — SaaS license discovery (M365, Salesforce)
- Navigate: All > SaaS License Management > SaaS Subscriptions. — Open direct
- New connector → Microsoft 365 (OAuth app reg) or Salesforce (OAuth + refresh token).
- Connector pulls: users, license SKUs, last login, usage.
- Reclamation rule: license = E5 AND last login > 60d → propose downgrade to E3 or remove. — وصفات SAM: قواعد الموردين، حساب الموقف، true-up/down، الاسترداد، الإصدارات، SaaS.
17.5 Procurement Recipes
Recipe A — Catalog item → PO → vendor → receipt → asset creation
1. Catalog item "Request Laptop" → variables: model, justification.
2. Manager approval (Flow Designer).
3. Procurement task creates proc_po and proc_po_item.
4. Send to vendor (manual or via EDI/spoke).
5. Vendor confirms → expected delivery.
6. Receive PO line → quantity → alm_hardware created with serial input.
7. Stockroom set automatically; state in_stock.
UI Path: PO record → Receive Line button → enter received qty + serials → asset(s) auto-create.
Recipe B — Vendor scorecards
// PA-style aggregate of vendor performance
var agg = new GlideAggregate('proc_po');
agg.addQuery('vendor', '!=', '');
agg.addAggregate('COUNT');
agg.addAggregate('AVG', 'u_days_to_deliver');
agg.groupBy('vendor');
agg.query();
while (agg.next()) {
gs.info('Vendor ' + agg.getDisplayValue('vendor') +
' POs=' + agg.getAggregate('COUNT') +
' avgDays=' + agg.getAggregate('AVG', 'u_days_to_deliver'));
}
Build PA indicator Vendor On-Time Delivery % to feed scorecard widget. — الكتالوج يبدأ بطلب → PO → استلام → أصل؛ ولوحات الموردين تقاس عبر مؤشرات PA.
17.6 Audit Recipes
Recipe A — Surprise audit playbook
1. Auditor pulls random 25 hardware assets across sites.
2. Asset Manager retrieves physical asset (or photo evidence + signed user).
3. Cross-check: serial, location, assignee.
4. Mark audit results in alm_asset_audit table.
5. Discrepancies → corrective action ticket.
// Random sample of 25 in_use assets
var sample = new GlideRecord('alm_hardware');
sample.addQuery('install_status', '1');
sample.orderBy('sys_id'); // deterministic — auditor seeds another way for true random
sample.setLimit(25);
sample.query();
while (sample.next()) gs.info(sample.asset_tag + ' | ' + sample.assigned_to.getDisplayValue());
Recipe B — Evidence collection
- Hardware: photo of asset tag + serial + signed acknowledgement (PDF in attachments).
- Software: License purchase order + entitlement reference.
- Disposal: Certificate of Destruction.
Standard naming: EVD-
Recipe C — Compliance attestation
Quarterly: managers attest to assets in their cost center via Employee Center attestation campaign (HR Case if no SAM Audit module). — وصفات التدقيق: عينة عشوائية، أدلة مرفقة، شهادات تخلص، حملة شهادة الامتثال الفصلية.
17.7 Top 20 ITAM Scripts (working snippets)
1. Auto-assign asset on user creation
(function executeRule(current) {
if (!current.department || current.employee_number == '') return;
var asset = new GlideRecord('alm_hardware');
asset.addQuery('model.short_description', 'CONTAINS', 'Laptop');
asset.addQuery('install_status', '6');
asset.setLimit(1);
asset.query();
if (asset.next()) {
asset.assigned_to = current.sys_id;
asset.install_status = '1';
asset.update();
gs.eventQueue('asset.assigned.new.hire', asset, current.email, '');
}
})(current);
2. License Position recalculator (scheduled)
var sw = new GlideRecord('cmdb_software_product_model');
sw.addQuery('install_status', '1');
sw.query();
var engine = new sn_sam.LicenseEngineAPI();
while (sw.next()) engine.scheduleReconciliation(sw.sys_id);
gs.info('Triggered SAM reconciliation for ' + sw.getRowCount() + ' titles');
3. Idle SaaS license reclaimer
var idle = new GlideRecord('cmdb_ci_spkg');
idle.addQuery('publisher.name', 'Microsoft');
idle.addQuery('last_used', '<', gs.daysAgoStart(60));
idle.query();
while (idle.next()) {
var t = new GlideRecord('sam_reclamation_task');
t.initialize();
t.subject = 'Reclaim ' + idle.getDisplayValue('name');
t.user = idle.installed_on.assigned_to;
t.policy = 'Idle 60d SaaS';
t.due = gs.daysAgoStart(-14);
t.insert();
}
4. Hardware refresh forecaster (3-yr lifecycle)
var due = new GlideRecord('alm_hardware');
due.addQuery('purchase_date', '<', gs.daysAgoStart(3 * 365));
due.addQuery('install_status', '1');
due.query();
gs.info('Assets eligible for refresh: ' + due.getRowCount());
while (due.next()) {
gs.info(due.asset_tag + ' | ' + due.assigned_to.getDisplayValue() +
' | bought ' + due.purchase_date);
}
5. Stockroom rebalance recommender
var sites = ['HQ IT', 'Branch JED', 'Branch DXB'];
sites.forEach(function(s) {
var cnt = new GlideAggregate('alm_hardware');
cnt.addQuery('stockroom.name', s);
cnt.addQuery('install_status', '6'); // in_stock
cnt.addAggregate('COUNT');
cnt.query();
cnt.next();
gs.info(s + ' in-stock = ' + cnt.getAggregate('COUNT'));
});
6. Asset → CI sync (on insert/update)
(function executeRule(current) {
if (!current.serial_number || current.ci) return;
var ci = new GlideRecord('cmdb_ci_computer');
ci.addQuery('serial_number', current.serial_number);
ci.setLimit(1);
ci.query();
if (ci.next()) {
current.ci = ci.sys_id;
ci.asset = current.sys_id;
ci.update();
}
})(current);
7. Auto-create asset from PO receipt
// Triggered after proc_po_item.received = quantity
(function executeRule(current, previous) {
if (current.received != current.quantity) return;
var i;
for (i = 0; i < current.quantity; i++) {
var a = new GlideRecord('alm_hardware');
a.initialize();
a.model = current.model;
a.stockroom = current.delivery_stockroom;
a.po = current.po.sys_id;
a.purchase_date = gs.nowDateTime();
a.install_status = '6';
a.insert();
}
})(current, previous);
8. EOL hardware report
var eol = new GlideRecord('alm_hardware');
eol.addQuery('end_of_life', '<', gs.daysAgoStart(-90));
eol.addQuery('install_status', '1');
eol.query();
while (eol.next()) {
gs.info('EOL within 90d: ' + eol.asset_tag + ' / ' + eol.model.getDisplayValue());
}
9. Bulk-update warranty from manufacturer API
var assets = new GlideRecord('alm_hardware');
assets.addQuery('manufacturer.name', 'Dell');
assets.addQuery('warranty_expiration', '');
assets.query();
while (assets.next()) {
var resp = new sn_ws.RESTMessageV2();
resp.setEndpoint('https://api.dell.com/asset/v1/asset-entitlements/' + assets.serial_number);
resp.setHttpMethod('GET');
resp.setRequestHeader('apikey', gs.getProperty('dell.api.key'));
var body = JSON.parse(resp.execute().getBody());
if (body && body.endDate) {
assets.warranty_expiration = body.endDate;
assets.update();
}
}
10. License compliance dashboard refresher
var refresh = new GlideRecord('pa_scores_history_recompute');
refresh.initialize();
refresh.indicator.setDisplayValue('License Compliance %');
refresh.insert();
gs.info('PA recompute triggered for License Compliance');
11. Vendor reconciliation diff
// Compare vendor export staging table vs alm_hardware
var staging = new GlideRecord('u_vendor_export_stg');
staging.query();
while (staging.next()) {
var found = new GlideRecord('alm_hardware');
found.addQuery('serial_number', staging.serial);
if (!found.get(found.sys_id)) {
gs.info('Missing in SN: ' + staging.serial);
}
}
12. Asset lifecycle state machine
function setState(asset, newState) {
var allowed = {
'6': ['1', '7'], // in_stock → in_use | retired
'1': ['3', '7'], // in_use → in_maintenance | retired
'3': ['1', '7'], // in_maintenance → in_use | retired
'7': ['8'] // retired → disposed
};
var current = asset.install_status + '';
if (!allowed[current] || allowed[current].indexOf(newState + '') < 0) {
gs.addErrorMessage('Illegal state transition ' + current + ' → ' + newState);
return false;
}
asset.install_status = newState;
asset.update();
return true;
}
13. Auto-retire on offboarding
// BR on sys_user — active changes from true to false
(function executeRule(current, previous) {
if (current.active || !previous.active) return;
var a = new GlideRecord('alm_hardware');
a.addQuery('assigned_to', current.sys_id);
a.addQuery('install_status', '1');
a.query();
while (a.next()) {
a.assigned_to = '';
a.install_status = '6'; // back to stock pending wipe
a.work_notes = 'Auto-returned to stock on user offboarding';
a.update();
}
})(current, previous);
14. Cost per asset by department
var agg = new GlideAggregate('alm_hardware');
agg.addAggregate('SUM', 'cost');
agg.addAggregate('COUNT');
agg.groupBy('department');
agg.query();
while (agg.next()) {
gs.info(agg.getDisplayValue('department') +
' assets=' + agg.getAggregate('COUNT') +
' totalCost=' + agg.getAggregate('SUM', 'cost'));
}
15. SaaS user provisioner via API (Salesforce example)
function provisionSF(email, profileId) {
var rm = new sn_ws.RESTMessageV2('Salesforce', 'createUser');
rm.setStringParameterNoEscape('email', email);
rm.setStringParameterNoEscape('profileId', profileId);
var resp = rm.execute();
return resp.getStatusCode() == 201;
}
16. Mass-import via Import Set
1. All > System Import Sets > Load Data → upload CSV (alm_hardware_import).
2. Create Transform Map → target alm_hardware → match on serial_number (coalesce).
3. Schedule import to run nightly from FTP/SFTP.
Script step in transform:
(function transformRow(source, target) {
if (!target.model && source.model_name) {
var m = new GlideRecord('cmdb_model');
m.addQuery('name', source.model_name);
m.setLimit(1);
m.query();
if (m.next()) target.model = m.sys_id;
}
if (target.cost == '' && source.cost) target.cost = source.cost;
})(source, target);
17. Software install detector via CMDB
var inst = new GlideAggregate('cmdb_sam_sw_install');
inst.addAggregate('COUNT');
inst.groupBy('publisher');
inst.groupBy('display_name');
inst.query();
while (inst.next()) {
gs.info(inst.getDisplayValue('publisher') + ' | ' +
inst.getDisplayValue('display_name') + ' = ' +
inst.getAggregate('COUNT'));
}
18. License borrow/return for floating licenses
function borrow(license, user) {
var lic = new GlideRecord('alm_license');
if (!lic.get(license)) return false;
if (lic.available <= 0) return false;
lic.available--;
lic.update();
var loan = new GlideRecord('u_license_loan');
loan.initialize();
loan.license = license;
loan.user = user;
loan.borrowed_at = gs.nowDateTime();
return loan.insert();
}
function returnLic(loanId) {
var loan = new GlideRecord('u_license_loan');
if (!loan.get(loanId)) return false;
var lic = new GlideRecord('alm_license');
lic.get(loan.license);
lic.available++;
lic.update();
loan.returned_at = gs.nowDateTime();
loan.update();
return true;
}
19. Asset tag printer integration (Zebra Bridge)
function printLabel(assetSysId, printerName) {
var a = new GlideRecord('alm_hardware');
if (!a.get(assetSysId)) return;
var zpl = '^XA^FO50,50^BCN,80,Y,N,N^FD' + a.asset_tag + '^FS^XZ';
var rm = new sn_ws.RESTMessageV2();
rm.setEndpoint(gs.getProperty('printer.bridge.url') + '/print');
rm.setHttpMethod('POST');
rm.setRequestBody(JSON.stringify({ printer: printerName, zpl: zpl }));
rm.execute();
}
20. Auto-renew warranty reminder
var warn = new GlideRecord('alm_hardware');
warn.addQuery('warranty_expiration', '>=', gs.daysAgoStart(-60));
warn.addQuery('warranty_expiration', '<=', gs.daysAgoStart(-30));
warn.addQuery('install_status', '1');
warn.query();
while (warn.next()) {
gs.eventQueue('asset.warranty.expiring',
warn,
warn.assigned_to.getDisplayValue(),
warn.warranty_expiration + '');
}
عشرون سكربتًا جاهزًا تغطي تخصيص الأصول، التراخيص، الاسترداد، الاستلام، التقاعد، الجرد، والتكاملات.
17.8 Power User Cheat Sheet
alm_asset.list → All assets
alm_hardware.list → Hardware only
alm_consumable.list → Consumables
alm_license.list → Licenses
alm_stockroom.list → Stockrooms
alm_transfer_order.list → Transfers
proc_po.list → Purchase orders
proc_po_item.list → PO line items
cmdb_software_product_model.list → Software models
cmdb_sam_sw_install.list → Discovered installs
samp_sw_reclamation_candidate.list → Reclamation queue
alm_asset_audit.list → Audit history
الجداول الأكثر استخدامًا — احفظها كروابط مفضلة.
§18 — From-Scratch Implementation (Day 0 → Day 30)
Calendar to take ITAM (HAM + SAM + Procurement) from blank instance to Go-Live in 30 working days.
خطة 30 يوم عمل لإطلاق ITAM من الصفر إلى الإنتاج.Sequence assumes Australia release. Combine with CMDB.md and ITOM.md Day 0 if discovery feeds installs.
الترتيب لإصدار أستراليا — اربطه بـ CMDB وITOM إذا الاكتشاف يغذي SAM.
18.0 Overview Calendar
Week 1 → Day 0–5 Foundation (plugins, models, stockrooms)
Week 2 → Day 6–11 Bulk import, Workspaces, Mobile
Week 3 → Day 12–17 Software discovery, SAM engine first run
Week 4 → Day 18–23 Reclamation, contracts, procurement integration
Week 5 → Day 24–30 Catalog, ACLs, ATF, Training, Go-Live
خمسة أسابيع — أساس HAM، استيراد، SAM، عقود/شراء، إطلاق.
18.1 Day 0 — Pre-flight (inventory + tool sunsetting)
Outputs (must exist before Day 1):
| Artifact | Owner | Format |
|---|---|---|
| Asset inventory audit (Excel/CSV) | Asset Manager | Per site, with serials & assignees |
| License inventory (entitlements + contracts) | SAM Manager | PDF of agreements + Excel |
| Vendor master list | Procurement | CSV (name, terms, contact) |
| Current tool sunset plan (Snipe-IT, ServiceDesk legacy) | PM | Decommission schedule |
| Asset class taxonomy | Architect | Mind-map → states mapping |
| Cost center mapping | Finance | Department → cost center |
| Joiner-mover-leaver process diagram | HR Ops | Swimlane |
⚠️ Warning: Garbage in = garbage out. Spend an extra Day 0 on inventory cleanup; you can’t recover from this later. — يوم صفر هو الجرد والعقود وقائمة الموردين وخطة إخراج الأدوات القديمة. لا تختصره.
18.2 Day 1 — Activate plugins
All > System Definition > Plugins → activate in this exact order:
- com.snc.asset_management (base alm_*)
- com.snc.ham (HAM Pro)
- com.snc.sam_engine (SAM engine)
- com.snc.software_asset_management (SAM Pro)
- com.snc.procurement (PO + Receive)
- com.snc.contract_management (Contracts)
- com.snc.itam_workspace (HAM/SAM Workspace UI)
Verify:
['com.snc.ham','com.snc.sam_engine','com.snc.software_asset_management','com.snc.procurement']
.forEach(function(p) {
var gr = new GlideRecord('sys_plugins');
gr.addQuery('source', p);
gr.query(); gr.next();
gs.info(p + ' active=' + gr.active);
});
Set release-correct properties:
All > Asset > Administration > Properties:
glide.itam.asset_tag_prefix = HR-AT-
glide.itam.auto_generate_tag = true
glide.itam.lifecycle.allow_reuse = false
فعّل البلجنز بالترتيب: Asset → HAM → SAM Engine → SAM Pro → Procurement → Contracts → Workspace.
18.3 Day 2–3 — Product Catalog + Models
Day 2 — Categories:
- Navigate: All > Asset > Model Categories → New per type (Laptop, Desktop, Monitor, Phone, Tablet, Headset, Server, Network Device). — Open direct
- Map category to Asset class (hardware/consumable/license).
- Bind suggested lifecycle (3 yr laptop, 5 yr monitor).
Day 3 — Models (bulk):
// Seed 30 standard models — adjust to client catalog
var standard = [
{ name: 'Dell Latitude 7450', mfr: 'Dell', cat: 'Computer', life: 36, cost: 2200 },
{ name: 'HP EliteBook 845', mfr: 'HP', cat: 'Computer', life: 36, cost: 2050 },
{ name: 'Dell P2723QE Monitor',mfr: 'Dell', cat: 'Monitor', life: 60, cost: 650 },
{ name: 'iPhone 15 Pro', mfr: 'Apple', cat: 'Phone', life: 24, cost: 1500 },
{ name: 'Logitech MX Master 3',mfr: 'Logitech',cat: 'Peripheral',life: 36,cost: 130 }
];
standard.forEach(function(r) {
var m = new GlideRecord('cmdb_model');
m.initialize();
m.name = r.name;
m.manufacturer.setDisplayValue(r.mfr);
m.model_categories.setDisplayValue(r.cat);
m.asset_class = 'hardware';
m.cost = r.cost;
m.depreciation_schedule = 'SL ' + r.life + 'm';
m.insert();
});
gs.info('Seeded ' + standard.length + ' models');
Exit criteria: Asset Manager signs off model catalog. — عرّف الفئات ثم الموديلات؛ ادفعها كقالب ثم وسّع.
18.4 Day 4–5 — Stockrooms + Locations + Cost Centers
Day 4 — Locations:
- Navigate: All > Configuration > Locations → ensure each office/site exists. — Open direct
- Hierarchy: Country → City → Building → Floor (optional).
Day 5 — Stockrooms + Cost Centers:
- Navigate: All > Asset > Stockrooms → New per site: — Open direct
- Name: HQ-IT-Stock-RUH
- Type: warehouse
- Location: HQ Building
- Manager: stockroom owner - Navigate: All > Finance > Cost Centers → seed 20–30 cost centers. — Open direct
- Link each Department to a Cost Center.
// Seed stockrooms
var sites = [
{ name: 'HQ-IT-Stock-RUH', loc: 'HQ Building' },
{ name: 'JED-IT-Stock', loc: 'Jeddah Office' },
{ name: 'DXB-IT-Stock', loc: 'Dubai Office' }
];
sites.forEach(function(s) {
var sr = new GlideRecord('alm_stockroom');
sr.initialize();
sr.name = s.name;
sr.type = 'warehouse';
sr.location.setDisplayValue(s.loc);
sr.insert();
});
أنشئ المواقع، المستودعات، ومراكز التكلفة قبل أي استيراد.
18.5 Day 6–7 — Asset classes + lifecycle states
Day 6 — Lifecycle states & substates:
| State | Substate options | Allowed transitions |
|---|---|---|
| In Stock | pending_install, available | → In Use, Retired |
| In Use | running, in_maintenance | → In Maintenance, Retired |
| In Maintenance | pending_repair, RMA, loaner_out | → In Use, Retired |
| Retired | pending_wipe, pending_disposal | → Disposed |
| Disposed | (terminal) | — |
Configure via All > Asset > Administration > Lifecycle Configuration. — Open direct
Day 7 — Add state machine ACL (apply §17.7 script #12 as Before BR). — حدد الحالات والمراحل الفرعية، فعّل قواعد الانتقال عبر BR.
18.6 Day 8–9 — Bulk import existing hardware from Excel
Day 8 — Prepare:
- Clean source CSV → required columns: asset_tag, serial_number, model_name, assigned_to_email, location, install_status, purchase_date, cost.
- Create Import Set table:
- Navigate: All > System Import Sets > Load Data → new staging. — Open direct
Day 9 — Transform:
- Create Transform Map → target alm_hardware.
- Coalesce on serial_number.
- Add script step (see §17.7 script #16) for model lookup.
- Run import → validate counts vs source.
Validation:
var diff = new GlideRecord('u_hardware_import_stg');
diff.addQuery('sys_import_state', '!=', 'inserted');
diff.addQuery('sys_import_state', '!=', 'updated');
diff.query();
gs.info('Failed rows: ' + diff.getRowCount());
while (diff.next()) gs.info(diff.serial_number + ' → ' + diff.sys_import_state_comment);
Exit criteria: ≥98% of records imported; failures triaged.
⚠️ Pilot import on 100 rows first. Then full batch. Never run full import without rollback plan. — استورد عينة 100 صف، صحح الفشل، ثم الدفعة الكاملة. لا استيراد بدون خطة تراجع.
18.7 Day 10–11 — Asset Workspace + Mobile (asset receiver)
Day 10 — Asset Workspace:
- Navigate: Application Navigator → search Hardware Asset Management workspace.
- Configure dashboards: by stockroom, by state, age distribution.
- Add Saved Filters: My Stockroom, My Sites, Pending Disposal.
Day 11 — Mobile asset receiver:
- Navigate: All > Mobile Apps > Mobile App Builder → use Agent mobile app. — Open direct
- Enable barcode scanning action: target alm_hardware, key field asset_tag.
- Stockroom staff workflow:
1. Open Mobile Agent → Scan asset tag.
2. App opens asset record.
3. Quick action: Deploy → pick user → confirm.
4. State auto-updates; receipt SMS to user.
فعّل Workspace ومسح الباركود على الجوال لتسهيل الاستلام والنشر.
18.8 Day 12–13 — Software discovery via ITOM (cmdb_sam_sw_install)
Prerequisite: ITOM.md § Discovery is live.
Day 12 — Connect normalization sources:
- Navigate: All > Software Asset > Libraries > Discovery Sources. — Open direct
- Validate ServiceNow Discovery is active source (populates cmdb_sam_sw_install).
- Add SCCM/Intune connector if needed.
// Trigger SAM normalization
var n = new sn_sam.SAMEngineAPI();
n.normalizeUnnormalizedInstalls();
gs.info('Triggered SAM normalization');
Day 13 — Verify:
var unnorm = new GlideRecord('cmdb_sam_sw_install');
unnorm.addQuery('normalized', false);
unnorm.query();
gs.info('Unnormalized installs: ' + unnorm.getRowCount());
Target: <5% unnormalized after Day 13. — اربط Discovery، شغّل التطبيع، وتأكد أن أقل من 5% من التثبيتات غير معرّفة.
18.9 Day 14–15 — Software Models + License Metrics
Day 14 — Software Models:
- Navigate: All > Software Asset > Libraries > Software Models → ensure top 50 titles exist. — Open direct
- For each: confirm publisher, license metric, edition.
Day 15 — License Metrics:
| Metric | When |
|---|---|
| Per Device | Most desktop apps |
| Per Named User | Adobe CC, Salesforce |
| Per Concurrent User | Older client-server apps |
| Per Processor / Core | Oracle DB |
| Per Installation | Legacy perpetual |
| Per MSU / CPU Cluster | Mainframe |
Configure metric per Software Model. Avoid the trap of “Per Installation” when contract is “Per Named User”. — ضع المقاييس الصحيحة لكل برنامج. الخلط بين Installation و Named User أهم خطأ تراخيصي.
18.10 Day 16–17 — License engine + first reconciliation
Day 16 — Configure:
- Navigate: All > Software Asset > Administration > Reconciliation Settings. — Open direct
- Schedule: nightly 02:00.
- Stagger heavy publishers in 4 batches.
Day 17 — First run + review:
// Quick license position dump
var lic = new GlideRecord('alm_license');
lic.query();
while (lic.next()) {
gs.info(lic.getDisplayValue('software_model') +
' entitled=' + lic.rights +
' used=' + lic.rights_used +
' compliance=' + (lic.rights - lic.rights_used));
}
Investigate any non-compliant rows in License Workbench → either:
- Buy more (true-up CHG)
- Harvest unused (reclamation)
- Correct metric (often the real issue) — شغّل المحرك ليلًا، حقق في أي صفوف غير متوافقة قبل الانتقال للاسترداد.
18.11 Day 18 — Reclamation rules + thresholds
Define reclamation:
| Title | Idle days | Action |
|---|---|---|
| Adobe Creative Cloud | 90 | Notify → 14d → uninstall |
| Visio | 60 | Notify → 7d → uninstall |
| Microsoft Project | 60 | Notify → 7d → downgrade if Online |
| Salesforce | 45 | Approval workflow |
Use §17.7 script #3 as base. Wire Flow Designer: trigger candidate → email user → wait 14d → if no justification → call SCCM/Intune spoke Uninstall Application. — سياسة الاسترداد: عتبات حسب البرنامج، إشعار → مهلة → إزالة آلية.
18.12 Day 19 — Vendor contracts + agreements
- Navigate: All > Contract Management > Contracts → New per agreement: — Open direct
- Type: Software/Maintenance/Service/Lease
- Vendor, start/end dates
- Auto-renew flag
- Owner (business + procurement) - Attach signed PDF.
- Bind contract to Software Model entitlements (related list).
// Detect expiring contracts (90d)
var c = new GlideRecord('ast_contract');
c.addQuery('end_date', '<=', gs.daysAgoStart(-90));
c.addQuery('state', 'active');
c.query();
while (c.next()) {
gs.eventQueue('contract.expiring',
c,
c.contract_administrator.getDisplayValue(),
c.end_date + '');
}
عرّف العقود واربطها بالاستحقاقات، وأطلق تنبيهات قبل 90 يومًا من الانتهاء.
18.13 Day 20 — Procurement integration (Coupa / Ariba)
Day 20:
- Navigate: All > IntegrationHub > Spokes → install Coupa/Ariba spoke. — Open direct
- Configure OAuth + tenant.
- Outbound flow:
- Catalog item → PO drafted in SN.
- Submit → call spoke Create Requisition → wait for approved PR number.
- On approval → SN proc_po updated with vendor PO number. - Inbound webhook for receipt confirmation → triggers asset creation (§17.7 script #7).
Test scenario:
- Submit Laptop request → see Coupa requisition appear.
- Approve in Coupa → SN updates with PO #.
- Receive in Coupa → SN creates alm_hardware.
اربط Coupa/Ariba عبر Spoke، ادفع PO، استقبل التأكيد، أنشئ الأصل تلقائيًا.
18.14 Day 21 — Microsoft 365 connector
- Navigate: All > SaaS License Management > Connectors > Connector Instances → New. — Open direct
- Type: Microsoft 365.
- Authentication: Azure App Registration with Reports.Read.All + User.Read.All.
- Schedule: hourly.
- Verify pull: navigate samp_saas_user_subscription.list populated.
Build first M365 dashboard:
| KPI | Source |
|---|---|
| E5 licenses assigned vs purchased | M365 connector |
| Inactive E5 users (>60d) | M365 connector + reclamation |
| OneDrive idle users | Connector + custom rule |
اربط Microsoft 365 لجلب الاستخدام الفعلي، ثم أنشئ مؤشرات إعادة التوزيع.
18.15 Day 22 — SAP / Oracle ULA tracking
For SAP & Oracle, often complex licensing. Special handling:
- Navigate: All > Software Asset > Libraries > Publisher Packs → install SAP / Oracle pack. — Open direct
- For Oracle ULA: define ULA agreement record; track:
- Effective dates
- Certification deadlines
- Eligible products
- Annual deployment snapshots
// Capture deployment snapshot end-of-month
function snapshotOracle() {
var s = new GlideRecord('u_oracle_ula_snapshot');
s.initialize();
s.snapshot_date = gs.nowDateTime();
var inst = new GlideAggregate('cmdb_sam_sw_install');
inst.addQuery('publisher.name', 'Oracle');
inst.addAggregate('COUNT');
inst.groupBy('display_name');
inst.query();
var totals = {};
while (inst.next()) totals[inst.getDisplayValue('display_name')] = inst.getAggregate('COUNT');
s.payload = JSON.stringify(totals);
s.insert();
}
⚠️ Warning: Oracle ULA certification timing missed = lose ULA position. Diary the date. — SAP وOracle ULA يحتاجان حقول إضافية واسناد تواريخ التحقق؛ لقطة شهرية واجبة.
18.16 Day 23 — Dashboards (compliance %, cost trend, refresh forecast)
PA dashboards to build:
| Dashboard | Indicators |
|---|---|
| HAM Operations | Inventory count, deployments today, retirements, age distribution |
| SAM Compliance | Compliance %, top non-compliant titles, reclamation pipeline |
| Procurement | Open POs, on-time delivery %, vendor scorecards |
| Lifecycle Forecast | Refresh forecast (3-yr), EOL count, budget impact |
| Cost & Audit | Cost per department, monthly OPEX trend, audit sample status |
Indicator example (Compliance %):
Source: alm_license
Aggregate: AVG of (rights - rights_used) / rights * 100
Filter: state = active
Frequency: daily
Breakdown: publisher
خمس لوحات PA لقياس HAM وSAM والشراء؛ تابعها يوميًا.
18.17 Day 24 — Catalog items (request new laptop, request software, return asset)
Build 3 critical catalog items:
| Item | Variables | Flow |
|---|---|---|
| Request Laptop | model, justification, location | Approval (manager + IT) → PO if needed → deploy |
| Request Software | software_title, user, license_type | License check → assign / true-up → install via spoke |
| Return Asset | asset_tag, reason | Schedule pickup → wipe → back to stock |
Catalog UX best practices:
- Variable visibility by user role/department.
- Manager approval threshold by cost ($1000+ requires director).
- Auto-fulfillment if stock available; PO if not. — ثلاثة عناصر كتالوج تكفي للبداية: طلب لابتوب، طلب برنامج، إرجاع أصل.
18.18 Day 25 — Asset → Incident → Change linkage
- Ensure ITSM forms show Asset field on incident, problem, change.
- Add Related List: from cmdb_ci → tab “Related Assets”.
- Add Before BR on incident to auto-populate asset from CI (§17.3 D).
- Change record: track which assets touched (related list chg_alm_assets).
Test scenarios:
A. User's laptop crashes → incident → asset visible → swap loaner → record on RMA → restore.
B. Server change → CIs listed → impacted assets pulled into CHG implementation plan.
اربط الأصول بالحوادث والتغييرات؛ سهّل تتبع الأثر والمسؤولية.
18.19 Day 26 — ACLs (finance vs IT asset roles)
| Role | Read | Write | Delete |
|---|---|---|---|
| asset | Own assigned | Own location | No |
| asset_manager | All HAM | All HAM | No (audit retention) |
| ham_admin | All HAM | All HAM | Soft delete only |
| sam_admin | All SAM | All SAM | No |
| procurement_admin | proc_po + alm_asset | proc_po + costs | No |
| finance_viewer | alm_asset.cost, contracts | None | No |
| auditor | All (read) | audit notes only | No |
Critical ACLs to lock down:
- alm_hardware.cost → read: finance_viewer + asset_manager
- alm_hardware.purchase_date → read: same
- alm_license.* → write: sam_admin only
- proc_po.* → write: procurement_admin
- alm_asset.install_status → write: asset_manager (state machine BR)
لكل دور صلاحيات محددة؛ احم حقول التكلفة والتاريخ والحالة من التعديل العشوائي.
18.20 Day 27 — ATF tests (10 scenarios)
ATF Suite ITAM E2E:
Test 1 — Create asset model → save → assert
Test 2 — Create stockroom → assert
Test 3 — Import 5 hardware rows → assert all imported
Test 4 — Catalog Request Laptop → manager approves → asset assigned
Test 5 — Asset transfer between stockrooms → location updated
Test 6 — Asset retire with CoD → assert state=disposed
Test 7 — License reconciliation runs → engine populates rights_used
Test 8 — Reclamation candidate generated → user notified
Test 9 — PO receive → 2 alm_hardware records auto-created
Test 10 — Offboarding user → assets returned to stock
Run nightly via scheduled job. — عشرة سيناريوهات ATF تغطي كل المسار من النمذجة حتى الاسترداد.
18.21 Day 28 — Training
| Audience | Duration | Content |
|---|---|---|
| Asset coordinators | 2× 3h | Models, stockroom, deploy, retire, mobile receiver |
| SAM analysts | 2× 3h | License workbench, reconciliation, reclamation, contracts |
| Procurement | 1× 3h | PO, receive, vendor scorecards, integration to Coupa |
| Finance | 1× 1h | Cost reports, depreciation, contracts dashboard |
| End-users | 1× 30 min | Self-service via Employee Center; return asset process |
| Auditors | 1× 1h | Audit table, evidence storage, attestation campaign |
Provide runbook PDF + cheat sheet from §17.8. — جلسات تدريب مفصلة لكل فئة مع كتيب runbook عملي.
18.22 Day 29 — Audit prep + Go-Live readiness
Pre-Go-Live checklist:
- [ ] Model catalog signed off; ≥98% imported assets reconciled
- [ ] All sites have stockrooms + named owners
- [ ] State machine BR active; illegal transitions blocked
- [ ] Lifecycle states + substates configured
- [ ] Asset Workspace + Mobile receiver tested
- [ ] SAM engine reconciliation green for 7 nights
- [ ] License compliance > 98% (or remediation plan)
- [ ] Reclamation rules approved and active
- [ ] Vendor contracts loaded with renewals diarized
- [ ] Coupa/Ariba integration handshake tested
- [ ] M365 connector pulling usage
- [ ] Oracle ULA snapshot job scheduled
- [ ] Dashboards published, owners assigned
- [ ] Three catalog items live (Laptop/Software/Return)
- [ ] ACLs reviewed and approved by Security
- [ ] ATF suite green for 3 consecutive runs
- [ ] Training delivered; sign-offs collected
- [ ] Disposal vendor contracts in place; CoD process documented
- [ ] Hypercare bridge schedule (24/5) for 2 weeks — قائمة جاهزية شاملة قبل الإطلاق — كل بند مطلوب.
18.23 Day 30 — Go-Live + Hypercare
Sequence:
T-2h Freeze prod config (Update Set capture)
T-1h Final dry-run on UAT
T-0 Cutover:
- Decommission legacy asset DB read-only
- Open SN HAM/SAM as system of record
- Asset coordinators online
T+1h Smoke test:
- Receive 1 PO → asset created
- Deploy via mobile
- Compliance dashboard loads
T+2h Communicate to all users (Employee Center banner)
T+1d Daily Go-Live standup for 2 weeks
T+7d Decommission legacy read-only
T+14d Exit hypercare; assets ownership formally with ITAM Manager
Comms template:
Subject: ServiceNow ITAM is live
- Hardware requests: Employee Center → "Request a Laptop"
- Software requests: Employee Center → "Request Software"
- Returns: same portal → "Return Asset"
- Asset Coordinator hotline: ext 3000
الإطلاق: تجميد، تشغيل بالتوازي قصير، تحويل كامل، تواصل مع الجميع، خروج بعد أسبوعين.
18.24 License Engine — Common Pitfalls & Fixes
| Pitfall | Symptom | Fix |
|---|---|---|
| Wrong license metric | Compliance % wrong | Re-verify metric per agreement; correct on Software Model |
| Discovery missing | Few installs → false compliance | Validate ITOM coverage; add SCCM/Intune connector |
| Unnormalized installs > 10% | Engine ignores them | Run normalization (§18.8); curate non-content publishers |
| Entitlement not bound to title | Compliance shows 0 | Bind contract → entitlement → Software Model |
| Reclamation too aggressive | User complaints | Increase idle threshold; add VIP exclusion |
| Oracle Processor metric mis-counted | Core factor table outdated | Update SN content + verify CFT per CPU |
| Microsoft EA double-count | E5 over E3 inflated | Use entitlement hierarchy (E5 supersedes E3) |
| ULA not certified on time | Lose ULA rights | Diary certification 90d ahead |
| SAM dashboard empty | PA recompute didn’t run | Trigger manual recompute (§17.7 #10) |
⚠️ Top one to avoid: Trusting day-1 compliance % before fixing metrics and normalization. Always sanity-check first 30 days. — الفخ الأكبر: تصديق نسبة الامتثال قبل ضبط المقاييس والتطبيع — لا تثق بالأرقام في أول شهر.
18.25 Asset Reconciliation Runbook
Monthly stockroom reconciliation (must-have):
Day 1 of month:
1. Print "Expected Stockroom" report (alm_hardware filter: install_status=6 group by stockroom).
2. Stockroom owner does physical count → enters in attestation form.
3. Compare → generate variance list.
4. For each variance:
a. Search recent transfers, deployments not stamped.
b. If missing > 48h → open Incident (lost asset).
c. If found but not in SN → import or create record.
5. Sign-off by Asset Manager → archive PDF report.
function expectedReport(stockroom) {
var gr = new GlideAggregate('alm_hardware');
gr.addQuery('stockroom.name', stockroom);
gr.addQuery('install_status', '6');
gr.addAggregate('COUNT');
gr.groupBy('model');
gr.query();
while (gr.next()) {
gs.info(stockroom + ' | ' + gr.getDisplayValue('model') +
' expected=' + gr.getAggregate('COUNT'));
}
}
expectedReport('HQ-IT-Stock-RUH');
Quarterly SAM reconciliation:
1. Pull License Position snapshot → PDF.
2. Compare against contract documents.
3. For each non-compliant title:
a. Reclamation pass first.
b. If still over → True-up CHG.
4. Sign-off by SAM Manager + Procurement.
Annual asset audit:
1. Random sample 5% of in_use assets.
2. Physical verification via mobile barcode scan.
3. Update last_audit_date on each verified asset.
4. Report to Audit Committee with discrepancy %.
Runbook تسوية المستودع شهري، SAM فصلي، تدقيق سنوي شامل. وثّق التواريخ والمسؤولين.
18.26 Master Sign-off
- [ ] Plugins activated + properties set
- [ ] Models + categories curated and approved
- [ ] Stockrooms + locations + cost centers seeded
- [ ] Lifecycle states + state-machine BR active
- [ ] Bulk import success ≥98%
- [ ] Workspaces + mobile receiver operational
- [ ] Software discovery + normalization > 95%
- [ ] License engine reconciling nightly
- [ ] Reclamation policy + approvals live
- [ ] Vendor contracts loaded with renewal diaries
- [ ] Procurement integration (Coupa/Ariba) tested
- [ ] M365 + Oracle/SAP packs configured
- [ ] Dashboards published with owners
- [ ] Catalog items live (Laptop/Software/Return)
- [ ] ACLs reviewed by Security
- [ ] ATF suite green
- [ ] Training delivered + acknowledged
- [ ] Disposal process + CoD storage ready
- [ ] Go-Live + hypercare executed
- [ ] Monthly/quarterly/annual reconciliation runbook adopted — قائمة التوقيع النهائي — اعتمدها قبل إغلاق المشروع وتسليم العمليات.
§19 — CIS-HAM / CIS-SAM Exam & Z-to-Hero Feature Labs (40 inline questions)
No external bank exists — 40 CIS-style questions inline.
19.1 Z-to-Hero Feature Labs (15 labs)
| Lab | Feature |
|---|---|
| L1 | Hardware Asset model class hierarchy |
| L2 | Stockroom + bin location structure |
| L3 | Receive Purchase Order → assets created |
| L4 | Deploy asset to user → CMDB CI linked |
| L5 | Asset transfer between stockrooms |
| L6 | Retire asset workflow (with disposal) |
| L7 | Software Model + Publisher import |
| L8 | License entitlement (PVU, per-user, per-device) |
| L9 | Software install discovery + reconciliation |
| L10 | Effective License Position (ELP) report |
| L11 | True-up calculation for Microsoft/Oracle |
| L12 | Procurement integration (Ariba/Coupa) |
| L13 | Asset Custom Fields for chain of custody |
| L14 | SAM Pro compliance dashboard |
| L15 | Asset → Service Request (refresh) automation |
19.2 40 ITAM Practice Questions
HAM Core (Q1-Q15)
- Hardware asset base table: A. cmdb_ci_hardware | B. alm_asset | C. alm_hardware | D. Both A and C — Answer: D (alm_hardware extends alm_asset)
- State that means asset is owned but not yet deployed: A. In Stock | B. In Use | C. On Order | D. Retired — Answer: A
- CMDB CI is created when HAM asset state = ? A. In Stock | B. In Use | C. Retired | D. Always — Answer: B (on deploy)
- Stockroom hierarchy includes: A. Warehouse → Bin | B. Warehouse → Zone → Bin | C. Stockroom → Sub-stockroom → Bin | D. Flat — Answer: C
- Transfer Order is on table: A. alm_transfer_order | B. proc_po | C. Custom | D. Email-based — Answer: A
- Inventory adjustment via: A. Cycle count + variance adjustment | B. Manual delete | C. PO | D. None — Answer: A
- Hardware Refresh trigger: A. Age threshold + scheduled scan | B. Manual only | C. End-user request | D. Random — Answer: A (with workflow)
- Asset disposal compliance: A. Just delete | B. Disposal Method + Certificate of Destruction + audit trail | C. Stay In Stock | D. Email — Answer: B
- Asset assignment to user uses field: A. assigned_to | B. owner | C. Both depending on context | D. managed_by — Answer: C
- Cost basis for Asset: A. Just purchase cost | B. Purchase + depreciation + tax + total cost of ownership | C. None | D. List price only — Answer: B
- PO line ↔ Asset link via: A. alm_asset.po_number + purchase_order_line | B. None | C. Custom field | D. Email — Answer: A
- Warranty info stored on: A. alm_asset.warranty_expiration | B. Separate contract | C. CMDB | D. All of the above — Answer: D
- Lease vs Owned tracking: A. acquisition_method | B. Separate table | C. Not tracked | D. Manual notes — Answer: A
- Mobile device specific class: A. alm_mobile_device extending alm_hardware | B. cmdb_ci_mobile | C. Custom only | D. None — Answer: A or both
- Asset audit: A. cmdb_audit | B. alm_audit_inventory (cycle counts) | C. None | D. SOC report — Answer: B
SAM Core (Q16-Q30)
- Software model table: A. cmdb_software_product_model | B. alm_software | C. Both used — cmdb_software_product_model for catalog | D. None — Answer: C
- Publisher table: A. cmdb_model_category | B. sam_sw_publisher | C. core_company (Vendor) | D. Both B and C — Answer: D
- License Entitlement metric examples: A. Per-user, per-device, PVU, core, named-user | B. Just count | C. Just price | D. Random — Answer: A
- Installation discovery via: A. Discovery + SCCM/Intune connector | B. Manual list | C. Email | D. None — Answer: A
- Reconciliation = ? A. Match installs to entitlements per metric | B. Just count installs | C. Just count licenses | D. CMDB-only — Answer: A
- ELP (Effective License Position) shows: A. Entitled - Consumed - Reservations - Allocations | B. Just installs | C. Just purchases | D. Random — Answer: A
- Over-deployment risk = ? A. Consumed > Entitled | B. < | C. = | D. None — Answer: A
- True-up: A. Buy more licenses to cover over-deployment, often annual | B. Sell back unused | C. Free | D. Random — Answer: A
- Microsoft 365 connector source: A. M365 Tenant Admin API | B. Manual export | C. Sharepoint | D. None — Answer: A
- Oracle DB metric typical: A. Per-user | B. Per-named-user + per-processor (depending on edition) | C. Per-device | D. Free — Answer: B
- License Reservation: A. Pre-allocate license to user/department | B. Just count | C. Email | D. None — Answer: A
- Software Asset retirement triggers: A. License release back to pool | B. Just delete | C. Random | D. None — Answer: A
- SaaS license counted by: A. Active user count (last 30/90 days) | B. Total users in account | C. Random | D. Email — Answer: A
- Software Request workflow: A. Catalog item → entitlement check → assignment from pool | B. Manual only | C. Random | D. None — Answer: A
- License Optimization: A. Identify unused licenses + reclaim | B. Just buy more | C. Random | D. None — Answer: A
ITAM Integration & Process (Q31-Q40)
- Procurement integration via: A. IH spoke (Ariba, Coupa, SAP MM) | B. Email only | C. Manual entry | D. Spreadsheet — Answer: A
- Asset audit cycle counts: A. Monthly/quarterly cycle count by location | B. Annual only | C. Never | D. Random — Answer: A
- ITAM ↔ CMDB sync: A. On In Use state change | B. Manual | C. Daily batch | D. Never — Answer: A
- Mobile device wipe on user offboarding: A. Trigger MDM via integration on HR offboard event | B. Email IT | C. Random | D. None — Answer: A
- Asset Compliance metric: A. % assets with location + assigned_to + warranty | B. Random | C. Cost only | D. None — Answer: A
- License Compliance metric: A. % software models with no over-deployment | B. Random | C. Cost only | D. None — Answer: A
- ITAM Workspace URL: A. /now/itam/workspace | B. /itam.do | C. /alm_asset.list | D. /sp?id=itam — Answer: A
- Recommended approach for SAM Pro: A. Out-of-the-box reconciliation engine | B. Custom code | C. External tool | D. None — Answer: A
- Asset assignment via Catalog Request: A. Order Guide → Request → Asset assignment in Flow | B. Manual only | C. Email | D. None — Answer: A
- End-of-life model retirement triggers: A. Refresh scheduled job + email vendor + create Demand for replacement | B. Just delete | C. Random | D. None — Answer: A
19.3 What “Hero” looks like for ITAM
Full asset lifecycle (HAM + SAM): purchase → receive → deploy → manage → retire/dispose; full software entitlement + reconciliation + ELP; procurement integration; mobile MDM hooks; refresh automation; SAM Pro dashboards.
Hands-on Labs — مختبرات عملية
Step-by-step labs for PDI / Australia instance. Replace
{BASE}with your instance URL.
مختبرات خطوة بخطوة — استبدل{BASE}برابط نسختك.
-
Lab 1 — Asset model / نموذج أصل — Create model at {BASE}/cmdb_model_list.do.
-
Lab 2 — Stockroom & receive / مستودع واستلام — Receive PO into stockroom at {BASE}/alm_stockroom_list.do.
-
Lab 3 — Deploy asset / نشر أصل — Assign laptop to user; state = In use.
-
Lab 4 — Catalog → Asset / كتالوج → أصل — Order hardware catalog item; verify asset created.
-
Lab 5 — Retire asset / تقاعد — Retire asset; verify disposal workflow.
-
Lab 6 — Software license / ترخيص — Create license at {BASE}/alm_license_list.do; map entitlements.
-
Lab 7 — Reclamation / استرداد — Run reclamation rule for unused software.
-
Lab 8 — Asset Workspace / مساحة الأصول — Manage queue at {BASE}/now/asset/home.
Best Practices — أفضل الممارسات
| Area | Best practice (EN) | أفضل ممارسة (AR) |
|---|---|---|
| HAM/SAM | Link alm_hardware to cmdb_ci_computer via serial | اربط HAM بـ CMDB عبر serial |
| Stockroom | Separate stockrooms per region | مستودعات حسب المنطقة |
| SAM | Normalize software titles before compliance | Normalize قبل الامتثال |
| Lifecycle | Automate retire on lease end date | أتمتة التقاعد عند انتهاء العقد |
Deployment Checklist — قائمة النشر
| # | Task (EN) | المهمة (AR) | Verify |
|---|---|---|---|
| 1 | HAM/SAM plugins active | تفعيل HAM/SAM | Licensed |
| 2 | Models & categories | Models | Catalog aligned |
| 3 | Stockrooms & subflows | Stockrooms | Receive works |
| 4 | Catalog fulfillment → asset | كتالوج → أصل | Asset created |
| 5 | CMDB sync rules | مزامنة CMDB | CI linked |
| 6 | SAM entitlements | Entitlements | Compliance report |
| 7 | Asset Workspace | Asset Workspace | Agents productive |
| 8 | UAT procurement cycle | UAT دورة شراء | Sign-off |
Direct URLs Quick Reference
| Page | Navigation | URL |
|---|---|---|
| Hardware Assets | All > Asset > Hardware | {BASE}/alm_hardware_list.do |
| Models | All > Asset > Models | {BASE}/cmdb_model_list.do |
| Stockrooms | All > Inventory | {BASE}/alm_stockroom_list.do |
| Consumables | All > Inventory | {BASE}/alm_consumable_list.do |
| Licenses | All > Software Asset | {BASE}/alm_license_list.do |
| Entitlements | All > Software Asset | {BASE}/alm_entitlement_list.do |
| Purchase Orders | All > Procurement | {BASE}/proc_po_list.do |
| Asset Workspace | Now > Asset | {BASE}/now/asset/home |
| Reclamation | All > Software Asset | {BASE}/samp_sw_reclamation_rule_list.do |
| Guided Setup | All > Guided Setup | {BASE}/now/guided-setup |