- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
Did you ever wonder how some engineers can find an issue in under a minute, yet it took you an hour to find the same issue? Usually, these engineers employ tips, tricks and shortcuts to find what has changed, which changes have impact, and use their knowledge of the underlying data structure to determine what is going on efficiently and effectively.
My time at ServiceNow has allowed me to garden, prune, and grow my skills, so much so that I want to share them with you. These shortcuts are the ones I use to understand how an application works or how a change might have caused issues.
I'll show you how I...
- Find out the underlying data structure
- What is manipulating the data
- Find records
- Determine a table name
- Analyze activity around a specific date
- Uncover unexplained issues
To find out the underlying data structure:
Including the table name, as well as values stored in the record, I right click on the header of a detail form and choose Show XML.
<xml>
<description/>
<entitlement_script/>
<header_icon/>
<homepage_image/>
<homepage_renderer display_value="">Default</homepage_renderer>
<icon/>
<image/>
<location/>
<mobile_hide_description>false</mobile_hide_description>
<mobile_picture/>
<mobile_subcategory_render_type>list</mobile_subcategory_render_type>
<module/>
<order/>
<parent display_value="Request Application Infrastructure">d252320ec611227a011e082eb439e5f6</parent>
<roles/>
<sc_catalog display_value="Service Catalog">e0d08b13c3330100c8b837659bba8fb4</sc_catalog>
<show_in_cms>false</show_in_cms>
<sys_class_name>sc_category</sys_class_name>
<sys_created_by>glide.maint</sys_created_by>
<sys_created_on>2005-05-12 19:19:30</sys_created_on>
<sys_customer_update>false</sys_customer_update>
<sys_id>d258e415c611227a0013072db7288863</sys_id>
<sys_mod_count>0</sys_mod_count>
<sys_name>Accessories</sys_name>
<sys_package display_value="Service Catalog"source="com.glideapp.servicecatalog">4184eca3682130001992d2530bfea9fd</sys_package>
<sys_policy/>
<sys_replace_on_upgrade>false</sys_replace_on_upgrade>
<sys_scope display_value="Global">global</sys_scope>
<sys_update_name>sc_category_d258e415c611227a0013072db7288863</sys_update_name>
<sys_updated_by>admin</sys_updated_by>
<sys_updated_on>2005-05-15 17:25:23</sys_updated_on>
<title>Accessories</title>
</sc_category>
</xml>
This information helps me determine the table name, here <sc_category>, the fields defined in that table (and any possible table it extended from) and additional information such as, when was the record last updated, and by whom, created, and by whom etc. I also refer to show xml to determine whether a field I see on the form is a "derived field" - those fields will not show up in show xml, because they are not part of the record's data structure.
What is Manipulating the data
Now that I know the data structure, the next question I always ask is, what is manipulating that data. To find that information, I right click on the header to choose Configure (or in versions prior to Fuji: Personalize) > All.
I prefer going to the business rules, client scripts, dictionary entries and overrides, email notifications, ui actions, access controls, ui policies, data policies, styles, and view rules this way. This method allows me to see all tailoring that is relevant to this record. This includes tailoring that is defined on a parent (extended) table, or access controls that are for all records (*, *.*).
- Change the list layout of those areas to include the Updated column
- Sort by last updated on, showing the newest on top
This way, I can determine if a recent change has caused issues or changes in behavior.
On audited tables, I can follow what happened to a certain field by right clicking on the header and choosing History > List and then choosing "Show Matching" for that field. I use the history list to see when a record was last updated, or what update happened at a certain date/time to troubleshoot notifications or integrations that were sent at that time. The History List will show updates done by users and by background workers (represented by "system" as the user name).
Find records on a table
If I know the table to search, but don't see it in my navigator, I use this trick to find the records
- <tablename>.list - to show the list of all records in that table
- <tablename>.LIST - to show the list of all records in that table, but in a new tab
Most often I use sys_properties.list, a list of all the system properties defined for the instance, and sys_update_xml.list, a list of all tailoring done on the instance that could be part of an update set.
Determine a table name
To find out the tablename, I refer to show xml as mentioned above, or I check the dictionary records for tables that fit my criteria. To find just the table names in sys_dictionary...
- Filter on "type=Collection"
- Search for names that should fit my criteria.
For example, if I search for any table that might be related to Service Catalog, I can search for names containing "sc_" or "catalog", and can then use the names I found and use the ".list" shortcut to get an idea on what type of data these tables contain.
Use the date as a starting place to determine when and what may have caused the issue
Sometimes you will have the situation that something worked fine until a certain date, and then it stopped working. To find all tailoring that has gone on around that date, I usually go to the table called sys_update_xml and search for records updated between the day before that date and that date itself. This will give me all tailoring that was done around that date and will help me narrow down if any of that tailoring is causing an issue.
Uncover unexplained issues with the debug tool
Whenever I see unexplained issues, I turn on Debug Log session debugging. This parameter will print out anything that is written to the log files into my session debug area beneath the form content and is easier than searching the log files for error messages specific to my user.
I want to end this article with some of my favorite keyboard shortcuts for lazy typers (like me) that work well in most instances when entered in the "type filter text" area on the navigator:
| Action | Keyboard shortcut |
|---|---|
Business Rules | s r |
| Scheduled jobs | d j |
| Script Includes | t in |
| Client scripts | nt s |
| UI pages | i p |
| UI Macros | i m |
I hope these tips, tricks, and short cuts will make your life easier. If you want to add your own favorites, I appreciate your comments!
- 10,048 Views
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.