It seems like only yesterday that we upgraded to Geneva... Maybe that's because many ServiceNow customers still haven't done so. That won't stop us from exploring the new hotness that is Helsinki, though! As always we aim to provide you with the latest updates on the latest update.
That was a terrible pun.
We've scoured the existing documentation, watched the available demos, and tried out the early-access dev instances. In this article, we're going to cover all of the most visible changes and new features in Helsinki so far on a product-by-product basis, and give you the low-down on what you can expect out of an upgrade. Let's get started!
Note: This is part one of a two-part series on ServiceNow Helsinki. Subscribe to stay tuned for when part 2 comes out!
- Asset & CIs
- Service Catalog
- Developer & Platform Stuff
- Interface Changes
Asset & CIs
Asset Management has always been closely linked with the CMDB, but a lot of that has involved manual work in the past. Now in Helsinki, it looks like we're getting a new feature called Asset-CI Mapping and Synchronization.
This new feature will allow you to synchronize asset and CI records by mapping their fields, states, and statuses to one another directly. Thus, changes made to a CI will trigger the asset record to be updated, and vice versa. This means that you get more consistent reports, more accurate records, and better accuracy overall. You can even create custom mapping synchronizations.
Some examples of mappings you can create, include:
- Mapping an Asset's State and Substate fields to Configuration Items' Hardware Status and Substatus fields (for hardware CIs)
- Mapping an Asset's State and Substate fields to the Configuration Items' Install Status field (for non-hardware CIs).
- The Install Status field does not have a sub-field, but you can still map certain state conditions to it.
- Mapping various other Asset fields to particular CI fields.
The synchronization can do in either direction, or both ways.
Salvage & Expenditure Type
Additionally in Helsinki, ServiceNow now allows you to set a Salvage Value and Expenditure Type for hardware models. Expenditure type can be either Capex (capital expenditure) or Opex (operational expenditure).
Helsinki also introduces the Activity tracker for the Asset table, which is updated is the following fields are changed: Assigned to, Managed by, Reserved for, State, and Substate.
The activity formatter also tracks if/when the asset is created or updated by a purchase order (if it's a hardware or software asset), or if it's associated with a transfer order that enters the initiated, cancelled, or received stage (if it's a hardware asset).
Mass CI Update
But wait, there's more! Helsinki now (FINALLY!) adds the ability to mass update CIs through Change Management. To enable this functionality, enable to Change Management - Mass Update CI plugin (com.snc.change_management.mass_update_ci). This plugin is not enabled by default for either upgraded, OR for new instances.
Note: Make sure that the Change management State Model plugin is already activated before enabling the Mass Update CI plugin.
Mass updates to CIs are available only for normal and emergency changes.
A few changes have come to the Incident module in Helsinki, as well as a whole new state model. Here are some of the changes:
- Closed/cancelled incidents can't be reopened, but Resolved incidents can be, with a different incident number.
- There are some minor tweaks to the incident notification emails templates.
- If you haven't customized these yourself (and thus they are upgraded with Helsinki), I recommend checking out the updated version to make sure you still like the formatting.
- The Impact field is no longer on the Create Incident record producer by default.
- This is mainly because, as many companies have already determined, it's not best practice to ask self-service users what the impact of their own incident is. Instead, users can specify their perceived "urgency" via that field.
New State Model
The Incident state model is changing just a little bit; we've now got the state values: New, In Progress, On Hold, Resolved, Closed, and Canceled. However, when the state is set to On Hold, the following "reasons" can be associated with it: Awaiting Caller, Awaiting Evidence, Awaiting Problem Resolution, and Awaiting Vendor.
Unfortunately, this new state model is not available for upgraded instances. KB0564465 makes some explanation as to why.
The Service Catalog has had a few tweaks to it as well, primarily allowing catalog management self-sufficiency, and diagnostics.
Finally -- FINALLY, Catalog ownership has arrived. On the catalog definition page (Service Catalog > Catalog Definition > Maintain Catalogs), you can now assign a Manager to a given catalog.
The manager is able to edit and update the catalog, as well as the categories and catalog items within it. The manager can also assign editors, and a new manager if they like.
Only one Manager can be assigned to a catalog at one time, but it can have multiple editors. Managers must have the catalog_admin role, and editors must have the catalog_editor role.
Diagnostics & Debugging
Helsinki adds some great catalog debugging functionality. A diagnostics related link has been added to catalog items, which allows you to quickly view "health" data. It checks for bad practice and performance or upgradeability-impacting factors, such as duplicate variables or DOM manipulation in catalog client scripts. It can be quite useful for narrowing down bugs or choke points, and will help you pick out synchronous AJAX calls in client scripts.
The CMDB has been enhanced in Helsinki, and we know that a lot of ServiceNow customers will be happy about this one. The changes in CMDB Health will make reporting on CMDB accuracy and completeness a breeze, and the CMDB Extensions will take some of the manual work out of tracking certain asset types. Check out the details below.
Helsinki gives us a really major upgrade here, which allows us to easily see the completeness, correctness, and compliance. To check out this new, fantastically useful Dashboard, navigate to Configuration > CMDB Dashboard.
Completeness, in the context of these reports, means that CIs have the required and recommended fields populated. It does not refer to the completeness of discovery or anything like that, which is unfortunate because that would be awesome -- but I can't imagine how they'd determine that.
Correctness means that CIs meet pre-defined data integrity rules which check for things like orphaned CIs.
Compliance validates that the CMDB data complies with pre-defined data certification rules.
There is also a Relationships report, which checks the health of CI relationships, testing for indicators such as orphaned and duplicate relationships.
More info on these reports, what they mean, and how to configure them can be found here.
The CMDB has been updated with new table definitions to accommodate new extended CMDB tables in the following new plugins:
- Mainframes (com.snc.cmdb.mainframe)
- Radio category (com.snc.cmdb.radio.category)
- Telecom category (com.snc.cmdb.telecom.category)
- Test equipment (com.snc.cmdb.test.equipment)
Developer & Platform Stuff
In this section, we'll go over some core platform changes, and stuff that is of particular interest to developers and administrators.
Have you ever tried to do something, only to have it spin ad-infinitum? It can be a real hassle to track down those transactions, especially if they're cancelled by the user. To help in troubleshooting, ServiceNow Helsinki now logs cancelled transactions (whether cancelled manually, or by quota rule) to a new table: syslog_cancellation.
This feature should come in really handy for debugging, but you can turn it off on a table-by-table basis, by changing the glide.quota.manager.log.cancellation table property.
Wow, this has been a long time coming. We've been on ES3 for far too long in my opinion, but I'm glad that ES5 is finally here!
I am extremely happy to say that that article is now obsolete (if you upgrade to Helsinki), because the above code now works exactly as expected in a background script (which by the way, seems not to require security_admin elevation anymore), thanks to ECMAScript 5. This also enables you to use modern libraries, such as moment.js. Here's some info on what's new in ES5. And here's more.
The new JS version support means we've also upgraded the underlying platform to Rhino version 1.7 R5.
Compatibility mode (ES3) is used for all scripts developed prior to the Helsinki release, and all global scripts. However, compatibility is not exactly the same as the old JS engine. For example, JSON.stringify() and JSON.parse() are now implemented using the ES5 native JSON object. The JSON .encode() and .decode() methods still exist, but should only be used when legacy behavior is desired.
ES5 Standards Mode (ECMAScript 5 syntax) supports all the new hotness, including the use strict declaration, object extensibility control, getter and setter properties in objects, native JSON support (as mentioned above), and support for modern third-party libraries.
User notification preferences have been thoroughly redesigned (see below) and users can opt in to or out of notifications on an individual basis if they like, and can see which notifications they're receiving for each of their devices, based on the table that the notification is generated from.
Your users can access their notification preferences as usual, by going to their user icon at the top-right, clicking Profile, and then clicking the Notification Preferences UI action on the corresponding page.
Note that these settings are different from the notification settings found in the sprocket menu at the top-right.
That's not the only change to notifications, though. On the notification form (sysevent_email_action), in the Who will receive tab, there is now a Subscribable checkbox. If this box is ticked (which it is for some notifications by default), then users can manually choose to subscribe to that notification, and can define their own conditions.
To do so, users should - from the Notification Preferences page above - click the Subscriptions tab at the top-right, and then click Add Personal Subscription + in the main body of the page. They will then be able to give their personal notification subscription a name, select an existing notification (that has the Subscribable checkbox ticked), and choose which devices to send it to.
Once the notification is chosen, the user can then use a condition builder to set the conditions under which they should receive the notification. For example, a manager can choose to receive an email when an incident is assigned, but only if the incident is of a certain priority or higher.
You can also use this to set up notifications specifically designed to be subscribed to, such as CI Affected. You can choose a specific CI for which you are responsible, and get a notification whenever an incident affects that record.
Note: This is suspiciously missing from the documentation, but List v3 must be activated on upgraded instances. The plugin is com.glide.ui.list_v3. You'll then need to log out and back in, in order to see the changes. I've also noticed that split view is not available unless this plugin is activated.
One of the first things you'll notice in List v3 if your users have complained about the lack of "List and Form View" in Geneva, is the "Split" view now available on lists.
Just below the "split view" button, is the new list filter/query builder. Let me be frank... The new list filter/query builder UI is pretty awesome. I never realized what an annoying process it was to dot-walk when building a query until I used the Helsinki query builder. Check it out:
Wow; so much easier. A few clicks, and you've dot-walked over four levels; and that's not all. There's a Save/Load Filter button (with obvious functionality), a New Criteria button (which basically replaces the top-level Or button, but still seems cooler), and a Sort Filter button. This is a very nice improvement in my humble opinion, and I'm excited to use it in production.
Speaking of conditions, List v3 now also supports multi-tiered list filtering. This allows you to build more complex queries, more easily.
Also in List v3, you'll find that UI Policies are now (finally) enforced during list editing! That's a fantastically useful enhancement, though it's been a long time coming.
In List v3, the Personalize List Columns sprocket has lost its' icon, and moved to the "hamburger menu" at the top-right of the list view.
There's actually a lot of options in that menu that used to be elsewhere, so if you're looking for something in the list view and can't find it where it used to be, check the hamburger menu!
Also in List v3, the list footer is persistently at the bottom of the content view, so it's always within reach, meaning you can go to the next/previous page more easily.
There are a few minor things that were removed from List v3 as well. The seldom-used embedded and hierarchical lists that would show in List v2 are no longer possible in List v3. Detail rows for example, are no longer shown in List v3.
The ability for Administrators to block access to list column personalization for end users has also been removed, making it easier to customize your experience.
List v3 also applies to related lists as well - all related lists load asynchronously after the form loads, even if there are no v3 related lists on the form.
In this section, we'll point out some other more minor (or at least more succinct) changes in ServiceNow Helsinki.
- XLSX support
- Import sets and export sets now support XLSX files. In fact, they're preferred for optimal performance!
- Activity Stream Mentions
- Get someone's attention by mentioning them in the activity stream of a ticket, using the "@" character. By default, users receive an email notification when they are mentioned.
- Remember List and Form View from Fuji and earlier? It was removed in Geneva, but in Helsinki they've brought it back. It's now called Split Mode.
- On forms, the reference lookup icon (the magnifying glass) now opens the reference lookup list in a popover, rather than in a pop-up window.
Did that article help you out? Check out some of our other articles below!
- April 2018
- March 2018
- Feb 11, 2018 We have a new book!
- November 2017
- Sep 12, 2017 Handling TimeZones in ServiceNow (TimeZoneUtil)
- July 2017
- June 2017
- May 2017
- April 2017
- Mar 12, 2017 reCAPTCHA in ServiceNow CMS/Service Portal
- Dec 20, 2016 Pro Tip: Use updateMultiple() for Maximum Efficiency!
- Dec 2, 2016 We're Writing a Book!
- Nov 10, 2016 Chrome Extension: Load in ServiceNow Frame
- September 2016
- July 2016
- May 17, 2016 What's New in Helsinki?
- Apr 27, 2016 Customizing UI16 Through CSS and System Properties
- Apr 5, 2016 ServiceNow Versions: Express Vs. Enterprise
- March 2016
- Feb 25, 2016 Understanding Attachments in ServiceNow
- Feb 22, 2016 Reference Field Auto-Complete Attributes
- Feb 6, 2016 GlideRecord & GlideAjax: Client-Side Vs. Server-Side
- Feb 1, 2016 Make Your Log Entries Easier to Find
- Jan 29, 2016 A Better, One-Click Approval
- Jan 25, 2016 Quickly Move Changes Between Update Sets
- Jan 20, 2016 Customize the Reference Icon Pop-up
- Jan 7, 2016 ServiceNow: Geneva & UI16 - What's new
- Jan 4, 2016 Detect/Prevent Update Set Conflicts Before They Happen
- Dec 28, 2015 SN101: Boolean logic and ServiceNow's Condition Builder
- Dec 17, 2015 Locate any record in any table, by sys_id in ServiceNow
- Dec 16, 2015 Detecting Duplicate Records with GlideAggregate
- Dec 11, 2015 Array.indexOf() not working in ServiceNow - Solution!
- Dec 2, 2015 Understanding Dynamic Filters & Checking a Record Against a Filter Using GlideFilter
- October 2015
- Aug 27, 2015 Easily Clone One User's Access to Another User