ServiceNow CAD Exam Study Guide

In this post you'll find resources for studying for the ServiceNow Certified Application Developer Exam (CIS-CAD).

This post contains everything I used to help me pass the exam. Similar to our other study guides, these resources are broken down by relevant links, links to study resources I used, and my notes from the learning course.

If you're new to ServiceNow certifications, learn how to get certified in ServiceNow.

Structure of the Study Guide:

  1. Relevant links -easily access the course, blueprint, and Webassessor
  2. Tables and roles - all tables and roles mentioned throughout the course listed
  3. Practice resources -links to resources I used to study for the exam
  4. Notes - a full list of notes from studying the content

Relevant Links

Practice Resources

Notes

*This section is broken down by module of the Now Learning CAD Course. The order is listed below:

I. Application Development Overview

II. Application Analysis and Design

III. Application and Modules

IV. Work with Application Forms

V. Control Access

VI. Automate Work

VII. Import and Integrate External Data

VIII. Test with ATF

IX. Application Development Topics for Further Study

I. Application Development Overview

A. Application Development Concepts

Why Develop a Custom Application?
Target the Right Applications
Processes Managed in Spreadsheets and Email
Department apps built on aging incumbent platforms
Applications with a 'request-fulfill' pattern
ServiceNow's platform is specialized for building B2E applications
Examples of Custom Applications

B. Scoped Application Model

Philosophy of Scoped Apps
History of Application Scopes
Include but are not limited to:

In the baseline case, custom apps have read access to each other's table records but cannot perform any other database operations

Modifications to legacy customization done in global

C. Application Development vs. Application Deployment

Application Repository
What is an Update Set?
What is the ServiceNow App Repository?

In a full stack development environment, you use a completely different method and process

What is CI/CD?

II. Application Analysis and Design

A. Business Logic and User Interface

Before creating any application, take the time to plan a strategy. The design may change during application development, but it is most efficient to start with a well-defined plan.

If you are not solving a business problem, you do not need an application.

Personas largely equate to roles in ServiceNow. Generally speaking, security is applied to applications and their records using roles. It is recommended that every application have at least a User and an Admin role.

Inputs can take many forms such as Users, spreadsheets, and web services. Outputs can also take many forms such as dashboards, reports, and emails.

There are many strategies for defining a process, such as SIPOC (Six Sigma), ASME Standard for Process Charts, and others. Choose a strategy that works well for you. The more detailed understanding you have of a process, the easier it is to create an application.

You can create a record producer for tables and database views that in the same scope as the record producer. You can also do this for tables that allow create access from applications in other scopes

B. Build a Scoped Architecture Data Model - Database Logic

For each application, admins can

Developer permissions are application-specific

Admins must be familiar with application files and the system table structure to set developer permissions

III. Application and Modules

A. Application Development Tools Overview

Guided, low code tool for developing rich web applications to store information, automate business processes, and solve business problems.

You can add several experiences to your application in App Engine Studio

Workspace

The GAC is enabled via the com.glide.sn-guided-app-creator plugin by default on new and upgraded instances.

GAC has two access points:

Integration Hub: Integration hub integrations are referred to as spokes, which are easy to configure and enable you to quickly add powerful actions without the need to write scripts

Table Builder: a tool for editing data tables that you've added to your application

UI Builder: a drag-and-drop, WYSIWYG editor for creating and editing Agent Workspace landing pages. To open UI Builder, use the Application Navigator to open Workspace Experience > Administration > All Workspaces

Flow Designer: enables process owners to automate work. Build multi-step flows from reusable components without having to code.

Creator Workflows: allow you to build connected digital workflow apps fast with a low-code platform

Process Automation Designer: allows you to build and manage multiple complex workflows easily with no-code playbooks and SN enterprise application development platform.

Creator Workflows

B. Create a Custom Application (Tables and Data) Using Guided App Creator (GAC)

In the tables field, enter the table name

To create a custom table without selecting an existing table:

To select an existing table and create a custom table:

Follow the steps for the table creation method that you selected

Base table(s) that contain the primary application records

Tables must have the Extensible option selected in order to be extended. You cannot extend a system or database view table

C. Link Loaner Application to GitLab Repo

Source control integration supports all custom applications: global-scoped and private-scoped.

Follow these steps to link a SN application to Git:

Use a MID server to link to a repository behind a firewall

Repository

Git Repository: A collection of files in a Git database

SN App Repository: A database containing ServiceNow apps

By default, the git repo has one branch names master considered the definitive branch.

In studio, once an application is linked to source control, a default branch is set. The default value is set to sn_instances/

Creating a stash takes ALL local changes

Steps to create a stash:
Steps to apply a stash to a branch:
The Action options are

D. Configure Application Menu, Create Files, Commit Changes

To add files from the global scope to a global application:
To move an application file between global applications:

It is not possible to change an application's scope. Legacy custom applications will always be part of the global scope. There is no migration path to a custom or different scope

To open an application for editing:

An application can be opened in only one Studio window at a time. Multiple studios can be open at the same time, but each must contain a different application.

To view the existing business logic for a table:
To create a new table:

IV. Work with Application Forms

A. Field, Lists, Forms and Views - Concepts

Steps to add a Field to a Table:
Field Type Best Practices
To Add or Not to Add

Benefit from extending a table:

Can you retitle an existing field?

Can you consolidate two fields into one?

Configuring the label on a field changes the label only for the current table and not for the parent table(s).

Deleting Fields from a table

New Fields and Forms

To add fields to a list:

Form Design Considerations
Ways to enhance user experience
To change field's Label:
  1. In studio, open Forms & UI > Forms > form name
  2. Hover over the field of interest in the Form Designer
  3. Select the Settings (gear) button
  4. Enter a new value in the Label field
  5. Save
To specify a new field's hint
  1. Open the table's form
  2. Right-click on the new field and select Configure Label
  3. Enter the mouse over text in the Hint field
  4. Save
Provide Real-time feedback
  1. Immediate and targeted feedback to users (requires scripting):
To Stylize a field:
  1. In studio, create a new style
  2. Configure the Table and Field name
  3. If configuring a choice list for a particular value enter the value in the Value Field
  4. Enter the preferred CSS style commands in the Style field
  5. Select the Submit button
Helpful CSS formatting commands:
  1. Font-weight:bold;
  2. Text-decoration:underline;
  3. Font-style:italic;
  4. Text-align:center;
  5. Text-align:right;
  6. Font-size:18px;
  7. Background-color:blue;
  8. Color:yellow;
User views for selective data display
Differentiation between mobile and desktop users
  1. In Studio, open Forms & UI > Forms >Form Name
  2. Create a new section by selecting the + button on an existing section
  3. Enter a name for the new Section and select the OK button
  4. Add fields to the new Section using the Field Navigator
  5. Select the save button
  1. Click on the user avatar in the instance banner
  2. Select preferences
  3. Click on the display tile
  4. Move the slider on the left to disable displaying form sections as tabs

V. Control Access

A. Configure Application Security

Application Menu Permissions
  1. Open the application for editing in studio
  2. In the Application Explorer, select Navigation > Application Menus>
  3. Select the Edit roles button (pencil)
  4. Add the permitted roles to the Selected list from the Available list
  5. Select the Done button
  6. Save
Module Permissions

Control access to modules through roles:

  1. Users without the role cannot see the module
  2. Users with the role can see the module

Depending on ACL may not see records

To set module permissions:
  1. Open the application for editing in studio
  2. In the Application explorer, select Navigation > Modules>
  3. In the visibility section, select the Edit roles button (pencil) to the right of the Roles field
  4. Add the permitted roles to the Selected list from the Available list
  5. Select the done button
  6. Save
Record and Field Permissions

If access is denied to a row, no field level rules can grant access
If access to a row is allowed but the field is denied, the field is not visible
If access to a row is allowed and access to a field is allowed, the field is visible

Access Control Rules: Working with .None
Access Control Rules: Working with .field
Access Control Rules: Working with .*
Should you create a table.* ACL?

If a user fails a table access control rule, the user is denied access to all fields in the table, even if the user would pass a field ACL rule
If a user passes a table ACL rule, but fails a field ACL rule, the user cannot access the field described by the field ACL rule

An Object Hierarchy identifies the search:

  1. Explicit rule on self
  2. Explicit rule on field in parent
  3. …until parent doesn't contain field
  4. Wildcard rule on self
  5. Wildcard rule on field in parent
  6. …until parent doesn't contain field
Access Control Configuration

Allow access if all of the following are true:

Access Control Scripting
Debugging Access Control - Field Level Debugging
Server-Side Scripting API - Security:
GlideSystem Methods
GlideRecord Methods

B. Set Application Access

Application Access

Runtime application protection against

The "Allow access to this table via web services" option is only selectable if the Accessible from option value is "All application scopes"

Accessible From Field:
Allow Configuration:

Allows other application scopes to create artifacts for an application

Business Rules, Access Control, and other metadata types can extend out of scope tables where Can read is selected.

Caller Access:
Protection Policies:

Protection Policies can be applied to:

Protection policies are not applied when applications are published and migrated to an instance using an Update Set

The Protection Policy options are:

VI. Automate Work

A. Flow Designer to Manage Deployment States

What is Flow Designer?

All flows consist of properties, a trigger, action(s), and the data collected or created. It also may contain conditions

When to use Flow Designer over Workflow:

Use Flow Designer if.

**If you are modifying a base instance code already using Workflow, continue using workflow**

Integration Hub

Extends Flow Designer to provide low-code to no-code integration capabilities with 3rd party applications. It allows developers to encapsulate integration actions into reusable components that do not require coding to implement

What is a Spoke?

Spokes are activated when the parent application is activated.

There are multiple default spokes available such as:

B. Create Application Properties

Application Properties:
Process for Creating Application Properties:

1. Create a System Property Category

  1. In studio, select the Create Application File button
  2. Enter system property in the filter field
  3. Select System Property Category in the Filter Results pane and then select the Create button
  4. Name the category. No special characters, spaces are allowed
  5. Provide a title
  6. Save

2. Add Properties

  1. Scroll down to properties section on the System Property Category form
  2. Select the New button
  3. Configure the property: Select the Lookup using list button on the Property field > Select the new button > Configure the property > Submit
  4. Go back to System Property Category form
  5. Scroll down to the Properties section on the System Property Category form
  6. Select the Edit… button
  7. Locate the property in the Collection list and add it to the Properties list
  8. Save
Order Properties
  1. Double-click in the Order column for the property
  2. Enter the desired value in the Order Field
  3. Select the save button
Create Properties Module
  1. With the Application open in Studio, select the Create Application File button
  2. Type the text Module in the Filter… field
  3. Select the Module in the Filter Results pane and select the Create button
  4. Configure the properties module using the screenshot as a guide
  5. Configure the Read and Write roles to be the application's admin role
  6. Save
  7. Optional: Add a Separator module. The Arguments field contents appear on the separator line in the Application Navigator
  8. Syntax: system_properties_ui.do?sysparm_title=property form header text>&sysparm_category=name of System Property Category>

C. Scheduled Script Execution and Email

Scheduled Script Execution

Periodic Database Queries Examples

Periodic Record Modifications Examples

**Scheduled script executes are never triggered by actions taken by users or by modifications to records***

To Create a Scheduled Script Execution:
  1. In Studio, select the Create New Application File button
  2. Enter Scheduled in the filter field
  3. Select Scheduled Script Execution in the Filter Results pane then select the Create button
  4. Configure the Scheduled Script Execution
  5. Save
Run This Script
Testing
What is Running When?
What is an Event?
Working with Events
  1. Add Event to Event Registry: Event registry is a table of Events that can be called and responded to.
  2. Generate Event
  3. Create Logic to respond to Event

**Unless otherwise specified, all user-created events appear in the default queue***

Registering Events

ServiceNow can only respond to Events that are registered. Registration means that the ServiceNow processes are able to recognize and react to Events

To register an event: In studio, create a new Event Registration > Configure the event > Save

Creating an Event - Workflow

The record that triggered the Workflow is automatically passed when the Create Event Activity is generated

Generating an Event - Script

Use a GlideSystem method:

Checking for and Responding to Events

1. Check: Look for generated events in System Logs > Events

Outbound Email

Email Notifications - Trigger

When to Send

Different configuration options when:

If using a record interaction as the trigger:

Who Will Receive

Receiving Email - Configuration:

The notification field on the user records determines if users receive email notifications. If send to event creator is not selected, email is not sent to the user who generated the event.

When testing email notifications:

What it Will Contain

**To dynamically reference a field value from the record that triggered the Notification, enclose the field name in $<>: $>. Use dot-walking to reference field values on related records: $.>. To reference the event parameters parm1 or parm2, use this syntax: $ or $ **

Adding Links to a Message

Links reference the record that triggered the notification or a related record

Testing Notifications

  1. After creating an Email Notification, select the Preview Notification button
  2. Select the Event Creator from the choice list
  3. Select the record to use for testing from the Preview Record choice list
  4. Examine the recipients, subject and message body

Script Actions:

Respond to Events

1. Current = object passed in from gs.eventQueue()

2. Event objection: parm1, parm2

Use this code fragment to see all the properties and values of the event object (you will get an ignorable warning from the syntax checker):

Script Includes:

Property Policy

Use Protection Policies to protect intellectual property by preventing modification or hiding Script Include logic

The Protection Policy options are:

Anatomy of a Utils Script Include

  1. Create class
  2. Create prototype: Initialize function >Other functions
  3. Include Utils Script Include
  4. Call Utils Method

1. Create Class and Prototype

2. Initialize Function

3. Utils function

4. Calling Utils Functions

VII. Import and Integrate External Data

A. Import Data

Before Importing Any Data:

Importing Data via Guided App Creator
  1. Create table from upload spreadsheet
  2. Upload XLSX - indicate which row contains the column headers. The default is set to 1. To include the data, make sure to select the import the spreadsheet data option
  3. Define Schema - if the field type is not listed, create a system property sn_g_app_creator.field_types and set the value to the field type
  4. Create table
Process for Importing via Import Set:

Data Source: Load Data --> Import Set Table (IST): Create Transform Map--> Transform map: --> Run Transform

**If you do not use the import option during Guided Application Creator, Import Sets provide a mechanism to pull data into ServiceNow. Import sets store data in Import Set tables. The import process skips records when the data in the instance is the same as the data being imported**

Loading Data into an Import Set Table - Excel
To create a New Import Set Table
  1. In the main SN browser window, open System Import Sets > Load Data
  2. Select the Create table option
  3. Provide a name for the Import Set Table by putting a value in the Label field. The Name field is automatically populated
  4. Select the Choose File button: Navigate to the file you want to upload > Select the open button
  5. Set the Sheet number
  6. Set the Header Row number
  7. Select the submit button
Create Transform Map

A Transform map maps data from the source (import Set) table to the target table

  1. After importing data, select the create Transform map related link or create a Transform map in studio
  2. Configure the Transform map
  3. Save
Auto Map/Mapping Assist

Match fields on the Import Set table to fields on the target table

  1. Automatic (if field names match): simplest mapping method where all of the field names of the Import Sets match the names of the fields on the target table. Click Auto map matching fields in the Related List in the Table Transform Map form and confirm proper matching. If there are discrepancies in terms of how fields were automatically matched, these can easily be corrected using the mapping assist utility
  2. Mapping Assist Utility: provides a visually intuitive environment for specifying mapping between import set fields and production table fields. With the mapping assist utility it is possible to map a single source field to multiple destination fields

To manually map fields:

  1. Select the mapping assist link
  2. Select a field from the source list and select the Add button
  3. Select the matching field from the target list and select the Add button
  4. Save
Coalesce

The coalesce option makes a field a record's unique key

More than one field can be a coalesce field

Transform

Transforming copies data from the Import Set table to the Target table using the Map(s)

  1. Select the Transform Related Link
  2. Select the Import set to copy records from
  3. Select the Map(S) to use when copying
  4. Select the transform button
  5. When the transformation is complete, choose a link from the Next Steps… section: ISETXXXXXXX Go to the import set > transform history: show the transform history, related errors and log > Import log: View the import log

B. Web Services

What are web services?
Consumers vs. Publishers
Consumer (Consuming):
Publisher (Provider/Producing):
Configuring a REST Message:
  1. In studio, create a new application file of type REST Message
  2. Configure the REST message
  3. Select the submit button
HTTP Methods
Examining Parameters for an Endpoint
Giving Values to REST Message Functions
  1. In the REST Message, select the HTTP method of interest
  2. In the HTTP Request section, scroll to the HTTP Query Parameters section
  3. Provide a Name value matching a variable from the endpoint API documentation. Do not include the equals sign (=) which will be inserted automatically at runtime
  4. Add a Value for the name. Enclose the Value in $<>. At runtime, a dynamically determined value is substituted for the value
  5. Save
Testing REST Message Functions

Determine if it worked

Posting from a Script

Extracting Information from the Response

Integrating to a ServiceNow instance Table
REST API Explorer
Table API
Configure Query Parameters
Testing the Web Service
Scripted API Call
Web Service Access Only
Posting from an Email Notification
Notification Script
Recommendations:

VIII. Testing with ATF

Software Testing Life Cycle
  1. Requirements Analysis
  2. Test Planning
  3. Test Case Development
  4. Environment Setup
  5. Test Execution
  6. Test Cycle Closure
Testing Options:

Test Management Application

Automated Test Framework

  1. System Definitions > Plugins
  2. Find and select Test Management
  3. Click the Activate/Upgrade related link
  4. Select the Load demo data check box (optional)
  5. Click the activate button
Automated Test Framework

IX. Application Development Topics for Further Study

Service Catalog
Service Catalog Outcomes

Two possible outcomes when selecting items from the service catalog:

1. Record producer service catalog items result in records being added or modified in the database

2. Service Catalog Items result in request items. This outcome is very much like ordering from an online store

Record Producers
Service Catalog Record Producer Flow
Service Catalog vs. Forms
Service Catalog:
Forms:
Creating a Record Producer
  1. In studio, open the application for editing
  2. In the application explorer, open Data Models > Tables >
  3. Select the Add to Service Catalog Related Link
  4. Configure the Record Producer
Configuring a Record Producer

After configuring the record producer, it is immediately available in the Service catalog

Default Record Producer Form

The add to Service Catalog related link creates a default form. The form is customizable:

Customizing a Record Producer Form
  1. In studio, open the record producer for editing
  2. Modify the description field to change the text/images/formatting at the top of the Record Producer form
  3. Scroll to the variables section
  4. Open each variable and modify the question field so it contains a question or easily understandable text to prompt a user
  5. (Optional) Select the Help tag to add help to a variable. The text that appears in the Help tag field will be a clickable link on the record producer form. Use the Help text field to write what will appear when a user clicks the help link
  6. Save
  7. Choose the Try It link to preview or test the Record Producer form
Layout Options
Creating a Two Column Layout
  1. In the form, scroll to the variables section
  2. Select the New button
  3. Configure the start of the new layout: Type: Container Start > Name: (no spaces) > Layout: > Display title: Select to add a section header > Question: text to display on section header if Display title is selected
  4. Configure the end of the layout: Type: Container end > Name: (no spaces)
  5. Save
  6. Order the container start and end by editing the Order column in the variables list
  7. Choose the preview item link to preview the Record Producer form
Catalog UI Policy
Catalog Client Script:

Use client-side scripting to enhance user experience with Record Producer forms

Catalog Client Scripts, like Client scripts are used to manage the user interface and user experience

Scripting a Record Producer
Linking a Module to a Service Catalog Item
Where do you want to go next?
Creating a Custom Service Catalog Category
  1. In studio, create a new category file
  2. Configure the service catalog category
  3. Save
Adding a Category to the Service Catalog
Recommendations