The Zurich release has arrived! Interested in new features and functionalities? Click here for more

What is the use of addEncodedQuery?

yashkamde
Tera Contributor

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

Ankur Bawiskar
Tera Patron
Tera Patron

@yashkamde 

you used it at wrong place.

addEncodedQuery() is used when you want to combine multiple addQuery statement

try this

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

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

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.

ravishm
Tera Contributor

Are you expecting the output with filters category as Hardware AND Software. I believe a category can be only on the the two?

Shruti D
Kilo Sage

Hello @yashkamde

addEncodedQuery() is used to apply multiple query conditions at once using a single encoded query string Instead of writing multiple addQuery().

Please try with the corrected code below 

var gr = new GlideRecord('incident');
gr.addEncodedQuery('category=Software');  
gr.query();                              

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

 

Please Mark Correct ✔️if this solves your query and also mark Helpful 👍 if you find my response worthy based on the impact.

 

Regards,

Shruti


 

RaghavSh
Kilo Patron

You are combining 2 codes, see the example below for 2 different types of codes.

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

OR

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

 


Raghav
MVP 2023
LinkedIn