CSDM CI Lifecycle Management: LifeCycleUtil and Internal State Restoration

Prathmeshda
Mega Guru

ServiceNow’s Common Service Data Model (CSDM) introduces a standardized way to manage the lifecycle of Configuration Items (CIs) and Assets. Instead of relying on legacy fields like Install Status and Operational Status, CSDM defines a two-tier lifecycle framework:

  • Life Cycle Stage (high-level phase)

  • Life Cycle Status (detailed state)

To enforce this model consistently across CMDB, Asset Management, and ITOM, ServiceNow provides the out-of-box utility LifeCycleUtil.


CSDM Lifecycle Model Overview

Life Cycle Stage (Broad Phase)

Life Cycle Stage represents the high-level phase of a CI or Asset:

  • Draft / Development – Planning or design phase

  • Pre-Operational – Testing, staging, or pilot

  • Operational – Actively in use (production)

  • End of Operation – Retired, decommissioned, or pending disposal

Life Cycle Status (Granular State)

Life Cycle Status adds detail within a stage, such as:

  • Planned

  • Installed

  • Operational

  • Pending Disposal

    • CIs
      are automatically synchronized with:

    • Related Assets

      Retired

      Core Responsibilities of LifeCycleUtil

      1. Legacy ↔ CSDM Lifecycle Mapping

      LifeCycleUtil maps legacy fields:

      • install_status

      • operational_status

      to CSDM fields:

      • life_cycle_stage

      • life_cycle_stage_status

       

      2. Lifecycle Validation

      Before insert or update, LifeCycleUtil ensures:

      • Both Stage and Status are provided

      • The combination is valid per life_cycle_control

      • Invalid combinations are blocked


      3. Synchronization Between CI and Asset

      When enabled via system property:

       
      csdm.lifecycle.sync.between.ci.and.asset.activated = true

      Lifecycle changes on:

  • 4. Bulk Lifecycle Population

    During migration or cleanup, LifeCycleUtil can populate lifecycle values in bulk using existing mappings.

    Key method:

     
    LifeCycleUtil.bulkPopulate();

    5. Fallback to “To Be Determined”

    If no valid mapping exists:

    • Stage → To Be Determined

    • Status → To Be Determined

    This guarantees no CI is left blank, which is critical for CMDB health.

    Key Lifecycle Tables Used

    Table Purpose
    life_cycle_stageDefines lifecycle stages
    life_cycle_stage_statusDefines statuses
    life_cycle_controlValid stage/status combinations
    life_cycle_mappingLegacy → CSDM mapping


    Important System Properties

    Property Name Description
    csdm.lifecycle.migration.activatedEnables lifecycle migration
    csdm.lifecycle.bulk_population.activePrevents parallel bulk runs
    csdm.lifecycle.sync.between.ci.and.asset.activatedCI–Asset sync
    csdm.lifecycle.excluded.class.listExcludes CI classe

     

    Scheduled Script Execution

    CI Lifecycle Management – Restore Internal State Management Tables

    Type: Scheduled Script Execution
    Application: Global

    Purpose:

    • Restore lifecycle stages and statuses

    • Reapply lifecycle mappings

    • Ensure CSDM compliance

    (function executeLifecycleRestore() {

    var lifeCycleUtil = new global.LifeCycleUtil();

    if (!lifeCycleUtil.isLifeCycleMigrationActivated()) {
    gs.warn('Lifecycle migration not activated. Job aborted.');
    return;
    }

    if (lifeCycleUtil.isBulkPopulationActive()) {
    gs.warn('Bulk lifecycle population already running. Job aborted.');
    return;
    }

    gs.info('Starting CI lifecycle internal state restoration');

    lifeCycleUtil.bulkPopulate();

    gs.info('CI lifecycle internal state restoration completed');

    })();

    LifeCycleUtil is the foundation of CSDM lifecycle management in ServiceNow. It enforces valid lifecycle data, synchronizes legacy and modern fields, and supports safe bulk restoration through scheduled jobs.

    Using the CI Lifecycle Management – Restore Internal State Management Tables scheduled script is the recommended approach for maintaining a clean, CSDM-compliant CMDB.

    If you found this article useful, please mark it as Helpful. It helps others find the content more easily 👍🙂

0 REPLIES 0