LogiUpSkill

Overview of ATF

Overview of ATF Automated Test Framework (ATF) in ServiceNow The Automated Test Framework (ATF) is a built-in ServiceNow tool designed to automate testing of your instance configurations, customizations, and applications. It allows you to create and execute automated tests that verify your ServiceNow instance continues to function correctly after changes, such as upgrades, new developments, or update sets. Why Do We Need ATF? In real-world ServiceNow projects, teams often customize core processes, including: Incidents Problems Catalog Items Flows Business Rules After platform upgrades or configuration changes, these customizations can sometimes break unexpectedly. ATF addresses these challenges by: Reducing the need for repetitive manual testing Detecting issues early in the development cycle Saving significant time and resources Ensuring consistent quality and stability, especially during upgrades By automating regression testing, ATF provides confidence that your custom business processes remain intact.   ATF helps to: Reduce manual testing Catch issues early Save time Ensure quality after upgrades What Can ATF Test? ATF is versatile and can validate a wide range of elements, including: Incident creation and lifecycle Service Catalog item submissions UI Policies Client Scripts Business Rules Flow Designer logic Form field behaviors (mandatory, visible, read-only) Approval processes Server-side logic (e.g., Script Includes, SLA calculations) REST APIs and integrations (via inbound/outbound messages or MID Server) ATF supports client-side (UI) tests, server-side tests, and integration tests. Main Components of ATF ATF is built around several key components: Test A complete end-to-end scenario that verifies specific functionality. Example: Create an Incident → Set field values → Submit → Validate outcomes. Test Step Individual actions or assertions within a test. Examples: Open a form; Set field values, Click Submit, Assert field value. A single test consists of multiple ordered test steps. Test Suite A collection of related tests (or even nested suites) for organized execution. Examples: Incident Management Suite, Catalog Suite, SLA Validation Suite. Additional supporting elements include: Test Runner Executes tests and displays real-time results (Passed, Failed, and Skipped), execution time, and error details. Test Results Detailed logs with step-by-step status, runtime screenshots (for UI steps), and error messages for debugging. Scheduled Test Runs Enables automated execution on a recurring basis (daily, weekly) or tied to events like deployments or pre-upgrade validations. Types of ATF Tests ATF supports different testing approaches: UI (Client-Side) Tests Simulate real user interactions on forms, lists, and Service Portal. Example: Opening the Incident form, entering a Caller, and submitting. Server-Side Tests Validate backend logic without involving the UI. Example: Testing Business Rules, Script Includes, or SLA calculations directly. Integration Tests Verify connectivity with external systems. Example: Inbound/outbound REST APIs or MID Server interactions. Scenario Verify that an Incident record is created with specified field values. Steps to Create the Test Navigate to ATF. Go to Automated Test Framework > Tests and click New. Configure the Test Name: Create Incident – Demo Test Table: Incident Step 1: Open New Incident Form for testing (Temporary) Test Step: Open a New Form Table: Incident Purpose:  Opens the incident form Add Test Steps Step 1: Open a New Form Test Step Type: Open a New Form Table: Incident Purpose: This opens the new Incident form, simulating user navigation. Table – (Select) Incident table in the Table field (Mandatory) Submit it. Step 2: Set Field Values Test Step Type: Set Field Values Examples of fields: Short Description: Email issue Category: Software Purpose: Simulates user input on the form. Step 3: Submit the Form Test Step Type: Submit a Form Purpose: Clicks the Submit button to create the record. Click on Submit. You can see three steps on the test page in red rectangle. On the Runner page, we can see the Incident form displayed with the specified field values populated.The Caller field shows the user selected during the test execution, confirming that the correct caller information is captured.The Short Description field is filled with the provided text, validating that the input data has been passed correctly.This view helps confirm that the test is creating or opening the Incident record with the expected field values. On the Test Case record, the Test Result is shown as Success, which indicates that all the configured test steps were executed without any errors.Each step met the expected conditions and produced the correct outcome as defined in the test case.No failures, warnings, or exceptions were encountered during the execution of the test.This confirms that the related functionality is working as expected under the tested scenario. On the Incident list view, we can see that a new Incident record has been successfully created in the system.The record appears as a new row in the list with key details such as Incident Number, Short Description, Priority, State, and Assigned To.This listview allows users to quickly verify that the Incident is logged and track its current status.From here, users can also open the record to view, update, or work on the Incident in detail. The Incident record may temporarily vanish from the listview for a few minutes while the debug process is running.During this time, the system is executing background logic such as flows, business rules, or scripts, which can delay the record’s visibility.Once the debug execution is completed successfully, the Incident record will reappear in the listview.This behavior is temporary and does not indicate that the Incident has been deleted or lost. The Automated Test Framework is a powerful, native tool that streamlines testing in ServiceNow, promotes faster releases, and minimizes risks. By investing in ATF early, teams can achieve higher quality, reduced testing overhead, and greater confidence in their customizations. Start small with critical processes, build reusable steps, and gradually expand your test suites for maximum impact. Parameterized Testing Parameterized testing in ServiceNow Automated Test Framework (ATF) allows you to run the same test multiple times with different sets of input data, without duplicating the entire test. This is particularly useful for data-driven testing scenarios, such as validating a process (e.g., incident creation or user access) across various inputs like roles, values, or records. Why Use Parameterized Testing It reduces

Service Portal

Service Portal Basic Widget in Service-now Service Portal is a powerful framework for building self-service websites and custom web app UIs. Using a hierarchy of table driven components, Service Portal simplifies the process and reduces the code required to build a web interface. With Service Portal, you can deliver your apps to employees through a modern, easy to use portal they can access from any device, any time. To create a service portal, navigate to Service Portal => portals => New button, the following form will be displayed, Enter Title , URL suffix (used to run the service portal in the browser) as shown in above form. To run this portal,write URL suffix at the end of the current instance URL as below, Page Pages control where and how you store portal content. To create page navigate to Service Portal => Pages and click on New Button to create a page. The following form will be displayed , Enter the title ,Id for the page and save the changes. After creating this page,At the bottom click on “Open in Designer” link, to create the content on the page,as below, The following “Page Designer” will be displayed on the browser , From the Widgets tab at the left , from layouts , First we need to add a container and then divide that container using a required grid to divide the space in the container. In the below snapshot we have added the container and  [6 6] grid and we have added widgets calculator and clock as a content , You can add this page to portal by following way, Open your service portal and select Homepage as the page name that we want to add. Now go to the portal by entering the URL suffix (snowtraining) at the end of the current instance URL in the browser,you will get the page that we have added as below, Menus To create Menu,navigate to Service Portal => Menus and click on New button to create the Menu as below, How this Menu should appear on the page we can select in widget, For example , below,Training Menu should appear as Header Menu on a page so select “Header Menu” as Widget as below, Save above Menu. Add Menu Item by clicking “New” button from “Menu Item” section at the bottom as below, Create Menu item as shown in below screenshot, As shown in above screenshot, Enter Type of Menu,Catalog item and Page for that menu Type : Catalog Item Page : this decides where to display catalog item, “sc_cat_item”  is used to display catalog item. You can add these above Menu to the service portal by selecting the Menu as below, Service Portal Configuration Branding Editor :  Used to customize the portal’s title,logo and theme colors. Navigate to Service Portal => Service Portal Configurator as below,  The following configuration page will be displayed in the browser, Click on Branding Editor,to customize portal’s title,logo and theme colors. The following page will be displayed, Simple List example : Create a page to display a list of incidents and problems using Simple List widget. ’  Click on Open in Designer to design a page,  Drag and drop 2 containers and divide them using grid as below, Drag and Drop a Simple List widget into Container 1 as follows, Click on pencil to edit the list,following window will be displayed, Configure 2nd simple list for Problem table as below, We can link this page to Menu. Create one menu and link the above page(tr_incident) to it as follows, Save the above Menu and go to the portal,you can see the Menu named as Ticket that we have  just created as follows, Click on that Ticket Menu,the list of incident and problem will be displayed as follows, If you click on any incident ,the following page will be displayed in which we can only write the issues.,because on the page we have set Link Type as Ticket., Click on any Problem, The form will be displayed as follows because on page we have set Link Type as Form. Add Search on Homepage : We can use existing instances on a page. For example , Use “Search” from the below Service Portal to our Service Portal , For that ,open Service Portal and check which instance is used for displaying “Search” on Homepage  in this service portal, Open a Record of Homepage to know the instance as follows, The following Page will be displayed and you can see the “Homepage Search” instance is used to display the Search on HomePage. Now,Open our homepage in design mode and add one container at the top and drag and drop “HomePage Search”in that container as below, Navigate to our portal by entering our developer instance URL with suffix snowtraining ,the “Search” will be displayed as follows, Design Page without Designer: You can design a page directly on the page without using Designer. For that ,open a page ,at the bottom there is a list of containers. Create a new container by clicking on New button, At the bottom, Click on Column 1 of newly created container as below, At the bottom click on New button to create the instance , Widget Data Table : Class – Instance with Table Here you can add widget,take data table as a widget as follows, When you use the Data table as a widget,you need to select a table. For that first Select “Instance with Table” as a Class, (if class field is not available on the form then display it from Form Layout =>Slush Bucket) Save it and then you will get some more fields on the form where you can select a table as below, Display Icon : To display icon,select “Icon Link” as a widget and Class “Instance with Link”, Save the above form. Now, After clicking on that icon,we need to select what should be displayed,as below, Navigate to Service Portal URL, you will see the Icon which we have created

Server Side Script

Glide Aggregate – Scripting 1. To find no of records in table var g= new GlideAggregate(‘incident’); g.addAggregate(‘COUNT’); g.query(); var incident= 0; if(g.next()){ incident= g.getAggregate(“COUNT”); } gs.print(‘The Number of incidents are=’+incident); 2. To find no of incidents with caller Pallavi using addEncodedQuery var g= new GlideAggregate(‘incident’); g.addEncodedQuery(‘caller_id=681ccaf9c0a8016400b98a06818d57c7’);//Sys_id of Pallavi g.addAggregate(‘COUNT’); g.query(); var incident=0; if(g.next()){ incident=g.getAggregate(‘COUNT’); } gs.print(‘Number of incidents with caller Pallavi=’+incident); 3. To find no of incidents where assigned to field is not empty var g=new GlideAggregate(‘incident’); g.addNotNullQuery(‘assigned_to’); g.addAggregate(‘COUNT’); g.query(); var incident=0; while(g.next()){ incident=g.getAggregate(‘COUNT’); } gs.print(‘number of incident where assigned to field is not empty=’+incident); 4. To find no of incidents where assigned to field is empty var g=new GlideAggregate(‘incident’); g.addNullQuery(‘assigned_to’); g.addAggregate(‘COUNT’); g.query(); var incident=0; while(g.next()){ incident=g.getAggregate(‘COUNT’); } gs.print(‘number of incident where assigned to field is empty=’+incident); 5. To find number of incidents with state new var g=new GlideAggregate(‘incident’); g.addQuery(‘state’, ‘1’); g.addAggregate(‘COUNT’); g.query(); var incident=0; while(g.next()){ incident=g.getAggregate(‘COUNT’); } gs.print(‘number of incident with state new=’+incident); 6. To find number of incidents active true var g=new GlideAggregate(‘incident’); g.addQuery(‘active’, ‘true’); g.addAggregate(‘COUNT’); g.query(); var incident=0; while(g.next()){ incident=g.getAggregate(‘COUNT’); } gs.print(‘number of incidents=’+incident); 7. To find no of incidents with different category var g =new GlideAggregate(‘incident’); g.addQuery(‘active’,’true’); g.addAggregate(‘COUNT’,’category’); g.query(); while(g.next()){ category = g.category; categoryCount = g.getAggregate(‘COUNT’,’category’); } gs.log(“The are currently “+ categoryCount +” incidents with a category of “+ category);lideAggregate(‘incident’); g.addAggregate(‘COUNT’); g.query(); var incident= 0; if(g.next()){ incident= g.getAggregate(“COUNT”); } gs.print(‘The Number of incidents are=’+incident); 8. To find no of incidents with caller Pallavi using addEncodedQuery var g= new GlideAggregate(‘incident’); g.addEncodedQuery(‘caller_id=681ccaf9c0a8016400b98a06818d57c7’);//Sys_id of Pallavi g.addAggregate(‘COUNT’); g.query(); var incident=0; if(g.next()){ incident=g.getAggregate(‘COUNT’); } gs.print(‘Number of incidents with caller Pallavi=’+incident); 9. To find no of incidents where assigned to field is not empty var g=new GlideAggregate(‘incident’); g.addNotNullQuery(‘assigned_to’); g.addAggregate(‘COUNT’); g.query(); var incident=0; while(g.next()){ incident=g.getAggregate(‘COUNT’); } gs.print(‘number of incident where assigned to field is not empty=’+incident); 10. To find no of incidents where assigned to field is empty var g=new GlideAggregate(‘incident’); g.addNullQuery(‘assigned_to’); g.addAggregate(‘COUNT’); g.query(); var incident=0; while(g.next()){ incident=g.getAggregate(‘COUNT’); } gs.print(‘number of incident where assigned to field is empty=’+incident); 11. To find number of incidents with state new var g=new GlideAggregate(‘incident’); g.addQuery(‘state’, ‘1’); g.addAggregate(‘COUNT’); g.query(); var incident=0; while(g.next()){ incident=g.getAggregate(‘COUNT’); } gs.print(‘number of incident with state new=’+incident); 12. To find number of incidents active true var g=new GlideAggregate(‘incident’); g.addQuery(‘active’, ‘true’); g.addAggregate(‘COUNT’); g.query(); var incident=0; while(g.next()){ incident=g.getAggregate(‘COUNT’); } gs.print(‘number of incidents=’+incident); 13. To find no of incidents with different category var g =new GlideAggregate(‘incident’); g.addQuery(‘active’,’true’); g.addAggregate(‘COUNT’,’category’); g.query(); while(g.next()){ category = g.category; categoryCount = g.getAggregate(‘COUNT’,’category’); } gs.log(“The are currently “+ categoryCount +” incidents with a category of “+ category); Glide Record – Scripting 1. To find out number of active incidents var incident=new GlideRecord(‘incident’); incident.addQuery(‘active’, ‘true’); incident.query(); gs.print(“Row count =”+incident.getRowCount()); 2. To find out list of active incidents var incident=new GlideRecord(‘incident’); incident.addQuery(‘active’, ‘true’); incident.query(); gs.print(“Row count =”+incident.getRowCount()); gs.print(“List of Incidents”); while(incident.next()){ gs.print(‘Incident number’+incident.number); } 3. To find out no of incidents assigned to admin userid var gr= new GlideRecord(“incident”); var p= gs.getUserID(“admin”); gr.addQuery(“assigned_to”,p); gr.query(); gs.print(“No of incidents=”+gr.getRowCount()); while(gr.next()){ gs.print(gr.number); } 4. To find out no of incidents assigned to current user var gr= new GlideRecord(“incident”); var p= gs.getUserID(); gr.addQuery(“assigned_to”,p); gr.query(); gs.print(“No of incidents=”+gr.getRowCount()); while(gr.next()){ gs.print(gr.number); } 5. How many incidents with category hardware? var g= new GlideRecord(“incident”); g.addQuery(“category”,”hardware”); g.query(); gs.print(“No of incidents with category hardware=”+g.getRowCount()); while(g.next()){ gs.print(g.number); } 6. How many incidents with “Assigned To” value contains name admin? var gr=new GlideRecord(‘incident’); gr.addQuery(‘assigned_to.name’,’CONTAINS’,’admin’); gr.query(); var a= gr.getRowCount(); gs.print(a); while(gr.next){ gs.print(gr.number); } 7. Get all the incident which has Assigned to user having first name contains name admin word var gr= new GlideRecord(‘incident’); //gr.addEncodedQuery(‘assigned_toLIKEadmin’); //gr.addEncodedQuery(‘assigned_to.first_name.admin’); gr.addEncodedQuery(‘GOTOassigned_to.first_nameLIKEadmin’); /* var user= gs.getUserName(‘admin’); var admin=gr.addQuery(‘user’,admin); gr.addQuery(‘assigned_to’,user); */ //gr.addQuery(‘assigned_to’,’CONTAINS’,’admin’); gr.query(); while(gr.next()){ var count=gr.getRowCount(); } gs.print(count);   8. To find out number incidents which are resolved or closed var incident=new GlideRecord(‘incident’); incident.addQuery(‘state’, ‘6’).addOrCondition(‘state’, ‘7’); // resolved=6 and closed=7 incident.query(); gs.print(“Row count =”+incident.getRowCount());   9. Print first 4 Incident’s where caller’s first name start with Meghana var gr =new GlideRecord(“incident”); gr.addQuery(“caller.first_name”,”STARTSWITH”,”Meghana”); gr.orderBy(‘number’); gr.chooseWindow(0, 4); gr.query(); while(gr.next()){ gs.print(gr.number) } 10. Print the incident number using sys_id var gr = new GlideRecord(‘incident’); if (gr.get(’46cd8aaa2fe318104f7fdb9df699b604′))  //Sys id of record     gs.print(gr.number);   11. Print out first 4 incidents orderby number var gr = new GlideRecord(‘incident’); gr.orderBy(‘number’); // Ascending Order gr.chooseWindow(0, 4); gr.query(); while (gr.next()) {    gs.print(gr.number); } 12. Print 10 incidents by descending order of created date var gr = new GlideRecord(‘incident’); gr.orderByDesc(‘sys_created_on’);  // this will be descending order but by default will be ascending order and  gr.setLimit(10); gr.query();     while(gr.next()){ gs.print(gr.number); }   13. Delete the records from Table var gr = new GlideRecord(“incident”); gr.addQuery(“state”,3); //to delete all inactive incidents gr.query(); gr.deleteMultiple(); var gr = new GlideRecord(“incident”); //to delete one record if (gr.get(“SYS_ID_OF_RECORD”)) gr.deleteRecord(); Business Rule and Script Include Example Script Include and Business Rule Example: Business Rule: (After Insert) (function executeRule(current, previous /*null when async*/) {var createP=new ProblemUtils();var problemSysid=createP.createProblemRecord(current); //Create a Problem var getProblemRecrod=createP.getRecrodNumber(problemSysid,”problem”);  //get Problem Number createP.updateParent(getProblemRecrod,”problem”,current); // Update problem with Parent field gs.addInfoMessage(getProblemRecrod);})(current, previous);   Script Include:(Not Client Callable) var ProblemUtils = Class.create();ProblemUtils.prototype = {initialize: function() {}, createProblemRecord:function(current){ var createProblem=new GlideRecord(“problem”); // GlideRecord API is used to Query the table, Table name=problem createProblem.initialize(); // initialization of object createProblem.short_description=current.short_description + “Assingedto:” +current.assigned_to.name; //mapping createProblem.assigned_to=current.assigned_to; ////mapping createProblem.assignment_group=current.assignment_group; //mapping createProblem.description=current.description ; //mapping var problemSysid=createProblem.insert(); return problemSysid;}, getRecrodNumber:function (sysid,tableName){ var getNumber=new GlideRecord(“”+tableName);getNumber.addQuery(“sys_id”,sysid);getNumber.query();if(getNumber.next()){return getNumber.number;}else{ return “No Record found”;} }, updateParent:function(number,tableName,current){ var getNumber=new GlideRecord(“”+tableName);getNumber.addQuery(“number”,number);getNumber.query();if(getNumber.next()){getNumber.parent=current.sys_id;getNumber.description=current.number;getNumber.update();} }, type: ‘ProblemUtils’};

ServiceNow Basics Questions & Answers

ServiceNow Basics Questions & Answers What is ServiceNow? ServiceNow is a cloud-based digital platform that used by organizations to automate, manage, and improve businesses processes, especially in IT Service Management (ITSM). What is User and its types? A User in servicenow is anyone who can log into the platform or who can access servicenow platform.1 Admin – Admin is a developer who is responsible for development.2 End User – A user who only uses application without any role assigned. He can raise the ticket/issue/request.3 ITIL user – fulfil the requst of end user.4 Maint user – Maint user is like a super admin.This user has access to acivate paid plugins.   What is Elevated Role? Elevate role is a role in which users will not get access after logging in. If the user needs that access, then the user needs to get that access manually. Why use Elevated Roles? To improve security and to follow best practice. To limit the amount of time someone has all admin privileges. What are the types of Table in ServiceNow? There are mainly four types of table in ServiceNow. sys_ table: This type of table is created by default. Only admin can access this table. This shown sys_user_role. Out of the Box Table : Name table is the table who starts with names like Incident, Practice. This tables are the existing tables. Sometimes they called out of the box tables. Custom Tables : The table we created by us called as customised table. After creating this it shown in “u_” table. It also called as user defined table. v_ table : this is the virtual table. allows you to display and interact with data from external systems as if it were a native table, without actually storing it in the ServiceNow database What is Dictionary overriding? Dictionary Override will come into a picture when we have a parent-child relationship between tables. By default, all fields and their attributes are inherited from parent table to child tables. Suppose you want to make a difference in one of the child tables for inherited fields then we will go for Dictionary override.  [Dictionary Override to allow a field in a child table to have a different behavior than the same field in a parent table]. We can override following properties: –  Override Reference Qualifiers Override Dependant Override Default Value Override Read Only Override Calculations Override Mandatory Override Attributes Override Display Values   What is Application Menu Application menu is the menu that organize and display modules. It is a group of related modules. Which means Incident is an application menu which has modules like, All -> Create new -> Open -> Assigned to me  They are located in left side of the interface which has in alphabetical order. Access based on roles, Which mean what you see depends upon what role you have. What is Update set? Update set is a component which is used to capture configurational changes and can be moved from one instance to another instance. We have update_sync property at table level. If it’s true, then the system will consider this table as a “configuration table”. So, whatever we are creating or updating records in that table will get captured into update sets.    What is Client script? Client script is a script that runs on client side (that is in users’ browser). Using Client script, we can change the look and feel of the form. Client Script is used to perform validations on forms.  There are four types of Client script: –  Onload – onLoad client script runs when the form is loaded.     onChange– onChangeclient script runs when the specific field value changes. OnChange client script will also run onLoad.   There are some parameters in onChange Script: control, oldValue, newValue, isLoading, isTemplate  onSubmit– onSubmit client script runs when the form is submitted.    onCellEdit-In a list view when we edit a particular cell value that time onCellEdit client script    There are some parameters in onCellEdit Script: sysIDs, table, oldValues, newValue, callback  How onChange client script run on onload client script? Normally when we are loading a form or new incident first the html structure will get loaded without values it means we don’t have any values on the form it is empty after that we will get the values from the database, and it will populate on the form. So, in this scenario values are getting change from empty values to database values. So, in this way, changing client script will run.  How to stop running the onchange Client script onload? function onChange(control, oldValue, newValue, isLoading, isTemplate)   {    if (isLoading || newValue === ”)   {      return false;  //when isLoading is false, the onChange script will not run on form load.   }  }  So, if isLoading is false that time onChange Client script will not load onLoad  . Difference between UI policy and Client script? UI policy UI policy is used in client side. Based on Condition we can make field mandatory, read only or visible. UI policy executes after Client Script Client script Client script executes before UI Policy  Client script can’t access the field which is not present on form  What is List Layout? A List Layout is the default configuration of columns and their order that users see when they open a list view for a specific table (like Incident, Change Request, etc.) in ServiceNow.  It’s essentially a global setting controlled by admins that defines:  Which fields (columns) appear in a list view  The order of those columns  Difference between list layout and Personalized list? Feature  List Layout  Personalized List  Affects  All users  Individual user  Requires admin role  ✅ Yes  ❌ No  Used for  Setting default list columns and order  User-specific adjustments  Changes saved  In the system list configuration  In user preferences  What is Business Rule? A Business rule is a server-side component that runs on the server side. It runs when a record is Displayed, Inserted, Updated, Deleted, or Quired.   There are four types:  Before: It runs before a database operation; it allows modifications before the record is saved. We cannot use the current Update method. For example, if you apply for leave, it will first go to the database and see if you have any leave left. After: It Execute after a database operation, it is suitable for actions that depend on the saved records. For example, if you submit a leave application for one day and then your leave is still available in the database, one of them is submitted as a leave application.  Async: Asynchronous business rules will run after the after-business rule. Asynchronous business rules will run asynchronously; it will not hold system to execute asynchronous script. It cannot access the previous object. For example, if you have made the payment, even if you receive a message late after your money has been transferred, it

Incident Management 

Incident Management Incident ManagementAny interruption in service is raised as an IncidentPurpose is to restore normal service operationsPurpose is to minimise the effect by workaround if restore is not possibleImpact and Urgency are defining the PriorityChallengesDetect an incident as soon as possibleIncident workaround or resolution should get documentedIncident assignment for L1, L2 and L3 supportCorrect assignment of priority in automated generated incidents Examples Not able to login in systemNot able to swipe the swipe cardNot able to send an emails  2. Incident management   Incident management is the process of identifying, analyzing, and resolving incidents that disrupt normal business operations or IT services, with the goal of restoring services as quickly as possible and minimizing impact on users and business operations.  3. Objectives  Restore the service as quickly as possible Minimize disruption to the user’s work Manage the incident throughout its entire lifecycle Support operational activities  4. How Incidents Can Be Created  Incidents can be raised in many ways:  Service Portal (self-service) Email inbound actions Phone call to Service Desk ITSM Mobile appIntegration (API)Auto-created via Monitoring/Event ManagementManually by agents in ServiceNow  5. Fields in the incident management   5.1 Caller  Caller field identifies the person who is reporting the issue.  Incident is in “In Progress” state This incident is already being worked on, so the State is In Progress.The Channel field shows Email, meaning the incident was logged via email.Other fields like assignment group and priority indicate who is handling it. 5.2 Impact & Urgency  Three levels of impact and urgency are given in the list box: High, Medium, and Low, based on the incident priority. New record of incident This shows a newly created incident.The State is New, meaning no one has started working on it yet. 5.3 Channel  Incident can be raised through following channels  1)Chat  2)Email 3) Phone  4)Self-service 5)Virtual Agent 6)Walk-in  Incident moved to “In Progress” Here, the same incident is now saved and assigned.The State changes from New to In Progress once work begins.This indicates the support team has started investigating the issue. Short description: A short description is a summary of an incident, typically used to quickly communicate the nature of the problem to relevant parties.  6. States  State: New, In Progress, On Hold, Resolved, Closed, canceled. These are the states where the incident is placed as the status of the incident by the ‘Assigned to person’.  6.1 Incident States in ServiceNow   State  Meaning  New  When a user reports an issue, a new Incident is created in the system. In Progress  This confirms that the support team has started working on the issue and the Incident state changes from New to In Progress. On Hold  If additional information is required from the user (caller), the Fulfiller changes the Incident state to On Hold Resolved  Once the issue is fixed and the service is restored, the Fulfiller updates the Incident state to Resolved. Closed  In this process, the Fulfiller does not manually close the Incident.Instead, Incident closure is handled automatically using a scheduled job to maintain consistency and standardization. Canceled  when an Incident is no longer valid and does not require any further action or resolution.  New: When incident is new and still not Assigned.  New Incident Record This shows a newly created incident.The State is New, meaning no one has started working on it yet until the incident is assigned to “Assigned to Person”.   In Progress: When the incident is assigned to someone who can solve the incident.  Incident Lifecycle Flow This flow shows the Incident Management lifecycle in ServiceNow.An incident flows from New → In Progress → Resolved → Closed.Optional states like On Hold and Canceled exist based on situations. Two fields are mandatory before putting your incident on-hold state that is   On hold reason and comments (visible to both Customer and IT staff)   Mandatory Caller Field The Caller field is mandatory (marked with an asterisk *).It identifies the user who reported the incident.An incident cannot be saved without selecting a caller. On Hold: The On-Hold state in incident management is a temporary status where the incident resolution is suspended because the team is waiting for necessary action from the caller. In the On Hold state, the on-hold reason field is mandatory.  Impact and Urgency This screenshot highlights the Urgency field.Urgency indicates how quickly the issue needs to be resolved.Along with Impact, it automatically calculates the Priority of the incident. Resolved: The incident considered to be resolved when the service has been resolved to its normal state. The two fields are mandatory to fill.  1) Resolution code   2) Resolution notes  Closed: The incident is closed when issues are resolved, and all necessary actions are completed Canceled: The Canceled state represents an incident that is no longer required to be worked on.  This means the incident does not need investigation, troubleshooting, or resolution.  7. Incident Management – Table Fields (ServiceNow)    Table Name: incident  Field Name  Label  Description  number  Incident Number  Auto-generated unique number for each incident.  caller_id  Caller  The user who reported the incident.  short_description  Short Description  A brief summary of the issue.  description  Description  Detailed explanation of the issue.  category  Category  High-level classification (e.g., Network, Hardware, Software).  subcategory  Subcategory  More specific classification under category.  impact  Impact  Scope of the incident (Low/Medium/High).  urgency  Urgency  How quickly the issue needs to be resolved.  priority  Priority  Calculated from Impact + Urgency.  assignment_group  Assignment Group  The group responsible for working on the incident.  assigned_to  Assigned To  The person working on the incident.  state  State  Current status (New, In Progress, On Hold, Resolved, Closed).  on_hold_reason  On Hold Reason  Reason for putting the incident on hold.  resolve_time  Resolve Time  Date & time when the incident was resolved.  close_code  Close Code  Reason for closing (e.g., Solved Permanently, Duplicate).  close_notes  Close Notes  Notes added by resolver when closing.  opened_at  Opened At  Date & time incident was created.  opened_by  Opened By  User who created the incident.  updated_at  Updated At  Last modified date.  u_symptom  Symptom  Description of symptoms (custom field in many orgs).  cmdb_ci  Configuration Item (CI)  CI affected by the incident.  location  Location  Location of the