ServiceNow Certified Application Developer CAD (SNOW-CAD) — Questions 226300

500 questions total · 7pages · All types, answers revealed

Page 3

Page 4 of 7

Page 5
226
MCQhard

A company wants to customize the theme of their ServiceNow instance to match corporate branding, including colors and fonts. Which method is the most maintainable and upgrade-safe?

A.Modify the system CSS files directly via the UI.
B.Override CSS in a custom stylesheet and include it in the page using a UI Macro.
C.Inject custom CSS using a UI Script.
D.Use the 'Application' > 'Global CSS and Theme' module to define overrides.
AnswerD

This is the supported way to customize themes, with built-in upgrade protection.

Why this answer

Using the Global CSS and Theme system allows customizations in a dedicated module that survives upgrades, unlike direct modifications of system CSS.

227
MCQhard

A custom table 'u_asset' stores asset data. The developer wants to add a field that calculates the depreciation value based on acquisition date and cost. Which field type should be used?

A.Lookup select
B.Currency
C.Calculated
D.Condition string
AnswerC

A calculated field can use a script to compute a value dynamically.

Why this answer

Option C is correct because a calculated field using a script (e.g., calculated value via business rule or calculated field attribute) can compute depreciation. Option A is wrong because Currency is just a data type, not dynamic calculation. Option B is wrong because Lookup select is for selection lists.

Option D is wrong because Condition string is for conditions.

228
MCQeasy

A developer wants to restrict access to a specific record in the incident table so that only members of the 'ITIL' group can read it. Which type of ACL should be created?

A.Create a field-level ACL on the sys_id field.
B.Create a record-level ACL with a condition that checks group membership.
C.Create a business rule to delete the record for unauthorized users.
D.Create a UI policy to hide the record.
AnswerB

Record-level ACLs control read, write, delete on the entire record.

Why this answer

A record-level ACL with a condition that checks group membership is the correct approach because it controls read access to the entire record based on the user's group membership. In ServiceNow, record-level ACLs evaluate conditions against the user's session and the record's data, and if the condition (e.g., 'member of ITIL group') is false, the record is hidden from the user entirely. This directly meets the requirement to restrict read access to a specific incident record for only the 'ITIL' group.

Exam trap

The trap here is that candidates often confuse UI policies (client-side) with ACLs (server-side) and think hiding the record in the UI is sufficient, but ServiceNow requires server-side ACLs to truly secure data from all access methods.

How to eliminate wrong answers

Option A is wrong because a field-level ACL on the sys_id field would only restrict access to that specific field, not the entire record; the user could still see other fields of the incident. Option C is wrong because a business rule that deletes the record for unauthorized users would permanently remove the data, which is not the goal (the requirement is to restrict read access, not delete data). Option D is wrong because a UI policy only controls the visibility or behavior of fields on a form in the UI; it does not enforce security at the server level, so a user could still access the record via other channels like web services or reports.

229
Multi-Selecteasy

Which TWO of the following are valid ways to trigger a business rule? (Choose two.)

Select 2 answers
A.Form load
B.Insert
C.Timer event
D.Update
E.Inbound email receipt
AnswersB, D

Business rules can run on insert.

Why this answer

Business rules in ServiceNow can be triggered by database operations such as Insert and Update. These are the core 'when to run' conditions that fire the rule before or after a record is created or modified in the database. Options B and D are correct because they directly correspond to these fundamental database operations.

Exam trap

The trap here is that candidates confuse client-side events (like form load) or other system actions (like inbound email) with the actual database operation triggers that business rules use, leading them to select options that are not valid server-side triggers.

230
MCQhard

A developer is writing a scripted REST API endpoint that returns a list of users. The requirement is to return only users who are in the 'IT' department and have a role of 'itil' or 'admin'. The endpoint uses GlideRecord. Which query condition is most efficient?

A.gr.addQuery('department', 'IT'); gr.addQuery('role', 'itil'); gr.addOrCondition('role', 'admin');
B.gr.addQuery('department', 'IT'); gr.addQuery('role', 'itil');
C.gr.addQuery('department', 'IT'); gr.query(); then iterate and check role.
D.gr.addQuery('department', 'IT'); gr.addQuery('role', 'itil,admin');
AnswerA

Correctly uses addOrCondition for OR within the same department condition.

Why this answer

Option D is correct because it uses an OR condition with addQuery and addOrCondition. Option A is wrong because it does not filter by role. Option B is wrong because it uses two separate queries.

Option C is wrong because addQuery for role with multiple values requires multiple conditions or an IN clause.

231
Multi-Selectmedium

Which TWO of the following are true about client-callable script includes? (Choose two.)

Select 2 answers
A.They must have a function that returns a value.
B.They can only be used in scoped applications.
C.They must be accessed using the GlideAjax API.
D.They cannot be used in UI policies.
E.They can be called directly without GlideAjax if marked as synchronous.
AnswersA, C

The client script expects a response from the script include.

Why this answer

Option A is correct because client-callable script includes must have at least one function that returns a value. This is required because the GlideAjax API processes the response asynchronously and expects a return value to be sent back to the client via the callback function. Without a return value, the client-side callback would receive undefined or null, breaking the intended data flow.

Exam trap

ServiceNow often tests the misconception that client-callable script includes can be called synchronously or directly, but the GlideAjax API is mandatory for all client-side calls to server-side script includes, and there is no synchronous alternative.

232
MCQhard

A company has developed a custom Scripted REST API endpoint that processes incoming orders and then makes synchronous outbound REST calls to an external shipping system for validation. During testing with low concurrency, the endpoint works correctly. However, in production with high concurrency, the endpoint frequently times out and returns 504 errors to the caller. The performance team has confirmed that the external shipping system is responsive and the network latency is acceptable. Which course of action should the development team take to resolve the timeout issue?

A.Deploy additional MID Servers to distribute the outbound call load.
B.Implement a caching layer to store shipping validation results and avoid repeated calls to the external system.
C.Increase the timeout value in the outbound REST Message record to accommodate peak loads.
D.Refactor the script to make asynchronous HTTP requests and process the shipping validation response using a separate queue or business rule.
AnswerD

Asynchronous requests free the script while waiting for the external response, allowing the instance to handle more concurrent requests without blocking.

Why this answer

The synchronous HTTP request blocks the script until the response is received. With high concurrency, this leads to thread starvation and timeouts. The best solution is to use asynchronous HTTP requests and handle the response via a queue or event mechanism, freeing the script to process other requests.

233
MCQmedium

Refer to the exhibit. A UI Policy is configured to run 'On Condition' with the condition 'Urgent is true'. Users report that when they check the 'Urgent' checkbox, the 'Reason' field does not become mandatory. What is the most likely cause?

A.The UI Policy should be set to 'On Load' only.
B.The script uses getValue('urgent') but the field name is 'u_urgent'.
C.The condition should be set to 'Urgent is false'.
D.The script should use g_form.setValue instead of setMandatory.
AnswerB

The field name in the UI Policy condition is 'Urgent' which corresponds to 'u_urgent' in scripts.

Why this answer

The script uses getValue('urgent') but the actual field name is 'u_urgent' as per the condition (UI Policy condition uses 'Urgent' which maps to 'u_urgent' in the database). The mismatch causes the script to not trigger properly.

234
Multi-Selectmedium

Which THREE of the following are best practices when writing business rules? (Choose three.)

Select 3 answers
A.Set the Order field to control execution sequence
B.Use condition scripts to keep scripts clean
C.Use gs.sleep() to wait for other processes
D.Avoid long-running synchronous business rules
E.Use GlideAggregate for updating records
AnswersA, B, D

Order ensures business rules run in the desired sequence.

Why this answer

Setting the Order field on a business rule controls the sequence in which multiple business rules execute on the same table and event. This is critical when rules have dependencies, ensuring that prerequisite logic (e.g., data validation) runs before subsequent logic (e.g., field updates). Without explicit ordering, execution order is undefined and may vary between instances.

Exam trap

The trap here is that candidates confuse GlideAggregate with GlideRecord and assume it can perform updates, or they think gs.sleep() is a harmless delay when it actually blocks the entire script execution thread.

235
MCQhard

A large enterprise runs a ServiceNow instance with a heavily customized Task table. The 'Task' table has been extended to create 'u_WorkOrder', which is used by over 50,000 active records. Recently, users complain that when they open a WorkOrder record, the form takes more than 10 seconds to load. On investigation, you discover that the 'u_WorkOrder' table has 150 fields, many of which are UI policies and client scripts that trigger on load. Additionally, there is a business rule that runs 'after query' and dot-walks through multiple related tables (e.g., calling 'current.assigned_to.department.manager.email' in a loop for each record). The instance uses SQL Server as its database. Which action would most effectively reduce the form load time without losing required functionality?

A.Change the order of the business rule to 100 so that it runs after other rules
B.Rewrite the after query business rule to use GlideAggregate or avoid dot-walking in loops, and consider caching the dot-walked data
C.Remove 50 of the 150 fields from the table to reduce data retrieval
D.Convert the after query business rule to an after update business rule
AnswerB

The dot-walking in a loop per record is extremely slow. Using GlideAggregate for batch queries or caching results in a system property can drastically reduce query time.

Why this answer

Option C is the most effective because it addresses the primary performance killer: the after query business rule that performs expensive dot-walking for every record. Option A is wrong because removing fields may lose functionality. Option B is wrong because it doesn't fix the slow business rule.

Option D is wrong because ordering does not affect the heavy operation.

236
MCQeasy

A ServiceNow developer is integrating with an external system using a REST message. The external system requires a custom header 'X-API-Key' to be included in every request. Where should the developer configure this header to ensure it is automatically included in all REST messages that call this endpoint?

A.In the 'Query Parameters' tab of the REST message definition
B.In the 'HTTP Headers' tab of the REST message definition
C.In the 'Authentication Profile' associated with the REST message
D.In the Scripted REST API used to create the endpoint
AnswerB

Correct: Custom headers are defined here and automatically included in every request.

Why this answer

Option B is correct because the 'HTTP Headers' tab in a REST message definition allows you to define custom headers that are automatically included in every request sent to that endpoint. This is the standard location for headers like 'X-API-Key' that must accompany all calls, as they are part of the HTTP request metadata, not query parameters or authentication credentials.

Exam trap

The trap here is that candidates confuse HTTP headers with query parameters or authentication profiles, assuming that custom API keys can be passed as query strings or handled by authentication mechanisms, when in fact they must be explicitly defined in the HTTP Headers tab of the REST message.

How to eliminate wrong answers

Option A is wrong because the 'Query Parameters' tab is for URL query string parameters (e.g., ?key=value), not HTTP headers; placing a header there would result in it being appended to the URL rather than sent as a header, causing the external system to reject the request. Option C is wrong because an 'Authentication Profile' is used for standard authentication methods (e.g., Basic Auth, OAuth) and is not designed to inject arbitrary custom headers; it would not include the 'X-API-Key' header unless the profile specifically supports custom header injection, which is not its intended purpose. Option D is wrong because a Scripted REST API defines the server-side endpoint that receives requests, not the client-side configuration for outbound REST messages; the developer is configuring the outbound call, not the endpoint itself.

237
MCQhard

A developer implemented the client script shown in the exhibit to auto-populate the assigned-to field based on the task type. However, when the task type is changed, the assigned-to field is not updated. The server-side script 'TaskTypeAjax' is correctly defined and returns a valid sys_id. What is the most likely reason for the failure?

A.The client script does not check if oldValue is different from newValue
B.The Script Include 'TaskTypeAjax' is not client-callable
C.The client script returns on isLoading, preventing execution
D.A UI policy is overriding the assigned-to field
AnswerB

It must be marked as client-callable in its definition.

Why this answer

The client script attempts to call a Script Include named 'TaskTypeAjax' from the client side. By default, Script Includes are not accessible from client scripts unless the 'Client callable' checkbox is enabled in the Script Include record. Since the script is failing to update the assigned-to field, the most likely cause is that 'TaskTypeAjax' is not marked as client-callable, preventing the GlideAjax request from executing successfully.

Exam trap

The trap here is that candidates assume any Script Include can be called from a client script, but ServiceNow enforces an explicit 'Client callable' flag to control access from the browser.

How to eliminate wrong answers

Option A is wrong because checking if oldValue differs from newValue is not required for the GlideAjax call to work; the issue is that the server-side script is not reachable from the client. Option C is wrong because returning on isLoading would prevent the script from running at all, but the question states the script is implemented and the field is not updated, implying the script executes but the Ajax call fails. Option D is wrong because a UI policy overriding the assigned-to field would not prevent the client script from making the Ajax call; it would only override the value after it is set, and the question indicates the server-side script is correctly defined and returns a valid sys_id, so the failure is in the client-server communication.

238
MCQmedium

A developer needs to create a scheduled job that runs every Monday at 8 AM to update all incidents with a priority of '1' that are still open. Which condition script should be used in the scheduled job?

A.var gr = new GlideAggregate('incident'); gr.addQuery('priority', 1); gr.query();
B.var gr = new GlideRecord('incident'); gr.addEncodedQuery('priority=1^active=true'); gr.query();
C.var gr = new GlideRecord('incident'); gr.get('priority', 1); gr.get('active', true);
D.var gr = new GlideRecord('incident'); gr.addQuery('priority', 1); gr.addQuery('active', true); gr.query();
AnswerB, D

Encoded query also works correctly.

Why this answer

Option B is correct because it uses `addEncodedQuery` with an encoded query string that combines both conditions (`priority=1^active=true`) into a single query, which is the standard approach for filtering records in a scheduled job. The `GlideRecord` object is properly instantiated and the query is executed with `gr.query()`, ensuring only incidents matching both criteria are retrieved for update.

Exam trap

ServiceNow often tests the distinction between `addQuery` and `addEncodedQuery`, and the trap here is that both Option B and Option D appear functionally identical, but the exam expects the encoded query approach as the more robust and standard practice for scheduled jobs, while `addQuery` chaining is also valid but less commonly used in this context.

How to eliminate wrong answers

Option A is wrong because it uses `GlideAggregate` instead of `GlideRecord`, which is designed for aggregation queries (e.g., counting, summing) and does not provide direct record iteration for updates. Option C is wrong because `gr.get('priority', 1)` and `gr.get('active', true)` are used incorrectly; `get()` retrieves a single record by sys_id or a specific field-value pair, not as a query filter, and chaining them does not combine conditions—it overwrites the previous call, resulting in only the last condition being applied.

239
Drag & Dropmedium

Drag and drop the steps to create a new Update Set in ServiceNow into the correct order.

Drag steps to the numbered slots on the right, or tap a step then tap a slot.

Steps
Order

Why this order

The sequence: navigate to Local Update Sets, create new, provide details, set state to In Progress, and submit.

240
MCQhard

A developer is testing a REST API call to retrieve active users with the ITIL role created since last month. The response returns an error. What is the most likely cause?

A.The Accept header should be application/xml.
B.The query parameter sysparm_query uses a script which is not allowed in REST API calls.
C.The endpoint should be /api/now/table/sys_user_list.
D.The query should use sysparm_fields instead of sysparm_query.
AnswerB

ServiceNow REST API does not evaluate client-side scripts in query parameters; the date must be precomputed.

Why this answer

The error occurs because the sysparm_query parameter in a REST API call to the /api/now/table/sys_user endpoint does not support scripts; it only accepts encoded query strings using operators like '=', '^', 'STARTSWITH', etc. Using a script in sysparm_query violates the REST API specification, which expects a simple query string, not executable code, leading to a bad request error.

Exam trap

ServiceNow often tests the misconception that sysparm_query can accept any JavaScript expression, when in fact it only supports a predefined set of operators and encoded query strings, not arbitrary scripts.

How to eliminate wrong answers

Option A is wrong because the Accept header should be application/json, not application/xml, as the default and most common response format for ServiceNow REST APIs is JSON; using XML would not cause an error but would be non-standard. Option C is wrong because the correct endpoint for querying the sys_user table is /api/now/table/sys_user, not /api/now/table/sys_user_list; the 'sys_user_list' suffix is not a valid table endpoint. Option D is wrong because sysparm_fields is used to specify which fields to return, not to filter records; filtering requires sysparm_query, so replacing sysparm_query with sysparm_fields would not retrieve active users with the ITIL role.

241
MCQhard

Refer to the exhibit. This script is placed in a business rule on the 'incident' table with the 'When to run' set to 'before' and 'Update' action. The incident table has an ACL that also prevents updates. The business rule runs and shows the error message but the record is still updated. What is the most likely cause?

A.The business rule condition is not met for this specific record.
B.The setAbortAction method is being called on a new record.
C.The ACL is overriding the business rule's setAbortAction.
D.The business rule should be set to 'after' instead of 'before'.
AnswerA

If the condition (e.g., advanced condition) is false, the script does not execute.

Why this answer

Option D is correct because the ACL may have a higher priority or the business rule's setAbortAction may not be honored if the ACL allows the operation. Actually, setAbortAction should abort, but if the ACL allows update, it may override? The typical reason is that the business rule runs after the ACL check, but if setAbortAction is called, it should stop. However, if the script uses setAbortAction correctly, it should work.

The most plausible cause is that the business rule is running after the update because the condition is on 'before' but the ACL might be checked earlier. Or the script is not being executed due to condition. Let's craft: Option D is correct because if the script is in a 'before' business rule, setAbortAction(true) prevents the update, but if there is also an ACL that allows the update, the ACL takes precedence.

Actually, setAbortAction works regardless. Better: The business rule might be executing after the update due to the order of operations? Let's think: In ServiceNow, business rules run before the database operation. setAbortAction should prevent the update. If the record is still updated, maybe the script is not triggered because the condition is not met.

Option D: 'The business rule condition is not met for this record.' That could cause it not to run. Let's make that correct.

242
MCQeasy

A developer is creating a REST API endpoint in ServiceNow that must accept JSON payloads and return a response. Which method should be used to parse the incoming request body?

A.JSON.parse(request.body)

Why this answer

Option D is correct because request.body returns a string representation of the request body, which must be parsed using JSON.parse if it is JSON. Option A is incorrect because request.body.data is not a standard property. Option B is incorrect because dataString is not a property.

Option C is incorrect because bodyJSON is not a method.

243
Matchingmedium

Match each ServiceNow scripting API to its function.

Drag a concept onto its matching description — or click a concept then click the description.

Concepts
Matches

Database operations (CRUD)

Aggregate queries (sum, count, etc.)

System-level methods (user, session, etc.)

Asynchronous server calls from client

Client-side form manipulation

Why these pairings

These are core Glide APIs used in ServiceNow scripting.

244
MCQhard

A developer notices that a custom table 'u_project' is not appearing in the 'Create New' menu even though the application scope is set correctly. The table has been created with the 'Create without application' flag unchecked. What is the most likely cause?

A.The 'Extensible' property is set to false.
B.The 'Create new record' property is set to false.
C.The 'Allow Configuration' property is set to false.
D.The table's roles are not assigned to the developer.
AnswerB

This property controls whether the table appears in the 'Create New' menu.

Why this answer

Option B is correct because the table property 'Create new record' must be enabled for the table to appear in the 'Create New' menu. Option A is wrong because the 'Allow Configuration' property affects dictionary attributes, not the new record menu. Option C is wrong because the 'Extensible' property controls whether other tables can extend this table, not the menu.

Option D is wrong because role-based access uses ACLs, but the menu visibility is controlled by the 'Create new record' property.

245
MCQhard

A Business Rule uses 'current.setAbortAction(true)' to stop a record from being saved. However, the record is still saved under certain conditions. Which scenario could cause this?

A.The Business Rule runs after the database operation.
B.The Business Rule is on a table that is extended from a table with a higher order Business Rule.
C.Another Business Rule runs in the same order but sets abort to false.
D.The Business Rule has a condition that is not met.
AnswerA

After rules cannot abort the operation.

Why this answer

Option A is correct because `current.setAbortAction(true)` must be called in a Business Rule that runs before the database operation (e.g., 'before' or 'before query' order). If the Business Rule runs 'after' the database operation, the record has already been committed to the database, so aborting the action has no effect on the save. The abort flag only prevents the pending database write; once the write is complete, the flag is irrelevant.

Exam trap

The trap here is that candidates assume `setAbortAction(true)` works regardless of when the Business Rule runs, but the platform only honors the abort flag in 'before' or 'before query' scripts, not in 'after' scripts.

How to eliminate wrong answers

Option B is wrong because a Business Rule on an extended table with a higher order rule does not inherently cause `setAbortAction(true)` to be ignored; order values determine execution sequence, but the abort flag still works if the rule runs before the database operation. Option C is wrong because `setAbortAction(false)` does not override a previous `setAbortAction(true)` in the same transaction; once abort is set to true, it remains true for the current operation, and no other script can reset it to false. Option D is wrong because if the condition is not met, the Business Rule does not execute at all, so `setAbortAction(true)` is never called, and the record saves normally—this is expected behavior, not a scenario where the abort is ignored despite being called.

246
MCQmedium

When creating a business rule in Studio, a developer wants the rule to run only when the state field changes from 'New' to 'Work in Progress'. Which condition should be used?

A.current.state.changesFrom('New')
B.current.state == 'New' && previous.state == 'Work in Progress'
C.current.state.changesTo('Work in Progress')
D.current.state.changes()
AnswerC

This correctly fires only when state changes to 'Work in Progress'.

Why this answer

Option C is correct because changesTo('Work in Progress') triggers when the field changes to that specific value. Option A triggers on any change, B triggers when changing from a value, and D checks current and previous values incorrectly.

247
MCQmedium

A company has a custom table 'u_incident_task' that extends 'task'. The developer wants to add a field 'u_approval' that is a reference to 'sysapproval_approver'. Which method is the correct way to create this field?

A.Create a 'List' field type and set the table to sysapproval_approver.
B.Create a 'Reference' field and set the reference table to 'sysapproval_approver'.
C.Create a 'Reference' field and set the table to 'task' and the reference field to 'sysapproval_approver'.
D.Create a 'Choice' field and populate it with sysapproval_approver values.
AnswerB

This creates a proper reference to the sysapproval_approver table.

Why this answer

Option B is correct because a Reference field is designed to create a link from one table to another, storing the sys_id of the target record. Since 'u_approval' needs to point to a specific record in the 'sysapproval_approver' table, a Reference field with the reference table set to 'sysapproval_approver' is the appropriate method. This ensures referential integrity and allows the platform to resolve display values and enforce relationships.

Exam trap

The trap here is that candidates often confuse 'Reference field' with 'List field' or 'Choice field', mistakenly thinking a List can store a single reference or that a Choice can dynamically pull values from another table, when in fact only a Reference field provides the correct relational link and sys_id storage mechanism.

How to eliminate wrong answers

Option A is wrong because a List field stores multiple values as a delimited string, not a single reference to a record in another table, and cannot enforce referential integrity. Option C is wrong because setting the reference table to 'task' and then specifying a reference field to 'sysapproval_approver' is incorrect; the reference table must be the target table itself, not an intermediate table. Option D is wrong because a Choice field stores a predefined set of static values, not dynamic references to records in another table, and cannot link to sysapproval_approver records.

248
MCQhard

A developer is troubleshooting a UI policy that sets a field to mandatory when another field equals 'Yes'. The UI policy works on desktop but not on the mobile app. What is the most likely cause?

A.The UI policy is set to 'Run on mobile' but the script is incompatible.
B.The field is not available on the mobile form.
C.The mobile app uses a different table.
D.The UI policy is set to 'Run on desktop' only.
AnswerD

UI policies have separate run options for desktop and mobile.

Why this answer

Option D is correct because UI policies have a 'Run on desktop' and 'Run on mobile' checkbox. By default, a new UI policy is set to run on desktop only. If the developer did not explicitly check the 'Run on mobile' option, the policy will not execute on the mobile app, causing the mandatory behavior to be absent on mobile while working on desktop.

Exam trap

ServiceNow often tests the distinction between 'Run on desktop' and 'Run on mobile' settings, trapping candidates who assume UI policies automatically apply to all platforms or who confuse this with field availability or table differences.

How to eliminate wrong answers

Option A is wrong because if the UI policy were set to 'Run on mobile', it would execute on mobile regardless of script compatibility; script incompatibility would cause errors, not a silent failure to run. Option B is wrong because if the field were not available on the mobile form, the UI policy would still attempt to run but might fail silently or show an error, but the question states the policy works on desktop, implying the field exists on the table; mobile forms typically include the same fields unless explicitly removed. Option C is wrong because the mobile app does not use a different table; it uses the same table as the desktop, and UI policies are table-scoped, so a different table would break the policy on both platforms.

249
MCQmedium

A developer needs to create a flow in Flow Designer that sends an email to a manager when a high-priority incident is created. The flow should retrieve the manager's email from the caller's user record. Which data pill should be used to access the caller's manager's email in the 'Send Email' action?

A.{{trigger.caller.manager_record.email}}
B.{{trigger.caller.manager.email}}
C.{{trigger.caller.email}}
D.{{trigger.incident.caller.email}}
AnswerB

Correct dot-walking over the 'manager' reference field to the user record's email.

Why this answer

Option B is correct because in Flow Designer, the dot-walking syntax `trigger.caller.manager.email` navigates from the incident record's caller field to the user record, then to the manager reference field (which is a sys_user record), and finally retrieves the email attribute of that manager's user record. This directly accesses the caller's manager's email address without needing an intermediate lookup.

Exam trap

The trap here is that candidates often confuse the field name `manager` with a non-existent `manager_record` or mistakenly use `trigger.incident` instead of `trigger` directly, leading them to pick options that either reference an invalid field or retrieve the wrong user's email.

How to eliminate wrong answers

Option A is wrong because `manager_record` is not a valid field name on the sys_user table; the manager field is a reference field named `manager`, not `manager_record`. Option C is wrong because `trigger.caller.email` retrieves the caller's own email, not the manager's email. Option D is wrong because `trigger.incident.caller.email` uses an incorrect path (`incident` is not a direct child of `trigger` in this context; the correct starting point is `trigger.caller`), and it also retrieves the caller's email rather than the manager's.

250
MCQhard

A Service Portal widget uses AngularJS. The developer needs to share data between the client script and the HTML template. What is the correct approach?

A.Use $rootScope to make data globally available.
B.Use $scope to store data in the client controller.
C.Use the 'c' object (c.data) provided by the widget framework.
D.Create a custom AngularJS factory to manage data.
AnswerC

The 'c' object is the official way to bind data between server and client in widgets.

Why this answer

Option B is correct because in ServiceNow portal widgets, the server-side data is passed via the 'c' object, and client scripts can modify 'c.data' which is accessible in the HTML template. Option A is wrong because using $scope directly is not recommended in portal widgets; 'c' is the scoped context. Option C is wrong because $rootScope is global and should be avoided.

Option D is wrong because factories are for reusable services, not for widget-specific data binding.

251
MCQhard

A developer needs to implement a server-side validation that prevents update to a record if a related record's status is 'Closed'. Where should this logic be placed?

A.ACL
B.Client script
C.UI policy
D.Business rule
AnswerD

Business rules execute on the server and can abort transactions based on conditions.

Why this answer

Option A is correct because a business rule runs server-side when a record is updated and can enforce the validation before the update occurs. Client scripts and UI policies are client-side and can be bypassed. ACLs are for access control, not validation.

252
MCQhard

A service portal developer needs to create a spreadsheet-like view for bulk editing incident records directly in the portal. Which ServiceNow feature is designed for this purpose?

A.Use the 'Form' widget with a multi-record template.
B.Use the 'Report' widget with a drill-down option.
C.Use a custom UI macro to display an HTML table with editable cells.
D.Use the 'Data Table' widget with the 'Inline Edit' option enabled.
AnswerD

This widget provides editable grid capabilities for the service portal.

Why this answer

The Data Table widget with inline editing allows users to edit records in a grid format, which is the intended solution for bulk editing in the portal.

253
Multi-Selecteasy

A developer needs to display a warning message to the user when the 'priority' field is changed to '1 - Critical'. Which TWO client-side implementations can achieve this?

Select 2 answers
A.Business Rule with 'when to run' set to 'before' and script to call g_scratchpad.message
B.UI Policy with condition: 'Priority changes' and action script to call g_form.showFieldMsg()
C.onLoad client script that checks the current value of priority and shows a message
D.Data Policy with condition on priority field and message set
E.onChange client script with a condition to check newValue and call g_form.showFieldMsg()
AnswersB, E

Correct: UI Policies can run client-side scripts on field change.

Why this answer

Option B is correct because a UI Policy with the condition 'Priority changes' triggers an action script when the priority field is modified, allowing the use of `g_form.showFieldMsg()` to display an inline warning message on the field. Option E is correct because an onChange client script fires when the 'priority' field changes, and within it you can check `newValue` against '1 - Critical' and call `g_form.showFieldMsg()` to show the warning. Both are client-side implementations that respond to field changes without a server round-trip.

Exam trap

The trap here is that candidates confuse server-side implementations (Business Rules, Data Policies) with client-side ones, or mistakenly think an onLoad script can detect a field change that occurs after the form has loaded.

254
MCQeasy

Refer to the exhibit. What does this data policy do?

A.Makes 'short_description' mandatory for all incidents regardless of state.
B.Makes 'short_description' mandatory when state is '1' (New).
C.Makes 'state' mandatory when 'short_description' is empty.
D.Makes 'short_description' read-only when state is '1'.
AnswerB

The condition checks if state equals '1', then makes short_description mandatory.

Why this answer

The correct answer is B. The data policy sets the 'short_description' field as mandatory when the 'state' field equals '1' (New). Option A is wrong because it says mandatory when state is New, but the condition is on state, not on short description.

Option C is wrong because it reverses the condition. Option D is wrong because it ignores the condition.

255
Multi-Selectmedium

Which TWO GlideRecord methods can be used to create OR conditions in a query? (Choose two.)

Select 2 answers
A.GlideRecord.ORQuery()
B.GlideRecord.addEncodedQuery()
C.Using addQuery().addOrCondition() pattern
D.GlideRecord.addOrCondition()
E.GlideRecord.addQuery()
AnswersB, D

addEncodedQuery() can include OR operators in the encoded query string, thus creating OR conditions.

Why this answer

B is correct because `GlideRecord.addEncodedQuery()` allows you to pass an encoded query string that can include OR conditions using the `^OR` operator. This method is a direct way to construct complex queries with OR logic without chaining multiple method calls. D is correct because `GlideRecord.addOrCondition()` explicitly adds an OR condition to the current query, typically used after an initial `addQuery()` call.

Exam trap

The trap here is that candidates confuse `addOrCondition()` with a non-existent `ORQuery()` method, or assume that `addQuery()` can be chained with `addOrCondition()` as a single fluent call, which is syntactically incorrect in ServiceNow.

256
MCQmedium

A service portal widget is supposed to load data from a table and display it in a list. The widget renders but shows no data. Which is the most likely cause?

A.The table's ACL denies read access to the user.
B.The widget's client script has a syntax error.
C.The portal page is not configured to include the widget.
D.An error in the widget's server script prevents data from being queried.
AnswerD

The server script is the primary data source; a scripting error would cause no data to be returned.

Why this answer

Option A is correct because the server script in the widget is responsible for querying data; if it has an error, no data is returned. Option B is wrong because ACL issues would typically cause an error message or empty result but less common than script errors. Option C is wrong because client script errors would affect interactivity, not initial loading.

Option D is wrong because the portal page configuration is usually fine if the widget renders.

257
MCQhard

A developer creates a business rule on the Incident table that executes a GlideRecord query to update related records. The rule runs on 'after' update and queries the Problem table to set a field. However, the update is not being committed. What is the most likely reason?

A.The developer forgot to use gr.insert() instead of gr.update().
B.The GlideRecord query requires an explicit gr.updateMultiple() or gr.commit() to persist changes.
C.After business rules cannot update other tables.
D.The query returns more than 100 records, causing a governor limit.
AnswerB

When updating multiple records, gr.updateMultiple() is needed to commit all changes at once.

Why this answer

In ServiceNow, when a GlideRecord query is used in an 'after' business rule to update records on another table, the changes are not automatically committed. The developer must explicitly call gr.updateMultiple() to persist updates to multiple records, or gr.update() for a single record. Option B correctly identifies this requirement, as the update is not being committed without an explicit method call.

Exam trap

The trap here is that candidates assume GlideRecord updates are automatically committed in any context, but ServiceNow requires explicit update calls in 'after' business rules for cross-table modifications, unlike 'before' rules where changes to the current record are auto-saved.

How to eliminate wrong answers

Option A is wrong because gr.insert() is used to create new records, not update existing ones; the issue here is about updating, not inserting. Option C is wrong because 'after' business rules can indeed update records on other tables; there is no restriction that prevents cross-table updates. Option D is wrong because while governor limits exist (e.g., 10,000 records per query), the problem states the update is not being committed, not that it fails due to a limit; the most likely cause is the missing explicit update call.

258
MCQeasy

To debug a Business Rule that runs on update, which technique is most efficient?

A.Add a breakpoint in the script.
B.Use the Business Rule debug tool.
C.Use the debugger in Studio.
D.Insert a gs.log() message.
AnswerB

Built-in tool specifically for debugging Business Rules.

Why this answer

Option C is correct because the Business Rule debug tool allows stepping through execution and inspecting variables. Option A logging is less efficient. Options B and D require development environment setup.

259
MCQmedium

A developer wants to customize the appearance of a Service Portal theme. Which approach is recommended to ensure maintainability and scalability?

A.Use LESS variables inside each widget's widget styles
B.Edit the default theme record to change primary colors
C.Define CSS custom properties in the theme's stylesheet and use them throughout widgets
D.Apply inline styles directly in widget templates for fine-grained control
AnswerC

CSS variables are globally available and can be updated in one place, making them ideal for theming.

Why this answer

Option A is correct because CSS variables allow centralized theme management. Option B is incorrect because inline styles are not maintainable. Option C is incorrect because overriding the theme record directly may be lost on upgrade.

Option D is incorrect because LESS variables in widgets are scoped and less reusable across the portal.

260
MCQmedium

An organization needs to import data from a SaaS application that provides a CSV file accessible via a direct URL. Which data source type should be configured?

A.REST data source
B.JDBC data source
C.File data source
D.LDAP data source
AnswerC

File data source can be configured to fetch from a URL.

Why this answer

Option D is correct: File data source can import from a URL. Option A is wrong because LDAP is for directory services. Option B is wrong because JDBC is for SQL databases.

Option C is wrong because REST is for web services.

261
MCQeasy

A developer needs to ensure that a catalog variable of type 'Reference' displays only active users from the sys_user table. Which property configuration should be applied to the variable?

A.Set 'Reference qual' to 'active=true'
B.Set 'Condition' to 'active=true'
C.Set 'Ref qual' to 'active=true'
D.Set 'Default value' to 'active=true'
AnswerC

Ref qual allows a condition to filter the reference list.

Why this answer

Option C is correct because the 'Ref qual' (Reference qualifier) property on a reference variable allows you to specify a condition to filter the records displayed in the lookup. Setting it to 'active=true' restricts the reference field to show only active users from the sys_user table, ensuring the developer meets the requirement.

Exam trap

The trap here is that candidates confuse 'Reference qual' with 'Ref qual' or think 'Condition' is the correct property, when in fact 'Ref qual' is the exact property name used on reference variables in ServiceNow.

How to eliminate wrong answers

Option A is wrong because 'Reference qual' is not a valid property name; the correct property is 'Ref qual' (abbreviated). Option B is wrong because 'Condition' is not a property on a reference variable; it is used on other field types like UI policies or data policies. Option D is wrong because 'Default value' sets a pre-selected record, not a filter on the available choices.

262
MCQmedium

A developer is creating a business rule that updates a field on the incident table whenever the state changes to 'Resolved'. The business rule should only run when the incident is updated via the form, not through web services. Which condition should be used?

A.Set the business rule to run only on 'Submit'.
B.Use the 'Filter Conditions' on the table to exclude web service users.
C.In the condition script, add '!gs.getUser().isWebService()'.
D.Set the 'When to run' to 'Update' and nothing else.
AnswerC

Correct: This prevents execution when the update comes from a web service.

Why this answer

The condition should check if the update did not originate from a web service. The method 'gs.getUser().isWebService()' returns true if the current user is a web service user.

263
Multi-Selectmedium

A developer is creating a custom table 'u_project_risk' to track risks associated with projects. The table must: (1) Automatically set the 'state' field to 'Open' when a new record is created. (2) Prevent deletion of records if the state is 'Closed'. (3) Display a warning message when a user changes the state from 'In Progress' to 'Closed'. Which THREE approaches should the developer use?

Select 3 answers
A.Set a default value for the 'state' field to 'Open'
B.Create a before business rule to check state on update
C.Create a client script that shows a warning on state change
D.Create a business rule that aborts the delete operation on condition state='Closed'
E.Define a reference qualifier on the 'project' field
AnswersA, C, D

Default value sets initial state.

Why this answer

Option A is correct because setting a default value on the 'state' field to 'Open' ensures that whenever a new record is created in the 'u_project_risk' table, the field automatically populates with 'Open' without requiring any script or business rule. This is a declarative, low-code approach that leverages the platform's built-in default value functionality at the field level, guaranteeing the requirement is met even if the record is created via web services or import sets.

Exam trap

ServiceNow often tests the distinction between server-side and client-side logic; the trap here is that candidates might think a 'before' business rule on update (Option B) is needed for the warning, but warnings must be client-side (Option C), and deletion prevention must be server-side (Option D).

264
MCQmedium

A ServiceNow developer has created a custom UI page using the 'UI Page' module. The page is accessible via a direct URL, but when the user navigates to it, the page appears blank with no errors in the browser console. What is the most likely cause?

A.The page references an undeployed client script that fails silently
B.The 'Requires role' ACL restricts the page content from rendering for the user
C.The page is not set as 'Published' in the UI Page configuration
D.The page is using the 'direct' processing type instead of 'producer'
AnswerB

ACL restrictions can cause the page to render blank if the user does not have the required role, and no error will appear in console because the server simply omits content.

Why this answer

Option B is correct because a blank UI page without console errors often indicates that the page lacks the required processing directive or that the HTML content is missing due to an ACL restriction. Since there are no errors, the page is being reached, but the content is suppressed. Option A is incorrect because the processing type does not cause a blank page.

Option C is incorrect because if the page was not published, it would typically show an authorization error. Option D is incorrect because a missing client script would not cause the entire page to be blank.

265
MCQmedium

An organization uses a scheduled data import to load incident data from an external system into ServiceNow. The import set runs successfully, but the transform map sometimes fails to update certain records because the unique key field (sys_id) from the source does not match the sys_id in ServiceNow due to a different format. The team wants to update existing records based on a custom 'external_id' field in the incident table, which is guaranteed to be unique and correctly populated from the source. The target table already has a unique index on 'external_id'. Which configuration should the developer implement to achieve reliable updates?

A.Use a database view to join the import set and incident table on the external_id field.
B.Modify the existing transform map to use 'update' action and set coalesce on the sys_id field.
C.Create a new transform map with coalesce on the 'external_id' field and map the source field to incident.external_id.
D.Increase the scheduled import frequency to overwrite the records.
AnswerC

Correct: Coalesce on 'external_id' enables matching and updating existing records based on that unique field.

Why this answer

Option A is correct because the developer should create a new transform map (or modify the existing one) with coalesce on the 'external_id' field, mapping the source field to the target 'external_id'. This allows the system to match and update records based on that field. Option B is wrong because coalesce on sys_id would not match due to format differences.

Option C is not a solution for data import updates. Option D does not address the matching issue.

266
MCQmedium

A data source is configured to import XML files from a REST endpoint. The XML contains nested elements. To properly map the data, which transform map feature is most useful?

A.Field mapping using dot-walk notation in 'Field name to map to' column.
B.Adjust the data source's 'XML parsing' settings.
C.Use 'Choice mapping' to map nested values.
D.Scripted transform with GlideRecord queries.
AnswerA

Dot-walk navigates nested structures directly.

Why this answer

Option B is correct because dot-walk notation (e.g., parent.child) allows mapping to nested XML elements. Option A (scripted transform) could be used but is less direct. Option C (data source parsing options) affect how the data is initially parsed, not mapping.

Option D (choice mapping) is for choice fields.

267
Multi-Selectmedium

Which TWO statements about Database Views in ServiceNow are correct?

Select 2 answers
A.Database Views improve write performance by reducing the number of tables.
B.Database Views are stored as separate physical tables.
C.Database Views allow direct updates to the underlying tables through the view.
D.Database Views can be used to join multiple tables for reporting purposes.
E.Database Views can include fields from parent and child tables.
AnswersD, E

Correct, they are used for reporting across tables.

Why this answer

Database Views in ServiceNow are virtual tables that combine data from one or more tables without storing the data physically. They are primarily used for reporting and data analysis, allowing you to join multiple tables and present a unified dataset. Option D is correct because Database Views are specifically designed to join multiple tables for reporting, enabling complex queries across related records.

Exam trap

ServiceNow often tests the misconception that Database Views are physical tables or that they can improve write performance, when in fact they are virtual and read-only, designed solely for reporting and data aggregation.

268
MCQmedium

A company has a custom table 'u_asset' with a reference field 'u_location' pointing to 'cmn_location'. When a user changes the location on an asset record, the system must automatically update the location on all related 'u_asset_software' records. Which approach should the developer use?

A.Create a Client Script that runs on load to update related records.
B.Create an ACL to automatically propagate changes.
C.Create a Business Rule that runs on update of the 'u_asset' table and updates related records.
D.Create a UI Policy that sets the location field on related records.
AnswerC

Business Rules run server-side and can update related records.

Why this answer

Option C is correct because a Business Rule that runs on the 'update' operation of the 'u_asset' table can directly query and update all related 'u_asset_software' records using GlideRecord. This server-side logic ensures the location change is propagated reliably, regardless of how the asset record is updated (UI, web service, import set, etc.), and it executes within the same database transaction for data consistency.

Exam trap

The trap here is that candidates confuse client-side mechanisms (Client Scripts, UI Policies) with server-side automation, or mistakenly think ACLs can perform data updates, when only a Business Rule can reliably propagate changes across tables on the server side.

How to eliminate wrong answers

Option A is wrong because a Client Script that runs on load cannot update related records; it runs in the browser and can only modify the current form's fields, not perform server-side updates on other tables. Option B is wrong because an ACL (Access Control List) controls read/write permissions on records, not data propagation or automated updates. Option D is wrong because a UI Policy is a client-side mechanism that sets field values on the current form based on conditions; it cannot update records on a different table like 'u_asset_software'.

269
MCQmedium

A developer is customizing a form layout for the 'incident' table. They want to group related fields into titled sections for better usability. Which approach should they use?

A.Create a UI Page and embed it in the form via an HTML field
B.Add fields to form sections via the Form Layout module
C.Use a catalog client script to rearrange fields dynamically
D.Use a UI Policy to show/hide groups of fields
AnswerB

Form sections allow organizing fields into titled groups on a form.

Why this answer

Option C is correct because form sections are the standard way to group fields on a form. Option A is incorrect because UI Policies do not create sections. Option B is incorrect because UI Pages are not for form layout.

Option D is incorrect because catalog client scripts are for service catalog forms, not standard forms.

270
Multi-Selectmedium

A ServiceNow developer is building an integration using IntegrationHub to connect to a third-party system via REST. The system requires OAuth 2.0 with client credentials grant flow. Which TWO configurations are mandatory for setting up this integration in IntegrationHub?

Select 2 answers
A.OAuth server discovery URL (well-known endpoint)
B.Token request endpoint URL (e.g., https://example.com/oauth/token)
C.Base64 encoding of the client secret
D.Username and password for user impersonation
E.OAuth client ID and client secret from the third-party system
AnswersB, E

Required to obtain an access token.

Why this answer

Option B is correct because the client credentials grant flow requires a direct token request endpoint URL where the client sends its credentials (client ID and secret) to obtain an access token. IntegrationHub must be configured with this specific endpoint to complete the OAuth 2.0 handshake, as the grant type does not involve user interaction or discovery endpoints.

Exam trap

ServiceNow often tests the distinction between mandatory and optional OAuth 2.0 configurations, and the trap here is that candidates mistakenly think the well-known discovery URL or Base64 encoding is required, when in fact the client credentials flow only needs the token endpoint and the client credentials themselves.

271
MCQeasy

What happens when a user changes the state from '2' to '1' on an incident record?

A.Nothing happens because the script does not have a return statement.
B.The record is saved without any message because setAbortAction is ignored in 'before' rules.
C.The record is saved and a message 'State change is not allowed' is shown.
D.The record is not saved and an error message 'State change is not allowed' is displayed.
AnswerD

The condition matches, so the action is aborted and error shown.

Why this answer

Option D is correct because in a 'before' business rule, calling `current.setAbortAction(true)` prevents the database operation from completing and displays the error message specified in `gs.addErrorMessage()`. When the state changes from '2' to '1', the script checks for this condition and aborts the save, showing 'State change is not allowed'. This is a standard pattern for enforcing state transition restrictions in ServiceNow.

Exam trap

The trap here is that candidates often confuse 'before' business rules with 'after' rules, mistakenly thinking that `setAbortAction` only works in 'after' rules or that a missing return statement causes the rule to be ignored.

How to eliminate wrong answers

Option A is wrong because a 'before' business rule does not require a return statement; the abort action is controlled by `setAbortAction(true)`, not by a return value. Option B is wrong because `setAbortAction` is fully respected in 'before' rules; it is not ignored, and it prevents the record from being saved. Option C is wrong because the record is not saved when `setAbortAction(true)` is called; the error message is displayed, but the save is aborted.

272
MCQhard

A large enterprise runs ServiceNow on a single instance. They have a custom table 'u_project_task' that stores task details for projects. Each project task has a reference field to the 'u_project' table. The 'u_project' table has approximately 50,000 records, and the 'u_project_task' table has about 2 million records. Users report that opening a project record and viewing its related tasks takes over 30 seconds. The system uses an out-of-box related list to display tasks. The instance has standard hardware resources. The administrator has already confirmed that there are no performance issues with the database server or network. Which course of action should the administrator take to improve the performance of the related list?

A.Archive project tasks older than 1 year to a separate table to reduce the data volume.
B.Create a database index on the 'u_project' field in the 'u_project_task' table to speed up the join.
C.Increase the glide.ui.related_list.max_timeout property to allow the query more time.
D.Add additional application nodes to the instance to distribute the load.
AnswerB

An index on the foreign key can significantly improve query performance for related lists.

Why this answer

The performance bottleneck is the database query that joins the large 'u_project_task' table (2M records) with the 'u_project' table on the reference field. Without an index on the 'u_project' field in 'u_project_task', the database must perform a full table scan for each related list query. Creating a database index on that foreign key column allows the database to use an index seek, dramatically reducing query time.

Exam trap

The trap here is that candidates often confuse performance tuning with scaling infrastructure or extending timeouts, failing to recognize that the root cause is a missing database index on the foreign key column used in the JOIN.

How to eliminate wrong answers

Option A is wrong because archiving data to a separate table does not eliminate the need for an efficient join; the remaining active tasks could still be numerous, and the query would still perform a full scan without an index. Option C is wrong because increasing the glide.ui.related_list.max_timeout property only extends the allowed execution time, it does not address the root cause of the slow query; the query will still take the same amount of time, just not time out. Option D is wrong because adding application nodes distributes web and business logic load, but the bottleneck is a single database query; additional nodes will not speed up the database join itself.

273
MCQhard

A developer runs this widget server script and expects data.count to be the number of active incidents. However, the widget displays 'undefined' for data.count. What is the most likely cause?

A.The addQuery method syntax is incorrect; it should use a condition string.
B.The while loop uses next(); it should use hasNext() instead.
C.The script is missing the function parameters (options, data) that provide the data object.
D.GlideRecord requires an initialize() call before query.
AnswerC

Without parameters, data is not defined in the closure.

Why this answer

In ServiceNow widget server scripts, the function signature must include the parameters (options, data) to access the data object that is passed to the client script. Without these parameters, the data variable is undefined, causing data.count to display 'undefined'. The script likely defines the function without parameters or with incorrect ones, so the data object is not available.

Exam trap

ServiceNow often tests the requirement for explicit function parameters in widget server scripts, trapping candidates who assume data is globally accessible or who focus on GlideRecord syntax errors instead of the missing parameter signature.

How to eliminate wrong answers

Option A is wrong because the addQuery method syntax is correct as shown; it accepts a field name and value, not a condition string. Option B is wrong because the while loop using next() is valid and does not require hasNext(); hasNext() is used in GlideAggregate, not GlideRecord. Option D is wrong because GlideRecord does not require an initialize() call before query; the new GlideRecord() constructor initializes the object automatically.

274
MCQeasy

A developer is creating a new custom table for tracking software licenses. The table must inherit the core fields (sys_id, sys_created_by, etc.) and support extensibility for future sub-tables. Which base table should be used?

A.Use the Configuration Item (cmdb_ci) table as a base
B.Create a new table that extends directly from sys_db_object
C.Extend from the Task table
D.Clone the Incident table and remove unnecessary fields
AnswerB

Correct; creating a custom table that extends from the base system object provides only core fields and allows future extensibility without unnecessary overhead.

Why this answer

Option B is correct because extending a new table directly from sys_db_object creates a base table that automatically inherits the core system fields (sys_id, sys_created_by, etc.) and supports extensibility for future sub-tables. This is the standard approach in ServiceNow for creating custom tables that are not tied to any specific application or business logic, ensuring maximum flexibility and adherence to platform best practices.

Exam trap

The trap here is that candidates often choose the Task table (Option C) because they mistakenly believe all custom tables must extend from a 'task-like' structure, but ServiceNow explicitly recommends sys_db_object for custom base tables that do not require task management features.

How to eliminate wrong answers

Option A is wrong because the Configuration Item (cmdb_ci) table is designed for CMDB-related data and includes fields and relationships specific to configuration management, which would impose unnecessary constraints and overhead for a software license tracking table. Option C is wrong because extending from the Task table would inherit workflow-related fields (e.g., state, priority, assignment) that are irrelevant for a simple license tracking table and would complicate the data model. Option D is wrong because cloning the Incident table and removing fields is not a supported method for creating a base table; it would carry over incident-specific business rules, ACLs, and references, leading to maintenance issues and violating extensibility principles.

275
MCQeasy

A developer is tasked with writing a business rule that should only execute when the record is being updated and the value of the 'state' field changes from 'In Progress' to 'Resolved'. Which condition should be used in the business rule?

A.current.operation() == 'update' && previous.state == 'In Progress' && current.state == 'Resolved'
B.current.operation() == 'update' && current.state.changesFrom('In Progress') && current.state.changesTo('Resolved')
C.current.operation() == 'update' && current.state.changes() && current.state == 'Resolved'
D.current.operation() == 'update' && current.state == 'Resolved' && previous.state == 'In Progress'
AnswerB

These methods are specifically designed for checking field value transitions.

Why this answer

The changesFrom() and changesTo() methods are the recommended approach for checking field transitions. Options A and D use direct comparison but are less efficient. Option C only checks that state changed, not the specific transition.

276
Multi-Selectmedium

Which TWO client-side APIs are available in a Service Portal widget to interact with form fields?

Select 2 answers
A.spUtil.setValue()
B.c.data (to bind data to the template)
C.g_form.setValue() (to set a field value in a form)
D.g_list.setValue() (to set a value in a list)
E.$scope (to set values in the controller)
AnswersB, C

c.data is the official way to pass data between server and client in widgets.

Why this answer

Options A and C are correct. In a widget, 'c.data' is the primary data binding mechanism, and 'g_form.setValue()' can be used if a form is present (e.g., in a widget that includes a form). Option B is wrong because $scope is AngularJS but not the recommended pattern.

Option D is wrong because g_list is for list forms, not standard forms. Option E is wrong because spUtil does not have a setValue method.

277
MCQhard

Refer to the exhibit. A developer created this Script Include for use in a Service Portal widget. When calling the processor from a client script, the developer passes no 'sysparm_name' parameter. What will be the result?

A.The script will return an empty array.
B.The script will execute the processor's constructor only.
C.The script will throw an error because the method is not allowed.
D.The script will run the getData method by default.
AnswerB

Correct: without sysparm_name, only the constructor runs; no method is executed.

Why this answer

When a Script Include is invoked from a Service Portal widget via a processor, the processor's constructor runs automatically. If no 'sysparm_name' parameter is passed, the processor does not know which method to call, so only the constructor executes. The constructor typically initializes properties but does not return data, resulting in no output.

Exam trap

The trap here is that candidates assume a default method (like getData) runs when no method is specified, but ServiceNow's processor architecture requires an explicit 'sysparm_name' to invoke any method beyond the constructor.

How to eliminate wrong answers

Option A is wrong because an empty array is not returned; the constructor runs and returns nothing unless explicitly coded to return an array. Option C is wrong because no error is thrown; the processor simply does not call any method beyond the constructor. Option D is wrong because the getData method is not called by default; it only runs if the 'sysparm_name' parameter matches its name.

278
Multi-Selecteasy

Which TWO of the following are valid authentication options for a Scripted REST API in ServiceNow?

Select 2 answers
A.JWT
B.Basic Auth
C.API Key
D.SAML 2.0
E.OAuth 2.0
AnswersB, E

Basic Auth is a supported authentication option for Scripted REST APIs.

Why this answer

Basic Auth is a valid authentication option for Scripted REST APIs in ServiceNow because it allows the API to authenticate requests using a username and password pair encoded in the Authorization header. ServiceNow natively supports Basic Auth for inbound REST calls, making it a straightforward choice for legacy or simple integrations.

Exam trap

ServiceNow often tests the misconception that JWT or API Key are native authentication options for Scripted REST APIs, when in fact ServiceNow only supports Basic Auth and OAuth 2.0 as built-in choices for this specific API type.

279
MCQmedium

A developer writes a Business Rule to calculate a total on an Aggregate field. The rule runs on 'insert' and 'update' on the parent table. However, the total is not updating correctly when child records are deleted. Why?

A.The Business Rule should use 'current' and 'previous' to detect deletion.
B.The Business Rule should be on the child table's delete event.
C.The Business Rule should also run on 'delete'.
D.The Business Rule should be a Global Business Rule.
AnswerB

Child delete triggers need separate rule on child table.

Why this answer

A Business Rule that runs on 'insert' and 'update' on the parent table will not fire when a child record is deleted, because the delete event occurs on the child table, not the parent. To correctly update an aggregate field on the parent when child records are deleted, the Business Rule must be defined on the child table's 'delete' event. This ensures the rule executes when the child record is removed, allowing the aggregate to be recalculated.

Exam trap

The trap here is that candidates assume a Business Rule on the parent table with a 'delete' event will catch child deletions, but in ServiceNow, the delete event only fires on the table where the record is actually deleted, not on related parent records.

How to eliminate wrong answers

Option A is wrong because 'current' and 'previous' are used to compare field values within the same record, not to detect deletion events on a different table; they cannot trigger a rule on the parent when a child is deleted. Option C is wrong because adding 'delete' to the parent table's Business Rule still does not fire when a child record is deleted—the delete event must be on the child table itself. Option D is wrong because making the rule Global does not change the event trigger; a Global Business Rule still requires the correct table and event (child table delete) to execute.

280
Multi-Selecteasy

Which TWO data types are available in ServiceNow for storing date and time values?

Select 2 answers
A.Time
B.Date/Time
C.Duration
D.Date
E.Timestamp
AnswersB, D

Stores date and time.

Why this answer

ServiceNow provides two dedicated data types for storing date and time values: 'Date' for calendar dates without time, and 'Date/Time' for combined date and time values. These are the correct choices because they directly map to the platform's field types used in tables like Task and Incident for tracking creation and due dates.

Exam trap

The trap here is that candidates confuse 'Duration' with a time-of-day value, but Duration is specifically for elapsed time intervals (e.g., 1d 2h 30m), not for storing a point in time like a date or time of day.

281
MCQhard

A scoped application includes a script include that is intended to be used by a business rule in the global scope. The script include is marked as 'Client callable: false' and 'Accessible from: This application only'. The business rule cannot call the script include. Which change fixes this?

A.Set the script include name to start with 'global_'
B.Move the script include to the global scope
C.Change 'Accessible from' to 'All application scopes'
D.Set 'Client callable' to true
AnswerC

Correct; this setting allows the script include to be used by scripts in other scopes.

Why this answer

Option C is correct because the business rule in the global scope cannot access a script include restricted to 'This application only'. Changing 'Accessible from' to 'All application scopes' allows the global-scope business rule to invoke the script include, as cross-scope access is controlled by this property. The 'Client callable' setting is irrelevant for server-side business rules.

Exam trap

ServiceNow often tests the misconception that 'Client callable' controls all cross-scope access, but the trap here is that server-side cross-scope access is governed solely by the 'Accessible from' property, not the client-callable flag.

How to eliminate wrong answers

Option A is wrong because prefixing the script include name with 'global_' does not override the 'Accessible from' restriction; naming conventions do not grant cross-scope access. Option B is wrong because moving the script include to the global scope would break the scoped application's encapsulation and is unnecessary when the 'Accessible from' property can be adjusted. Option D is wrong because 'Client callable' controls client-side (browser) access, not server-side invocation by a business rule.

282
Multi-Selecthard

Which THREE are benefits of extending a table rather than creating a new table from scratch?

Select 3 answers
A.Automatically inherits all business rules and client scripts from the parent
B.Supports creating multiple child tables from the same parent
C.Inherits all fields and relationships from the parent table
D.Child records automatically appear in reports on the parent table
E.Can add new fields specific to the child without modifying the parent
AnswersB, C, E

Multiple child tables can extend a single parent, enabling data polymorphism.

Why this answer

Options A, B, and D are correct. Extending inherits all fields (A), allows adding new child-specific fields (B), and supports creation of multiple child tables from the same parent (D). Option C is false because business rules are inherited but can be overridden; more importantly, not all rules automatically apply without configuration.

Option E is false because child records do not automatically appear in parent table reports unless the report is configured to include child tables.

283
Multi-Selectmedium

A developer needs to create a custom UI page in ServiceNow. Which TWO methods can be used to achieve this? (Choose two.)

Select 2 answers
A.Write a client script that renders HTML dynamically
B.Build a Service Portal widget and embed it in a portal page
C.Define a UI Macro and include it in a form
D.Add a new section to an existing form layout
E.Create a UI Page record in the 'UI Pages' module
AnswersB, E

Service Portal widgets can create pages within a portal context.

Why this answer

Correct options A and B. A: UI Pages are created via the 'UI Page' module. B: Service Portal widgets also render UI but are separate.

C: UI Macros are reusable components, not pages. D: Form sections are layout elements on existing forms. E: Client scripts are code snippets, not pages.

284
Multi-Selectmedium

Which TWO of the following are valid ways to personalize a Service Portal widget without modifying the original widget code?

Select 2 answers
A.Extend the widget via Widget Library
B.Override the widget's server script via a Business Rule
C.Modify the widget's HTML template directly in the instance
D.Use a Widget Instance option to override properties
E.Create a new widget from scratch
AnswersA, D

Extending a widget via the Widget Library creates a new version that inherits from the original, allowing customization.

Why this answer

Options B and C are correct because they allow personalization without altering the original widget. Option A is wrong because modifying the HTML template directly alters the core widget. Option D is wrong because creating a new widget from scratch is not personalization but creation.

Option E is wrong because there is no standard Business Rule to override server scripts of a widget.

285
MCQeasy

A junior developer is creating a new catalog item for requesting software licenses. The catalog item includes several variables such as software name, quantity, and cost center. The business requires that when a user submits the request, the cost center variable should automatically populate with the cost center of the user's manager. The developer has written a script in the 'On Load' catalog client script to populate the cost center field. However, during testing, the cost center field remains empty after the form loads. The developer checks the script and finds it uses GlideAjax to call a Scripted REST API to fetch the manager's cost center. What is the most likely cause of the issue?

A.The cost center variable is read-only and cannot be set by client scripts.
B.The Scripted REST API is not accessible from client scripts due to cross-origin restrictions.
C.The GlideAjax call is missing the callback function.
D.The 'On Load' client script runs before the GlideAjax response is received.
AnswerD

Correct: The script sets the field value before the async response returns.

Why this answer

The 'On Load' catalog client script triggers when the form loads, but GlideAjax makes an asynchronous call to the server. The script continues executing without waiting for the response, so the cost center variable remains empty until the callback fires. Since the callback updates the field asynchronously, the field appears empty on load because the response hasn't arrived yet.

Exam trap

ServiceNow often tests the asynchronous nature of GlideAjax in client scripts, tricking candidates into thinking the issue is a missing callback or a permission problem, when the real flaw is the timing of the response relative to the form load.

How to eliminate wrong answers

Option A is wrong because read-only variables can still be set by client scripts using g_form.setValue(), though the user cannot edit them manually. Option B is wrong because GlideAjax uses the same origin as the instance, so cross-origin restrictions do not apply; it calls a Scripted REST API on the same ServiceNow instance. Option C is wrong because while a missing callback would prevent the response from being processed, the question states the developer used GlideAjax to call the API, implying a callback exists; the core issue is the asynchronous timing, not the absence of a callback.

286
MCQhard

A UI Macro on a form is causing slow load times. The macro uses multiple GlideRecord queries in its server-side script. The developer wants to optimize performance without altering functionality. Which action is most effective?

A.Load the macro asynchronously using UI Macro configuration
B.Move the queries to a client script using GlideAjax to reduce server load
C.Use g_form.addOption() to populate a reference field instead of building the macro
D.Replace GlideRecord queries with GlideAggregate and cache the results
AnswerD

GlideAggregate reduces the number of queries by using aggregates, and caching avoids repeated calls, but caching alone may not help if data changes frequently. Actually, using GlideAggregate to combine queries is more effective than caching alone.

Why this answer

Option B is correct because combining queries into a single GlideAggregate reduces database calls. Option A is incorrect because caching may help only if queries are repeated. Option C is incorrect because using client-side GlideAjax moves load to client but does not reduce server processing.

Option D is incorrect because asynchronous loading does not reduce total server work.

287
MCQeasy

A developer needs to import data from a CSV file into a custom table. Which ServiceNow module should be used for this task?

A.Scheduled Jobs
B.Update Sets
C.Import Sets
D.Data Source
AnswerC

Import Sets allow loading data from files and mapping fields.

Why this answer

Import Sets are the correct ServiceNow module for importing data from a CSV file into a custom table. They provide a structured pipeline that maps CSV columns to table fields, with staging tables for validation before final insertion. This is the standard approach for one-time or recurring data imports in ServiceNow.

Exam trap

The trap here is that candidates confuse 'Data Source' (a configuration record within Import Sets) with the overall module, leading them to select D instead of C, but the question asks for the module used to perform the import task.

How to eliminate wrong answers

Option A is wrong because Scheduled Jobs are used for running scripts or actions on a timer, not for importing CSV data into tables. Option B is wrong because Update Sets capture configuration changes (e.g., customizations) for moving between instances, not for importing external data like CSV files. Option D is wrong because Data Source is a sub-component within the Import Sets module that defines the source format (e.g., CSV, JDBC), but it is not the top-level module used to perform the import task.

288
Multi-Selecthard

Which TWO approaches are valid for applying custom theming to Service Portal? (Choose two.)

Select 2 answers
A.Applying a custom LESS file via Theme and Branding
B.Overwriting widget CSS via widget instance options
C.Modifying the Bootstrap CSS directly
D.Using the CSS Variable Editor in UI Builder
E.Using the Theme and Branding module
AnswersA, E

Correct: Custom LESS files allow advanced styling while maintaining upgradeability.

Why this answer

Modifying Bootstrap CSS directly is not upgrade-safe. Overwriting widget CSS via instance options is not a global theming approach. The correct methods are using the Theme and Branding module and applying custom LESS files.

289
Multi-Selecteasy

Which three elements are required to create a Service Portal widget that displays data from a table?

Select 3 answers
A.A widget dependency
B.An HTML template
C.A server script (Server-side script)
D.A CSS stylesheet
E.A client controller (AngularJS)
AnswersB, C, E

Defines the widget's user interface.

Why this answer

An HTML template is required because it defines the structure and layout of the widget's user interface. In Service Portal, the HTML template uses AngularJS directives to bind data from the server script and client controller, enabling dynamic rendering of table records.

Exam trap

ServiceNow often tests the misconception that a widget dependency is mandatory for any data display, but in reality, dependencies are only required when importing external scripts or styles, not for basic table queries.

290
MCQmedium

A company uses an import set to bring in hardware asset data from an external inventory system. The staging table 'u_hardware_staging' maps fields to the 'alm_hardware' table via a transform map. Recently, the import set started failing with the error 'Invalid reference field value: 'PO123' for field 'purchase_order''. The 'purchase_order' field on 'alm_hardware' is a reference to the 'purchase_order' table, and the staging field contains the purchase order number (e.g., 'PO123'). The transform map has a field map that uses the 'Find' and 'Map' functionality to match the purchase order number. The 'purchase_order' table uses the 'number' field as the display value. Which change should the administrator make to fix the error?

A.In the transform map, enable 'Find map for each record' and set the match field to 'number' on the purchase_order table
B.Modify the staging table to include the sys_id of the purchase order instead of the number
C.Change the field map to use 'Direct' instead of 'Find' and 'Map'
D.Create a database view between the staging table and the purchase_order table to auto-populate the reference
AnswerA

This configuration will use the number field to look up the corresponding sys_id and populate the reference field correctly.

Why this answer

Option B is correct because the error indicates that the transform map is not finding the matching purchase order record. Using 'Find map for each record' with the correct match field ('number') will resolve it. Option A is wrong because the lookup field is already correct.

Option C is wrong because it overcomplicates. Option D is wrong because the source table is fine.

291
MCQhard

A developer is troubleshooting an integration where an inbound SOAP message fails to insert a record into the 'change_request' table. The SOAP message is well-formed and the user has the 'change_manager' role. The ACL for the 'change_request' table allows write to 'admin' and 'change_manager'. What is the most likely cause?

A.The SOAP message is missing a mandatory field.
B.The 'change_request' table is locked for data imports.
C.The user's role is not recognized when using SOAP web services.
D.The SOAP message uses a different namespace.
AnswerA

Correct: Missing mandatory fields cause the insert to fail.

Why this answer

The most likely cause is that the SOAP message is missing a mandatory field, causing the insert to fail validation. The SOAP web service processes the request and if a required field is omitted, the insert is rejected.

292
MCQmedium

A company uses a custom application with a table 'incident_task' to track work on incidents. The requirement is to automatically reassign any incident_task that has not been updated in the last 7 days to a specific 'Escalation' group. A developer writes a Business Rule on the 'incident_task' table with the condition 'Current' table and runs on 'before query'. The script checks if (gs.daysAgo(current.sys_updated_on) >= 7) and then performs a current.assignment_group.setValue('escalation_group_sys_id'), followed by current.update(). After testing, the tasks are not being reassigned. What is the most likely cause of this issue?

A.The business rule should be changed to 'after' update.
B.Before query business rules cannot perform updates; they are read-only.
C.The condition should use 'sys_updated_on' instead of 'sys_updated_on' (the same field).
D.The script uses current.update() which causes recursion.
AnswerB

Before query business rules are designed for read operations and any attempt to update will be ignored.

Why this answer

Before query business rules in ServiceNow are executed during the retrieval of records from the database, and they are strictly read-only. They cannot perform updates, inserts, or deletes because the database operation is not yet complete. Attempting to call current.update() within a before query business rule will be ignored or cause an error, which is why the reassignment never occurs.

Exam trap

The trap here is that candidates may think any business rule can update the current record, but ServiceNow explicitly restricts before query rules to read-only operations, and the exam tests this specific constraint.

How to eliminate wrong answers

Option A is wrong because changing the business rule to 'after' update would not help; the issue is that the rule runs on 'before query', which is read-only, and an 'after' update rule would only fire on update operations, not on query. Option C is wrong because the condition already uses 'sys_updated_on' correctly; the field name is not the problem. Option D is wrong because while current.update() can cause recursion in other contexts (e.g., before/after update rules), in a before query rule it is simply not allowed to perform updates at all, so recursion is not the primary issue.

293
MCQhard

Refer to the exhibit. A developer created this Script Include to be used as a REST API endpoint. However, when calling the API, the response is empty. What is the most likely reason?

A.The Script Include is not marked as 'Client callable'.
B.The function name 'getOpenIncidents' is not exposed.
C.The GlideRecord query returns no results.
D.The Script Include is not marked as 'REST API endpoint' or does not extend the appropriate class.
AnswerD

For REST API, the Script Include must extend 'AbstractAjaxProcessor' and be marked as 'script' for REST, but the exhibit shows it extends AbstractAjaxProcessor, which is correct for GlideAjax, not for REST. Actually, for REST, you need to use 'Scripted REST API' or 'RESTMessage'? Wait, the exhibit shows it extends AbstractAjaxProcessor, which is used for GlideAjax, not for REST API. So the correct answer is that it should be a Scripted REST API instead. But Option B says 'not marked as REST API endpoint' which is the key: it should be a Scripted REST API, not a Script Include. So B is correct.

Why this answer

Option D is correct because a Script Include used as a REST API endpoint must either extend the appropriate class (such as 'RESTAPI' or 'RESTAPIV2') or be explicitly marked as a REST API endpoint in its definition. Without this, the platform does not recognize it as a valid endpoint, resulting in an empty response when the API is called.

Exam trap

ServiceNow often tests the misconception that any Script Include can serve as a REST API endpoint if it contains a function, when in reality it must extend the appropriate class or be explicitly marked as a REST API endpoint to be recognized by the platform.

How to eliminate wrong answers

Option A is wrong because 'Client callable' is a property that allows a Script Include to be invoked from client-side scripts (e.g., client scripts or UI policies), but it is not required for REST API endpoints; REST API Script Includes are server-side and do not need this flag. Option B is wrong because the function name 'getOpenIncidents' does not need to be explicitly exposed; REST API Script Includes use a specific method signature (e.g., get() or post()) that the platform automatically routes to based on the HTTP method, not arbitrary function names. Option C is wrong because an empty GlideRecord query would return an empty array or object, not an empty response; the response being empty (no JSON body at all) indicates the endpoint itself is not being reached, not that the query returned no results.

294
MCQmedium

A developer is creating a custom table for tracking hardware assets. The table must have fields for asset tag, serial number, and purchase date. The developer wants to ensure that the asset tag is automatically generated using a prefix followed by an incrementing number. Which approach should the developer use?

A.Use a calculated value that dot-walks to a number table
B.Set the default value of the asset tag field to 'AST-' + sys_id
C.Create a business rule that calculates the asset tag using a script that increments a counter
D.Configure a dictionary override on the asset tag field to auto-generate
AnswerC

A business rule can generate a unique, incrementing asset tag.

Why this answer

Option C is correct because ServiceNow does not have a built-in auto-increment field type, so a business rule must be used to generate a sequential asset tag. The script typically queries the table for the maximum existing number, increments it, and prepends the prefix (e.g., 'AST-0001'). This ensures uniqueness and proper sequencing without relying on sys_id, which is not sequential.

Exam trap

The trap here is that candidates assume sys_id is sequential or that dictionary overrides can generate values, but ServiceNow requires explicit scripting for auto-increment fields, and sys_id is a random GUID, not a sequential number.

How to eliminate wrong answers

Option A is wrong because a calculated value that dot-walks to a number table would not provide a reliable incrementing counter; number tables are static and not designed for dynamic sequence generation. Option B is wrong because using sys_id as part of the default value does not produce an incrementing number; sys_id is a 32-character hexadecimal GUID that is not sequential or human-readable. Option D is wrong because a dictionary override cannot auto-generate values; it only modifies field properties like length, label, or reference, not value generation logic.

295
Matchingmedium

Match each ServiceNow notification type to its trigger.

Drag a concept onto its matching description — or click a concept then click the description.

Concepts
Matches

Sends email based on record conditions

Sends text message

Sends message to Slack channel

Sends alert to mobile app

Makes automated phone call

Why these pairings

Notifications can be delivered through various channels.

296
MCQeasy

A developer needs to add a new table to an existing scoped application in ServiceNow Studio. What is the correct sequence of steps?

A.Open Studio, select the application, click 'Create Application File', choose 'Table', and define the table.
B.Navigate to 'Tables' module, create a new table, and then assign it to the application.
C.Open Studio, select the application, navigate to 'System Definition' > 'Tables' and create the table.
D.Open Studio, go to 'Application Files', click 'New', select 'Table' and configure.
AnswerA

This is the standard method to add a table to a scoped application in Studio.

Why this answer

Option A is correct because in ServiceNow Studio, the proper workflow to add a new table to an existing scoped application is to open Studio, select the application, click 'Create Application File', choose 'Table', and then define the table. This ensures the table is created within the application scope, maintaining proper application isolation and metadata association.

Exam trap

The trap here is that candidates may confuse the global 'Tables' module or 'System Definition' > 'Tables' path with the Studio-specific workflow, not realizing that scoped application tables must be created within Studio to maintain proper application context and metadata association.

How to eliminate wrong answers

Option B is wrong because navigating to the 'Tables' module directly creates a table in the global scope, not within the scoped application, which breaks application isolation and may cause conflicts. Option C is wrong because 'System Definition' > 'Tables' is a global navigation path that does not respect the application scope, and Studio does not use that path for scoped table creation. Option D is wrong because 'Application Files' in Studio is used to view existing application files, not to create new tables; the correct entry point is 'Create Application File'.

297
MCQmedium

A developer is building a custom application that requires a scheduled job to run every hour and check for overdue tasks. In ServiceNow Studio, what is the best way to implement this?

A.Set up a REST API endpoint that external cron jobs call every hour.
B.Create a Business Rule that runs on 'after' insert and update to check for overdue tasks.
C.Use Flow Designer to create a scheduled flow that runs every hour.
D.Create a Scheduled Job in Studio that runs every hour and executes a script to check overdue tasks.
AnswerD

Scheduled Jobs are designed for periodic execution.

Why this answer

Option D is correct because ServiceNow Studio provides a native 'Scheduled Jobs' module that allows developers to create and manage recurring server-side scripts directly within the IDE. This approach leverages the platform's job scheduler, which runs on the node's clock and integrates with the glide system, ensuring reliable hourly execution without external dependencies or performance overhead from transactional triggers.

Exam trap

The trap here is that candidates often confuse Business Rules (which are event-driven) with Scheduled Jobs (which are time-driven), assuming any automation logic can be placed in a Business Rule, but the question explicitly requires a time-based schedule, making only a Scheduled Job appropriate.

How to eliminate wrong answers

Option A is wrong because using an external cron job to call a REST API endpoint introduces unnecessary network latency, security overhead (authentication, firewall rules), and dependency on an external system, whereas ServiceNow has a built-in scheduler that runs server-side without external calls. Option B is wrong because a Business Rule runs only on database insert or update operations, not on a time-based schedule, so it cannot check for overdue tasks every hour unless a record is modified, which is not guaranteed. Option C is wrong because Flow Designer scheduled flows are designed for low-code automation but are less efficient for pure script execution; they incur additional overhead from flow engine processing and are not the best practice for simple script-based checks, whereas a Scheduled Job executes a script directly with minimal overhead.

298
Multi-Selectmedium

Which TWO of the following are valid ways to customize the Service Portal login page?

Select 2 answers
A.Create a new widget instance on the 'loginpage' widget slot.
B.Override the 'Login' page in the portal record by creating a new page and setting it as the login page.
C.Add a widget option to the login widget to inject custom CSS.
D.Use CSS variables in the portal's theme (SCSS) to style the login page elements.
E.Set the 'login.css' property in sys_properties to a custom stylesheet URL.
AnswersB, D

You can create a custom page and set it as the login page.

Why this answer

Option B is correct because the Service Portal login page can be customized by overriding the 'Login' page in the portal record. This is done by creating a new page (e.g., a copy of the default login page) and setting it as the login page in the portal's configuration, which allows full control over the layout and widgets used. Option D is correct because CSS variables defined in the portal's theme (SCSS) can be used to style login page elements, as the theme's SCSS is compiled and applied globally to all portal pages, including the login page.

Exam trap

The trap here is that candidates often confuse widget slots with page types, thinking they can add a widget to a 'loginpage' slot (which does not exist), or they assume system properties can be used to inject custom CSS, when in fact Service Portal relies on theme SCSS and page overrides for login page customization.

299
MCQeasy

A developer is working on a catalog client script that references the 'caller_id' field on the 'sc_req_item' table. The caller_id field references the 'sys_user' table. To get the caller's email, which dot-walking syntax is correct?

A.current.caller_id.email
B.current.caller.email
C.current.caller_id(email)
D.current.caller_id.sys_user.email
AnswerA

Correctly dot-walks from caller_id to the email field on sys_user.

Why this answer

Option D is correct because dot-walking uses dot notation from the reference field to the target field. Option A is wrong because 'caller' is not a field. Option B is wrong because the table is sys_user, not sys_user_email.

Option C is wrong because parentheses are not used.

300
MCQhard

A large enterprise uses ServiceNow for IT service management. The instance has a custom table 'u_asset_tracker' with over 2 million records. The table is referenced by multiple other tables. Recently, users have reported that when they open a record in the 'u_asset_tracker' table, the form takes 15-20 seconds to load. Additionally, reports that query this table often time out. The instance is running on a mid-range server with 8GB RAM. The admin suspects database performance issues. Upon reviewing the sys_properties, the admin finds that 'glide.ui.auto_clear_filters' is set to false. Also, there are several business rules on the table that run on 'before' query and 'after' query. A script include that transforms data from 'u_asset_tracker' to another table is running frequently. The admin needs to improve performance. Which course of action should the admin take first?

A.Replace all GlideRecord queries with GlideAggregate for reports.
B.Disable the script include that transforms data to reduce load.
C.Review and disable unnecessary 'before query' and 'after query' business rules on the table.
D.Increase the server RAM to 16GB to handle the load.
AnswerC

Correct: These often cause overhead on every query.

Why this answer

Option C is correct because disabling 'before query' and 'after query' business rules can significantly improve query performance as they run for every query. Option A is wrong because increasing RAM may not address the root cause. Option B is wrong because GlideAggregate is for aggregation, not for general query performance.

Option D is wrong because the script include may be necessary; disabling it could break functionality.

Page 3

Page 4 of 7

Page 5

All pages