What's New in ServiceNow: Jakarta (Pt. 1)

I don't know about you guys, but having worked with ServiceNow since the pre-Fuji days, I can hardly believe how far the platform has come in just a few short years. 

If you've been following SN Pro Tips for a while, you may have seen our articles on Geneva and Helsinki. In that same spirit, today we're bringing you a break-down of what's new in ServiceNow's Jakarta release, and all the main points you'll need to know and keep an eye out for, as an Admin or developer. 
This has been another really significant update to ServiceNow, so we can't cover every little detail, but if we missed something that you think is important, please leave a comment and let us know your favorite new feature! 

Article Index


Interface, Accessibility, & Usability

ServiceNow's Jakarta release comes with some neat enhancements to the UI, including changes to how you can interact with the platform using a mouse and keyboard as well as improvements to overall visuals and intuitiveness overall. 

Homepages are out, Dashboards are in

ServiceNow now prompts users of homepages to... stop using homepages, and use dashboards instead, even providing them with a link to create a dashboard version of their homepage. 

After clicking Create dashboard version, a UI box pops open, prompting you to choose whether to create a new dashboard, or add your stuff to an existing one. 

Pro Tip: In our testing, we found that clicking Create on the pop-up appears to do nothing; there is no feedback, and you remain on the same page. However, if you close the pop-up and navigate to your list of dashboards, you will see that indeed, a dashboard was created. Be careful not to click Create over and over, or you may end up with dozens of duplicates of your dashboard!

Getting around lists & forms faster

In addition to some other "accessibility" updates (such as a new "Contrast" UI theme), ServiceNow have introduced a much-improved tabbing experience. Now, when navigating around forms and lists, pressing Tab should more reliably take you to the "next" field. 

This change comes as part of an overhaul of the way that users can interact with the platform using their keyboard. As someone who is obsessed with efficiency, this makes me very happy

API & Code Changes

ServiceNow have made a number of updates to both the scoped and global APIs. While they haven't clued us in to all of the details just yet, here's what we've been able to find so far. 

GlideAggregate.addTrend()

GlideAggregate has a new method: addTrend(). addTrend() accepts two strings as arguments: the name of the field for which you'd like to get the trend, and the time-frame for the trend. The second argument (time-frame) must be one of the following strings: Year, Quarter, Date, Week, DayOfWeek, Hour, or Value. Obviously the time-related trends (Year, Quarter, etc.) only refer to fields which contain a time-value. 

Unfortunately, there is no real documentation on how to use addTrend(), but what we've been able to figure out is that it allows for the creation of an aggregate which leverages this trend data, and a new on-the-fly field called timeref. See the code below, for example usage. 

var ga = new GlideAggregate('incident');
ga.addEncodedQuery('sys_updated_onRELATIVEGE@year@ago@1'); //Incidents updated within the last year
ga.addTrend('sys_updated_on', 'Month'); //Get the number of Incidents updated on each given month
ga.addAggregate('COUNT'); //Count the number of Incidents updated on each given month
ga.query();
while (ga.next()) {
    gs.print(ga.getAggregate('COUNT') + ' records were updated on ' + ga.getValue('timeref'));
}

GlideSystem.beginningOfNextWeek()

Note: I didn't think it warranted its own section, but gs.endOfNextWeek() is also added, and works just the same as gs.beginningOfNextWeek()! 

A small change to the GlideSystem Class in ServiceNow - but certainly a useful one! We now have the gs.beginningOfNextWeek() server-side API. This API obviously returns the beginning of next week in the GMT time-zone, in the format yyyy-mm-dd hh:mm:ss. This comes over as a String, so if you want to use it as a GlideDateTime object, you'll want to pass it into one as a constructor argument or by using .setDisplayValue().

UserCriteria

New in Jakarta, is a whole new Class: UserCriteria! This class allows you to create, modify, or delete user criteria records programmatically, rather than manually. You'll need to have the User Criteria Scoped API plugin enabled to access this Class and its methods. If you haven't got it enabled, you can find it by the plugin ID: com.glideapp.user_criteria.scoped.api
If instantiating the UserCriteria object from within a scoped application, be sure to access it using the sn_uc namespace. For example: 

var uc = new sn_uc.UserCriteria(userCriteriaSysID);

ServiceNow have actually written some pretty great documentation on this Class, so rather than duplicate it here, I'll just link you to their docs page

Authentication & Security

Jakarta comes with some fairly significant enhancements to the authentication process, and security overall. This includes boosting the robustness of the platform security, as well as enhancing the customizability of your platform's authentication and security settings. 

Limit Concurrent Sessions

This one's pretty cool for infosec geeks. ServiceNow now allows you to limit the number of concurrent interactive sessions for a given user, OR for a given role! This means that if you've set the limit to, say, one concurrent session for all users, and a user tries to log in simultaneously from two different browsers (like Chrome and IE, or Chrome and Chrome Incognito mode), it will log out their previous session.

I'm hoping that they'll soon add an option to choose whether it logs out your previous session, or denies access to the new session, but for now that's not included. Still though, this is a pretty cool new feature in the Jakarta release. 

In order for this functionality to be available, you'll need to enable the Limit concurrent sessions plugin, which installs two system properties: glide.authenticate.max.concurrent.interactive.sessions, and glide.authenticate.limit.concurrent.interactive.sessions. The former (max.concurrent.interactive.sessions) sets the maximum number of sessions, whereas the latter (limit.concurrent.interactive.sessions) is a boolean that switches the feature on or off altogether. 

The session limit works with all authentication methods, including LDAP and SAML, and also works with MFA (multi-factor auth) sessions. It does not however (yet) work with the native mobile app. It will work with a mobile web-browser session, though. 

Unfortunately, you can only have one "limit" number. You cannot, for example, set the 'itil' role to maximum 50 concurrent sessions, and limit a specific user, or another role, to only 2. 

You should also be aware that once you've activated the plugin, the feature is still disabled. By default, you must manually set the glide.authenticate.limit.concurrent.interactive.sessions property to true. Once that's done, you'll still need to add the Limit Concurrent Sessions field to the sys_user (and potentially sys_user_role) form like so: 

Automatic SSO Cert Update

A quick couple of new features around SSO: New in the Jakarta release, not only does ServiceNow support multiple SAML SSO certificates, but it also automatically updates SSO imported certificates. You will notice however, that you now must use the Test functionality to test your connection prior to saving your configuration. 

Actually, that's not quite true; you can save your configuration change, but it won't be active until you've run the test. 

Domain Separation

Assessments, now in Jakarta, are newly supported by domain separation. 

Service Portal

I am personally a little bit disappointed by the number of actual improvements made to the Service Portal in ServiceNow's Jakarta release given how much seems to be missing at this stage (not the least of which is support for client-side UI Actions in the Form widget, which still pains me), but there have indeed been a few. 

Nathan Firth, over at serviceportal.io has done a great job of covering the service portal, so I'll spare you the trudgery and link directly to his article for more info.

New Widgets

Survey Widget

Users can now take surveys from within the ServiceNow Service Portal. In fact, the "Survey" widget can display surveys, quizzes, assessments, and attestations on the Service Portal. 

CMDB

The ServiceNow CMDB has a new feature, and several changes in Jakarta. More on this to come! 

CMDB Benchmarks

There are now a bunch of CMDB health-related benchmarks automatically calculated and displayed in the Benchmark dashboard
You can read more about Benchmarks in the official documentation, here!

This concludes part one, but we'll get part two up as soon as we can, with even more info about what you can expect from ServiceNow's latest platform version upgrade: Jakarta!