What is the use of addEncodedQuery?

yashkamde
Tera Expert

Not getting results as expected using applyEncodedQuery(),

var gr = new GlideRecord('incident');
gr.addQuery('category=Hardware');
gr.query();

gr.applyEncodedQuery('category=Software');

while (gr.next()) {
    var c = gr.getDisplayValue('category');
    gs.info("Incident: " + gr.number + " | Category: " + c);
}
1 ACCEPTED SOLUTION

@yashkamde ,

Please update the question above, not everyone will see this reply as it is hide between so many replies.

 

Okay, so you wanted to know about applyEncodedQuery:

 

  • applyEncodedQuery() is not for filtering results like addEncodedQuery().

  • Instead, it sets field values on the current record based on an encoded query string.

  • This is usually useful when you want to clone field conditions into a new record before insert/update.

Tried this on PDI -

// Step 1: Build an encoded query from an existing GlideRecord
// Here, we search for all Incidents where the description = "test"
var gr1 = new GlideRecord('incident');
gr1.addEncodedQuery('description=test');  
gr1.query();

// Save the encoded query string so it can be reused later
// Example of encoded query generated → "description=test"
var encQuery = gr1.getEncodedQuery();   


// Step 2: Create a NEW Incident record
var gr2 = new GlideRecord('incident');
gr2.initialize();                        // Prepares a blank new record

// Apply the encoded query values we built earlier (in this case: description=test)
// Note: applyEncodedQuery() sets field values based on the query string
gr2.applyEncodedQuery(encQuery);         

// Step 3: Insert the new record into the Incident table
var newSysId = gr2.insert();
gs.info("✅ New Incident created with Sys ID: " + newSysId);


// Step 4: Double-check what got created
if (newSysId) {
    var check = new GlideRecord('incident');
    if (check.get(newSysId)) {
        gs.info("ℹ️ New Incident Details → Number: " + check.number +
                " | Description: " + check.description );
    }
}

 

What we did in the code

  1. Created a query first

    • We searched the Incident table for all records where the description = "test".

    • This gave us an encoded query string (basically, a compact way of saying "description equals test").

  2. Saved that query for reuse

    • Instead of hard-coding the condition again, we stored the encoded query in a variable.

    • Example: encQuery = "description=test". (var encQuery = gr1.getEncodedQuery();)

  3. Created a new Incident record

    • We initialized a blank Incident record.

    • Added some custom values like short_description and caller_id.

  4. Applied the saved query values to the new record

    • Using applyEncodedQuery(encQuery), we told ServiceNow:
       "Apply all field values from that query (description = test) onto this new record".

  5. Inserted the new record

    • Finally, we saved the new Incident into the database.

    • When we checked it, the new record had description = test (inherited from the query) along with our manually added fields.

 

 Note: applyEncodedQuery() is used to take an encoded query string (like "priority=1^active=true") and directly apply those field values to the current GlideRecord object.

 

Screenshot from Official Servicenow Doc -

Screenshot (19).png

 

Hope you now understand the use case of applyEncodedQuery(). If you still have any doubts, please feel free to ask!

 

CC : @Shruti D , @Bhuvan  , @RaghavSh , @Juhi Poddar , @Ankur Bawiskar ,  @Nikhil Bajaj9  ,  @Ravish  , @Jennifer Rahman 

Please verify — this is what I know to the best of my knowledge. Feel free to add any points if I may have missed something, or correct me if I’m wrong anywhere.

 

 

If this works, please mark it as helpful/accepted — it keeps me motivated and helps others find solutions.
Shashank Jain

View solution in original post

16 REPLIES 16

JenniferRah
Mega Sage

The code should look like this: 

var gr = new GlideRecord('incident');
gr.addEncodedQuery('category=Hardware');
gr.query();
while (gr.next()) {
    var c = gr.getDisplayValue('category');
    gs.info("Incident: " + gr.number + " | Category: " + c);
}

Thanks for your input! Just to clarify, in my original post I mistakenly mentioned addEncodedQuery, but I’m actually trying to work with applyEncodedQuery. I’m still figuring out why it’s not overriding the earlier addQuery filters as expected.

Nikhil Bajaj9
Tera Sage

Hi @yashkamde ,

 

addEncodedQuery() is the correct mehtod name. It is used to apply complex filters. you are using a simple filter condition which can be used with addQuery() method as well.

gr.addEncodedQuery('category=Software');

 

OR

gr.addQuery('category=Software');

 

 

if my answer helped you, please mark it- solution accepted. 

 

Regards,

Nikhil Bajaj

 

Please appreciate my efforts, help and support extended to you by clicking on – “Accept as Solution”; button under my answer. It will motivate me to help others as well.
Regards,
Nikhil Bajaj

ServiceNow Rising Star-2025

Little clarification — in my post I mistakenly wrote addEncodedQuery, but I actually meant applyEncodedQuery.

Theoretically, it should override the filters applied by addQuery, but in practice it doesn’t seem to be working as expected.