ServiceNow: Geneva & UI16 - What's new

Brace yourself. Geneva is coming. 

Personally, I'm excited - I like new things. I've always been the early adopter. But I know that not everyone is as gung-ho for the future as I am, so I thought I'd share some tips and tricks on ServiceNow's "Geneva", and the new, drastically overhauled "UI 16" that will be the new place where most of us ServiceNow developers spend our daily 8-12 hours. 

Note: This is part 1 of a 2-part series on ServiceNow's Geneva update. This part will focus on the interface, and stuff you're likely to run into on day 1, as well as basic stuff you'll need to know so you don't shoot yourself in the foot. A more in-depth exploration of the different process areas such as changes to Knowledge Management, Change Management, performance, security, and so on - is forthcoming. So subscribe, and stay tuned! 

Join me after the jump, and learn what's new in Geneva from the perspective of an admin, a developer, and a user - from the browser-based IDE and the new way to elevate permissions in high security mode, to the basics of navigation in the new world... of Geneva. 

Read More

Detect/Prevent Update Set Conflicts Before They Happen

Do you have multiple developers working in the same instance? If so, there's a good chance that on at least several occasions, one of them has "stolen" an update/record from another. I'll explain what I mean by way of an example:

  • Developer A is working on a project that involves changing a script include. 
  • Developer B, working in parallel on a separate task, also changes the script include.
  • The update sets are pushed. Depending on the order, at least one developer is likely to see results in production that they do not expect based on their development. 

So, how can we prevent these kinds of conflicts/confusion? 

What if we could alert a developer whenever they're viewing a record that is captured in another active update set, that does not belong to them--

Read More

Understanding Dynamic Filters & Checking a Record Against a Filter Using GlideFilter

I recently found myself in a situation where I had to check if a given record (the 'current' object in my case) matched a filter associated with another record (a client script, in my case). If you find yourself needing to do something similar, it might help you to know about an undocumented Glide API called "GlideFilter".

GlideFilter takes two arguments: 

  1. A glide record containing the record you'd like to check
  2. The query string (aka "encoded query") you'd like to check it against. 

The first argument may be self-explanatory - it's a GlideRecord object containing a single record.
The second argument, if you're not familiar with encoded queries, is a string of text that represents a query. If you've ever built a query in a condition builder, you've built an encoded query.

Read More