Agent submitting a case
Summarize
Summary of Agent Submitting a Case
This use case demonstrates how a ServiceNow agent can submit a customer complaint case by retrieving customer and mortgage account details from a remote banking application. The agent uses a complaint form within the Financial Services Operations (FSO) module, performs a customer account lookup via REST API calls, and then completes and submits the case. Customer and financial account data are saved locally in ServiceNow tables for further processing.
Show less
Key Features
- Customer Account Lookup: Agents initiate a search for customer details through a pop-up interface on the complaint form, using customizable search parameters that query external banking systems.
- Integration with Remote Bank APIs: The scenario relies on two REST endpoints—
GET /api/getConsumerDetailsandGET /api/getFinancialAccounts—to fetch consumer and associated mortgage account data. - Data Synchronization: Retrieved customer and financial account information is created or updated in ServiceNow tables:
Consumer [csmconsumer]andLoan Account [snbomloanaccount]respectively. - Form Automation: Customer account details automatically populate the complaint form fields once selected, reducing manual data entry by agents.
- RESTMessageV2 and GlideRecord APIs: These ServiceNow APIs are used to call external services and manage local data records efficiently within the scripted logic.
How It Works
- The agent inputs customer lookup information and triggers a REST call to retrieve consumer details.
- ServiceNow creates or updates the customer record in the
csmconsumertable based on the response. - A subsequent REST call retrieves mortgage account details via the financial accounts endpoint.
- These financial accounts are created or updated in the ServiceNow financial account table.
- The agent reviews and completes any additional complaint details, then submits the case, which is saved in ServiceNow.
Practical Benefits for ServiceNow Customers
- Streamlined Case Submission: Agents can quickly locate customer and account information without leaving the ServiceNow platform, enhancing efficiency.
- Accurate Data Capture: Automated data retrieval and synchronization reduce errors and ensure up-to-date customer information is used in complaint management.
- Customizable Integration: The search criteria and API endpoints can be tailored to connect with various core banking systems and external data sources, supporting diverse banking environments.
- Extensible Code Samples: Provided JavaScript examples illustrate how to implement REST calls and data handling, serving as a foundation for customization.
Implementation Considerations
Successful deployment requires the external bank application to expose the specified REST endpoints for consumer and financial account data. The integration leverages ServiceNow’s RESTMessageV2 and GlideRecord APIs to handle data retrieval and local record management effectively. Agents benefit from a unified interface to submit cases, while backend scripts ensure data consistency and completeness.
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);
});