Log a Service Request via Virtual Agent with guided questions

sai9845
Tera Contributor

The objective is to enhance the Virtual Agent so it can log Incidents and Service Requests on behalf of users through a guided conversation. Instead of asking users to navigate the service catalog, the Virtual Agent should ask a series of relevant questions to gather the required information (for example, issue description, category, urgency, affected service, or other required fields) and automatically create the appropriate record.

 

As of now the virtual agent doesn't have the functionality to create incident. Need help on that to create INC via guided questions.

 

And when it comes to Service request it is creating SR's via Window method. The render type should be conversation with the fields like (Name, description, category, urgency, affected service, short description and other variables). The request should be created and aligned, should match with all the variables present in that particular catalog how we create via service portal.

 

And the service request should follow ITSM standard process like sending email notifications, approvals etc.

 

How can we achieve this ?

 

1 REPLY 1

Abhishek Pal
Giga Guru

Hi @sai9845 ,

Yes, this can be achieved, and most of the requirement is already supported OOB.

I would separate the design into two paths:

Virtual Agent
|
+--> Report an Issue
|      -> Guided questions
|      -> Create Incident
|
+--> Request a Service
       -> Identify Catalog Item
       -> Ask Catalog Item variables conversationally
       -> Submit normal Service Catalog Request
       -> Existing approvals / fulfillment / notifications continue

I would NOT create the Incident/RITM using direct GlideRecord or custom Cart scripting unless there is a requirement that the OOB capabilities cannot support.

1. Incident creation is already supported OOB

The statement:

Virtual Agent doesn't have functionality to create Incident

is not correct.

ITSM Virtual Agent provides an OOB reusable topic block:

Create Incident

The supported inputs are:

caller
short_description
urgency
description
cmdb_ci

and the output is:

created_incident_sys_id

ServiceNow also provides the OOB:

Open IT Ticket 2.0

topic, which is the recommended ITSM Virtual Agent topic for opening an Incident. It uses:

Contextual Search
Create Incident
Add Comments - Similar Incident

and can reduce duplicates by checking for similar open Incidents before creating another one.

2. For your own guided Incident conversation

If you want your own sequence of questions, create a new Virtual Agent topic.

Navigate to:

Conversational Interfaces
-> Virtual Agent
-> Designer

I would recommend duplicating an OOB topic/template rather than modifying it directly.

Your flow could be:

User:
"I want to report an issue"

VA:
"Please briefly describe the issue."

-> short_description

VA:
"Can you provide more details?"

-> description

VA:
"How urgent is this?"

-> urgency

VA:
"Which device/service is affected?"

-> cmdb_ci

Then:

Create Incident Topic Block

Map your topic variables into:

caller
short_description
description
urgency
cmdb_ci

After creation, use:

created_incident_sys_id

to show the Incident number/link to the user.

The OOB Create Incident topic block is specifically designed to be called from another topic with these inputs.

3. What about Category, Subcategory, Service and Service Offering?

This needs an important design decision.

The OOB Create Incident topic block exposes:

caller
short_description
urgency
description
cmdb_ci

It does NOT expose every Incident field such as:

category
subcategory
business_service
service_offering

I would not clone/modify the protected OOB Create Incident topic block just to add those fields.

You have two better approaches.

Option A - Recommended when values can be derived

Ask the user only for meaningful information and derive the technical fields using existing platform logic.

For example:

User describes:
"Outlook is not sending email"

VA collects:
Description + CI

Then platform logic determines:

Category = Software
Subcategory = Email
Service = Messaging
Service Offering = Corporate Email

You can perform this through:

Flow / Subflow
Decision Table
Assignment logic
Predictive Intelligence / classification where applicable

This gives a much better employee experience than asking users technical questions they may not understand.

Option B - Record Producer for a highly customized Incident intake

If the business explicitly requires the conversation to match a defined Incident intake containing many variables, create/use an Incident Record Producer.

For example:

Record Producer:
Report an IT Issue

Variables:
Affected user
Short description
Description
Category
Subcategory
Urgency
Affected service
Configuration item

Then make that item available through the conversational catalog experience.

This is especially useful when the same guided intake must work in both:

Employee Center / Portal
and
Virtual Agent

because the variables stay defined in one place rather than being duplicated separately inside the VA topic.

4. Service Requests - do not recreate all variables manually

For the Service Request requirement, use the OOB:

Request Catalog Item

topic block.

If the user already selected/identified the catalog item, pass:

catalog_item_id = <catalog item sys_id>

Virtual Agent can then retrieve the questions belonging to that catalog item and request the values conversationally.

You do NOT need to manually create:

VA question 1 -> catalog variable 1
VA question 2 -> catalog variable 2
VA question 3 -> catalog variable 3
...

for every catalog item.

The OOB topic block returns the catalog item's questions through the variables output and creates the actual requested record after submission.

5. Why you are currently seeing the Window method

This is most likely because that catalog item is currently considered:

Non-conversational

A catalog item can render in Virtual Agent as:

Conversational / Conversational-agentic
Web / Window / Popup

For your requirement, you want:

Conversational

or, if you have Now Assist:

Conversational-agentic

Australia supports Conversational-agentic catalog requests where Now Assist gathers the required information step-by-step rather than displaying the complete catalog form.

6. Configure the Catalog Item for conversational ordering

Navigate to:

Service Catalog
-> Catalog Definition
-> Maintain Items
-> <Catalog Item>

If using Now Assist conversational catalog requests, verify:

Make the item non-conversational in VA
=
Unchecked

If you want the LLM experience, also verify:

Use NLU for conversational requests
=
Unchecked

ServiceNow then evaluates whether the catalog item satisfies the conversational requirements. Simply clearing the checkbox does not force an unsupported catalog item to become conversational.

7. Check the variables used by the item

Not every complex catalog implementation behaves identically in every VA conversational mode.

Australia supports many common variable types, including:

Single Line Text
Multi Line Text
Yes / No
Select Box
Multiple Choice
Reference
Lookup Select Box
List Collector
Date / Date Time
Attachment
Requested For

with some restrictions depending on NLU vs LLM conversational mode.

For example, advanced reference qualifiers and pricing behavior have restrictions in certain conversational modes, while UI Page variables aren't rendered as normal conversational questions.

Therefore, if an item is still opening in a Window, inspect:

Variable types
Catalog Client Scripts
Catalog UI Policies
Custom variables
Pricing logic
Reference qualifiers

before trying to override the render behavior.

Do not force a complex unsupported item into conversational mode with custom DOM/UI code.

8. If you have Now Assist, prefer Conversational Catalog Request

On Australia, the stronger architecture is:

User:
"I need a laptop"

VA / Catalog Agent:
-> Determines the Catalog Item
-> Reads its questions
-> Uses conversation context
-> Prefills what it already knows
-> Asks for missing required information
-> Confirms request
-> Submits item

ServiceNow calls this:

Now Assist in Conversational Catalog Request

The Catalog Agent performs dynamic slot filling, meaning the user does not necessarily have to answer the catalog form field-by-field in exactly the same order as the portal form.

9. Existing approvals and notifications do NOT need to be rebuilt

This is another important point.

When the request is submitted using the OOB Request Catalog Item capability, it remains a normal Service Catalog request.

Therefore your existing catalog fulfillment should remain:

Catalog Item
-> REQ / RITM
-> Flow / Workflow
-> Approval
-> Catalog Tasks
-> Notifications
-> Fulfillment

Virtual Agent is simply another request channel.

Do not rebuild:

Approvals
Email notifications
Catalog Tasks
Fulfillment logic

inside the VA topic.

If you also want users/approvers to interact with the request through chat, ITSM Virtual Agent provides OOB actionable notifications for scenarios such as:

Approval request
Approval reminder
Request approved/rejected
Requested Item updated
Requested Item commented

These can be activated in Workflow Studio.

10. Recommended final architecture

I would implement:

User starts Virtual Agent
        |
        v
What do you need?
        |
        +-------------------------+
        |                         |
        v                         v
Report Issue                Request Service
        |                         |
        v                         v
Open IT Ticket 2.0          Search/identify Catalog Item
or custom parent topic             |
        |                          v
        v                   Request Catalog Item
Guided questions                   |
        |                          v
        v                   Conversational variables
Create Incident                    |
topic block                        v
        |                    Confirm submission
        v                          |
Incident created                   v
                            REQ / RITM created
                                   |
                                   v
                            Existing Catalog Flow
                                   |
                     +-------------+-------------+
                     |             |             |
                     v             v             v
                  Approval      SCTASK       Notification

My recommendation

For Incident:

Simple Incident intake
-> OOB Open IT Ticket 2.0 / Create Incident topic block

For a complex Incident questionnaire:

Incident Record Producer
-> Conversational request

For Service Request:

Request Catalog Item topic block
-> Conversational / Conversational-agentic rendering

This gives you one source of truth for catalog variables and keeps the complete OOB ITSM fulfillment process intact.

I would avoid:

Direct GlideRecord inserts into incident
Direct GlideRecord inserts into sc_request/sc_req_item
Legacy Cart API
Duplicating every Catalog variable as a VA question
Modifying OOB Virtual Agent topic blocks
Custom Window/DOM handling
Rebuilding approvals inside Virtual Agent

Official ServiceNow references:

Create Incident and ITSM reusable topic blocks:
https://www.servicenow.com/docs/r/it-service-management/itsm-virtual-agent/itsm-va-topic-blocks.html

ITSM Virtual Agent OOB topics / Open IT Ticket 2.0:
https://www.servicenow.com/docs/r/it-service-management/itsm-virtual-agent/itsm-va-self-service-topi...

Conversational Catalog Request:
https://www.servicenow.com/docs/r/servicenow-platform/service-catalog/explore.html

Request Catalog Item through Now LLM:
https://www.servicenow.com/docs/r/servicenow-platform/service-catalog/request-topic-blocks-va-llm.ht...

Configure Conversational Catalog Request:
https://www.servicenow.com/docs/r/servicenow-platform/service-catalog/configure-gen-ai-catalog-item....

Variable support:
https://www.servicenow.com/docs/r/servicenow-platform/service-catalog/variables-availability.html

Related accepted ServiceNow Community example for Create Incident:

https://www.servicenow.com/community/virtual-agent-nlu-forum/creating-an-incident-virtual-agent/m-p/...

The accepted solution there follows the same supported pattern:

Parent topic
-> collect Incident inputs
-> call the OOB Create Incident topic block.

Hope this helps!

If this response helped, please mark it as Helpful.
If it resolves your requirement, please Accept it as Solution.

Kind Regards,
Abhishek Pal