We are experimenting with new training content delivery methods. This tutorial blog post is one of those experiments. We are very interested in your feedback. Please let us know what you think about this format and the content in the comments below. Newer developers in the Developer Program have requested additional hands-on work with GlideRecord.
The topics in this post build on concepts in the Server-side Scripting module. Replace the contents of the script field with this script. NOTE : this script contains some text you will update in the next step.
If you are not sure, scroll to the Answers section at the bottom of this page.
NOTE : If you need help with any of these, see the Create an Incident Business Rule section in the answers at the bottom of this post for the complete script. Did you do the hands-on exercise in this blog?
Click here to let us know! Display the list in an information message. If you need help, see the Create a NeedIt Business Rule section in the answers at the bottom of this post for a sample script. Create a Business Rule for Changes that find and lists other changes opened for the same Configuration Item. Dsiplay the list in an information message. If you need help, see the Create a Change Business Rule section in the answers at the bottom of this post for a sample script.
Create an Incident Business Rule : Replace the placeholders in the script with the correct object and methods. Answer : Pass the table on which to perform the query to the GlideRecord class. Pass the field name, operator, and value to the addQuery method. Create a NeedIt Business Rule : Here is an example script for a Business Rule to get the list of other NeedIt requests for a user and write them to an information message. Create a Change Business Rule : Here is an example script for a Business Rule to get the list of other Changes for a Configuration Item and write them to an information message.
Create a CI Business Rule : Replace the placeholders in the script with the correct table and query parameters. Powered by Hugo. Introduction Newer developers in the Developer Program have requested additional hands-on work with GlideRecord. In this exercise, you create three Business Rules. NOTE : This exercise uses demo data that may vary from your instance. View Incidents where Rick Berzle is the Caller. Make note of how many records have Rick Berzle as the Caller. Create a Business Rule.
Click the New button. Configure the Business Rule.Using methods in the GlideRecord API, you can return all the records in a table, return records based on specific conditions or keywords, or return records from multiple tables with a single query.
Creating a GlideRecord creates a target variable which is a GlideRecord object for the incident table. This script issues the query to the database. Each call to next would load the next record for processing. For example, this script returns records from the Incident table that include the 'email' keyword. For example, instead of addQueryyou can also use gr.
A text index group is a group of tables that the system indexes together and searches across. For more information about text index groups, see Configure multiple tables for indexing and searching. For example, this script returns records that include the keyword 'email' in the 'portal' index group. For example, instead of addQueryyou can use gr. Describes the operators that can be used within an addQuery request. For additional information on the operators that are available for filters and queries, see Operators available for filters and queries.
These examples demonstrate how to perform various GlideRecord queries. For additional information see GlideRecord. Note: Before querying a table or an index group, you must configure text indexing and search attributes for one or more tables you want to search. For more information, see Configure a single table for indexing and searching or Configure multiple tables for indexing and searching.
To query a table, first create a GlideRecord object. To process all records from the incident table, add the following script: target. Most of the time, you want to retrieve a specific record or a specific set of records, and you have some criteria query conditions that define the records you want to obtain. For example, say that you want to obtain all the incident records that have a priority value of 1. Here is the code that would accomplish that.
Notice that the example script includes target. This line indicates that you only want the records where the priority field is equal to 1. In general, most queries that you want to perform are equality queries; queries where you want to find records with a field equal to a value.
For this reason, you do not need to provide an equality operator. However, lets say you wanted to find all incidents where the priority field is greater than 1.
In this case, you would provide the operator that you want to apply to the query. Note: To search across multiple tables, they must all use the V4 indexing format. Table 1. This operator does not retrieve empty fields. For empty values, use the operators "is empty" or "is not empty.
The code example on the right, shows how to retrieve all configuration items that are classified as computers.
The query returns the many-to-many relationship, which you can dot-walk to the requested item. Field must be equal to value supplied. Field must be greater than value supplied.
Field must be less than value supplied. Field must be equal or greater than value supplied. Field must be equal or less than value supplied.This is an excellent page to keep bookmarked!
An easy way to identify the encoded query string to use is to create a filter or a module with the query parameters you want to use, and then hover over the link or breadcrumb and look at the URL. Is there a way to query for a date? Such as current. You can build the query you want in a module or filter definition to see what the encoded query should look like.
SN seems to be all scripting from the get go with limited use of GUIs for configuration. Thanks for the comment. Hopefully some of the content here helps you to get going a little bit faster. I know that the SNC documentation team is really focusing right now on scripting documentation so what you see on the wiki should be getting better by the day. You might check out these forum links for some more information about SNC scripting basics.
In reference to the Or query — is there any documentation about what a QueryCondition object is, and what its other functions are? There are a couple more examples that I could probably share though. I find the encodedquery to be extremely helpful especially when my query includes things like created this week or created before a specific date.
Then I know for sure I have the right query string. Question: If I run a GlideRecord query and then want to add another condition to the query and rerun it, is that possible?
Not that I would do the following but just as an example. One thing to note about updating a reference field to null is that it has to be done as described here:.
Thanks so much for posting this info -it is really helpful!. Here is an example of what we wre trying to accomplish. Did you ever determine a way to do it.
The only other way I can think of doing it is to create two separate queries and then combine the results not very pretty but easy enough I suppose.
However, if i leave the line as is, i wont see the update. Anyone have any thoughts? This cheat sheet covers the most frequently used GlideRecord operations. All explanations and examples are easy to follow.We are experimenting with new training content delivery methods.
Configure SQL Server
This tutorial blog post is one of those experiments. We are very interested in your feedback. Please let us know what you think about this format and the content in the comments below. With GlideRecord queries, you can find any set of records you need in ServiceNow.
Not all queries are easy to write, though, especially if you need to work with date fields or OR operators. Lists have a condition builder to create more complex query logic. Developers can use the addEncodedQuery method to take the encoded query from a filter and apply it in a script.
The topics in this post build on concepts in the GlideRecord concepts in the Server-side Scripting module.
In this post, you create a Business Rules that uses an encoded query for a date search. You then update the Business Rule with a complex query. When a Hardware Asset is changed to a State of In stock and a Substate of Available, you want to get a list of computers that could potentially be replaced by this newly available hardware. Replaceable hardware for this scenario is hardware purchased more than six years ago. While you could build this query with knowledge of the correct methods to work with dates, you use an encoded query to get the results.
Replace the contents of the script field with this script. You add the encoded query to this script later. NOTE : A list of replaceable hardware could be added to a task to make it more useful.
You add the list to the Comments field here for simplicity. Add a comment describing the filter you applied as a translation for your encoded query.
Your colleagues and your future self will thank you. Make note of how many records are in the list and the asset tags for a couple of the old hardware assets. Right-click the end of the filter breadcrumb and select the Copy query menu item. Did you do the hands-on exercise in this blog? Click here to let us know! Update the query to also list hardware assets that are in maintenace and have a past due warranty expiration. Use this screenshot to build the filter to create the encoded query.
The dark mode beta is finally here. Change your preferences any time. Stack Overflow for Teams is a private, secure spot for you and your coworkers to find and share information. I'm new to ServiceNow but I know SQL and it just doesn't make sense that I was unable top find such a simple query example for ServiceNow on their official site and google.
With reference fields essentially foreign keysyou can use dot-walking to query through a reference field to query against fields on the referenced record. The GlideRecord query to retrieve all users in a company located in London would look like:. Now, you may not actually be using these OOB tables, but the relationships you're trying to query against using joins would be solved with similarly configured reference fields. I just want to add something to above answer I will give example.
I will be using encodedQuery, it is safer than addQuery. Learn more. ServiceNow - how to write a select query retrieving values from 2 tables Ask Question. Asked 3 years, 1 month ago.
Active 6 months ago. Viewed 7k times. Souad 3, 6 6 gold badges 47 47 silver badges 96 96 bronze badges. Natalie Natalie 1 1 silver badge 13 13 bronze badges. Active Oldest Votes. Reference fields would handle this for you. Joey Joey 2, 18 18 silver badges 21 21 bronze badges. Thane Plummer 3, 20 20 silver badges 26 26 bronze badges. Sign up or log in Sign up using Google. Sign up using Facebook.A starving writer stands in front of a mailbox, clutching a hefty brown envelope addressed to a publishing company.
They say a prayer, push their manuscript in, and begin the long wait for a reply that could make or break their career. It's a romantic image, but most major publishers don't actually accept "unsolicited manuscripts" these days.
And for that, they'd need a query letter. Ready to get an agent? Here's how to write a query letter in 7 steps Click To Tweet. With the help of our brand-new infographic, this post will show you how to write a query letter that gets results. Note: a lot of research needs to happen before you start querying agents. This article will focus on the query letter itself, and specifically, queries for fiction. Agents may receive a dozen or more queries a day — and might only sign four or five authors per year.
So you can see how making a good first impression in your query is crucial! Now, there's no "standard" format that all authors use for their letters. However, a query is a business document and as such should look like a formal one-page business letter. Our universal piece of advice is to keep the letter short.
Think to words at the very most. Many agents field queries using their phones, so think about how your will letter look on a small screen. Does it give the impression of being a huge wall of text, or a disjointed series of singles sentences? If so, revise to make it more concise, orderly, and organized. Land yourself a literary agent with the help of this practical online course. Give your query letter the edge it needs.
Get started now. Keep it simple. The following line should then make the agent prick up their ears. Also make sure to mention any critical recognition or awards you've received for your previous work. Jane Doe at Del Rey Books suggested that I contact you regarding representation for my debut science fiction novel, Arbormancer. Networking is crucial in publishing. The title, genre, and word count: three key pieces of information are right there in your first sentence.
Tip: Always mention your genre, word count and target audience in your query. Within the first few pages of a novelyou need to make it impossible for readers to put your book down. In a query letter, you have to make do with just a few lines. This part of the letter is known as the hook. Your hook should show agents how your book is different from the thousands of others in your genre.
About three things I was absolutely positive.There are two query types: CMDB Query and a Service Mapping query, which you can use separately or in combination to create queries such as:.
A start node in the Query Builder is the starting point of the query and is noted by gray background in its query node.
The first class that you drag to the canvas becomes automatically the start node of the query and you cannot select a different start node. If you try to connect a second node to an operator that the start node is connected to, the query fails to run and a prompt to select a different start node appears.
A query type that queries the infrastructure for CI classes and optionally a non-CMDB table, and the relationships and references that connect them. You can use the system property glide. A query type that queries business services and technical services, and thus requires that Service Mapping is activated. The query is framed within a business service map. You define a pattern, and query for business service maps that have that pattern in their definition.
The relationships in Service Mapping queries are matched by single-level direct relationships which is similar to the CMDB queries, and in addition, they are also matched by multi-level indirect relationships if they exist. A query for a relationship between two CI classes is satisfied even if the two CI classes are connected by intermediate CI classes that are not specified in the query.
Subscribe to RSS
The query changes to find Windows Servers that are connected to Tomcat WAR which is included in the services that returned by the Service Mapping query. This changes the query to find Windows Servers that are connected to Tomcat WAR that is not included in services returned by the Service Mapping query.
When you connect CI classes on the canvas, the CMDB Query Builder displays the Connection Properties in the right-side bar, where you can configure the properties of the relationship, such as the relationship direction. For Service Mapping queries, you can configure whether to query for related or unrelated CIs. Newly added relationships between CI classes may take up to 30 minutes to appear in the relationship list. Domain separation enables you to separate data, processes, and administrative tasks into logical groupings called domains.
You can then control several aspects of this separation, including which users can see and access data. The Service Mapping query type is a pattern consisting of classes and relationships between those classes. After you build the pattern and run the query, the query returns all the Service Mapping services that contain that pattern.