Job Switch Kit: Everything you need to crack your next ServiceNow interview Get Job Switch Kit →
Get the complete ServiceNow interview prep system — 500+ Q&A, mock interviews & more Get Job Switch Kit →

ServiceNow Scenario Based Interview Questions 2026

Explain the behavior of the following access control scenario in ServiceNow:

1.Users with Role A, B, and C have Read access to the table with table.none ACLs.
2.Users with Role B have Read access to all fields in the table with a table.* ACL.
3.Users with Role C have Read access to the Priority field specifically.

1. Users with Role A:

Users with Role A will not be able to access any data in the table. While they have access to the table itself at the row level (via the table.none ACL), this does not grant them any access to individual fields at the column level. Since they do not have Read access to any fields (either through * or field-specific ACLs), they will be unable to view any data in the table.

2. Users with Role B:

Users with Role B will have access to all fields on the table, except for the Priority field. The table.* ACL allows them to access all fields in the table, but a specific ACL on the Priority field restricts their access to it. Therefore, they will be able to read all fields in the table, except for the Priority field, which remains restricted.

3.Users with Role C:

Users with Role C will have access only to the Priority field. They are granted read access specifically to the Priority field via a field-level ACL. However, they do not have access to the table.* ACL, which means they cannot access any other fields on the table. As a result, users with Role C can view the Priority field but will be restricted from seeing any other data in the table.

How to show inactive incidents to only ITIL admins and hide for all other users, explain different ways to achieve this?

There are two approaches to implement this scenario :

Method 1 : Using ACL

- Write Table.None ACL on incident table to allow only ITIL admin to see inactive incident as below :


Method 2 : Using Before Query BR

- Write before query BR as shown below, it checks if logged in user has ITIL admin role or not. If user has ITIL admin role then inactive incident will be shown otherwise it will be hidden.

BR Configuration :

BR Script :

Note : Here interviewer is likely assessing your understanding of Before Query Business Rules (BR) and Access Control Lists (ACLs). They may ask follow-up questions to explore the advantages and disadvantages of each method, or inquire about which method is more preferable in different scenarios and why. Be prepared to discuss these concepts in depth.

How to show incidents to users only if they are part of current assignment group?

We can implement it by using ACL as shown below:



In workflow, We have run script activity which takes around 10 minutes to execute therefore workflow throws an error as 'Transaction Cancelled : Max execution time exceeded'. Why this issue occurs and how to resolve it?

There is transaction Qouta limit set in instance. If any transaction exceeds this limit then it gets cancelled. Generally it is set between 2 to 5mins so if we want our scenario to work then we can increase this value.

However increasing this value is not best practice or may create perormance impact, so rather you can plan to run such heavy long running scripts in background. To do so, we can write such scripts in Script Actions ( Script Actions runs asynchronously in the background ) and call them via workflow run script activity. This way workflow will trigger script in background and move ahead with next activities.

Note : Here Interviewer tries to understand if you know what script action does. They might further ask to explain different scenarios when we are supposed to write script in script actions and when to write it in script includes.

When user opens any incident which has child incident then there should be message saying for assignee group members that "This incident is parent for INCXXXXXX", child incident needs to be resolved before resolving parent incident, how to implement this scenario?

Method 1 : Display BR with On Load Client Script

We can write display BR to check if current incident has any child incident. Store result in scratchpad object and access scratchpad in on load client script to show message accordingly.

Method 2 :On Load Client Script with GlideAjax

We can write onLoad Client SCript with GlideAjax and check if current incident has any child incidents in server side code.

All catalog items under order guide moves to In Progress simulteneausly and those are being worked parallely. I want those items to be worked on sequential order one after other, how to implement this?

We need to Configure a sequence in Process Automation Designer to fulfill items in order guides. To use this functionality, the Order Guide Sequential Fulfillment (com.glideapp.servicecatalog.order_guide_sequencing) plugin must be installed.

For more details, please refer Configure a sequence to fulfill items in order guides

How to show all incidents opened by the same caller as related list on incident records?

This scenario couldn't be achieved by adding related list directly. For such type of requirement we have to create relationships as shown below where custom relation between any two table can be defined.

Relationship to show all incident with same caller as that of current incident :

Once we create above relationships, it will be available in incident related lists to add on the form as shown below :

For more details about relationships click here

How to show specific view while creating new record and different view for existing record?

We can create view rules to change view based on some conditions. Below view rules can be used to show view for new records and existing records on incident table.

This is the View Rule for new records on incident table. For testing purpose 'Cxs_popup' view has been configured for new records. Since 'Created date' is empty for new records so we can use this condition to identify if opened record is new or not:

Result :

This is the View Rule for existing records on incident table. For testing purpose 'ess'(self service) view has been configured for existing records. Since 'Created date' is not empty for existing records so we can use this condition to identify if opened record is existing record: :

Result :

For more details about View Rules click here

How to create single report on multiple tables?

We have Database View functionality in ServiceNow with which we can merge multiple tables into one. So, we can create Database View to merge multiple tables and use the same DB view table to create single report which will have multiple table already.

For more details about DB View click here

How to implement functionality where we can track how much time Incident/Problem/Change was in each state?

To implement the functionality of tracking the time an Incident, Problem, or Change record spends in each state (e.g., New, In Progress, Resolved, Closed), you can use Metrics in ServiceNow. This can be done by creating metric definitions and associating them with the state field of the respective tables (Incident, Problem, and Change).

ServiceNow provides out-of-the-box (OOTB) functionality for tracking the time spent in each state for the Incident table. The system automatically records the time spent in each state using the Metric feature, so for incidents, you don't need to implement it manually unless you need to customize or extend the functionality. The process typically works as follows:

1. Metric Definitions: These define how metrics should be tracked, including the type of metric (e.g., time spent), and specify which field or table should be monitored. ServiceNow has preconfigured metric definitions for tracking time spent in various states of an Incident record.

2. Metric Instances: For each record (Incident, Problem, Change), a Metric Instance is created whenever a state change occurs. The system will log the timestamp when the state change happens, allowing you to calculate how long the record stays in a particular state.

3. Metric Types: Common metric types for tracking time are:
State Duration: Measures the duration a record spends in a specific state.
Elapsed Time: Tracks the total time from one state to another.

For more details about Metrics and Metric Definitions click here

Most candidates who fail weren't underskilled.
They were underprepared.

These free questions cover the basics. But interviews go deeper. Discovery, ITOM, SecOps, Flow Designer, Now Assist, AI Agents. The Job Switch Kit gives you the full 15-day roadmap, 500+ structured Q&A across every module, a LinkedIn profile optimisation guide so recruiters find you before you even apply, and an interview bot that practices with you until you're ready. Most candidates walk in under-prepared. Don't be one of them.

500+ Q&A — Technical & Behavioral, Every Module

Battle-tested questions with structured answers across every high-frequency topic — ITOM, SecOps Vulnerability Response, Discovery, Flow Designer, AI Agents, Generative AI, and Now Assist. Plus a dedicated Behavioral round covering HR questions, STAR method answers, salary negotiation, and career direction — because technical prep alone is not enough to get the offer

15-Day Structured Roadmap

Day-by-day curriculum in the right order — scripting fundamentals, ITSM & CMDB, integrations, AI modules, and behavioral prep — so you peak exactly on interview day

Unlimited Interview Bot

Two modes: system-guided sessions with curated ServiceNow questions, and self-practice where you bring your own questions. Every session is recorded — download your Q&A transcript, review your answers, and pinpoint exactly where you need to improve

Salary Negotiation Playbook

Proven strategies for counter-offers, CTC decoding & in-hand salary strategy

Job Switch Strategy

Notice period tactics, BGV prep, resignation playbook & offer comparison

Progress Tracker + Notes

Track completion per topic, rate your confidence per question, add private notes at question level and page level. Only you see them. Always know exactly what to tackle next

LinkedIn Profile Optimisation

Step-by-step guide to rank in recruiter searches before you apply. Module-specific keyword lists, role-based headline and About section templates, experience bullet formulas, and certification display guidance built specifically for ServiceNow professionals

Get Job Switch Kit →

🔒 Secure payment via Razorpay · Instant access after payment

10 days free — for your honest review

Your story could be the reason someone else lands their next ServiceNow role

If this content made a real difference in your prep, sharing that experience with your network helps other professionals discover it — and we'd love to say thank you with 10 days of premium access, completely on us.

Real Interview Questions & Answers

Questions shared by ServiceNow professionals and reviewed for clarity, relevance, and interview usefulness.

Gvk 08 Sep 2025
What is the use of OnDemand scheduled job? In ServiceNow, an on-demand scheduled job is a task that doesn't run on a fixed, recurring schedule but is triggered to execute immediately when manually initiated, either through the "Execute Now" button on the scheduled job's form or programmatically via server-side scripts like Business Rules or Script Includes. The primary use is to run a specific task, such as data updates or imports, at an opportune moment outside its regular cycle, offering flexibility and control over automation efforts. When to Use an On-Demand Scheduled Job Manual Triggering: You can run the job as needed by simply clicking the Execute Now button available after saving the scheduled job. Scripted Triggering: You can use server-side scripts, like Business Rules or Script Includes, to programmatically start the job when a specific event occurs in the system. One-Time Operations: On-demand jobs are ideal for tasks that need to be performed once, like importing a spreadsheet of user details, and then repeating the process when new data is available. Ad-Hoc Data Updates: When you need to update records or synchronize data based on a specific trigger, but not on a fixed schedule, an on-demand job provides the necessary control. How to Trigger an On-Demand Scheduled Job 1. Manually: Open the Scheduled Job record. Click the Execute Now button, which appears in the top right of the form after you save it. 2. Programmatically (using Server-Side Script): Identify the Scheduled Job you want to run. Use a script, such as a Business Rule, to find the Scheduled Job's record. Utilize the SncTriggerSynchronizer.executeNow()() method to trigger the job from the script
0 helpful
Hans Raj 05 Aug 2025
I was asked a question in an interview that, if there were a scheduled job that ran every 2 hours and fetched millions of data points. However, since it involves a lot of data, executing it completely can sometimes take up to 3 hours. So how will you handle this situation so that you won't lose the data or get any errors?
Vinita Kushwah 22 Aug 2025
I will implement a job locking mechanism so that a new execution won’t start if the previous one is still running. Additionally, I would optimize the job by processing data in smaller batches and using a checkpoint (last run time/sys_id) so that if a run is skipped, the next run resumes without losing data.
0 helpful
Snowexpertaastik 05 Sep 2025
You can handle this by adding a mutex/flag check before the job starts, so a new run won’t trigger if the previous one is still active. Another option is to use job queues or break the process into smaller batches with checkpoints. This way you avoid overlaps, ensure data integrity, and reduce errors.
0 helpful
0 helpful
Suganya 30 Jun 2025
You have To show only groups where current logged in user is member of those groups when user selects assignment group field
Sridhar G 05 Dec 2025
We can get this from Querying the "sys_user_grmember" Table.
0 helpful
0 helpful
Heisenberg 24 Dec 2024
As a project manager, I want to send a reminder notification after 3 days when incident is Resolved but not closed. What are the different ways to achieve this requirement?
Divesh Jalandriya 22 May 2025
You can create a Scheduled Job that runs daily on the Incident table to check for incidents in the Resolved state. For each resolved incident, retrieve the current date and the date it was moved to the resolved state (from the sys_updated_on). Then calculate the difference between the two dates using the getDays() method. If the difference is equal to or greater than 3 days, you can trigger a notification to the appropriate user or group. Something like, var gr = new GlideRecord('incident'); gr.addQuery('state', '6'); // Resolved state (change as per your state value) gr.query(); var today = new GlideDateTime(); while (gr.next()) { var resolvedDate = gr.sys_updated_on; // get the date on which incident was resolved var resolvedDateTime = new GlideDateTime(resolvedDate); // convert date to dateTime var diff = GlideDateTime.subtract(today, resolvedDateTime); //you will getthe value in dateTime format var daysPassed = diff.getNumericValue() / (1000 * 60 * 60 * 24); // convert the value in diff to days by dividing it by ms*sec*min*hrs of a day it will give you numeric value of days if (daysPassed >= 3) { // Example: Send notification or log info gs.info("Incident " gr.number " has been resolved for " Math.floor(daysPassed) " days."); // Optional: Trigger an event to send a notification gs.eventQueue("event_name_to_trigger_notification", gr, gr.sys_id, gr.number); } }
0 helpful
Kams 07 Jan 2026
var gr = new GlideRecord('incident'); gr.addQuery('state', 6); // Resolved gr.addEncodedQuery('resolved_atRELATIVELE@dayofweek@ago@3^resolved_atRELATIVEE@dayofweek@ago@4'); gr.query(); while (gr.next()) { gs.eventQueue('incident.resolved.reminder', gr, gr.assigned_to, gr.caller_id); }
0 helpful
0 helpful
Service-now Developer 28 Jul 2024
Interview question: Hide child incident related list when incident assignment group> type is not itil. How will you solve this?
Vaibhav 17 Sep 2024
Create UI Policy for the form with condition as field 'Action' is No. To hide the related list Add the below code in the Execute if True script section. g_form.hideRelatedList('related_list_table_name'); To show the related list Add the below code in the Execute if False script section. g_form.showRelatedList('related_list_table_name'); Note: Get the related_list_table_name from thee list control of the related list. Right click related list header > Personalize/Configure List Control. Copy the value from the field 'Related list'
1 helpful
0 helpful
Venkat 09 May 2024
If there is a custom field on click of UI action I want to populate count of incident which are from same assignment group and I want to show this field to only admin or ITIL user which modules you will use for this?
Mudit 10 Sep 2024
for custom field you can use UI policy to show field to adin aor itil user and for count of incident for same assignment group you can use a display br to fetch count and then pass the count in a g_scratchpad to a on load client script.
0 helpful
Anonymous 27 Nov 2024
in the ui action you can use GlideAggregate API to get the incident count and update the count_field. for field visibility create read ACL for admin and itil roles. OR write a client script to show/hide count field like this: function onLoad() { var isAdmin = g_user.hasRole('admin'); //console.log("isAdmin: " isadmin); if (isAdmin == true) { g_form.setDisplay('count_field', 'true'); } else { g_form.setDisplay('count_field', 'false'); } }
0 helpful
0 helpful
Paras Belorkar 06 May 2024
Current logged in user should see only those incidents which are assigned to those groups which he/she is member of. Suppose a user is member of 3 groups. Please explain with the script.
Sreedhar 07 Oct 2024
Use below code in Read ACL for Incident table. Add itil role in roles.. or whatever is generic.. var checkMember = gs.getUser().getUserId(); if(checkMember.isMemberOf('Group1')
0 helpful
Abel Tuter 01 Dec 2024
Hi , You can write Below Before Query Business Rule - (function executeRule(current, previous /*null when async*/ ) { var groups = gs.getUser().getMyGroups(); current.addQuery('assignment_group', 'IN', groups); })(current, previous);
0 helpful
0 helpful
Manal Aquil 22 Feb 2024
If an organisation is using multiple tools, then how we can synch up data of all the tool .
Priyanka 17 Apr 2024
By Implementing integration between them
0 helpful
0 helpful
Vishnu Priya 10 Jan 2024
When user opens any incident which has child incident then there should be message saying for assignee group members that "This incident is parent for INCXXXXXX", child incident needs to be resolved before resolving parent incident, how to implement this scenario?
0 helpful
Alaya 18 Dec 2023
I was asked in interview: On the incident form generally assigned to field is dependent on assignment group. What will happen if we remove the assignment group from the form, will assigned to field still be dependent on assignment group or will it show all the users?
Khaleed 18 Jan 2024
It will show all the users.
0 helpful
Sharath 26 Jun 2024
It will show all the ITIL users as per the default Use reference qualifier.
0 helpful
Bushra 14 Oct 2024
Add assignment_group(backend name of group field) in the dependent value of assigned_to field
0 helpful
0 helpful
Atharva Chavan 23 Sep 2023
Use of Jelly Script with an example
2 helpful
Harika 07 Sep 2023
I need to create a catalog item, in that catalog item I need to generate 10 catalog tasks simultaneously. How can I achieve this?
Rohit 20 Sep 2023
create a Workflow that will be associated with your catalog item. This workflow should define the logic for generating 10 catalog tasks simultaneously.
0 helpful
0 helpful
Satyapriya Biswal 10 Apr 2023
What is the code to execute a scheduled job from a serverside script?
Vardha 11 Apr 2023
scheduled job is used for server side scripting on a scheduled basis. You do not need to trigger it via some other script. Can you please elaborate what you are trying to achieve here?
0 helpful
Satyapriya Biswal 11 Apr 2023
Can you please tell me What is the use of Ondemand scheduled job?
0 helpful
Raj 11 Apr 2023
Hi Satyapriya, Scheduled job can be executed by using gs.executeNow method in server side script, we need to pass scheduled job glide object as parameter as shown below : var grSchedJob = new GlideRecord('sysauto_script'); if(grSchedJob.get('SCHEDULUD_JOB_SYS_ID_HERE')){ gs.executeNow(grSchedJob); } More info can be found on 'https://www.servicenow.com/community/developer- forum/what-is-the-sys-id-gs-executenow-is-returning/m-p/1577551/page/3' Note : The above script can be found on 'Execute Now' UI action which is available on scheduled job form.
1 helpful
Satyapriya Biswal 11 Apr 2023
Thanks Raj
0 helpful
1 helpful
Share a Question

🚀 Power Up Your ServiceNow Career

Join a growing community of smart ServiceNow professionals to stay ahead in interviews, sharpen your development skills, and accelerate your career.

📱

ServiceNow Buddy App

Get the free Android app for a smoother experience.

Install
Comments 4
B
Bhavana 25 Apr 2026
Can someone tell how will you configure 0Auth in servicenow?
K
Khushboo 31 Jan 2025
This is an amazing collection of interview questions and answers! I particularly appreciate how it covers rarely used functionalities. I’ve been asked similar questions multiple times, and I now regret not reviewing this questions earlier.
P
Pooja 12 Sep 2024
Nice Content
G
Garima Dubey 17 May 2023
Please introduce Scheduled Job-based Questions
📝 My Topic Notes 🔒 Only visible to you
Log in or sign up free to save notes
Previous Business Rule Questions Next Scripting Scenario Based Questions

Found these questions helpful?

Share your experience — it helps other ServiceNow professionals know what to prepare.

Share Your Story →