Marcel Clemens
ServiceNow Employee
ServiceNow Employee

Welcome to ServiceNow Administration Advanced at Knowledge24 Now Learning Pre-Conference Training!

We will be using this forum to:

  • Connect – You are welcome to introduce yourself using the COMMENT button and share your role within your organization and what you hope to get from this learning experience.
  • Ask and answer questions - Please post comments or questions here using the COMMENT button. Classroom staff will respond to the best of their ability.
  • Share resources – Let us share resources and links that will be valuable for future reference.
  •  

NOTE: Now Learning staff will stop monitoring this article on May 24.

Comments
That Phil Guy
ServiceNow Employee
ServiceNow Employee

Good mornin', y'all! I guess I'll get this party started.

 

I'm Phil. I'm a technical trainer with ServiceNow and have served this capacity for just about nine years on the dot. Currently, I'm based in Tulsa, Oklahoma, USA. You may often see me facilitating this class, as well as our application development courses.

 

In what feels like a past life, I earned degrees in Interdisciplinary Computing and the Arts and in Japan Studies from the University of California, San Diego. My Japanese ability is passable.

 

I can otherwise be found in hotels, cocktail bars, and museums. In fact, I'm a docent-in-training with Tulsa's gorgeous Philbrook Museum of Art. I've also accepted a volunteer gig as the sister-city chair with Tulsa's sister city in Japan: Utsunomiya, in Tochigi prefecture. 

 

Truthfully, though, napping with my cat, Pixel, is probably my most cherished pastime. 

 

Let's do this, folks! Keep up the good work! 

That Phil Guy
ServiceNow Employee
ServiceNow Employee

Just curious: did anyone come here from a link-laden email I blasted out around 8:15am? 🙂 

That Phil Guy
ServiceNow Employee
ServiceNow Employee

This COMPONENTS OF AN APPLICATION SLIDE is gold. (If you're logged into Inkling, this link should take you to the correct content.)

 

I once heard that if you wanted a complete liberal arts education, you just need to fully understand all the allusions and themes in T.S. Eliot's The Wasteland.

 

Well, I feel that way about this slide and ServiceNow. If you can talk through all the jargon and relationships while looking at this slide, you've got a heckuva ServiceNow foundation.

 

 

That Phil Guy
ServiceNow Employee
ServiceNow Employee

For me, application scope is like a bento box

 

See, in the old days, all your applications' components were piled on the same plate, just like you were PILING ON the goodies at a Las Vegas buffet. But, when you do that, your food starts to touch and even mix together. Don't you hate that? I mean, I don't care if my mashed potatoes get on my cheesecake--but you might. In ServiceNow terms, app components would interact basically whether we wanted them to or not.

 

With the advent of application scope, it's like putting our food in a nice little bento box. Everything's segmented and isolated. It doesn't mean the different dishes cannot interact--sure, they can. Rather, it means we get to choose if, when, and how they interact.

 

 

 

 

That Phil Guy
ServiceNow Employee
ServiceNow Employee

Configuration vs customization:

 

Maybe think about it like a car? What's likely to void your car's warranty?

 

Configuration might be... what, adjusting your seat position? Setting the stereo EQ?

 

A lightweight customization might be, I dunno, bumper stickers? A new air filter? 

 

But getting into your engine and messing with the pistons or something wacky like that... whew, boy, that's risky business!

That Phil Guy
ServiceNow Employee
ServiceNow Employee

In Lab 1.1, y'all're gonna make a Business Rule (BR) with a message. 

Here's a neat trick: in the Message field, put the system name of a table column into this format: ${system_name}

(Example: ${sys_created_by})

 

If my message field in a simple BR reads:

"Oh snap, ${sys_created_by}, you just created an Incident!"

... then the actual output will be:

"Oh snap, phil.sharp, you just created an Incident!"

JSchmauch
Tera Expert

What kinds of data is not captured within Update Sets - user, user_group records, etc.?

 

HutcH
Tera Explorer

For lab 1.2, step D - where is a place we can copy/paste the script lines?

 

That Phil Guy
ServiceNow Employee
ServiceNow Employee

@JSchmauch , only items that ServiceNow considers a configuration change. There isn't a super-easy way to tell what ServiceNow considers what, though. (There IS a way, though, by looking at the data dictionary.)

 

Basically: process data, like Incidents, Requests, and even Users and Groups, do not get captured, as they aren't considered config changes. They're just considered plain ol' table records.

 

Things like tables, columns, forms, Business Rules.... anything that changes behavior (i.e., tables that have the "update_synch" attribute set to true) will be captured.

 

Notably, dashboards are weird. You have to unload them by selecting the" Unload Dashboard" link in the context menu of the dashboard records itself. 

That Phil Guy
ServiceNow Employee
ServiceNow Employee

@HutcH , if you go to the class Knowledge Base, there's a file in there.

 

For a shortcut, try adding this to the end of your core instance URL, after the .com:

/now/nav/ui/classic/params/target/kb_view.do%3Fsysparm_article%3DKB0010001

Mason Adams
Tera Contributor

For those interested in having the Instance Tools bar instead of the app/update set picker you will need to create the system property in sys_properties. The property should be called glide.ui.next_experience.instance_tools_disabled it should have a type of true/false and be set to false.

Mason Adams
Tera Contributor

For those interested in having the Instance Tools bar instead of the app/update set picker you will need to create the system property in sys_properties. The property should be called glide.ui.next_experience.instance_tools_disabled it should have a type of true/false and be set to false.

That Phil Guy
ServiceNow Employee
ServiceNow Employee

For Transform Maps, dig this page in the docs. I highly recommend you understands the Choice Action field!

That Phil Guy
ServiceNow Employee
ServiceNow Employee

We've got a student who forget a mouse for their laptop. Anyone got a spare?

That Phil Guy
ServiceNow Employee
ServiceNow Employee

Behold, my attempt to make sense of Data Preservers and Table Exclusions during the cloning process.

Clone Preservers & Exclusions.png

That Phil Guy
ServiceNow Employee
ServiceNow Employee

(Instance details hidden for privacy.)

That Phil Guy
ServiceNow Employee
ServiceNow Employee

Some thoughts about automating clones:

 

I was dead wrong about there being a baseline Event that fires when a clone is completed. My apologies!

 

However, I wonder if you could use the CloneAPI Script Include to schedule a clone once you know that the prior clone is complete? There is a clone_log table where presumably that sort of stuff is written (and a clone history, too). 

 

If these premises are accurate, then you could create a custom Event to fire when clones show complete, and the Script Action that responds to said event could use the CloneAPI Script include. 

 

Orrrr, maybe just kick off the next one inside of a Clone Cleanup Script?

 

Finally, check this out: a plugin you can activate called Clone Admin Console.

That Phil Guy
ServiceNow Employee
ServiceNow Employee

Lab 1.3:

 

We'll technically be making a "composite index" of those three fields. That's different than making three separate indexes (indices?). How? I've no idea. Indexing is a specialized topic. Ask your local dyed-in-the-wool DBA. 😶

 

Also, you'll test the indexes by re-running the filtered search that you set up at the beginning of the lab. It's not shuffling through a great amount of data, so don't be put off if the change in response time appears to be statistically insignificant. 😅

 

 

That Phil Guy
ServiceNow Employee
ServiceNow Employee

Yo! The [Shift + Ctrl + J] JavaScript Editor I think uses the same keyboard shortcuts on Mac and PC (yep, you use the Ctrl key even on your Mac).

 

It's a great way to see what's really stored in a field using the method g_form.getValue(''). For example, try seeing what's really stored in the Caller field on an Incident form (that has a Caller value!) by popping the following code into the JavaScript Editor:

alert(g_form.getValue('caller_id'));

That Phil Guy
ServiceNow Employee
ServiceNow Employee

My favorite Application Navigator "shortcut":

"ny a" will take you to "My Company Applications."

 

Why do I like this so much? "Nya!" (more properly, "nyaa!") is the Japanese word for "meow!" 

That Phil Guy
ServiceNow Employee
ServiceNow Employee

Try incident.list in the filter navigator. 

Then, try incident.LIST in the filter navigator.

What happens?

That Phil Guy
ServiceNow Employee
ServiceNow Employee

The ability to read a ServiceNow URI is, IMHO, a really good skill to have. And, if you want to really show off, you should be able to write a URI with query parameters and their arguments and get stuff to actually happen. 

 

Also: not only can you read things as XML... but say this with me: 

"(Almost) everything in ServiceNow is a record in a table--and every record is a JavaScript Object." 

That Phil Guy
ServiceNow Employee
ServiceNow Employee

Wanna see logins and stuff? Here's a good thing to zip to in the Application Navigator:

v_user_session.list

vmozuna
Tera Contributor

Testing - will anyone approve this post? 

That Phil Guy
ServiceNow Employee
ServiceNow Employee

Plugging this course on NowLearning: 

Troubleshoot the Now Platform - Now Learning (servicenow.com)

vmozuna
Tera Contributor

Testing

MBeaulne
Tera Contributor

I am just testing!

vmozuna
Tera Contributor

testing 3rd test

Jeff Foltz
ServiceNow Employee
ServiceNow Employee

Test test test. Is this thing on?

That Phil Guy
ServiceNow Employee
ServiceNow Employee

@lisa slavin Reporting inappropriate comment! 😈

(I kid, I kid!)

JSchmauch
Tera Expert

The racing ducks have no pants, and I think THAT is inappropriate! LOL

😄 

BorisR112699856
Tera Contributor

Question to the cloning activity.

Is there any ability to do a full rollback or would i need to apply a backup for this?

 

Also, we recently cloned an instance (i was not really involved) but after the cloning, it was determined that a LOT of tables were missed to get excluded. I know there are defaults but is there a list of the "most common" items to exclude when doing a cloning downwards? Some sort of a checklist based on users experience?

That Phil Guy
ServiceNow Employee
ServiceNow Employee

If you wanna see me misuse Database Views to hasten GlideRecord queries (in UI16, natch), take a look at this: 
https://youtu.be/ZRtedPYmfcI

I think nowadays with the new GlideQuery() class, this kinda becomes unnecessary, but hey...

That Phil Guy
ServiceNow Employee
ServiceNow Employee

🚨 NERD ALERT 🚨

 

The cool diamondlike shape that's in the middle of two overlapping circles (like we see in the database view portion of the materials) is called:

 

vesica piscis 

 

🤓

That Phil Guy
ServiceNow Employee
ServiceNow Employee

Hey, so you know how you're selecting "is (dynamic) | Me" in the report in Lab 3.2? 

Did you know that before you could choose "is (dynamic)" you had to set it up as "is | javascript: gs.getUserID()" instead?

Well, the only difference nowadays is that "Me" is stored as a record on the Dynamic Filter Options table. And if you go find that record, guess what the script is?

And yes--this means that you can create new, custom values for "is (dynamic)" if you can script a little bit. I once made a "People in the Same Groups as Me." 


MBeaulne
Tera Contributor

The slides show only itil users can use report sources, does these mean our other App Engine Enterprise fulfiller group would be unable to use this feature?

 

 

Update: I went back and checked our contract and it said all fullfiller users can create and modify reports, so i suspect it is available for fullfiller users and not only itil users.

vmozuna
Tera Contributor

Is there a way to share a dashboard with ITIL data on the reports with everyone (folks with no roles)? Without having to give everyone ITIL? 

HanaStep
Tera Explorer

Hey Phil, two ques's.

 

How would you define widgets?  We're trying to refine our user stories to describe how we want our data visualized on dashboards.  Maybe you can provide the technical answer, and the less technical answer for some of our new starters?  

 

Q2 - We are having some issues with Is (dynamic) and it's become unreliable as it omits cases & tasks they need to manage.  My team's taken to Contains or Is (types their name).  Thinking this is an issue related to user table.  Thoughts?

HanaStep
Tera Explorer

Will searching in the View/Run listing be covered in today's session?  Without the filter funnel, I find it difficult to search through our Group & Global report folders.  Besides using column sorter, any other tips to make this easier?

That Phil Guy
ServiceNow Employee
ServiceNow Employee

Regarding my above "People in my Groups" comment:
Your Dynamic Filter Option record would need call a script include from its script field.

 

Here's the script from my script include:

 

function peopleInMyGroups(){
	
	// Stringify a built-in method of fetching array of my groups
		var myGroups = gs.getUser().getMyGroups() +'';	
	
	// Get rid of brackets and whitespace
		var myGStr = myGroups.substring(1,myGroups.length-1);
	
	// Pop it back into a cleaned-up array
		var gArray = myGStr.split(',');
	
	// Start building encodeded query string of format: 'group=group_sys_id^ORgroup_sys_id, ...'
		var query = 'group=' + gArray[0];
	
	// Return this array later
		var answer = [];

	// Iterate through gArray to concatenate full encoded query string started line 13
		for (var i=1; i<gArray.length; i++) {
			query+='^ORgroup=' + gArray[i].trim(); // it was adding space characaters?
		}

	// Create GlideRecord object on m2m table which maps users to groups
		var gr = new GlideRecord('sys_user_grmember');
		gr.addEncodedQuery(query.trim()); 
		gr.query(); // go fetch the users of all the groups in query string (line 20) 
		
		while(gr.next()){
			answer.push(gr.user.sys_id); //pop said users into the final array by sys_id
		}
		
	// Give this to the dynamic filter!
		return answer;
}
Trabuzaid
Tera Contributor

Hey guys,

 

We are in the process of a possible reset and I want to import my data, what is your suggestions on the easiest, fastest way to do this?

That Phil Guy
ServiceNow Employee
ServiceNow Employee

Whoa. Check out the [sys_report_users_groups] table. It's a many-to-many table that creates a record for every combination of report-plus-user and report-plus-group. In other words, every time you Share a report, a record gets created on that table. Nine years of doing this and I didn't know that's what happened when you shared a report. 😅

 

I also noticed there's a very interesting undocumented server-side class called GlideReportChoiceList(). If you know how to do a code search from within Studio (and can read a little JavaScript), searching for it yields some interesting results.

ardymary
Tera Explorer

What`s the best practice/user friendly option for a big department to have as default homepage? dynamic dashboard vs landing page?

That Phil Guy
ServiceNow Employee
ServiceNow Employee

I deleted some old incidents and then un-deleted them. All the time-stamped fields remained as they were prior to deletion, so it shouldn't affect reports or PA. Things may be different after a catastrophic database backup.

 

Also, I mentioned some things called "metrics" and "metric definitions." These can be very useful, especially in conjunction with Performance Analytics. For more info on them:

  1. Read this
  2. Go read the records on the [metric_definition] table, and
  3. Take the Performance Analytics Advanced class (and PA Fundamentals first, if you haven't already!) 😅
scornell
Tera Contributor

I'm curious about how ServiceNow handles cross-scope calls between a Global scope running ES5 and a custom Scope App running ES12. Could you shed some light on this?

 

This comes from a question I posted in the developer forum yesterday, including now-sdk questions.

 

https://www.servicenow.com/community/developer-forum/js-calls-from-global-scope-running-es5-and-a-cu...

 

With Custom Scope Apps, we can specify the ES version to use.  Since Global uses ES5 and Custom Scopes can use ES12 you can create a Script Include in an ES12 Scope App but still call it from Global.

 

what is the mechanism that SN uses to handles the boundary call between ES versions?

thanks

That Phil Guy
ServiceNow Employee
ServiceNow Employee

@scornell Oh man, we started talking about this yesterday. I'll see what I can sort out. Hopefully some others can chime in!

That Phil Guy
ServiceNow Employee
ServiceNow Employee

@Trabuzaid 

 

What kind of data are we talking? And how much? 😮

That Phil Guy
ServiceNow Employee
ServiceNow Employee

@ardymary Nowadays people will recommend new Workspaces. I think after getting your department's requirements, look at the pros and cons of:
- A simple Service Portal page

- A newfangled Workspace

- A responsive dashboard

 

For example, if folks need to see data first and foremost, a Dashboard's the easiest solution.

If communicating information and showing some lists of records is the main need, a baseline-as-heck Service Portal page would be pretty easy. 

Newfangled Workspaces are awesome but I'm not well-versed enough in them to make a recommendation.

Edwin Tobia
Tera Contributor

Question around update sets. 

 

I am not clear on what changes and configurations that gets captured on an update set. We always run into an issue where some changes do not get transferred when update sets are imported into an instance. Are there some configs that don't get captured? I'd like to understand what those are.

 

Thanks in advance.

 

Edwin

Lena_Latham
ServiceNow Employee
ServiceNow Employee

I know @That Phil Guy plugged this course already, but I was talking to someone this morning who hadn't heard about it yet. 😯

 

Glenn Pinto and I worked with ServiceNow Support to create a course about some of the things they do every day to support ServiceNow customers. It details many of the methodologies and techniques used to identify and resolve technical issues with the Now Platform.

 

Here's the link to Troubleshoot the Now Platform: https://nowlearning.servicenow.com/lxp/en/now-platform/troubleshoot-the-now-platform?id=learning_cou...

 

Version history
Last update:
‎04-16-2024 06:56 AM
Updated by: