One of our customers is going through some rationalisation and simplification of their ServiceNow implementation. One of the many things we’re looking at, is reducing the number of fields available on CMDB and Task table. I couldn’t find any out of the box method to determine field usage, so I decided to attack this with a little background script.
The script goes through the base class that you pass in as an argument, and gathers all the fields available on that class. It then loops through these, discarding OOB fields by default.
It will then create a row for each extension class, the first column being the class name, followed by the total number of records directly on that class, followed by all the fields available on the table and their usage.
Once completed, it’ll create a CSV file and attach it to your user profile on the sys_user table.
A word of warning, it can take quite a while to run so either run it as a background script and get yourself a coffee, or run it as a fix script/scheduled job so you can continue working. Also consider running this outside of your core business hours.
I checked it on our customer’s CMDB table (1.5mil CIs) and it ran in 30 minutes and while the memory and CPU impact were minimal, running code during operational hours isn’t ever a good idea.
Couple of things to keep in mind. The script considers a checkbox to be “used” if the value is set to true, and it considers an integer field to be “used” if the value is not 0.
Once you’ve run the script and got the output, it’s then just a case of going through the file, looking for under-utilised fields and determining if you really need them or not and go from there. You can download a copy of the script here