HR Leave · Australia

ITAM — IT Asset Management (Zero → Pro)

ServiceNow Australia · Custom app · Arabic + English readable · scripts copy/paste ready

App typeCustom
Scopex_786686_hr_leave
sys_idc84db0e8839f0b509f02b0d6feaad3c9
Replace{BASE} = your instance
Instance URLs Application Leave requests Business Rules Studio

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 · Scope x_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_leave

HAM · 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

Business outcomes (consultant talking points)


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)

  1. Asset Management (com.snc.asset_management) → Activate → wait for completion.
  2. Hardware Asset Management (com.snc.hardware_asset_management) → Activate.
  3. Procurement (com.snc.procurement) → Activate (if doing PO labs).
  4. 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
  1. Procure
    Procurement generates proc_po from catalog flow
    → Vendor fulfills → PO line received

  2. Receive → Asset
    Receive PO → alm_hardware created (state: in_stock)
    → Stockroom populated

  3. Deploy
    Assign to user (assigned_to) → state: in_use
    → Optional: link cmdb_ci_computer (CMDB)

  4. Maintain
    Repair / loaner / transfer between stockrooms (alm_transfer_order)

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

// 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

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)


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


8) Hands-on Labs — تدريب عملي (complete steps)

نفّذ على PDI بعد تفعيل §3. اربط كل lab بملفات: CMDB.md, ITSM.md.

Lab 0 — Prerequisites (15 min)

  1. Activate plugins per §3.2.
  2. Navigate: All > Guided Setup → complete Hardware Asset foundation. — Open direct
  3. Create stockroom:
    - Navigate: All > Asset > Stockrooms → New. — Open direct
    - Name: Riyadh IT Stock, Type: warehouse.
  4. 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)

  1. Navigate: alm_hardware.list → New.
  2. Fill:
    - Model: Laptop Standard 14”
    - Stockroom: Riyadh IT Stock
    - Serial number: SN-LAB-001
    - Asset tag: auto or AT-001
  3. Save → verify Substate = in_stock (or equivalent).
  4. 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)

  1. Navigate: All > Procurement > Vendors → New vendor Lab Vendor. — Open direct

B — Purchase order

  1. Navigate: All > Procurement > Purchase Orders → New. — Open direct
  2. Add line: Model Laptop Standard 14”, Quantity 2.
  3. Submit / approve PO per your instance workflow.

C — Receive

  1. Open PO → Receive (or Receive Line).
  2. Navigate: alm_hardware.list → filter Created today.
  3. Confirm 2 assets, state in_stock, correct stockroom.

D — Deploy one

  1. 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)

  1. 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.
  2. Order from Service Portal as end user.
  3. Fulfill PO → Receive → verify asset created.
  4. Assign to requester.

Done when: end-to-end catalog → asset without manual PO entry.


Lab 4 — Stockroom transfer (20 min)

  1. Create second stockroom Jeddah IT Stock.
  2. Navigate: All > Asset > Transfer Orders → New. — Open direct
  3. From: Riyadh → To: Jeddah, select asset in stock.
  4. Complete transfer → verify asset stockroom updated.

Option A — Manual

  1. Create or open cmdb_ci_computer with same serial as Lab 1 asset.
  2. On alm_hardware, set Configuration item field to that CI.

Option B — With Discovery (if ITOM active)

  1. Run Discovery on a VM with serial (ITOM.md Lab 2).
  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)

  1. Open deployed asset → Retire / disposal workflow.
  2. Verify state retired / disposed.
  3. Confirm assigned_to cleared per policy.

Lab 7 — SAM awareness (30 min — if licensed)

  1. Navigate: All > Asset > Software Licenses (or SAM menu). — Open direct
  2. Create publisher + software model + license entitlement (e.g. 100 seats).
  3. Review compliance dashboard (demo data acceptable on PDI).
  4. Interview prep: explain reconciliation without building full connector.

Lab 8 — Consultant dry-run (interview)

Explain in 5 minutes:

  1. HAM vs SAM vs CMDB.
  2. Catalog → PO → Receive → Deploy.
  3. Two stockrooms + transfer.
  4. Why retire matters for audit.
  5. One integration point (Discovery or ERP).

9) Best Practices & Common Mistakes

Best practices

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

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)

  1. Catalog laptop request → PO → receive → deploy.
  2. Transfer between stockrooms.
  3. Retire with approval.
  4. CI appears on asset after deploy/Discovery.
  5. (SAM) Compliance report runs without error.

12.5 Post-go-live operations


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


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

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


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 Email
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


§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

  1. Navigate: All > Asset > Model Categories → ensure category exists (Computer / Monitor / Peripheral). — Open direct
  2. 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
  3. Optional product model (for SAM/Procurement linkage):
    - Navigate: All > Product Catalog > Product Models → link via Model field. — Open direct
  4. 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

  1. Navigate: All > Asset > Stockrooms → open stockroom. — Open direct
  2. Related list Stockroom Items → counts per model.
  3. 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

  1. Navigate: /sp → catalog item Request a Laptop.
  2. End-user submits → RITM created → Procurement task fires.
  3. Fulfiller side: Navigate: All > Asset > Hardware Assets → state in_stock → click Deploy. — Open direct
  4. 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

  1. On an Incident record → Affected CI = laptop’s CI.
  2. Form auto-displays linked asset (alm_hardware) via Asset/CI relationship.
  3. 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:

  1. Open asset → action Retire.
  2. 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

  1. Asset in in_use → Issue reported → set substate pending_repair.
  2. Open ticket with vendor (RMA number captured in u_rma_number).
  3. Track loaner (separate asset record) issued to user during RMA.
  4. 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)

  1. Navigate: All > Software Asset > Libraries > Software Publishers. — Open direct
  2. Verify publisher exists (curated content normally pre-loaded).
  3. If missing → New (rare): include normalization rules and product mapping.
  4. Navigate: All > Software Asset > Libraries > Software Models → assign content publisher. — Open direct
  5. 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

  1. Navigate: All > Software Asset > Licensing > License Workbench. — Open direct
  2. Select software (e.g. Adobe Acrobat Pro).
  3. Workbench shows: Entitlements vs Installations vs Compliance Position.
  4. 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)

  1. Navigate: All > Software Asset > Reclamation > Reclamation Candidates. — Open direct
  2. Configure rule: “Reclaim if last_used > 90 days AND no exception”.
  3. 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();
}
  1. 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)

  1. Navigate: All > SaaS License Management > SaaS Subscriptions. — Open direct
  2. New connector → Microsoft 365 (OAuth app reg) or Salesforce (OAuth + refresh token).
  3. Connector pulls: users, license SKUs, last login, usage.
  4. 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

Standard naming: EVD--.pdf.

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:
  1. com.snc.asset_management (base alm_*)
  2. com.snc.ham (HAM Pro)
  3. com.snc.sam_engine (SAM engine)
  4. com.snc.software_asset_management (SAM Pro)
  5. com.snc.procurement (PO + Receive)
  6. com.snc.contract_management (Contracts)
  7. 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:

  1. Navigate: All > Asset > Model Categories → New per type (Laptop, Desktop, Monitor, Phone, Tablet, Headset, Server, Network Device). — Open direct
  2. Map category to Asset class (hardware/consumable/license).
  3. 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:

  1. Navigate: All > Configuration > Locations → ensure each office/site exists. — Open direct
  2. Hierarchy: Country → City → Building → Floor (optional).

Day 5 — Stockrooms + Cost Centers:

  1. Navigate: All > Asset > Stockrooms → New per site: — Open direct
    - Name: HQ-IT-Stock-RUH
    - Type: warehouse
    - Location: HQ Building
    - Manager: stockroom owner
  2. Navigate: All > Finance > Cost Centers → seed 20–30 cost centers. — Open direct
  3. 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:

  1. Clean source CSV → required columns: asset_tag, serial_number, model_name, assigned_to_email, location, install_status, purchase_date, cost.
  2. Create Import Set table:
    - Navigate: All > System Import Sets > Load Data → new staging. — Open direct

Day 9 — Transform:

  1. Create Transform Map → target alm_hardware.
  2. Coalesce on serial_number.
  3. Add script step (see §17.7 script #16) for model lookup.
  4. 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:

  1. Navigate: Application Navigator → search Hardware Asset Management workspace.
  2. Configure dashboards: by stockroom, by state, age distribution.
  3. Add Saved Filters: My Stockroom, My Sites, Pending Disposal.

Day 11 — Mobile asset receiver:

  1. Navigate: All > Mobile Apps > Mobile App Builder → use Agent mobile app. — Open direct
  2. Enable barcode scanning action: target alm_hardware, key field asset_tag.
  3. 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:

  1. Navigate: All > Software Asset > Libraries > Discovery Sources. — Open direct
  2. Validate ServiceNow Discovery is active source (populates cmdb_sam_sw_install).
  3. 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:

  1. Navigate: All > Software Asset > Libraries > Software Models → ensure top 50 titles exist. — Open direct
  2. 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:

  1. Navigate: All > Software Asset > Administration > Reconciliation Settings. — Open direct
  2. Schedule: nightly 02:00.
  3. 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

  1. 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)
  2. Attach signed PDF.
  3. 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:

  1. Navigate: All > IntegrationHub > Spokes → install Coupa/Ariba spoke. — Open direct
  2. Configure OAuth + tenant.
  3. 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.
  4. 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

  1. Navigate: All > SaaS License Management > Connectors > Connector Instances → New. — Open direct
  2. Type: Microsoft 365.
  3. Authentication: Azure App Registration with Reports.Read.All + User.Read.All.
  4. Schedule: hourly.
  5. 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:

  1. Navigate: All > Software Asset > Libraries > Publisher Packs → install SAP / Oracle pack. — Open direct
  2. 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

  1. Ensure ITSM forms show Asset field on incident, problem, change.
  2. Add Related List: from cmdb_ci → tab “Related Assets”.
  3. Add Before BR on incident to auto-populate asset from CI (§17.3 D).
  4. 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:


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


§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)

  1. 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)
  2. State that means asset is owned but not yet deployed: A. In Stock | B. In Use | C. On Order | D. Retired — Answer: A
  3. CMDB CI is created when HAM asset state = ? A. In Stock | B. In Use | C. Retired | D. Always — Answer: B (on deploy)
  4. Stockroom hierarchy includes: A. Warehouse → Bin | B. Warehouse → Zone → Bin | C. Stockroom → Sub-stockroom → Bin | D. Flat — Answer: C
  5. Transfer Order is on table: A. alm_transfer_order | B. proc_po | C. Custom | D. Email-based — Answer: A
  6. Inventory adjustment via: A. Cycle count + variance adjustment | B. Manual delete | C. PO | D. None — Answer: A
  7. Hardware Refresh trigger: A. Age threshold + scheduled scan | B. Manual only | C. End-user request | D. Random — Answer: A (with workflow)
  8. Asset disposal compliance: A. Just delete | B. Disposal Method + Certificate of Destruction + audit trail | C. Stay In Stock | D. Email — Answer: B
  9. Asset assignment to user uses field: A. assigned_to | B. owner | C. Both depending on context | D. managed_by — Answer: C
  10. Cost basis for Asset: A. Just purchase cost | B. Purchase + depreciation + tax + total cost of ownership | C. None | D. List price only — Answer: B
  11. PO line ↔ Asset link via: A. alm_asset.po_number + purchase_order_line | B. None | C. Custom field | D. Email — Answer: A
  12. Warranty info stored on: A. alm_asset.warranty_expiration | B. Separate contract | C. CMDB | D. All of the above — Answer: D
  13. Lease vs Owned tracking: A. acquisition_method | B. Separate table | C. Not tracked | D. Manual notes — Answer: A
  14. Mobile device specific class: A. alm_mobile_device extending alm_hardware | B. cmdb_ci_mobile | C. Custom only | D. None — Answer: A or both
  15. Asset audit: A. cmdb_audit | B. alm_audit_inventory (cycle counts) | C. None | D. SOC report — Answer: B

SAM Core (Q16-Q30)

  1. Software model table: A. cmdb_software_product_model | B. alm_software | C. Both used — cmdb_software_product_model for catalog | D. None — Answer: C
  2. Publisher table: A. cmdb_model_category | B. sam_sw_publisher | C. core_company (Vendor) | D. Both B and C — Answer: D
  3. License Entitlement metric examples: A. Per-user, per-device, PVU, core, named-user | B. Just count | C. Just price | D. Random — Answer: A
  4. Installation discovery via: A. Discovery + SCCM/Intune connector | B. Manual list | C. Email | D. None — Answer: A
  5. Reconciliation = ? A. Match installs to entitlements per metric | B. Just count installs | C. Just count licenses | D. CMDB-only — Answer: A
  6. ELP (Effective License Position) shows: A. Entitled - Consumed - Reservations - Allocations | B. Just installs | C. Just purchases | D. Random — Answer: A
  7. Over-deployment risk = ? A. Consumed > Entitled | B. < | C. = | D. None — Answer: A
  8. True-up: A. Buy more licenses to cover over-deployment, often annual | B. Sell back unused | C. Free | D. Random — Answer: A
  9. Microsoft 365 connector source: A. M365 Tenant Admin API | B. Manual export | C. Sharepoint | D. None — Answer: A
  10. Oracle DB metric typical: A. Per-user | B. Per-named-user + per-processor (depending on edition) | C. Per-device | D. Free — Answer: B
  11. License Reservation: A. Pre-allocate license to user/department | B. Just count | C. Email | D. None — Answer: A
  12. Software Asset retirement triggers: A. License release back to pool | B. Just delete | C. Random | D. None — Answer: A
  13. SaaS license counted by: A. Active user count (last 30/90 days) | B. Total users in account | C. Random | D. Email — Answer: A
  14. Software Request workflow: A. Catalog item → entitlement check → assignment from pool | B. Manual only | C. Random | D. None — Answer: A
  15. License Optimization: A. Identify unused licenses + reclaim | B. Just buy more | C. Random | D. None — Answer: A

ITAM Integration & Process (Q31-Q40)

  1. Procurement integration via: A. IH spoke (Ariba, Coupa, SAP MM) | B. Email only | C. Manual entry | D. Spreadsheet — Answer: A
  2. Asset audit cycle counts: A. Monthly/quarterly cycle count by location | B. Annual only | C. Never | D. Random — Answer: A
  3. ITAM ↔ CMDB sync: A. On In Use state change | B. Manual | C. Daily batch | D. Never — Answer: A
  4. Mobile device wipe on user offboarding: A. Trigger MDM via integration on HR offboard event | B. Email IT | C. Random | D. None — Answer: A
  5. Asset Compliance metric: A. % assets with location + assigned_to + warranty | B. Random | C. Cost only | D. None — Answer: A
  6. License Compliance metric: A. % software models with no over-deployment | B. Random | C. Cost only | D. None — Answer: A
  7. ITAM Workspace URL: A. /now/itam/workspace | B. /itam.do | C. /alm_asset.list | D. /sp?id=itam — Answer: A
  8. Recommended approach for SAM Pro: A. Out-of-the-box reconciliation engine | B. Custom code | C. External tool | D. None — Answer: A
  9. Asset assignment via Catalog Request: A. Order Guide → Request → Asset assignment in Flow | B. Manual only | C. Email | D. None — Answer: A
  10. 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} برابط نسختك.

  1. Lab 1 — Asset model / نموذج أصل — Create model at {BASE}/cmdb_model_list.do.

  2. Lab 2 — Stockroom & receive / مستودع واستلام — Receive PO into stockroom at {BASE}/alm_stockroom_list.do.

  3. Lab 3 — Deploy asset / نشر أصل — Assign laptop to user; state = In use.

  4. Lab 4 — Catalog → Asset / كتالوج → أصل — Order hardware catalog item; verify asset created.

  5. Lab 5 — Retire asset / تقاعد — Retire asset; verify disposal workflow.

  6. Lab 6 — Software license / ترخيص — Create license at {BASE}/alm_license_list.do; map entitlements.

  7. Lab 7 — Reclamation / استرداد — Run reclamation rule for unused software.

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