How do you handle Deprecated List values?
In our place, we are fortunate to be exclusively using the portal, except users whom have the Outlook Add-in. However aside from doing some scripting to hide specific list values when they get deprecated, such as a Support Group, we have been holding out users just do not use them. Obviously, this is unreliable and someone always uses a value that is in a list.
We are fortunate in the sense that we keep all data in OpsDB. Bad I know in the overall sense, but nice as it gives us the mobility to rebuild the DW when something goes awry or we decide to make a big update.
We'll be completing changing our classification model, do I will be leveraging the opportunity to deprecate an it item or two. But next time this occurs I won't have this luxury.
So how do you handle Deprecated List values?
Comments
Round 1 is now complete. Analysts for the most part don't notice this difference and integrations for SCO specific things, templates, etc. continue to work without issue. You let a few weeks go by continually checking in to see who/what is still setting Retired values. I recommend approaching this through a SQL report against the DW, but you could certainly PowerShell this too. All in all, this is part staff training opportunity part double checking you don't have processes calling templates that reference these old values. Everybody wins.
Some time has gone by. You're absolutely clear SCSM/SCO/some processes aren't still leveraging these retired values. The only thing that's left is people are still using them. Assuming you've addressed the needs of new/replacement enums for the ones you're retiring, begin deleting enum values. Here's the potentially tricky part, you're only going to be able to delete values that are not in use in the current live OpsDB. This is where some PowerShell may come into play, find all of the active things in the system and flip their values to something else so you can get on with deleting the enum values. Round 2 is now complete.
With the enum values deleted, they will eventually become retired in their own right within the data warehouse. Reporting against these missing values will require an extra join or two, but you will still be able to grab their plain text display string as the DW has a record of all of these enums. By having a consistent DW you preserve the enum in the long run but still allow yourself to continually alter/improve your OpsDB.
It sounds as though containing all of our data in our OpsDB is truly a 'bad thing' in this instance as we do not have the luxury of removing/deleting enum values without renaming them to a different GUID. Thus forcing us to treat all our 'retired' items as your Round 2 items.
I like your approach with essentially renaming the GUID of the value(s) to Retired instead of the actual value themselves. Allowing ease for users to understand these are not to be used, and aiding in users most likely not using these values.
I do have a follow-up question though for you, for the quote below...my assumption was that by the word active things, you meant any items that fit the criteria that is still in OpsDB. aka. status is not the dimiliter, it is the fact the object is contained in the OpsDB
SCSM Data Warehouse: Fact Groom Retention - Prevent Relationships Getting Marked As Deleted
SCSM: Perfect the SSAS Cubes
I've found this has kept the DW cube jobs finishing and kept the data accurate for reporting purposes....
Due to SCSM design, it's better to be using business services with generic classifications, so if you have 50+ classifications and not using services, you may want to consider using the following tool to help change that:
SCSM Incident - Service Adder and Reclassification Tools
I mention PowerShell here because it will be easy to discover what those values are and if necessary change them to some other value so you can get on with deleting the enum.