Configure and troubleshoot cascade retire for dependent CIsSummary<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } .kb-wrapper{font-family:'Lato',sans-serif;font-size:12pt;line-height:1.7;color:#000;max-width:100%} .kb-wrapper p{margin:0 0 12px 0} .kb-wrapper ul{margin:0 0 12px 0;padding-left:24px} .kb-wrapper li{margin-bottom:8px} .kb-wrapper h2{font-size:14pt;font-weight:900;border-bottom:2px solid #e8fce4;padding-bottom:4px;margin:28px 0 10px 0} .kb-wrapper h3{font-size:12pt;font-weight:900;border-bottom:2px solid #e8fce4;padding-bottom:4px;margin:20px 0 8px 0} .kb-wrapper .note{border-left:4px solid #52B8FF;background:#e6f4ff;padding:10px 14px;margin:14px 0} .kb-wrapper .warning{border-left:4px solid #e6a817;background:#fff4e0;padding:10px 14px;margin:14px 0} .kb-wrapper code{background:#e6f0f5;color:#032D42;border:1px solid #b8cfd8;padding:1px 4px;border-radius:3px;font-family:monospace;font-size:11pt} .kb-wrapper pre{background:#e6f0f5;color:#032D42;border:1px solid #b8cfd8;padding:12px 16px;overflow-x:auto;font-family:monospace;font-size:11pt;line-height:1.5;margin:10px 0 16px 0;border-radius:3px} .kb-wrapper ol.steps{list-style:none;padding:0;counter-reset:step-counter} .kb-wrapper ol.steps>li{counter-increment:step-counter;display:flex;align-items:flex-start;margin-bottom:16px;list-style:none} .kb-wrapper ol.steps>li::before{content:counter(step-counter);flex-shrink:0;width:28px;height:28px;border-radius:50%;background:#032D42;color:#63DF4E;font-weight:900;font-size:11pt;text-align:center;line-height:28px;display:block;margin-right:16px} .kb-wrapper ol.steps>li>div{flex:1} .kb-wrapper ol.sub-steps{list-style:lower-alpha;padding-left:24px;margin:10px 0 4px 0} .kb-wrapper table{width:100%;border-collapse:collapse;margin:14px 0;font-size:12pt} .kb-wrapper th{background:#032D42;color:#fff;padding:9px 12px;text-align:left;font-weight:700} .kb-wrapper td{padding:8px 12px;border-bottom:1px solid #ddd;vertical-align:top} .kb-wrapper tr:nth-child(even) td{background:#e8fce4} .kb-wrapper p.disclaimer{font-size:10pt;font-style:italic} Configure and troubleshoot the Cascade Retire Dependent CIs feature in CMDB Data Manager. When a configuration item's (CI's) Life Cycle Stage changes to End of Life, this feature automatically identifies and queues dependent CIs for retirement through a series of business rules, scheduled jobs, and approval tasks. This article covers: How the cascade retire process works end-to-endThe two conditions that control which dependent CIs qualifyHow to configure downstream dependency rules in CI Class ManagerHow to trigger and verify cascade retire processingHow to troubleshoot dependent CIs that are silently skipped Note: This article covers the cascade-retire operation only. For cascade-archive and cascade-delete, see Manage dependent CIs. Facts<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } .kb-wrapper{font-family:'Lato',sans-serif;font-size:12pt;line-height:1.7;color:#000;max-width:100%} .kb-wrapper ul{margin:0 0 12px 0;padding-left:24px} .kb-wrapper li{margin-bottom:8px} .kb-wrapper code{background:#e6f0f5;color:#032D42;border:1px solid #b8cfd8;padding:1px 4px;border-radius:3px;font-family:monospace;font-size:11pt} The CMDB Data Manager plugin (com.snc.cmdb.ci_lifecycle_manager) must be active.The sn_cmdb_admin role is required to run Scripts - Background diagnostics and the manual trigger.A published CMDB Data Manager Retire policy must exist before the process creates retirement approval tasks. Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Utah and later Instructions<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } .kb-wrapper{font-family:'Lato',sans-serif;font-size:12pt;line-height:1.7;color:#000;max-width:100%} .kb-wrapper p{margin:0 0 12px 0} .kb-wrapper ul{margin:0 0 12px 0;padding-left:24px} .kb-wrapper li{margin-bottom:8px} .kb-wrapper h2{font-size:14pt;font-weight:900;border-bottom:2px solid #e8fce4;padding-bottom:4px;margin:28px 0 10px 0} .kb-wrapper h3{font-size:12pt;font-weight:900;border-bottom:2px solid #e8fce4;padding-bottom:4px;margin:20px 0 8px 0} .kb-wrapper .note{border-left:4px solid #52B8FF;background:#e6f4ff;padding:10px 14px;margin:14px 0} .kb-wrapper .warning{border-left:4px solid #e6a817;background:#fff4e0;padding:10px 14px;margin:14px 0} .kb-wrapper code{background:#e6f0f5;color:#032D42;border:1px solid #b8cfd8;padding:1px 4px;border-radius:3px;font-family:monospace;font-size:11pt} .kb-wrapper pre{background:#e6f0f5;color:#032D42;border:1px solid #b8cfd8;padding:12px 16px;overflow-x:auto;font-family:monospace;font-size:11pt;line-height:1.5;margin:10px 0 16px 0;border-radius:3px} .kb-wrapper ol.steps{list-style:none;padding:0;counter-reset:step-counter} .kb-wrapper ol.steps>li{counter-increment:step-counter;display:flex;align-items:flex-start;margin-bottom:16px;list-style:none} .kb-wrapper ol.steps>li::before{content:counter(step-counter);flex-shrink:0;width:28px;height:28px;border-radius:50%;background:#032D42;color:#63DF4E;font-weight:900;font-size:11pt;text-align:center;line-height:28px;display:block;margin-right:16px} .kb-wrapper ol.steps>li>div{flex:1} .kb-wrapper ol.sub-steps{list-style:lower-alpha;padding-left:24px;margin:10px 0 4px 0} .kb-wrapper table{width:100%;border-collapse:collapse;margin:14px 0;font-size:12pt} .kb-wrapper th{background:#032D42;color:#fff;padding:9px 12px;text-align:left;font-weight:700} .kb-wrapper td{padding:8px 12px;border-bottom:1px solid #ddd;vertical-align:top} .kb-wrapper tr:nth-child(even) td{background:#e8fce4} .kb-wrapper p.disclaimer{font-size:10pt;font-style:italic} How cascade retire works When a CI's Life Cycle Stage changes to End of Life, the cascade retire feature processes dependent CIs through the following automated steps. Business rule fires. The business rule Track "Retired" CIs fires on the cmdb_ci table (after update) and adds the retiring CI to cmdb_ci_end_of_life_ledger. Note: An additional business rule, Cascade retire for custom definitions, is inactive by default. Activate it to handle retirement triggered when both CSDM lifecycle fields — life_cycle_stage and life_cycle_stage_status — reach their configured retirement values at the same time. Cascade job evaluates relationships. The scheduled job CMDB Cascade Retire Dependent CIs runs every 4 hours and processes each CI in cmdb_ci_end_of_life_ledger. For each retiring CI, the job walks its relationship records in cmdb_rel_ci. For each relationship, it checks whether the relationship type and related CI class match a hosting or containment dependency rule for the retiring CI's class in CI Class Manager. Matching CIs are written to cmdb_dependent_ci_ledger with action = Retire and state = Ready. Important: The job follows declared dependency metadata — not arbitrary relationship records. A raw relationship in cmdb_rel_ci is not processed unless the relationship type and related CI class match a configured hosting or containment rule. Policy processor creates an approval task. The scheduled job CMDB DependentCI Policy Processor runs daily at 08:30 and processes cmdb_dependent_ci_ledger. It creates an approval task in CMDB Data Manager against the active Dependent CI Retire policy. Assignment group approves. A member of the policy's assignment group approves the task. The retirement operation is applied to the dependent CIs. Qualification conditions Two conditions must pass for a dependent CI to enter cascade retire processing. Failure at either condition is silent — the CI is skipped without an error or log entry. Condition 1 — System property The system property cmdb.dependent.ci.cascade.retire.enabled must not be set to false. When the property record does not exist in the System Properties (sys_properties) table, the feature runs by default. Create the property record only to explicitly disable the feature. Note: Official documentation describes this property as disabled by default. In practice, when the property record is absent, the system defaults to running the feature. To confirm the current state, check whether a property record for cmdb.dependent.ci.cascade.retire.enabled exists in sys_properties and review its value. Condition 2 — Downstream dependency metadata The retiring CI's class must have at least one hosting or containment dependency rule configured in CI Class Manager. If no rule exists for that class, the retiring CI is never written to cmdb_ci_end_of_life_ledger and no dependent CIs are processed. At the relationship level, each record in cmdb_rel_ci is evaluated individually. Only relationships whose type and related CI class match a declared hosting or containment rule are written to cmdb_dependent_ci_ledger. Note on the Is Dependent class setting: CI classes in CI Class Manager have an Is Dependent setting. This setting controls cascade-delete and cascade-archive eligibility. It is not evaluated in the cascade-retire path — cascade retire requires only Condition 1 and Condition 2. Verify prerequisites Confirm the CMDB Data Manager plugin (com.snc.cmdb.ci_lifecycle_manager) is active on the instance. Confirm a CMDB Data Manager Retire policy exists and is published. Verify the system property (Condition 1): Go to All > System Properties (table: sys_properties).Search for cmdb.dependent.ci.cascade.retire.enabled.If no record exists, the feature is active by default — no action is needed.If the record exists with a value of false, set it to true and save. Configure downstream dependency rules If dependent CIs are not being processed, the retiring CI's class may be missing hosting or containment dependency rules. To verify and configure rules: Go to All > Configuration > CI Class Manager. Select the class of the retiring CI (for example, cmdb_ci_linux_server). Select Dependent Relationships in the class navigation bar. Confirm that at least one hosting or containment rule exists pointing to the expected dependent class (for example, cmdb_ci_network_adapter or cmdb_ci_file_system). If no rules exist, select Add dependency and configure the appropriate hosting or containment rule. To confirm the metadata is configured correctly, run the following diagnostic in Scripts - Background (requires sn_cmdb_admin): var result = SNC.CmdbMetadataScriptableApi.getDownstreamDependencyInfo('cmdb_ci_linux_server'); gs.info(result); In the output, confirm: The expected dependent class appears (for example, cmdb_ci_network_adapter).RelationCategory is hosting or containment.RelType matches the relationship type that exists between the two CIs in cmdb_rel_ci. Note: If the output is null or {}, no downstream metadata is configured for that class — no dependent CIs are processed regardless of existing relationship records. Manually trigger cascade retire processing To run cascade retire processing without waiting for the scheduled job, run the following script in Scripts - Background (requires sn_cmdb_admin): SNC.CMDBDataManagerScriptableApis.processCascadeRetire(); After running, verify the following: cmdb_ci_end_of_life_ledger — the retiring CI has a record with state = New or state = Processing.cmdb_dependent_ci_ledger — dependent CIs appear with action = Retire and state = Ready.CMDB Data Manager — an approval task is created against the Dependent CI Retire policy. Troubleshoot dependent CIs not being cascade-retired Symptom: The scheduled job CMDB Cascade Retire Dependent CIs runs without errors, but dependent CIs — such as Network Adapters, File Systems, or WAR files — do not appear in cmdb_dependent_ci_ledger with action = Retire. Some dependent CIs may be processed while others in the same relationship chain are skipped. Work through both conditions in order. Verify Condition 1: system property. Follow the steps in Verify prerequisites above. Verify Condition 2: downstream metadata rules. Follow the steps in Configure downstream dependency rules above. If the diagnostic script returns null or {} for the retiring CI's class, no dependent CIs are processed — configure the dependency rules before proceeding. Trigger and verify. After verifying both conditions, run the manual trigger and check the ledger tables as described in Manually trigger cascade retire processing above. Key tables and scheduled jobs ArtifactTypeDetailscmdb_ci_end_of_life_ledgerTableRetiring CIs awaiting cascade-retire processingcmdb_dependent_ci_ledgerTableDependent CIs queued for retirement, archive, or deletecmdb_rel_ciTableRelationship records walked by the cascade jobcmdb_data_management_taskTableApproval tasks created by CMDB Data ManagerTrack "Retired" CIsBusiness ruleAfter update on cmdb_ci; fires when life_cycle_stage changes to End of Life; always activeCascade retire for custom definitionsBusiness ruleAfter update on cmdb_ci; inactive by defaultCMDB Cascade Retire Dependent CIsScheduled jobEvery 4 hours; conditioned on cmdb.dependent.ci.cascade.retire.enabledCMDB DependentCI Policy ProcessorScheduled jobDaily at 08:30; conditioned on cmdb.dependent.ci.cascade.op.enabledCMDB Data Manager Retire Policy ProcessorScheduled jobDaily at 11:00; no conditioncmdb.dependent.ci.cascade.retire.enabledSystem propertyCondition 1; active when property record is absentcmdb.dependent.ci.cascade.op.enabledSystem propertyControls the DependentCI Policy Processor (all three cascade operations) Related Links<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } .kb-wrapper{font-family:'Lato',sans-serif;font-size:12pt;line-height:1.7;color:#000;max-width:100%} .kb-wrapper p{margin:0 0 12px 0} Manage dependent CIs