- Post History
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
on 08-09-2022 09:22 AM
I wanted to write a quick article detailing some of the features that stood out to me from consuming the Tokyo Early Release content, hopefully, you find this useful.
There are many great features in Tokyo that did not make my list, these are just the ones that stood out to me based on my experiences using and developing ServiceNow. Links are provided at the bottom if you wish to see the rest of the features coming in the Tokyo release.
If you have any suggestions or corrections please write to me so I can consider them and credit you.
1. Decision Builder
Decision Builder is an often underutilized feature in ServiceNow. Decision Builder enables developers to decouple decision logic from their code by creating and maintaining decision rules. Decisions that are created can be used in Flow Designer or even called in code using the DecisonTableAPI if required.
Tokyo brings three new awesome features to the Decision Builder application. The first is an extended list of Result types that can be used to create even more complex decision logic.
The second notable feature here is the Export to Excel option that is now available. This allows us to export decisions from ServiceNow to Excel and provide them to stakeholders or non-technical personnel. This means that stakeholders do not require previous ServiceNow or Decision Builder experience to suggest changes to decision logic in the platform. Once stakeholders have made changes to the decision logic in Excel, the changes can then be imported back into ServiceNow.
Finally, Decision Builder now ships with a new fancy UI that makes creating your decisions a lot easier.
Pivoting your decision logic to Decision Builder should be a serious design consideration for any future development, no more maintaining old if and switch statements all of which cost time and money to change.
The Decision Builder Plugin must be installed before you can use this feature, it can be installed by an admin.
2. Document Intelligence
Document Intelligence is a feature that is probably going to excite a lot of HR and Finance departments in organizations. It is a machine learning (ML) solution that provides assistance to quickly and accurately extract information from documents so that information can be used for (but not limited to) logic inside a request or to fill out a form.
Document Intelligence does require some setup and model training before it can be used effectively. Once set up it can scan your uploaded document and pull information directly from it using definitions and keys that tell the machine learning solution what we are looking for such as data in tables, totals, names, etc. Once the ML solution has been trained using the definitions and keys that have been created you can see the accuracy of the solution improve as more training is completed via the Document Intelligence dashboard.
As of the Tokyo release only JPEG, PNG, or PDF formats are supported.
Document Intelligence can be requested via the ServiceNow Store.
3. Multi-lingual Notification Support
As of Tokyo, ServiceNow finally has a native way of sending notifications in multiple languages. To enable this feature you will need to install the 'Glide Notification Translation' plugin. Once installed set the property glide.email.outbound.static_translation.enabled to true and you will see a new related list appear directly on the Notification records that allow you to provide translations of this notification to other languages.
This feature is incredibly useful for companies that support users across the globe or operate in other countries. No more code-based solutions for this one, finally.
4. Custom URL IdPs
Many customers now opt to use custom URLs for their ServiceNow instance. Often these URLs require different methods of authenticating with an instance (especially in an MSP space).
With the Tokyo release, each custom URL can be configured to support a specific IdP (Identity Provider) as its method of authentication. This means that you could assign Okta, Facebook, or Azure AD (for example) as your method of authentication for your organization's custom URL(s).
The custom URL plugin must be activated before you can use this feature, it can be installed by an admin.
NOTE: No screenshots here, I did not have the time to set this up on my PDI.
5. ECMAScript 2021
A long-awaited update for many developers to the JavaScript engine in ServiceNow. Previously, ServiceNow only supported ECMA5 (on the server side, new JS is supported on the client), but with this latest release, the platform architecture has been altered to allow ECMA6 and beyond. ECMAScript 2021 (as denoted by ServiceNow) allows developers to utilize some of the latest JavaScript features to write more efficient and effective code. This is a big change for ServiceNow as it allows the platform to be far more agile in adopting future JavaScript features. ECMAScript 2021 is enabled on a per-application basis, using the JavaScript Mode on your application record.
ECMAScript 2021 is only available in scoped applications for the Tokyo launch, there are plans to make this available for the Global scope in the future.
Here are some examples of how simple code can be re-written in ECMAScript 2021. If you're like me and ServiceNow was your proper exposure to JavaScript we have a lot to learn!
// Example of variable injection
let jedi = 'Obi-wan';
let emote = 'Hello there.';
gs.addInfoMessage(`The catchphrase for ${jedi} is: ${emote}`);
// Example of new ways of working with multi-line text
let multilineText = `hello
this is
some text`
gs.addInfoMessage(`${multilineText}`);
// Example of arrow functions using our jedi example
let jediEmote = (x,y) => `The catchphrase for ${x} is: ${y}`;
gs.addInfoMessage(jediEmote(jedi,emote));
// Example of using the arrow functions with a default parameter
let jediEmote2 = (x,y = 'So uncivilized.') => `The catchphrase for ${x} is: ${y}`;
// We dont pass a secend argument here to the function, so the default parameter is used.
gs.addInfoMessage(jediEmote2(jedi));
// Example of using Sets to store store unique values
const jediKnights = new Set();
let yoda = {jedi: 'Yoda', lightsaber: 'Green'};
let anakin = {jedi: 'Anakin', lightsaber: 'Blue...for now'};
jediKnights.add(yoda);
jediKnights.add(anakin);
//This one is the same as our other Yoda entry, so it won't be added to our Set. No error is thrown, it is just skipped.
jediKnights.add(yoda);
gs.addInfoMessage(`The Jedi order has ${jediKnights.size} jedi.`);
// Example of using Symbol to enforce uniqueness.
let vader = Symbol('Darth Vader');
let maul = ('Darth Maul');
// Our Symbol means that the value of our 'vader' variable is unquie, like a sys_id;
// When we compare them, they are not equal.
gs.addInfoMessage('Darth Vader' === vader);
// No Symbol here, so they are equal
gs.addInfoMessage('Darth Maul' === maul);
There is a great developer article here for getting you up to speed with ECMAScript 2021.
Finally, thanks for taking the time to read this article. For more information on the Tokyo Release you can check out the Tokyo Release Notes here and the TechNow Tokyo Features webinar here.
- 839 Views