Agent submitting a case
Summarize
Summary of Agent submitting a case
This use case demonstrates how to enable an agent to submit a case on behalf of a known customer within ServiceNow, specifically using an FSO complaint form. The agent searches for the customer’s account information, which is retrieved from a remote bank application via REST APIs, and populates the complaint form with relevant mortgage account details before submitting the case. The customer and financial account data are stored locally within ServiceNow tables for further processing and record keeping.
Show less
Key Features
- Customer Account Lookup: Agents use a search pop-up on the complaint form to locate customer account details by querying remote bank systems through REST endpoints.
- Integration with Remote Bank Application: Utilizes two REST APIs—
GET /api/getConsumerDetailsandGET /api/getFinancialAccounts—to retrieve customer and mortgage account information. - Local Data Storage: Customer details are saved in the ServiceNow
Consumer [csmconsumer]table, and financial account information is stored in theLoan Account [snbomloanaccount](a type of financial account) table. - Agent Workflow: After account selection and auto-population of data, agents can manually add case details and submit the complaint, which saves the case record in ServiceNow.
- Automated Data Synchronization: Background scripts use ServiceNow’s
RESTMessageV2andGlideRecordAPIs to fetch, create, and update customer and financial account records seamlessly.
Practical Implementation
The process involves:
- Agent inputs customer lookup details on the complaint form.
- ServiceNow formulates and sends a REST call to
/api/getConsumerDetailsto retrieve consumer data. - Consumer details are created or updated in the local
csmconsumertable via GlideRecord. - Using the consumer data, another REST call is sent to
/api/getFinancialAccountsto retrieve mortgage/financial account information. - Financial accounts are created or updated in the
financialaccounttable. - The agent reviews and submits the complaint case, which is stored within ServiceNow.
Benefits for ServiceNow Customers
- Streamlined Case Management: Agents can efficiently file cases with accurate customer and financial data retrieved in real-time from external banking systems.
- Improved Data Accuracy and Consistency: Automated synchronization reduces manual entry errors by ensuring customer and account information is current and consistent.
- Customization Flexibility: Search parameters and REST endpoints can be adapted to integrate with various core banking systems, CRMs, or customer master databases.
- Enhanced Customer Experience: Faster case submission with comprehensive data enables quicker resolution of customer complaints.
This use case illustrates how to enable an agent to submit a case for a known customer.
In this scenario, from within an FSO complaint form, an agent looks up a customer's account information, which is located on a remote bank application. Once located, it appears within the complaint form and the agent then manually fills in the case details related to the customer's mortgage account and save the complaint case. In the background, the form script saves the customer details and financial account information locally on the ServiceNow instance.
- Consumer [csm_consumer]: Contains customer record.
- Loan Account [sn_bom_loan_account]: Contains loan account information for each customer. Note:Loan Account is a type of Financial Account.
The following is an example of a ServiceNow complaint form (case form) that walks an agent through filing a complaint on behalf of a customer. In this form, the agent clicks the Account Search button on the form to locate the customer's account information.
When the agent clicks the Account Search a pop-up similar to the following appears. The pop-up allows the agent to lookup the customer's account using any of the displayed search parameters. You can create your own search criteria based on your specific web service. These web services generally come from Customer Master and Account Master systems, CRMs, core banking mainframes, and APIs from core banking software providers such as Fiserv, FIS, Jack Henry, Finastra and others.
The search returns the following accounts for this customer.
The agent selects the appropriate account and the necessary account information is automatically populated in the case form. The agent then adds any additional information needed to submit the customer case and clicks the Submit button to save the complaint in the ServiceNow instance.
The following diagram shows the flow of the REST API calls for this use case and provides brief remarks on any required processing.
|
Example code
// Fetch consumers for the given first name and last name and associated
// financial accounts from the remote bank application
function fetchConsumers(consumer_fname, consumer_lname) {
var request = new sn_ws.RESTMessageV2();
request.setHttpMethod('get');
request.setEndpoint('api/getConsumerDetails?fname=consumer_fname&lname=consumer_lname');
var response = request.execute();
var responseBody = response.getBody();
var responseObj = JSON.parse(responseBody);
var consumers = responseObj.consumers;
// Create a record in the ServiceNow Consumer [csm_consumer] table for the specified consumer
var consumerDetails = [];
consumers.foreach(function(consumer){
var consumerGR = new GlideRecord('csm_consumer');
consumerGR.initialize();
consumerGR.setValue('uid', consumer.uid);
consumerGR.setValue('name', consumer.name);
consumerGR.setValue('email', consumer.email);
consumerGR.setValue('mobile', consumer.mobile);
consumerGR.setValue('address', consumer.address);
if(consumerGR.update()){
consumer.sysId = consumerGR.getValue('sys_id');
consumer.financialAccount = fetchFinancialAccountsForConsumer(consumer);
}
});
}
// Fetch financial accounts for the specified consumer
function fetchFinancialAccountsForConsumer(consumer) {
var financialAccounts = [];
var request = new sn_ws.RESTMessageV2();
request.setHttpMethod('get');
request.setEndpoint('api/getFinancialAccounts/' + consumer);
var response = request.execute();
var responseBody = response.getBody();
var responseObj = JSON.parse(responseBody);
var financialAccounts = responseObj.financialAccounts;
// Create a record in the ServiceNow financial_account table for each of the customer's financial accounts
financialAccounts.foreach(function(finAccount){
var finAccountGR = new GlideRecord('financial_account');
finAccountGR.initialize();
finAccountGR.setValue('uid', finAccount.uid);
finAccountGR.setValue('type', finAccount.type);
finAccountGR.setValue('number', finAccount.ac_number);
finAccountGR.setValue('balance', finAccount.balance);
if(finAccountGR.update()){
finAccount.sysId = finAccountGR.getValue('balance');
financialAccounts.push(finAccount);
}
});
return financialAccounts;
}
// The following retrieves an object to display in UI page
fnmae = ‘john’;
lname = ‘brown’;
var consumerObj = fetchConsumers(fname, lname);
consumerObj.foreach(function(consumer){
// Display the details on the page and populate it in the form as necessary
console.log(consumer);
});