Life Cycle Standards, Migration, and Mappings
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-02-2022 10:41 AM
I am trying to get some clarification on the CSDM Life Cycle migration and mappings
Life Cycle Mappings at activation
In the product docs, it states that activation will result in the following:
1. One-time bulk mapping of legacy life cycle values to the new Life cycle stage and Life cycle status fields. The mappings are based on the mapping records in the Life Cycle Mapping table, which contain values, source, and target fields.
2. Setting the csdm.lifecycle.migration.activated system property to true (set to false in the base system), which then activates the Update lifecycle from legacy business rule. Future insert or update CI operations will then trigger this business rule to populate the standard Life cycle stage and Life cycle status fields. These processes ensure that the life cycle standards are used continually and consistently.
I activated the plugin in a test instance to test. I had some questions on whether mapping rules on parent tables, like hardware, would apply to child tables, like server. Upon activation, I was expecting a process to run that would start updating the life cycle fields on existing CIs based on the first result above. That was not the case and have found no scripts or scheduled jobs that imply a bulk update. Perhaps my understanding of the result is wrong. I also updated a server record and verified the business rule listed in second result did work. Based on that test, I assume the life cycle mappings are run against the child tables.
Usage of lifecycle in current versions
I have read some fairly recent posts in this forum stating these fields are not recommended to be used exclusively. Most suggest making the fields read only and continue using the legacy fields while letting the mapping still occur in the background. At least we can start to leverage the CMDB Data Manager. Is that still the case? Any other recommendations or pitfalls to consider?
Thanks and appreciate any feedback.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-06-2022 05:15 AM - edited 12-06-2022 05:17 AM
@Alec Hanson is correct. And without the status values synchronizing between the CI and the Asset, there just isn't any reliable lifecycle information. Which is why, from my perspective this feature just isn't ready for prime time -- even if you are on a brand new ServiceNow instance.
I was excited at first to hear that the multiple legacy values were being consolidated into a single lifecycle object, because there is great potentiality in this. Unfortunately the problem that still exists is what has plagued the asset and CI synchronization since the beginning. Because business rules can cause infinite recursion, there is a flag to skip the business rule execution on the second level trigger in the code. And thus, all of the field CANNOT stay in sync with one another. And because we have now added another set of fields, it actually just makes the problem even worse. To illustrate:
Update CI status --sync--> Update asset state --skip sync--> Update CI status
That's the basic idea. We want to update the asset state based on a change to the CI status, but we don't want to update the CI status based on the change to the asset state because that's redundant. So we set a flag to allow this business rule to be skipped on the second trigger. But the problem comes when there is another business rule that needs to run, because that business rule won't run either.
The first place we see this is in the convoluted relationship between CI Status and Hardware Status/Substatus fields. If you choose to use the Hardware Status/Substatus fields and perform an update, the asset State field will be updated, but that update will not in turn update the State field. So you end up with a CI that (for example) has a Status of "Installed" but a Hardware Status of "Retired". That may almost seem justifiable if you buy into the idea that you should know better to only report on the "correct" field for the class you are looking at, but I just don't buy that. If there is a field on a class, I should be able to use it or it shouldn't be there. If I want to report on all CIs across multiple branches, I should be able to do that. At the very least, it's extremely easy even for experienced users to mistakenly look at the wrong field and make the wrong decision because the values of the different fields are not kept in sync. And that's the problem that's been plaguing ServiceNow users (some without their knowledge): you just cannot rely on the status of assets and CIs to be in sync.
Enter CSDM Lifecycle. The idea is you want to have a single Lifecycle object that can be referred to by multiple objects, so that you can use a common language to talk about lifecycle, and this should make it easier to keep the lifecycle of the asset and CI in sync as well. Right? Unfortunately, no. Because now we have a problem in that we've just made the problem MUCH more complex. Not only do we now have to keep Asset and CI status in sync bi-directionally, across multiple legacy status fields depending on the CI class in use, we also have to keep CSDM Lifecycle in sync with all of those legacy status fields bi-directionally. No matter how you look at it, it is a logical problem that cannot be solved by a serial chain of business rule triggers. So this needs some major refactoring before it can be relied upon. Not only does ServiceNow need to refactor the various modules that rely upon lifecycle information from the legacy status fields so that they can look at either the legacy or CSDM lifecycle fields, thus enabling customers to smoothly transition, they also need to refactor the asset and CI synchronization to resolve the problem of fields not synchronizing.
From where I stand this is a complex problem that isn't going away any time soon, and the resulting issues will likely get worse before they get better. I hope I'm wrong, although I have conducted tests on a clean instance which have confirmed my findings, and it's been on my to-do list to write up an article about this. This one keeps me up at night, and the best I can surmise is that what we really need is some Lifecycle Manager script that oversees the lifecycle synchronization across all objects and all fields, regardless of the business rules that get triggered. And I'd love to hear from ServiceNow about whether they have acknowledged this problem and whether they are working on a solution.
In the meantime, I just don't think the CSDM Lifecycle is ready for use. At the very least, it should only be used in a read-only, unidirectional fashion, with direct status updates occurring only on legacy fields.
The opinions expressed here are the opinions of the author, and are not endorsed by ServiceNow or any other employer, company, or entity.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-03-2025 10:11 AM
This thread may be a bit dated, but it was very helpful for me while I try to figure out the impacts of activating Life Cycle mapping on our instance. Activating it cleared all of our Hardware Status/Substatus data from the cmdb_ci tables, and seemingly disables the Sync of those fields to the Asset status/substatus. Sometimes the CI Lifecycle statuses sync to the Asset, and sometimes they don't...
The complexity of managing the "automatic" syncing to get the data correct in CI tables and Asset tables seems extremely difficult....
Has there been any improvement on the issue in Xanadu or future versions?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-08-2023 05:31 AM
What seems to be missing, unless it's just me, is the mapping between CI Life Cycles and Asset Life Cycles in a way the legacy Install Status and Hardware Status mappings existed.
Am i wrong on that? @Mark Bodman
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-08-2023 09:43 AM - edited 12-08-2023 09:45 AM
Migration of the products that use the new lifecycles has been incremental. ITAM still uses legacy fields and map them to legacy IC lifecycles for example. By 2025, ITAM plans to be migrated, barring any other priorities the team has to contend with. Of course, check with the product release notes to make sure.
One situation that recently added support for our new Lifecycle state / status fields is ITOM license counting. If the instance has enabled the CSDM plugin and enables Lifecycle syncing, the license counting look at Lifecycle Stage / Status fields now. The release note on this change is ITOM license consumption counting, v3.1 of the ServiceNow ITOM/OT SU Licensing store app introduced support for filtering by CSDM Life Cycle Status instead of install_status, which is noted in the SU counting logic KB on Support (KB0748149).
If you are seeing issues in the ITOM count, please make sure you have FULLY enabled the lifecycle synchronization processes as documented for Vancouver here. We have seen a few instances where customers map their life cycles, but forget to press the final "Activate" button as described in the documentation here: