Developer Guide | PUBLIC Document Version: 1.0 – 2021-05-06
Developer Guide SAP Underwriting for Insurance 4.0 SP06 company. All rights reserved. affiliate
THE BEST RUN 2021 SAP SE or an SAP © Content
1 Introduction...... 8 1.1 About This Document...... 8 1.2 Audience...... 8 1.3 Source Code Terms and Conditions...... 8 1.4 Supported Clients...... 8 1.5 Product Name Abbreviations...... 9
2 Understanding Application Development in FS-QUO...... 10 2.1 Terminology...... 10 2.2 Understanding the Difference Between Coverage-Based and Risk-Based Product Architectures ...... 12 2.3 Customer Views...... 13 2.4 Overview...... 15 2.5 References...... 18 2.6 Development Components...... 19 2.7 Understanding How the Components Work Together...... 20
3 Working with the Development Toolkit...... 22 3.1 Understanding the FS-QUO Development Toolkit Contents...... 22 3.2 Installing the FS-QUO Toolkit...... 24 Prerequisites for Installing the FS-QUO Toolkit...... 25 Creating the FS-PRO Designer Runtime Database...... 26 Installing and Configuring Eclipse...... 26 Installing WildFly and Creating a New Server Profile...... 27 Generating the Keystore and Enabling SSL in WildFly...... 27 Installing and Configuring the FS-QUO Toolkit...... 28 Copying and Deploying Insurance Product JAR Files from Product Configurator...... 35 Configuring the FS-QUO Toolkit for FS-QUO...... 36 Installing and Configuring Standalone SAP JCo (Optional)...... 37 Validating the Complete FS-QUO Toolkit Installation (Fiori)...... 40 Validating the Complete FS-QUO Toolkit Installation (Sencha)...... 41 Copying the
Developer Guide 2 PUBLIC Content 3.4 Changing Default Error Report Settings...... 46
4 Extensibility Best Practices...... 47 4.1 Understanding Extensibility...... 47 4.2 Extensibility Best Practices (Version 3.0 and Later)...... 48 Understanding Design Time...... 48 Customization Site Map...... 48 Extensibility Scenarios by Area...... 49 Adding a Custom Project...... 57 4.3 Extensibility Best Practices (Legacy)...... 58 Understanding Extensibility...... 58 Extension Compared to Customization...... 59 Location of Configuration Changes...... 59 Location of Extensions...... 60 Changes Preserved After an Upgrade...... 60 Conflicts with New Functionality...... 61 Merging Changes in an Upgrade...... 61 Typical Extensibility Scenarios...... 61 4.4 Unsupported Extension Types...... 67 4.5 Understanding TransferObjectBase Usage in Risk-Based Architecture...... 68
5 Sencha-Based UI...... 72 5.1 Modifying the User Interface...... 72 Understanding the User Interface Development Components...... 73 Modifying a Screen or Section...... 75 Modifying Buttons in the Button Bar...... 88 Extending the User Interface...... 91 5.2 Understanding the JavaScript Classes...... 92 Available Classes and Functions...... 93 Available Control Classes...... 98 5.3 Understanding Handlers and Handler Beans...... 102 Configuring Handlers...... 102 Configuring Handler Beans...... 109 Extending a Handler...... 110 Extending a Handler Bean...... 111 Preserving Extended Handlers After Upgrading...... 111 Example: Extended Handlers and Handler Beans...... 111 5.4 Working with the Validation Framework...... 112 Locating the Validation Framework...... 113 Understanding the Screen Framework Folder...... 114 The Validation Folder...... 120 Understanding Business Questions...... 127
Developer Guide Content PUBLIC 3 Using Validation Stems...... 131 5.5 Working with the Search Framework...... 132 Locating the Search Framework...... 132 The Search Framework Folder...... 132 Search Component...... 132 SearchCriteriaItem Component...... 133 SearchCriteriaItemColumns Component...... 135 SearchControlUIConfiguration Component...... 135 SearchGroupByColumns Component...... 136 SearchOrderByColumns Component...... 136 SearchResultItem Component...... 136 SearchColumns component...... 137 Example: Configuring the Work List Search...... 138 Modifying a Database View...... 139 Understanding the Search Framework Methods...... 140 5.6 Working with the Simplified Insurance Application Renderer...... 141 Suppressing Error Information...... 142 Setting Up the Simplified Insurance Application Renderer...... 143 Extending the Simplified Insurance Application Renderer...... 149
6 Core FS-QUO...... 150 6.1 Working with Application Flows...... 150 Overriding a Flow...... 152 Modifying a Flow...... 152 Example: Adding an Activity to a Flow...... 158 Preserving Modified Flows After an Upgrade...... 159 6.2 Business Services...... 159 Accessing the javadoc...... 160 Business Service Components and Methods...... 160 Understanding Business Validation...... 164 Understanding the Core Service Components...... 166 Extending a Business Service...... 167 Preserving Extended Services After Upgrading...... 168 6.3 Underwriting Application Configuration...... 168 AppConfig Service Bean...... 169 Locating the Standalone Underwriting Application Configuration...... 170 Extending the Underwriting Application Configuration Standalone Object...... 171 Modifying Application Configuration Settings...... 172 Folders in the Underwriting Application Configuration Object...... 173 6.4 Using the Scheduler...... 184 Installing the Scheduler...... 184
Developer Guide 4 PUBLIC Content Configuring the Scheduler...... 185 Creating or Updating the Archive...... 186 Running the Scheduler...... 186 Shutting Down the Scheduler...... 187 Interpreting the Scheduler Results...... 187 Renewal Information...... 188 6.5 SAP Business Partner Integration...... 188 NetWeaver Business Client...... 188 Business Partner Configuration...... 189 Field Mapping Illustrations...... 189 Permissions...... 192 Single Sign-On...... 193
7 Risk-Based Architecture...... 195 7.1 Working with Roles and the Permissions Framework...... 195 Reusing the Permission Component...... 195 The Role Framework...... 196 Screen Control Permissions...... 202 Permissions Provided with FS-QUO...... 204 7.2 Understanding Visitor Patterns...... 218 Model Visitor...... 219 ModelVisitor Class...... 219 Policy Traversal...... 221 Definition Visitor Patterns...... 222 Instance Visitor Patterns...... 224 7.3 Policy Models...... 227 Policy Model and Database Tables...... 227 Modifying the Policy Model...... 228 Policy Database Tables...... 239 Supporting Database Tables...... 280 Task Database tables...... 284 7.4 Product and Reference Services...... 285 User-Defined Services...... 285 Location of the Product Services...... 286 Location of the Reference Services...... 286 Service API for the Commercial P and C Product Template...... 287 Service API for the Commercial P and C Reference Object Template...... 307 7.5 Using Stems...... 310 Stem Classes and Functions...... 311 Accessing the javadoc...... 313 Adding a Stem Class...... 314
Developer Guide Content PUBLIC 5 7.6 Configuring Premium Audits...... 319 Configuring Premium Audit Parameters for a Marketable Product...... 320 Configuring Deposit Premium Calculations...... 324 Configuring Premium Audit eApps at the Product Level...... 325 Configuring Premium Audit eApps at the Coverage Group Level...... 326 Configuring Premium Audit eApps for a Coverage...... 327 Configuring Fields that Impact Premium Calculation...... 328 Assigning Permissions to Process Premium Audits...... 329 Setting up Premium Audit Parameter Rules...... 330 Assigning Permission to Change Premium Audit Parameters Post-Bind...... 331 Setting up Automatic Waiving of Premium Audit Intervals...... 332 Assigning Permission to Manually Waive Premium Audit Intervals...... 333 Configuring Premium Audit Override...... 334 7.7 Selecting a Ratebook...... 334 Configuring Ratebook Selection...... 336 Example of Ratebook Selection Configuration...... 344 7.8 Configuring Out-of-Sequence Endorsements...... 346 Configuring the Input Fields to be Reapplied...... 346 Specifying Extension Tables...... 347 Setting OOS Permissions...... 349 7.9 Additional Configuration Procedures...... 349 Applying Form Configuration Changes...... 349 Configuring Forms Attachment...... 350 Configuring Tax Rules...... 350 Configuring Validation for Flat Cancellation Type...... 351 Referrals Configuration Note...... 352 Configuring the Delta Service...... 352
8 Coverage-Based Architecture...... 355 8.1 SAP Insurance Portals and Workplaces (IPW)...... 355 Extending Fiori Apps UI...... 355 8.2 OData Extensions...... 381 DataTable-related Annotations...... 381 ProductRuleDataSource...... 381 Processor...... 382 ModelValueMapper...... 382 DataTableValueMapper...... 383 8.3 Replacing EMF (PTTO) with Domain Layer...... 384 PTTO Removal...... 384 Characteristics of EMF...... 384 Areas changed from using PTTO to Domain Layer...... 384 Characteristics of Domain Layer...... 385
Developer Guide 6 PUBLIC Content Comparing EMF and Domain Layer...... 385 8.4 Troubleshooting...... 386 8.5 Cross-Site Request Forgery (XSRF/CSRF) Protection ...... 387 CSRF Protection Within FS-IPW Applications ...... 387 CSRF Protection Within Sencha (Legacy) Applications...... 389
9 Appendix...... 391 9.1 Building Enterprise Services for FS-QUO...... 391 First Time Setup...... 391 Building Enterprise Service Implementation from ESR...... 393
Developer Guide Content PUBLIC 7 1 Introduction
1.1 About This Document
This guide describes the following information:
● The SAP Underwriting for Insurance (FS-QUO) architecture and the objects used to create the application ● How to extend the default FS-QUO behavior ● How to modify the FS-QUO configuration (for example, the application configuration and flows)
1.2 Audience
This guide is intended for technical consultants and developers who modify FS-QUO functionality. This guide is also intended for business analysts and administrators who configure FS-QUO.
The prerequisites for using this guide are the following:
● You are familiar with FS-QUO. ● You have experience developing applications using Ext JS and Spring Web Flow.
1.3 Source Code Terms and Conditions
The FS-QUO source code described in this guide is the intellectual property (IP) of SAP AG. The source code is available for customers to support extension.
Any changes that you make to the core source code voids part of the warranty or the entire warranty.
For more information about IP terms and conditions, see the license agreement.
1.4 Supported Clients
The FS-QUO client is browser-based.
For information about the browsers that are supported, see the Client Requirements for FS-QUO topic in the SAP Underwriting for Insurance Installation Guide.
Developer Guide 8 PUBLIC Introduction 1.5 Product Name Abbreviations
In the documentation, the products are also referred to by their abbreviations, as listed in the following table:
Full Product Name Abbreviation Alias
SAP Product and Quotation FS-PQM n/a Management for Insurance
SAP Product Lifecycle Management for FS-PRO Product Configurator Insurance
SAP Underwriting for Insurance FS-QUO Designer
SAP Workplaces for Insurance FS-IPW n/a
SAP Policy Management FS-PM n/a
Developer Guide Introduction PUBLIC 9 2 Understanding Application Development in FS-QUO
2.1 Terminology
While this Developer Guide focuses on FS-QUO, any customer wishing to customize this solution should be familiar with how FS-QUO fits into the overall FS-PQM product offering. The following terms and labels are meant to help with this understanding:
● A Program is an overall software offering/solution. ● A Program is made up of software Components, which are separately released and installed. ● A Component contains Modules, which are logical areas of functionality within the Component. Modules can be either horizontal (frameworks) or vertical (features).
The following table describes the Components and Modules in this release:
Item Type Description
FS-PQM Program Product, Quotation and Un derwriting for Insurance
FS-PRO Component Product Management for In surance
Administrative Console Module (Framework) An application for managing the FS-PRO system.
Product Configurator (FS- Module (Framework) An application for managing PRO) products.
Product Web Services (PWS) Module (Framework) A framework for exposing product services as web services.
IFBC Integration Module (Feature) Ability to export or import a product's IFBC definitions to or from FS-PM.
Developer Guide 10 PUBLIC Understanding Application Development in FS-QUO Item Type Description
Product Architectures Module (Framework) [FS-PRO content] Repre sents a top-level architecture (mode) for the Program.
Out of the box, two product architectures are supported:
● Coverage-Based ● Risk-Based
These terms are explained in more detail in a later section.
Sample Products Module (Feature) [FS-PRO content] Out of the box examples of functioning products, for both product architectures.
Product Stems Module (Framework) [Java] A set of specialized functions callable from prod uct script rules.
Product Runtime Framework Module (Framework) A platform for product-driven applications. Includes libra ries and engines to opera tionalize products (for exam ple, federated data model, product services, eApps).
FS-QUO Component Quotation and Underwriting for Insurance
Administrative Console Module (Framework) An application for managing the FS-QUO system.
Designer Module (Framework) An application for managing core data definitions.
Application Framework Module (Framework) Includes utilities for OData, SWF, Business Services, and Data Model.
Quotation Web Application Module (Feature) Back end for Quotation Fiori applications. Includes imple mentation for OData, SWF and Business Services
Underwriting Web Applica Module (Feature) Back end for Underwriting tion Fiori applications. Includes implementation for OData, SWF and Business Services
Developer Guide Understanding Application Development in FS-QUO PUBLIC 11 Item Type Description
Quotation Enterprise Serv Module (Feature) Includes skeleton classes, ices implementation classes, and Business Services.
Underwriting Enterprise Module (Feature) Includes skeleton classes, Services implementation classes, and Business Services.
FS-PM Integration Module (Feature) Ability to search and create BP/Insurable Object; book a policy to FS-PM
FS-IPW Component Workplaces for Insurance
Fiori Launchpad Configura- Module (Feature) Enables application tiles and tion related authorization.
Quotation Applications Module (Feature) Front end for Quotation Fiori applications, implemented in SAPUI5.
Underwriting Applications Module (Feature) Front end for Underwriting Fiori applications, imple mented in UI5.
Fiori refers to a set of usability guidelines for applications.
In the context of FS-PQM, a Fiori Application () is any application that conforms to Fiori guidelines or is implemented using a standard architecture consisting of the following items:
● Fiori launchpad ● UI5 ● OData services
2.2 Understanding the Difference Between Coverage-Based and Risk-Based Product Architectures
The following table outlines the differences between the two standard product architectures
Coverage-Based Model Risk-Based Model
Focused LOBs Personal/Simple P&C Commercial/Complex P&C
Life
FS-QUO Responsibilities Quotation and Underwriting (NB) Quotation and Underwriting (NB, CB)
Policy Management
Developer Guide 12 PUBLIC Understanding Application Development in FS-QUO Coverage-Based Model Risk-Based Model
FS-PM Responsibilities Policy Management N/A
Standard FS-PQM Integrations FS-PM N/A
ERP-BP
2.3 Customer Views
From the customer's perspective, there are three views of FS-PQM software:
Installable Refers to all FS-PQM-related artifacts available for the customer to download from SAP and View install.
Design Time Refers to set of systems that exist while the customer is developing their FS-PQM solution, View such as configuring their products and customizing the application for their use:
● FS-PRO Design Time (Administrative Console, Product Configurator) ● FS-QUO Design Time (Administrative Console, Designer) ● FS-QUO Toolkit
These systems are created from installable artifacts.
Runtime View Refers to set of systems that exist while the customer's FS-PQM solution is deployed and testable (for example, in QA or Production):
● FS-PRO Runtime ● FS-QUO Runtime
These systems are created from installable artifacts.
These three views apply to all three components (FS-PRO, FS-QUO, and FS-IPW). The following table outlines the artifacts/concepts relevant to each view-component combination.
Note
The details in this table aren't meant to be exhaustive, but rather provide orientation for where certain concepts and technologies fall in the customer project lifecycle.
Developer Guide Understanding Application Development in FS-QUO PUBLIC 13 View FS-PRO FS-QUO FS-IPW
Installable Database (ZIP) Database (ZIP) - includes FS- ABAP Package (add-on) PRO database, plus addi ● QUO Fiori App (XML, JS, CSI Home (ZIP) tional content for FS-QUO BSP, and so on) ● UW Fiori App (XML, JS, SCA CSI Home (ZIP) - includes BSP, and so on) FS-PRO CSI Home, plus ad ● FS-PRO.ear ● FLP configuration (tiles, ditional content for FS-QUO ○ 3rd party libraries roles, and so on) ○ camilionlib.j SCA - includes FS-PRO SCA ar contents, plus additional components for FS-QUO ○ camilionejb.j ar ● FS-QUO JAR files ○ camilionweb.w ● quo-web.war ar ● uw-web.war ○ PSRepo.war ○ PSRuntime.war ○ ProductExplor er.war ○ ProductBuilde r.war
Install Options (Usage Types)
● Product Configurator (PC) ● Product Web Services (PPMS)
Developer Guide 14 PUBLIC Understanding Application Development in FS-QUO View FS-PRO FS-QUO FS-IPW
Design Time Database Database Toolkit (for Eclipse)
File System (CSI Home) File System (CSI Home) ● Plugin to remotely man age FLP content Web Applications Web Applications ● One project for each ● camilionweb.war ● camilionweb.war app: ○ Administrative ○ Administrative ○ My Insurance Console (for opera Console (for devel Worklist tions) opment) ○ Create Insurance ○ Product ○ Designer Quote Configurator Toolkit (for Eclipse) ○ My Underwriting Worklist ● Includes FS-IPW Toolkit, plus additional projects for FS-QUO ● Uses WildFly for local testing ● Contains projects with build scripts and source code ● Produces an FS-QUO SCA
Runtime Database Database Fiori Apps
File System (CSI Home) File System (CSI Home) ● QUO - My Work List (Quotes) Web Applications Web Applications ● QUO - New Business ● camilionweb.war ● camilionweb.war ● UW - My Work List + ○ Administrative ○ Administrative Case Details (Cases) Console (for Opera Console (for opera tions) tions) ○ Product Web ○ Product Web Services Services ○ eApp service ● QUO.war ○ OData ● UW.war
2.4 Overview
The below diagram depicts a runtime deployment of FS-QUO. The subsequent sections describe each concept in more detail.
Developer Guide Understanding Application Development in FS-QUO PUBLIC 15 Fiori Applications
Fiori applications for Quotation and Underwriting are based on the Fiori application architecture, whereby the implementation is separated across front-end and back-end servers.
● Front-end server (NetWeaver ABAP with Fiori launchpad; FS-IPW installed). ○ The front-end server provides Fiori launchpad functionality, as well as the browser-side content for each Fiori application. ○ The “tile” used to launch each application is configured in Fiori launchpad, along with any users, roles and permissions for the launchpad. ○ UI5 content (View XML and Controller JS) is uploaded to the front-end server, and associated to a Tile. ○ At runtime, the front-end accesses the-back end through RESTful URLs (OData) specified in the Controller JS files. ● Back-end server (NetWeaver AS Java; FS-QUO installed). ○ The back-end server provides OData CRUD (Create Retrieve Update Delete business object interface operations) services to support the front-end. These services represent the MVC Model for the Fiori application. ○ The OData services are implemented using the Apache Olingo framework. ○ The OData services are implemented as Processor classes, which call FS-QUO Business Services. ● Web Dispatcher server. ○ A simple web server which uses a “reverse proxy” (HTTP forwarding) technique to make the front-end and back-end appear as one server to the browser. ○ Depending on context path, the Web Dispatcher forwards the request to either the front-end or back- end server.
Developer Guide 16 PUBLIC Understanding Application Development in FS-QUO Enterprise Services
Enterprise Services for Quotation and Underwriting are implemented using the standard SAP Enterprise Service framework:
● Operations and schemas are defined in the Enterprise Service Repository (ESR) system, which generates the WSDL. ● The WSDL is imported into NetWeaver Developer Studio in order to generate “skeleton” (service model and shell implementation) classes. ● The skeleton classes are imported into the Toolkit, where the FS-QUO-specific implementation logic is added. The implementation classes call FS-QUO Business Services. ● The Enterprise Service builds as an EJB module which is recognized and exposed as a web service by the NetWeaver enterprise service container (outside of FS-PQM).
eApps eApps work with Fiori applications:
● The eApp runtime engine has a clean separation between front-end and back-end. ○ The renderer is implemented in UI5 and is customizable. ○ The front-end makes requests to a back-end servlet using JSON (rather than OData). ○ The front-end eApp libraries convert the results to UI5 for display. ● The eApp is integrated into Fiori applications through standard UI5 “hooks”.
Refer to the Product Configurator User Guide for more information.
msg.PM Integration
The rating calculation portion of an FS-PRO product can be delegated to existing msg.PM products. This is possible due to the following:
● FS-PRO has an “IFBC Import” feature, which can import any existing IFBC templates (and related information) from FS-PM into FS-PRO. ● The published product from msg.PM (after conversion to a QAR file using the PMQ.Builder tool) is deployed in FS-PQM. ● msg.PM has provided a library with APIs for consuming QAR files in Java. ● A stem is provided in FS-QUO for calling the msg.PM library in a consistent way from the product.
J2EE Deployment
FS-QUO deployment more closely follows J2EE standards.
Developer Guide Understanding Application Development in FS-QUO PUBLIC 17 ● Java code isn't deployed in the
Security
As of FS-PQM 3.0, UI5 eApp and OData for Quotation and Underwriting, authentication and user management are deferred to NetWeaver as opposed to Role Painter:
● User information such as User name, Role and Preferred Language are configured in any NetWeaver- compatible User Store (such as an ABAP server or LDAP). Such information is available to FS-PQM through the NetWeaver UME API (which is configured in NetWeaver to point to the User Store). ● The NetWeaver SecurityCheck filter is enabled on the new URLs. This triggers the NetWeaver login screen if the session isn't authenticated. ● Following this filter, a FS-PQM filter ClientSessionFilter is part of the filter chain. If this filter is reached, it is assumed that the session has been authenticated by NetWeaver. This filter populates the FS-PQM ClientSessionState object (needed for internal processing) by calling the UME API to get User information from the external User Store.
Any custom URLs added to Quotation or Underwriting must also have these filters applied.
Globalization
● A product in FS-PRO can contain value row data for a non-English language (only one language per product). ● Static UI5 content in Fiori apps supports multiple languages using the Language Pack capability of UI5. When a user logs in to the Fiori launchpad, they can specify a language other than English. If Language Pack content is available for that language, it is loaded by UI5.
Legacy
The remaining sections in this chapter are specific to the "legacy" (Sencha-based) runtime for FS-QUO.
2.5 References
Fiori documentation SAP Fiori
Developer Guide 18 PUBLIC Understanding Application Development in FS-QUO Enterprise Services and Enterprise Services Repository Refer to the SAP Help Portal page for FS-PRO 3.0. (ESR) extensibility
Globalization Refer to the Product Configurator User Guide.
2.6 Development Components
The FS-QUO application is developed using components that are exposed as Ext JS classes, Java classes, Product Configurator objects, and XML files.
The following FS-QUO components are located in Product Configurator:
● Underwriting Application ● Permissions Framework ● Validation Framework ● Search Framework
The following components require programming:
● User interface JavaScript classes ● Process configuration files ● Handlers and Handler Beans ● Business Services ● Product and Reference Services ● Visitor Patterns ● Policy Models
Note
For more information about each component and how you can use it to extend FS-QUO, see the related topics.
Developer Guide Understanding Application Development in FS-QUO PUBLIC 19 2.7 Understanding How the Components Work Together
The following diagram shows an overview of the components and technology used to develop and extend FS- QUO:
The components work together in the following way:
● The Underwriting Application Configuration object contains the information used to configure the FS-QUO application. This object defines default roles and permissions, search behavior, validation, and business questions. ● The extended Underwritng Application Configuration object (typically named Extended Application Configuration) lets you define configuration settings that are specific to your FS-QUO application. The extended object inherits from the Underwriting Application Configuration object. ● The FS-QUO user interface is developed using Ext JS. ● The process configuration XML files in the flow layer define how FS-QUO runs, the flow of the application, and how the screens transition to one another. ● When a user performs an action on the user interface (for example, click search), a handler translates the data between the user interface and the business services. ● Business Services are methods that perform operations on policies (for example, create a new account or add a form). Business services aren't specific to products. ● Core services are the underlying layer for business services. ● Product Services are methods that perform operations on products (for example, return a list of coverages in a specific product). Business services can invoke Product Services to get product-specific data for a particular policy.
Developer Guide 20 PUBLIC Understanding Application Development in FS-QUO ● The Policy Model is an XML representation of the data for a specific policy transaction. The Policy Model lets you access data without querying the FS-QUO database tables and views. Business services can get policy information from the Policy Model. ● A product bean is an object that transfers the eApp data between the user interface and the product JAR file.
Developer Guide Understanding Application Development in FS-QUO PUBLIC 21 3 Working with the Development Toolkit
3.1 Understanding the FS-QUO Development Toolkit Contents
The development environment consists of all the required software and source code to help you extend FS- QUO functionality.
Caution
Before you work with the FS-QUO source code, see the Source Code Terms and Conditions
The FS-QUO development toolkit is a ZIP file that contains the pre-configured FS-QUO Maven projects. These projects include the source code.
The following projects are provided in the toolkit:
ASLibrary The ASLibrary project is a Maven project which contains the core FS-QUO source code, unit tests and some build libraries. This project is built as a JAR file and assembled into the FS-QUO EAR lib folder.
ASModel The ASModel project is a Maven project that uses the Eclipse Modeling Framework (EMF) to define the Policy Model and metadata used by FS-QUO. These classes define both static and dynamic classes that are used to model insurance products and policy data in memory. This project is built as a JAR file and assembled into the FS-QUO-ear/lib directory.
ASTxnModel The ASTxnModel project is a Java project containing the EMF classes related to the Transaction flow defined in the Camilion Application Framework (CAF), which is an implementation of Spring Web Flow. The classes handle tracking where a transaction is in the flow, transitions between states and the status of the activities in the flow.
ASWebService The ASWebService project is a Java project containing the web services available from FS-QUO. These services allow CRUD operations on some of the Policy Model objects. These web services enabled development of our first portal offering, although they will likely become redundant with the OData services that are being developed
com.sap.fs.quo.domain.data The Domain Data Model for FS-QUO.
com.sap.fs.quo.service Business Services for FS-QUO.
fs.ipw.insquote.create The Create Insurance Quote app allows an insurance agent or underwriter to create a new insurance quote in FS-QUO and issue the quote, if accepted by an Underwriter, to FS-PM.
Developer Guide 22 PUBLIC Working with the Development Toolkit The project and code structure for this app follows SAP UI5 development standards and leverages the SAP UI5 scaffolding framework.
fs.ipw.mstrinspolicy.create The Create Master Insurance Quote FS-IPW application.
fs.ipw.mstrinsquote.create The Create Insurance Quote from Master FS-IPW application.
fs.ipw.myinsworklist The Insurance Work List app allows an insurance agent or underwriter to manage the insurance quote that they have created in a work list type of view. The project and code structure for this app follows SAP UI5 development standards and leverages the SAP UI5 scaffolding framework.
fs.ipw.myuwworklist The Underwriting Work List app allows insurance underwriters to manage underwriting cases based on insurance quotes and effectively make decisions on whether or not to accept or decline insurance quotes.
fs.ipw.grpinsquote.create The Create Group Insurance Quote FS-IPW application.
fs.ipw.myinstasks The My Insurance Tasks FS-IPW application.
FS-QUO-dev A module containing artifacts, such as a local
FS-QUO-ear An enterprise application module that creates the Enterprise Archive (EAR) file for the FS-QUO application. Artifacts from this project aren't actually used directly, but instead used for packaging by the FS-QUO-sca module.
FS-QUO-install A module containing the
FS-QUO-IPW-wildfly-ear An enterprise application module running within the integrated FS-QUO development environment on WildFly.
FS-QUO-sca A module that creates the Software Component Archive (SCA) for the FS-QUO application which is deployed to NetWeaver AS Java.
InsurableObjectIntegration This module provides the client code to call FS-PM to access Insurable Object Enterprise Services.
IntegrationMessageSpec This module contains the generated XML objects from the AS Web Service WSDLs in ASLibrary.
IPWUILaunchPad A project allowing local testing of FS-IPW on WildFly, so that deployment to FLP isn't needed. Not packaged with the Tookit as built.
IPWWeb The web container for the FS-IPW back end.
MultiLevelRiskRenderer The MultiLevelRiskRenderer project contains the source code for the Multi-Level Risk Renderer for the legacy e-App.
QUOEnterpriseServices The QuoEnterpriseService project is an EJB project (JEE 5), which exposes FS-QUO back-end services and functionality through SAP Enterprise Services. This project is built as an EJB JAR module and is assembled into the FS- QUO.ear.
QUOLibrary The QuoODataWeb project is a dynamic web project, which exposes FS-QUO back-end functionality and services as OData services.
Developer Guide Working with the Development Toolkit PUBLIC 23 This project is built as a WAR module and assembled into the FS-QUO.ear with web context root, 'quo-odata'.
QUOODataLibrary The QuoODataWeb project is a dynamic web project, which exposes FS-QUO back-end functionality and services as OData services. This project is built as a WAR module and assembled into the FS-QUO.ear with web context root, 'quo-odata'.
UWCMSService This module contains the Content Management System functionality used by the Underwriter Worklist app. The default implementation uses SAP Mobile Documents for content management and Netweaver VSI for virus scanning of file attachments.
UWEnterpriseServices The UWEnterpriseService project is an EJB project (JEE 5), which exposes FS-QUO Underwriting back-end services and functionality through SAP Enterprise Services. This project is built as an EJB JAR module and is assembled into the FS- QUO.ear.
UWLibrary This project provides business and data access services specific to FS-QUO Underwriting. The business services contained within this module are primarily consumed by the OData processors in UWODataLibrary. This project builds as a JAR UWModel. This module provides the central location for UW bean definitions.
UWModel This module provides the central location for Underwriting bean definitions.
UWODataLibrary This project contains the Underwriting specific extensions and implementations of PQMODataLibrary. The OData processors defined within this library primarily consume the core FS-QUO and Underwriting business services contained within ASLibrary and UWLibrary, respectively.
3.2 Installing the FS-QUO Toolkit
This topic describes, at a high-level, the steps involved in installing the FS-QUO toolkit.
You need to perform the following steps in order to install the FS-QUO toolkit:
● Creating the FS-PRO Designer Runtime Database ● Installing and Configuring Eclipse ● Installing and Configuring WildFly ● Generating the Keystore and Enabling SSL in WildFly ● Installing and Configuring the FS-QUO Toolkit ● Copying and Deploying Insurance Product JAR Files from Product Configurator ● Configuring the FS-QUO Toolkit for FS-QUO ● (Optional) Installing and Configuring Standalone SAP JCo ● Validating the Complete FS-QUO Toolkit Installation
Developer Guide 24 PUBLIC Working with the Development Toolkit 3.2.1 Prerequisites for Installing the FS-QUO Toolkit
This topic details the software that is required before you can install the FS-QUO toolkit.
Before you install the toolkit, you will need to download and install the following software:
Java 8 The Java 8 Development kit is required for FS-PQM Development and to run Eclipse. Development Kit Either the SAP or Oracle implementation of Java may be used.
SAP JVM 8 for Windows on x64 64bit Download the software here .
Oracle Java Development Kit SE8 for Windows x86_64 Download the software here .
Eclipse Eclipse 2019-09 R IDE for Enterprise Java Developers Download the software here Windows x86_64 .
WildFly The WildFly application server is used to host the FS-QUO application on the local development system.
WildFly 22.0.0.Final Download the software here .
Apache Maven Apache Maven version 3.6.0 Download the software here .
JDBC driver SAP HANA 2.0 This file is necessary only if you are using an SAP HANA database. SPS04 JDBC Install the SAP HANA JDBC driver 2.4, ngdbc.jar. The JDBC driver driver will be located under \client\JDBC.TGZ. Download the driver here .
IBM DB2 11.5 This file is necessary only if you are using an IBM DB2 database. JDBC driver Install the IBM DB2 11.5 JDBC driver, db2jcc4.jar. Download the driver here .
Microsoft SQL This file is necessary only if you are using a Microsoft SQL Server Server 2019 JDBC database. driver Install the Microsoft JDBC driver 4.0 for SQL Server, mssql- jdbc-8.2.2.jre8, for SQL Server 2012 or SQL Server 2014. Download the driver here .
Oracle 19c JDBC This file is necessary only if you are using an Oracle database. driver Install the Oracle JDBC driver, ojdbc8.jar, that corresponds to your Oracle 19c version. Download the driver here .
Java Connector SAP Java Connector (JCo) Download the Windows 64-bit x86 software available in the 3.0 Cloud Connector area here .
Developer Guide Working with the Development Toolkit PUBLIC 25 3.2.2 Creating the FS-PRO Designer Runtime Database
Using the steps described in the Overview of the Installation Process for the FS-QUO Toolkit topic, the solution architect in the FS-QUO development team responsible for setting up the FS-QUO development infrastructure for the first time will create an FS-QUO development database to be shared by the development team.
Note
Record the JDBC information including the JDBC URL and development database user credentials to configure the FS-QUO toolkit database connection.
3.2.3 Installing and Configuring Eclipse
You can install and configure Eclipse for use with the FS-QUO toolkit.
Procedure
1. Unzip the eclipse-jee-2019-09-R-win32-x86_64.zip package to a local directory, which will be referred to as
a. Select Window Preferences in the top menu bar. b. Expand the left menu tree to General Network Connections . c. Select the Manual proxy configuration option in the configuration pane and enter the HTTP proxy and SSL proxy details. If you don't have this information, contact your system or network administrator. d. Choose OK. Your changes are saved. 5. Install any other Eclipse features, such as for source control, as appropriate for your development environment.
Developer Guide 26 PUBLIC Working with the Development Toolkit 3.2.4 Installing WildFly and Creating a New Server Profile
You can install WildFly and create a new server profile based on the default profile.
Procedure
1. Unzip the wildfly-preview-22.0.0.Final.zip package to a local directory, which will be referred to as
If the /server directory doesn't exist, you will have to create it.
Note
Don't use a directory containing spaces in its path.
The name of this new directory will be referred to as
3.2.5 Generating the Keystore and Enabling SSL in WildFly
You can create a default keystore for HTTPS use with WildFly and update the WildFly configuration.
Context
FS-QUO requires HTTPS to be enabled in WildFly, which in turn requires a keystore.
Procedure
1. Open a command prompt window. 2. If the SAP JVM 8 bin directory isn't defined in the PATH environment variable, use the cd command to change the directory to your JDK bin directory. 3. Run the following command and answer the questions in the console when prompted to generate a keystore and self-signed certificate: keytool -genkey -keyalg RSA -alias selfsigned - keystore
Developer Guide Working with the Development Toolkit PUBLIC 27 4. Open
6. Find the following entry in the file:
3.2.6 Installing and Configuring the FS-QUO Toolkit
After the initial Eclipse and WildFly setup is complete, you can set up the FS-QUO toolkit as an Eclipse workspace by following the instructions in this section.
3.2.6.1 Unzipping the FS-QUO Toolkit
The FS-QUO toolkit is provided in the form of an Eclipse workspace directory.
Unzip FS-QUO-toolkit-
Note
Don't use a directory containing spaces in its path.
Developer Guide 28 PUBLIC Working with the Development Toolkit 3.2.6.2 Setting up a Development Profile
Context
To provide a consistent development environment to all developers, the FS-QUO toolkit introduces a concept called development profile. A development profile contains artifacts that are common across the development project, including the following items:
● JDBC driver and data source XML file ● WildFly data source XML file ● FS-QUO configuration files in
Procedure
1. Create the new directories
Developer Guide Working with the Development Toolkit PUBLIC 29 3.2.6.3 Initializing the FS-QUO Toolkit Workspace in Eclipse
Once the workspace is configured in the file system, initialize the workspace within Eclipse by importing projects and creating a WildFly server.
Prerequisites
● You have JDK 1.8 installed ● You have Apache Maven version 3.6.0 installed.
Procedure
1. Create a parent directory for the
a. Choose Window Preferences from the menu bar. b. Select Java Installed JREs in the left menu tree. c. If you have multiple JDKs installed (for example, one 1.6 and one 1.8), Eclipse might select a non-1.8 JDK. In this case, add and select the 1.8 JDK as follows: ○ Choose Add… ○ Select Standard VM and choose Next. ○ Choose Directory… and browse to the 1.8 JDK installation directory. ○ Choose Finish. ○ Select the newly added 1.8 JDK to the list. d. Select Java Compiler in the left menu tree. e. Set Compiler compliance level to 1.8 if it's not already set. f. Choose OK. Your changes are saved. g. When prompted to rebuild the workspace, choose Yes. h. Choose Window Preferences from the menu bar. i. Select Java Installed JREs Execution Environments in the left menu tree. j. Under Execution Environments, select JavaSE-1.8 and check the 1.8 JDK that was previously added. k. Select Maven Installations in the menu tree. l. Ensure the apache-maven-3.6.0 installation is selected. m. Select Maven Java EE Integration in the menu tree. n. Under Select active Java EE configurators, deselect all three configurator options. o. Choose OK. Your changes are saved.
Developer Guide 30 PUBLIC Working with the Development Toolkit 4. Select Window Perspective Open Perspective Other… from the menu bar, then select Java EE to open the Java EE perspective. 5. Import the projects into the workspace as follows:
a. In the menu bar, select File Import… , then select Maven Existing Maven Projects into Workspace… and choose Next. b. Choose Browse… for the Select root directory field and select
Note
Immediately after import, the workspace will contain numerous build path errors. The next few steps will provision Maven dependencies properly and resolve these errors.
There are also errors in the following categories that will persist but can be ignored: ○ WSDL Problem ○ XML Schema Problem ○ XSL Problem
6. In the Project Explorer view, select FS-QUO-toolkit and choose Maven Update Project... from the popup menu. In the new dialog, choose OK, then wait for the workspace to be updated and built.
7. In the Project Explorer view, select FS-QUO-toolkit and choose Run As... Maven install from the popup menu. Maven will install binary artifacts from the FS-QUO-toolkit to your local Maven repository as part of the initialize phase, compiling, running unit tests, and installing artifacts on all projects. When the update is completed, ensure that there are no Java problems in the Markers view. 8. Initialize the
a. In the Project Explorer view, select FS-QUO-dev and choose Run As... Maven build... from the popup menu. b. Enter compile in the Goals field. c. Add the following parameters:
wildfly.server.dir:
profile:
d. Choose Run to run the Maven configuration. 9. Perform the following steps to generate an encryption key required by FS-QUO: a. Ensure system variable JAVA_HOME is set in your system properties to point to a Java directory. b. Open the following file with a text editor and change the properties according to the file comments to set a passphrase:
The passphrase can be of any length and contain any characters (including Unicode). The recommended size is at least 16 characters for a 128-bit key.
Developer Guide Working with the Development Toolkit PUBLIC 31 c. Run the toolkit_dir\FS-QUO-toolkit\FS-QUO-dev\target\home\bin\genkey.bat command and follow the displayed instructions to generate a key. The key.config file is generated in
10. In the Project Explorer view, select FS-QUO-toolkit and choose Maven Update Project... from the popup menu. In the new dialog, choose OK, then wait for the workspace to be updated and built. At this point, all Java build path problems should be resolved. 11. If you don't already have a server defined, create one in the Servers view: a. Unpackage wildfly-preview-22.0.0.Final.zip. b. Go to the Servers perspective and choose New Server from the popup menu.
The New Server wizard opens. c. Look for WildFly 22.0 in the Server Type list. If it's not available, download the server adapter by performing the following steps:
○ Choose the Download additional server adapters link. ○ Once Eclipse loads the server adapters that are available for download, select JBoss AS, WildFly & EAP Server Tools and choose Next. ○ On the Review Licenses page, accept the license and choose Finish. ○ Choose OK on the restart prompt. ○ Wait for the software to be installed. When prompted with a security warning about unsigned content, choose OK to continue. ○ When you are prompted to restart Eclipse, choose Yes to restart and open the same workspace when prompted again. d. Select WildFly 22.0 and give it a Server name of your choosing. e. Choose Next. f. In the Create a new Server Adapter wizard page, choose Create new runtime from the dropdown and click Next. g. On the following page, enter the following: ○ In the Runtime JRE section, select the Alternate JRE radio button. ○ Ensure that JDK 1.8 is selected as the Alternate JRE. ○ For the server base directory, enter server/
If an -Xmx265m argument already exists, be sure to replace it with -Xmx1024m.
Developer Guide 32 PUBLIC Working with the Development Toolkit Note
Ensure that forward slash is being used.
f. Go to the Deployment tab. g. Under Default Settings, ensure that Use the JBoss deploy folder is selected. h. Ensure that Deploy Directory is set to server\
[…]
b. Register the JMS Queues used by FS-QUO:
[…]
c. Register the JMS Connection Factory used by FS-QUO: Change:
[…]
Developer Guide Working with the Development Toolkit PUBLIC 33
to
[…]
d. Register JNDI lookup bindings used by FS-QUO:
[…]
e. Enable remote access for WildFly by changing
to
17. Extract the resource-1.38.16.jar and utils-1.38.16.jar files from
Developer Guide 34 PUBLIC Working with the Development Toolkit 3.2.6.4 Validating Initial Configuration of the FS-QUO Toolkit
With the initial configuration completed, start the server and verify that the FS-QUO application is running.
Procedure
1. In the Servers view, select WildFly 22.0 at localhost and choose Start from the popup menu. 2. Wait for the server to start. When the start process is completed, check the Console view to ensure that the application starts without errors. 3. In Internet Explorer, go to the FS-QUO Administrative Console at http://localhost:8080/csiroot/ admin. 4. Log in using admin as the user name and password as the password. The application has started successfully if you can access the FS-PRO Administrative Console. 5. Choose Logout.
3.2.7 Copying and Deploying Insurance Product JAR Files from Product Configurator
Prerequisites
To avoid potential errors with some folders required for successful deployment, follow the steps defined in the Building Imported Flowlets with the BatchFlowBuildServlet Tool topic of the SAP Underwriting for Insurance Installation Guide prior to performing the next steps.
Context
The FS-QUO toolkit requires insurance products to be deployed to provide meaningful contents in runtime. Meanwhile, your organization should already have a Product Configurator instance set up and insurance products imported or developed.
Developer Guide Working with the Development Toolkit PUBLIC 35 Procedure
1. In Product Configurator, ensure that the products selected for deployment have been published. You will find the deployed insurance product JAR files in the
6. Select Product Deploy Products from the menu bar. 7. For each insurance product JAR file to be deployed, perform the following actions: a. Browse to the location of the JAR file. b. Select the file. c. Choose Upload. 8. Verify that the product JAR files are deployed and registered successfully by validating that the same set of insurance product JAR files now exist in
3.2.8 Configuring the FS-QUO Toolkit for FS-QUO
Context
At this point, the FS-QUO development environment is only set up as the runtime engine, but it doesn't yet have the complete setup necessary for underwriting. Follow the sub-topics listed below in the Configuring Designer/Runtime for Underwriting topic of the SAP Underwriting for Insurance Installation Guide to complete the FS-QUO setup.
If your product requires FS-PM and ERP-BP integration, refer to the Integration Guide for instructions to configure integration settings in the FS-QUO Administrative Console.
Note that the
Procedure
1. Importing the flowlet groups in Designer
Developer Guide 36 PUBLIC Working with the Development Toolkit 2. Importing and deploying the scheme 3. Building imported flowlets with the BatchFlowBuildServlet tool 4. Updating configuration settings 5. Synchronizing product flowstores 6. Updating objects and loading data for underwriting in the Designer environment
Caution
While updating the FS-QUO database, be sure to select the option to create test users. The test users will be used in later steps to validate the installation.
3.2.9 Installing and Configuring Standalone SAP JCo (Optional)
Note
Installing and configuring SAP JCo is applicable only for FS-PM and ERP-BP integrations.
SAP JCo is required by FS-QUO to make RFC and APIF calls to FS-PM and ERP-BP in an integrated landscape. For an insurance product requiring integration, such as the Sample Household Product, you must install SAP JCo and make it available to the standalone server to write new business.
Previous versions of FS-QUO supported the use of JCo version 2.1. FS-IPW version 1.0 SP05 and FS-QUO version 3.0 SP03 and later require JCo version 3.0. It's highly recommended that you upgrade your use of JCo 2 to JCo 3, although it is still possible to continue using JCo 2 with some metadata and configuration changes.
You will need to perform the following tasks:
● Install SAP JCo ● Configure the JCo Standalone Settings in FS-QUO ● Test the RFC Destinations
3.2.9.1 Installing SAP JCo
Prerequisites
You must have authorization to download SAP software from the SAP web site.
Developer Guide Working with the Development Toolkit PUBLIC 37 Procedure
1. Go to ONE Support Launchpad. . 2. Choose Downloads from the dropdown list. 3. Enter SAP Java Connector in the search field. The search results will be displayed. 4. Download the 64bit x86 Windows and Windows Server version of the SAP JCo 3.0.14 zip file. 5. Unzip the downloaded file to a local directory and copy the sapjco3.jar and sapjco3.dll files to the
3.2.9.2 Configuring JCo Standalone Settings in FS-QUO
Since RFC destinations can only be used on NetWeaver AS Java, the FS-QUO toolkit must use JCo in standalone mode to connect to integrated SAP systems.
Context
The configuration method for JCo 3 is also different for that of JCo 2 in earlier version of FS-QUO toolkits.
Procedure
1. Confirm the destination names for FS-PM and ERP-BP RFC connectivity that's defined in the RFC reference object in FS-PRO Product Configurator. They will be referred to as
2. Go to Configuration Destinations . 3. Copy
Developer Guide 38 PUBLIC Working with the Development Toolkit 6. Open the FS-QUO toolkit workspace in Eclipse and start the WildFly server. 7. In Internet Explorer, go to the FS-QUO Administrative Console at http://localhost:8080/csiroot/ admin. 8. Log in using admin as the user name and password as the password.
Note
If you have the following entries: ○ FSPM_DEST_STANDALONE_PWD ○ BP_DEST_STANDALONE_PWD already configured within Configuration System Env RFC Standalone Credential then you don't need to proceed with steps 11 and 12 unless you are altering the existing names.
9. Choose System Edit Configuration Settings from the menu bar.
10. Select Configuration System from the configuration tree. 11. Add a new configuration variable for your FS-PM connection password entry. a. In the editor pane, select RFC Standalone Credential from the Configuration dropdown list. b. Choose the Add Config Variable button. c. Enter
13. Go to Configration System Env in the configuration tree and select RFC Standalone Credential. 14. Enter the password of the user for the RFC connection to the FS-PM system in the Override field of the
16. Select System Reload Configuration Setting from the menu bar and choose Reload All Config for the new password settings to take effect.
Developer Guide Working with the Development Toolkit PUBLIC 39 3.2.9.3 Testing RFC Destinations
You need to verify that the connectivity defined in the destinations is functional:
Procedure
1. Login to the Administrative Console.
2. Select System Test SAP Server Connectivity . 3. Select the Test JCo3 Feature tab. 4. Choose the destination and choose Connect to test the connection. A pop up message will indicate whether the connection is valid or invalid. 5. Repeat these steps for all destinations.
3.2.10 Validating the Complete FS-QUO Toolkit Installation (Fiori)
When the FS-QUO toolkit setup has been completed, you can validate the installation.
Context
This procedure applies SAP UI5 Fiori-based applications only. There is a separate topic for Sencha-based applications.
Note
When working with FS-PM and ERP-BP, review the connection configurations. If these connections aren't configured properly, the Sencha-based UI flow will work but the SAP Ui5 Fiori app will fail.
Procedure
1. Open the FS-QUO toolkit workspace in Eclipse and start the WildFly server. 2. In Internet Explorer, go to the Fiori Launchpad login page at http://localhost:8080/ipw-launch- pad 3. Log in using uw2 as the user name and password as the password. 4. After successful login you should see the Fiori Launchpad which will display tiles representing the various Fiori applications available.
Developer Guide 40 PUBLIC Working with the Development Toolkit 3.2.11 Validating the Complete FS-QUO Toolkit Installation (Sencha)
When the FS-QUO toolkit setup has been completed, you can validate the installation.
Context
This procedure applied to Sencha-based applications only. There is a separate topic for SAP UI5 Fiori-based applications.
Note
When working with FS-PM and ERP-BP, review the connection configurations. If these connections aren't configured properly, the Sencha-based UI flow will work but the SAP Ui5 Fiori app will fail.
Procedure
1. Open the FS-QUO toolkit workspace in Eclipse and start the WildFly server. 2. In Internet Explorer, go to the FS-QUO runtime application at http://localhost:8080/csiroot. 3. Log in using uw2 as the user name and password as the password. 4. Initially, the work list view should be empty. Complete a new business flow with the deployed product to ensure that it is successful.
3.2.12 Copying the
After the local FS-QUO toolkit set up is complete, you should update the development profile with the artifacts from the
● ppms\app\runtime ● ps\product
The FS-QUO toolkit is now completely set up for the first time. For team development, you should check
1. Installing and configuring Eclipse. 2. Installing and configuring WildFly.
Developer Guide Working with the Development Toolkit PUBLIC 41 Follow only the Installing WildFly and Creating a New Server Profile topic. 3. Installing and configuring the FS-QUO toolkit. For Unzipping the FS-QUO toolkit topic, replace the instruction with checking out the toolkit directory from source control. 4. Validating the complete FS-QUO toolkit installations
After that, the development team can verify the integrated SCM tools within Eclipse and link each project to your source control system for updates and commits.
3.2.13 Administrative Console Changes
Context
Since the toolkit uses the Windows environment, the UNIX classpath parameter must be changed to reflect the Windows environment in the Administrative Console.
Procedure
1. Log into the Administrative Console.
2. Navigate to System Configuration System Env System Environment . 3. Modify the classpath.
3.2.14 Debugging UI Changes
When developing and debugging UI changes, delete the Component-preload.jsfile. These files are generated based on the view XML files. If the Component-preload.js file isn't deleted, you will have to re- package and deploy every time the view code is changed.
Developer Guide 42 PUBLIC Working with the Development Toolkit 3.2.15 Building the Custom FS-QUO SCA and
Extensions and customizations made in the FS-QUO toolkit must be built and packaged so that they can be deployed to an FS-QUO runtime environment. There are generally two custom artifacts to be generated for deployment:
1.
However, instead of generating artifacts for deployment manually from the FS-QUO-toolkit, you should implement a build process that does the following:
1. Check out the FS-QUO toolkit source code from your source control system. 2. Run Maven install on the FS-QUO-toolkit Maven reactor module to generate the build artifacts. 3. Archive the build artifacts to a central location, such as a Nexus repository or in the Jenkins project, for deployment.
3.2.15.1 Generating a Custom Build Number
Users can provide custom build information for the custom FS-QUO SCA and CSI Home package built from the FS-QUO toolkit. The custom build information, which includes version and build date for both the application and
By default, the custom version is set to the Maven POM version of the ASLibrary and FS-QUO-install modules, both of which are inherited from the FS-QUO-toolkit parent POM.
To provide your own custom version, simply provide the property quo.custom.version using the -D option when running the mvn command.
3.2.16 Updating the FS-QUO Toolkit
Prerequisites
● Before the update, you must review the documentation of the new SP or PL to determine if there are API and framework changes affecting your current customizations. It is very important to assess the impact and allocate sufficient time and resources to address these changes as part of the overall FS-PQM update plan. ● You must have the list of files in the FS-QUO toolkit which you have customized (added and changed). The code that was changed in modified files must also be marked with comments wherever possible, so that
Developer Guide Working with the Development Toolkit PUBLIC 43 customizations can easily be identified within the files. You can generally obtain this information by comparing your custom FS-QUO toolkit and the original FS-QUO toolkit from the FS-QUO assembly of the same version with a data comparison program. ● FS-PRO is already updated with the new SP or PL source code and insurance product bootstraps, so that the product JAR files can be deployed and tested in the FS-QUO toolkit after the update.
Context
If you have FS-QUO customizations, when updating FS-QUO with new support packages (SP) and patch levels (PL), you must first update the FS-QUO toolkit so that you can locally verify the update and be able to generate the custom SCA and CSI Home packages before deploying to FS-QUO runtime environments.
Procedure
1. Update your FS-QUO toolkit Eclipse workspace with the latest code from your source control system. 2. Obtain the new FS-QUO toolkit package from the FS-QUO assembly and unzip it to a local directory. 3. Port all customizations from the custom FS-QUO toolkit to the new FS-QUO toolkit using the general rules below. For productivity, you can use a data comparison program to visualize the changes for porting. ○ Copy all new files and modules to the new FS-QUO toolkit. ○ For files that have been customized, compare each file and port the changes to the file in the new FS- QUO toolkit as appropriate. ○ For trivial changes, simply copy the custom code. ○ For non-trivial changes due to significant changes to the file or change of API and framework in the new SP or PL, manually complete the merge within Eclipse (see below). 4. Replace the FS-QUO-toolkit project in the FS-QUO toolkit Eclipse workspace with the FS-QUO-toolkit project from the new FS-QUO toolkit directory which now has the customizations merged. 5. Open the updated FS-QUO toolkit Eclipse workspace in Eclipse. 6. If there are remaining customizations that couldn't be merged in earlier steps because they are non-trivial, complete the merge within Eclipse by doing more analysis and adapting the code. 7. Run Maven install to ensure that newly merged code builds successfully. 8. Run Maven compile on the FS-QUO-dev module to update the local
Developer Guide 44 PUBLIC Working with the Development Toolkit 10. Publish the FS-QUO-IPW-wildfly-ear file and start the toolkit, then perform some sanity tests to locally verify that the upgrade has been done successfully. 11. If necessary, update the development profile in FS-QUO-dev/src/profiles with any changes such as Administrative Console settings resulting from the upgrade. 12. Check the updated FS-QUO toolkit source code into source control.
Results
With the FS-QUO toolkit updated, you can now create the custom FS-QUO SCA and CSI Home package for updating the FS-QUO runtime environment. For details, follow the SAP Underwriting for Insurance Support Package Upgrade Guide.
Related Information
PTTO Removal [page 384]
3.3 Additional Software Management Tools
Optionally, you can set up automated build and verification testing processes to manage your FS-QUO extension changes. For example, you can install the following tools on a server to manage source control and builds:
● Subversion ● TortoiseSVN ● Jenkins
When you build the code, you compile and package your extension changes out of Subversion (or any other version control software that you are using). This helps you deploy the data for integration testing with product changes and maintain continuous integration.
To track the extension changes, you can also use a change management process.
Note
For more information about best practices, contact SAP support.
Developer Guide Working with the Development Toolkit PUBLIC 45 3.4 Changing Default Error Report Settings
The error report on the Exception screen contains a summarized description of the errors. If you want to view more details, you must override the default flag in local environments by changing the flag from Yes to No.
You can find the flag, SuppressErrorinAS in the following location: Application SAP Product Lifecycle Management for Insurance Env Application Environment .
Developer Guide 46 PUBLIC Working with the Development Toolkit 4 Extensibility Best Practices
4.1 Understanding Extensibility
Extensibility generally refers to the ability to customize an SAP system in a supported way.
Because release 3.0 of FS-PQM has introduced a number of new concepts to the architecture (such as Fiori applications, Enterprise Services, and UI5 eApps), it is best to think of FS-QUO extensibility as being composed of two parts:
Extensibility for This refers to implementations/frameworks that existed in FS-QUO prior to this release, legacy areas of the such as Sencha (Ext-JS), Spring MVC, Spring Web Flow, EMF Policy Model, Spring-based system. business services, and Spring-based integration framework. There is no change to the extensibility of these areas.
Extensibility for This refers to implementations/frameworks that didn't exist in FS-QUO prior to this areas that are new release, such Fiori launchpad, UI5, OData, and Enterprise Services. in 3.0. Because these new areas largely follow standard SAP design practices, there is less of a need to distinguish between extension and customization. Any configurability for a feature will be described as part of that feature's documentation (as opposed to being covered under "Extensibility"). The Toolkit continues to include all source code for the FS-QUO implementation, available for the customer to analyze or customize. During an upgrade of FS-QUO, the customer is responsible for reapplying any customizations. Depending on the invasiveness of the customization, this may involve re- work for the customization. The recommended best practice is to minimize customizations in the FS-QUO code itself, and to keep the majority of custom logic separate (such as in a separate Toolkit project) in order to reduce the effort of reapplying customizations during upgrade.
The following topics in this section describe each part in more detail.
It should be noted that, as with any SAP system, customers should seek guidance from SAP before making a significant customization to FS-QUO. This is to ensure that the customization is in line with the architecture of the system and will continue to be supported in future releases.
Developer Guide Extensibility Best Practices PUBLIC 47 4.2 Extensibility Best Practices (Version 3.0 and Later)
4.2.1 Understanding Design Time
The following diagram shows the various systems and roles involved during Design Time for FS-PQM. Any customizations are made in this environment.
4.2.2 Customization Site Map
The following diagram outlines what types of customizations are possible and the steps involved. The next section contains extensibility scenarios that provide examples for making each of these types of customization.
Developer Guide 48 PUBLIC Extensibility Best Practices 4.2.3 Extensibility Scenarios by Area
Before you begin, you must have a successfully installed FS-QUO Toolkit in order to perform these scenarios. These scenarios should work both locally in WildFly as well as on NetWeaver.
4.2.3.1 Example: Modifying the General Information Screen in the FS-QUO Fiori App
This topic details a sample scenario to demonstrate FS-QUO extensibility.
Context
The purpose of this example is to add a new field, Producer License, to the General Information screen. This field will trigger a message when its value changes. Its value will be populated from the back-end.
Developer Guide Extensibility Best Practices PUBLIC 49 Procedure
1. In the QUOUINewBusiness project, open the GeneraInfo.view.xml file. 2. Find the input element with the id value inputTextforProducerCode. After that element, add the following text:
3. Open the GeneraInfo.controller.js file.
Note
This Controller declares it’s binding to the above View
4. Above the function handleDateChange, add the following text:
handleProducerLicenseChange: function(oEvent) { sap.m.MessageBox.show("Producer License is set to: " + oEvent.getSource().getValue() ,{ icon: sap.m.MessageBox.Icon.WARNING, title: this.oBundle.getText("WARNING" ) , actions: [fs.ipw.insquote.create.util.Formatter.i18nFormatter("BTN_OK")] } ) ; },
5. In the QUOODataLibrary project, open class com.sap.fs.quo.odata.model.Producer and create a new field under producerName, as follows:
@EdmProperty protected String producerLicense;
6. Add getter and setter methods for this new field and update methods equals() and hashCode() to include this new field.
Note
This can be done automatically in Eclipse by going to Source Generate hashCode() and equals() .
7. Open class com.sap.fs.quo.odata.model.mapper.ProducerMapper and modify method mapModelToEntity(2 args) – under the line containing producer.getAgencyName(), add the following line: mappedEntity.setProducerLicense("XYZ"); 8. Build the toolkit. 9. Test the change in runtime: a. Start a new quote. b. Search for and select a Producer. c. The Producer Details should be populated on the General Information screen.
Developer Guide 50 PUBLIC Extensibility Best Practices d. Check that the new Producer License field appears as part of the Producer Details. e. Check that an alert appeared, due to the fact that the Producer License field value changed when the Producer was selected.
4.2.3.2 Example: Modifying the UW Case Screen in the UW Fiori App
This topic details a sample scenario to demonstrate FS-QUO extensibility.
Procedure
1. Create a new template: a. Create the viewer and controller for your new template under the path ./view/pool/common. In this case create a new template which called SAPMAP.
Note
If you use controls included in a special library, you should specify the library in component.js.
b. If you create a common template, define the validation rule for its own data binding. 2. Create a new block: a. Create the viewer and controller for your block.
Note
This code was copied from violation.controller.js and modified.
b. Specify the templates in the block. c. Specify the data binding for the templates in the block. 3. Configure the block into a section: a. Add the block as a child node under the sections list.
Note
If you use a router, configure the new section into your routers.
b. Your new module displays in the detail information page.
Developer Guide Extensibility Best Practices PUBLIC 51 4.2.3.3 Example: Using Property Valuations in the Enterprise Service
This topic details a sample scenario to demonstrate FS-QUO extensibility.
Context
The purpose of this example is to pass a custom value as a Property Valuation to the Create Quote enterprise service. The value will be stored in the database, and also returned in subsequent Retrieve Quote enterprise service calls.
Procedure
1. Update the interface-to-data field mapping in Product Configurator. Create a new product named Test ES Customization Global Reference Object based on product SAP Global Reference Object. 2. In this new product, go to component Business Object Mapping and expand the value row with Business Object Name = PropertyAndCasualtyInsuranceContract. 3. In the child component Business Object Attribute Mapping, add a new value row as follows:
Business Object Attribute Name = "PropertyValuation.TestCustomAttribute" Column Name = "SUBJECT"
Note
The table ABDAPOLPR is implied.
4. In the Extended Underwriting Application Configuration product, go to the Configuration/ Config component and change the value row with Key = "BusinessObjectMappingReferenceObjectName" to have Value = "Test ES Customization Global Reference Object". 5. Test the enterprise server change by locating the WSDL URL for the Quotation Enterprise Service on your FS-QUO server. It should be: http://
Developer Guide 52 PUBLIC Extensibility Best Practices 8. Send the request. In the response, note the Quote ID contained in the InsuranceQuote/ID element. 9. Create a request for the RetrieveInsuranceQuote operation, setting the above Quote ID in InsuranceQuote/ID element. 10. Send the request. In the response, check that the PropertyValuation snippet from the previous step appears inside the PropertyAndCasualtyInsuranceContract element. 11. Query the database with the following statement:
select ABDAPOLPR.SUBJECT from POLICY_QUOTE, ABDAPOLICY, ABDAPOLPR
where POLICY_QUOTE.PK_ID =
and ABDAPOLICY.PARENT_ID = POLICY_QUOTE.PK_ID and ABDAPOLPR.PARENT_ID = ABDAPOLICY.PK_ID
There should be only one row.
4.2.3.4 Example: Adding a Custom Entry to the Schema
This topic details a sample scenario to demonstrate FS-QUO extensibility.
Context
The purpose of this example is to pass a custom value as part of a custom entity. The value will be stored in the database, and also returned in subsequent Retrieve Quote enterprise service calls.
Procedure
1. Change the Service Implementation to pick up the new field by creating a custom java project named QUOEnterpriseServicesImpl_
public static void customStep ( InsurQteFSCrteReqInsurQte insuranceQuote, UpdateableResultSet abdaPolicyUrs ) { String customValue = insuranceQuote.getCurrencyCode(); abdaPolicyUrs.setString ( "SUBJECT", customValue + "_Testing" ); }
4. In the QUOEnterpriseServices project, open the InsuranceQuoteCreateServiceImpl class. At the bottom of the createInsuranceQuote method (before the return statement), add the following line:
Developer Guide Extensibility Best Practices PUBLIC 53 com.customer.quo.es.CreateQuoteServiceImpl.customStep ( insuranceQuoteRequest, abdaPolicyUrs );
Note
insuranceQuoteRequest is the variable name for the InsuranceQuote object.
5. Build the toolkit and test the enterprise service change. Locate the WSDL URL for the Quotation Enterprise Service on your FS-QUO server. It should be: http://
select ABDAPOLICY.SUBJECT from POLICY_QUOTE, ABDAPOLICY
where POLICY_QUOTE.PK_ID =
and ABDAPOLICY.PARENT_ID = POLICY_QUOTE.PK_ID
There should be only one result row.
4.2.3.5 Example: Creating a Custom eApp Renderer
This topic details a sample scenario to demonstrate FS-QUO extensibility.
Procedure
1. In the FS-QUO-install project (CSI_HOME contents), create a folder named /src/main/resources/ ppms/app/as/custom/web/eapp/renderer/myCustomRenderer1. 2. Open the camilionweb.war archive and copy the contents of the /resources/eapp/ui5/renderer/ splitApp folder and paste them into the folder you created in the previous step. 3. Open the …/myCustomRenderer1/view/Detail.view.xml file. Add the following text in the file; place the new text before the Button element with the id = dtlSave, : 4. Open the …/myCustomRenderer1/view/Detail.controller.js file. Add the following text in the file; place it before the definition for function handleNext: customAlert : function(oEvent) { alert("Hello, this is a customization."); }, 5. Build the toolkit. 6. Apply your custom renderer in Product Configurator. Open the Data List Base product. In the DLRendererSource component, add a value row with the following values:
Name = Custom Renderer 1 Class = myCustomRenderer1
Developer Guide 54 PUBLIC Extensibility Best Practices Type = EAPP_LAYOUT
7. Publish the Data List Base product, and open the desired test product. 8. In the eApp Layout component, locate the value row with the following information: eApp Name = ProducerApplicationPQM30:. Change Renderer to Custom Renderer 1. 9. Publish and deploy your desired product. 10. Test the change in runtime: a. Start a New Quote, selecting your desired product, and go into the eApp. b. Select Policy from navigation panel on the left side. c. On the detail panel on the right side, in the footer bar, check that the My Custom Button button appears to the left of the Save button d. Choose My Custom Button.
Results
You should receive an alert with message Hello, this is a customization.
4.2.3.6 Example: Modifying the BP Search UI
This topic details a sample scenario to demonstrate FS-QUO extensibility.
Context
The purpose of this example is to change the title of the BP Search popup from Business Partner Search to Customized Business Partner Search - this is a customization.
Note
BP Search back-end logic isn't covered because it's using the same servlet as in FS-PQM 2.0.
Procedure
1. In the FS-QUO-install project (CSI_HOME contents), open the BPSearchUtil.js file and replace the following line: this._oAccountDialog = sap.ui.xmlfragment(that.getView().getId(), "eapp.screen.controller.fragment.BPSearch", this); with the following text: this._oAccountDialog = sap.ui.xmlfragment(that.getView().getId(), "com.customer.fragment.CustomBPSearch", this); 2. Corresponding to the previous step, create a folder named /src/main/resources/ppms/app/as/ custom/web/com/customer/fragment and copy the /src/main/resources/ppms/app/as/
Developer Guide Extensibility Best Practices PUBLIC 55 custom/web/eapp/screen/controller/fragment/BPSearch.fragment.xmlfile and paste it as CustomBPSearch.fragment.xml in the new folder. 3. Open the CustomBPSearch.fragment.xml file and replace the title="{i18n>BP_SEARCH}" line with title="{i18n>BP_SEARCH} - this is a customization" 4. Update the i18n_en_US.properties file. a. Go to the eapp/screen/controller/i18n folder b. Open the i18n_en_US.properties file. c. Replace the following line: BP_SEARCH=Business Partner Search with line: BP_SEARCH=Customized Business Partner Search 5. Update the i18n_en.properties file. a. Go to the eapp/screen/controller/i18n folder b. Open the i18n_en.properties file. c. Replace the following line: BP_SEARCH=Business Partner Search with line: BP_SEARCH=Customized Business Partner Search 6. Build the toolkit. 7. Test the change in runtime: a. Start a new quote and go into the eApp. b. Open a BP search. For example, search for Policyholder. c. Confirm that the title of the popup is Customized Business Partner Search - this is a customization.
4.2.3.7 Example: Modifying the msg.PM Rating Stem
This topic details a sample scenario to demonstrate FS-QUO extensibility.
Procedure
1. Do a baseline rating test: a. Using the sample request XML, call the laRatingWS PWS service on the Whole Life product. b. Note that the value in the INSAMOUNTABS_AM element (the Sum Insured amount) is 53996.99. 2. In the ASLibrary project, open the MsgRating class. a. Modify the rating.
For example, alter PREMAFTERTAX_AM by changing it to a static amount in the Rating method. 3. Build the Toolkit. 4. Update your environment with the latest ASLibrary.jar, which is produced when you built the Toolkit in step 3. 5. Re-run the rating test. a. Using the sample request XML, call the laRatingWS PWS service on the Whole Life product.
Developer Guide 56 PUBLIC Extensibility Best Practices Results
Even though the request is the same, the premium value has changed according to the modification in MsgRating.
4.2.4 Adding a Custom Project
You can add a custom project.
Procedure
1. In Project Explorer, right-click on FS-QUO-toolkit and select New Other... .
2. Select Maven Maven Module and choose Next. 3. Select the Create a simple project checkbox. 4. Enter the module name and then choose Next. 5. Change the packaging depending on what type of module it is: ○ Java utility: jar ○ EJB: ejb ○ Web: war 6. Choose Finish. 7. Open the reactor pom.xml file (that is, the FS-QUO-toolkit pom.xml file) and re-arrange the
Developer Guide Extensibility Best Practices PUBLIC 57 4.3 Extensibility Best Practices (Legacy)
4.3.1 Understanding Extensibility
This topic details the concept of extensibility as applies to legacy functionality for versions of FS-QUO earlier than 3.0.
Extensibility is the ability to add or change functionality without modifying the core architecture. Therefore, when you upgrade to a new release, you don't need to re-analyze, re-design, or re-factor the code.
You can extend FS-QUO in the following ways:
● Configuration ● Extension
Configuration
Configuration lets you change FS-QUO behavior by using the provided tools (for example, Administrative Console and components in FS-PRO).
The following are configuration examples:
● Modify the FS-QUO roles and permissions by updating value rows in the Role and Permission components in Product Configurator ● Modify the search behavior by updating the value rows in the search framework components in the Underwriting Application Configuration object ● Configure and manage the system, application, and user profiles by using the Administrative Console provided with FS-QUO.
You don't need to have programming knowledge to make configuration changes. These changes are preserved in an upgrade.
Extension
Extensions let you change FS-QUO behavior using predefined programming processes. Examples of extensions are the following:
● Add business service classes or methods ● Replace or wrap logic in a business service method ● Add Policy Model classes ● Add attributes to Policy Model classes
For instance, you can modify the FS-QUO screens and sections by extending the user interface development components (such as handlers, handler beans, and JavaScript classes).
You need programming knowledge to implement extensions. In an upgrade, these changes are preserved automatically or by merging the information.
Developer Guide 58 PUBLIC Extensibility Best Practices 4.3.2 Extension Compared to Customization
This topic details the concept of extensibility and customization as applies to legacy functionality for versions of FS-QUO earlier than 3.0.
To modify the default FS-QUO application behavior for your organization's needs, we recommend that you extend the FS-QUO functionality instead of customizing the code.
With extension, you can add new functionality or replace the default functionality without modifying the core architecture. Therefore, when you upgrade FS-QUO, you don't need to re-analyze, re-design, or re-factor the code. Your changes are preserved automatically or by merging the information.
With customization, you will likely need to re-analyze, re-design, and re-factor the code when you upgrade FS- QUO. The customized code may no longer be compatible with the core design and architecture.
To avoid customizations and re-analyses during upgrades, follow these guidelines:
● Don't call or change a FS-QUO core service that isn't well-specified. That core service may not be used in future releases of FS-QUO. ● Don't change part of the implementation of a business service. ● Don't change the existing relationship between Policy Model objects. ● Don't change the underlying mapping between existing Policy Model objects and the persistence layer (URS). ● Don't add Spring aspects. ● Don't implement any changes that modify or depend on FS-QUO components that aren't designed for configuration or extension.
4.3.3 Location of Configuration Changes
This topic explores extensibility concepts that apply to legacy functionality for versions of FS-QUO earlier than 3.0.
When you make configuration changes in Product Configurator, we recommend the following best practices:
● Make configuration changes in separate, extension products that inherit from products that FS-QUO provides. For example, FS-QUO provides the Underwriting Application Configuration object for the FS-QUO application configuration. To make configuration changes, use the Extended Underwriting Application Configuration object, which inherits from the Underwriting Application Configuration object. As another example, FS-QUO provides the Commercial P&C Template. You can extend (inherit from) this product to create and configure your own marketable products. ● Don't make removal changes in Product Configurator (for example, removing components, attributes or values, classes, or methods). These changes aren't supported.
Developer Guide Extensibility Best Practices PUBLIC 59 4.3.4 Location of Extensions
This topic explores extensibility concepts that apply to legacy functionality for versions of FS-QUO earlier than 3.0.
When you extend the FS-QUO functionality, we recommend the following best practices for storing your files:
● Create a new directory or project in your coding environment. Use the same directory structure as the project libraries installed from the FS-QUO development toolkit. For example, to create extensions in ASLibrary, create a new project that depends on that library. Use a naming convention that distinguishes your libraries, such as AS_yourProjectName. Creating a separate project simplifies merging because you only need to copy the new project into the target branch. ● Copy the Java or XML files that you want to modify from the FS-QUO libraries to the corresponding libraries in your new directory or project. Modify those copied files. Copying the files preserves the original files as a backup. ● FS-QUO uses the package prefix, com.camilion.as. Use a different prefix (for example, com.yourProjectName.as.services).
Note
In some situations, you might not be able to extend the FS-QUO code to handle the changes you need for your environment. These situations might require changes directly in the source code. For example, a temporary workaround might need to be applied to the source code until the issue is resolved in the next release. These types of changes are customizations. To handle these types of customization changes, contact SAP Support for help.
Related Information
Understanding the FS-QUO Development Toolkit Contents [page 22]
4.3.5 Changes Preserved After an Upgrade
This topic explores extensibility concepts that apply to legacy functionality for versions of FS-QUO earlier than 3.0.
When FS-QUO is upgraded, your configuration changes are always preserved. Your extension changes are preserved automatically or might require a merge.
Additionally, the following items are always retained and unchanged so that all extensions will continue to work in upgraded FS-QUO releases:
● User interface base classes and frameworks ● Flow states and transitions ● Business Services (interface and implementation signatures) ● Stems available in Product Configurator ● Policy Model classes and attributes
Developer Guide 60 PUBLIC Extensibility Best Practices ● Database views ● Product model templates
4.3.6 Conflicts with New Functionality
This topic explores extensibility concepts that apply to legacy functionality for versions of FS-QUO earlier than 3.0.
In some situations, extended functionality and new features in an upgrade might conflict. For example, suppose that you extended some components that the New Business flow uses, and a new release of FS-QUO introduces a new transaction that reuses parts of that flow. The new transaction invokes these extensions and might cause the new transaction to function differently than expected.
As another example, a new release of FS-QUO might include functionality that completely replaces existing functionality. For instance, renewals might be implemented differently in the new release.
To resolve these conflicts, you can do the following:
● If you want to use the new functionality and preserve the extensions, analyze the differences between the existing and new functionality. Modify the extensions to apply the differences. ● You don't have to use the new functionality. Configuration and extension changes are always preserved in an upgrade. Therefore, you can continue to use the existing, extended functionality. However, you must analyze the impact of the existing extensions on the new functionality included in the upgraded release.
4.3.7 Merging Changes in an Upgrade
This topic explores extensibility concepts that apply to legacy functionality for versions of FS-QUO earlier than 3.0.
To upgrade FS-QUO, import the AS Bootstrap Products in a new FS-PRO instance to see the changes in the latest release. To merge any configuration changes that you made in objects and components (for example, the extended Underwriting Application Configuration object), compare the configurations in the new FS-PRO instance and your existing environment. Manually apply the differences to your existing environment.
For more information about importing the Bootstrap Products, see the SAP Underwriting for Insurance Installation Guide.
4.3.8 Typical Extensibility Scenarios
This topic explores extensibility scenarios that apply to legacy functionality for versions of FS-QUO earlier than 3.0.
This section describes typical scenarios of extending FS-QUO using configuration and extension.
Developer Guide Extensibility Best Practices PUBLIC 61 Notes:
● These examples assume that the FS-QUO projects (libraries and source) are installed from the FS-QUO Development Toolkit. ● For more information about extending specific FS-QUO classes and services, see the related chapters in this guide.
4.3.8.1 Example: Adding a Risk Type
This topic explores extensibility scenarios that apply to legacy functionality for versions of FS-QUO earlier than 3.0.
Context
If the risk types included in the marketable product templates don't cover all the risks in your product, you can add a risk type. For example, you might want to add vehicle or driver as risk types for a Commercial Auto marketable product.
Notes:
● We recommend that you prefix modified tables and columns with a value that's specific to your organization (for example,
Procedure
1. Log in to Designer. 2. Expand the Folders tree, and choose the Policy Quote flowlet group. 3. In the right panel, choose the POLICY_QUOTE flowstore. The Metadata Painter appears. 4. Add a flowstore risk table as a child of POLICY_QUOTE with the following characteristics: a. Add the _R suffix to the table name to denote “risk” (for example, STRUCTURE_R). This naming convention prevents tables from clashing when you upgrade FS-QUO. b. Create only the following columns that are required by Designer: ○ PRODUCT_CD ○ PRODUCT_VERSION_NO ○ APP_CONTEXT_DATE ○ SEQ_NO_ID ○ REMOVE_IN—Text(1)
Developer Guide 62 PUBLIC Extensibility Best Practices ○ CARRY_FORWARD_IN—Text(1) ○ DESC_TX—Text(250) ○ TXN_ID_WHEN_RISK_REMOVED—Number(16,0) ○ REFERENCE_PRODUCT_CD—Text(250) ○ REFERENCE_PRODUCT_VERSION—Number(3,0) ○ LATEST_REFERENCE_PRODUCT_VERS—Number(3,0) c. Create business columns as product extension tables. d. Assign the REF_NAME set. 5. Save your changes. 6. Run the following URL: http://
4.3.8.2 Example: Modifying the Search Fields
This topic explores extensibility scenarios that apply to legacy functionality for versions of FS-QUO earlier than 3.0.
Context
You can modify the search operations in FS-QUO according to your organization's needs. For example, you can add search criteria or add a column to search results.
Procedure
1. Extend a handler. This handler calls the appropriate business service to handle the logic triggered by the search action. 2. Extend a handler bean. This handler bean acts as a container to transfer the data sent to and received from the user interface. 3. Modify the asHandlers.xml file. 4. Extend a JavaScript class. The JavaScript class is used to develop the FS-QUO user interface (for example, add a field to the search form or results). 5. Modify the flow to use the new handler. 6. Modify the search configuration in the extended Underwriting Application Configuration object.
Developer Guide Extensibility Best Practices PUBLIC 63 The search configuration specifies how the search behavior works. For example, to add a search criteria field, you must add a row to the SearchCriteriaItem component. As another example, to add a column to the search results, you must add a row to the SearchResultItem component. 7. If the search queries columns that aren't included in the database views provided with FS-QUO, do the following: a. Extend the database view. b. Modify the search configuration in the extended Underwriting Application Configuration object to use the new extended view.
Results
The search fields are modified.
Related Information
Modifying a Screen or Section [page 75] Modifying a Flow [page 152] Working with the Search Framework [page 132] Modifying a Database View [page 139]
4.3.8.3 Example: Making User Interface Changes
This topic explores extensibility scenarios that apply to legacy functionality for versions of FS-QUO earlier than 3.0.
You can modify the FS-QUO screens or sections according to your organization's needs. For example, you can do the following:
● Add a drop-down list or radio button ● Add a text or number field ● Remove a screen element
To modify the user interface, extend the appropriate handlers, handler beans, and JavaScript classes, and update the flowstore and Policy Model.
Related Information
Modifying a Screen or Section [page 75]
Developer Guide 64 PUBLIC Extensibility Best Practices 4.3.8.4 Example: Setting a Field as Mandatory or Optional
This topic explores extensibility scenarios that apply to legacy functionality for versions of FS-QUO earlier than 3.0.
You can set a field in the user interface as mandatory or optional by modifying the required and requiredErrorMessage attributes for that field in the Screen Control component.
A flow is a sequence of activities and screens in the FS-QUO runtime. You can modify flows. For example, you can do the following
● Add or remove activities (states) from a flow ● Change the business services that are called in or between activities ● Change the screen that loads on a view state ● Change the activity labels displayed in the progress meter
Related Information
Working with Application Flows [page 150] Screen Control Component [page 114] Modifying a Flow [page 152]
4.3.8.5 Example: Modifying the Application Configuration
This topic explores extensibility scenarios that apply to legacy functionality for versions of FS-QUO earlier than 3.0.
You can modify the FS-QUO application by using the extended Underwriting Application Configuration object in Product Configurator. For example, you can do the following using components provided in the extended Underwriting Application Configuration object:
● Define roles and the permissions associated with those roles ● Specify how search results are displayed ● Set the number of days before a quote expires ● Configure validation for screen controls and business services
Related Information
Underwriting Application Configuration [page 168]
Developer Guide Extensibility Best Practices PUBLIC 65 4.3.8.6 Example: Modifying a Business Service
This topic explores extensibility scenarios that apply to legacy functionality for versions of FS-QUO earlier than 3.0.
If you want to add or modify FS-QUO functionality to work specifically with your environment, you can extend existing business services. Business services are Java methods that FS-QUO uses to perform operations on policies. For example, when you create a new account using the FS-QUO user interface, FS-QUO invokes the create method in the Account Business Service.
You can do the following extensions:
● Add business service classes or methods ● Add logic to a business service method
Related Information
Extending a Business Service [page 167]
4.3.8.7 Example: Adding a Stem Class
This topic explores extensibility scenarios that apply to legacy functionality for versions of FS-QUO earlier than 3.0.
In FS-QUO, a stem is a short name that represents a Java class. These classes contain related functions that you can use in rule expressions in FS-PRO Product Configurator. You can add a stem class that performs tasks specific to your organization.
Related Information
Using Stems [page 310] Adding a Stem Class [page 314]
4.3.8.8 Example: Modifying an Administrative Console Setting
This topic explores extensibility scenarios that apply to legacy functionality for versions of FS-QUO earlier than 3.0.
The Administrative Console is an administrative application that configures and manages the system, application, and user profiles. This tool is installed with FS-QUO.
Developer Guide 66 PUBLIC Extensibility Best Practices To configure a FS-QUO setting in the Administrative Console, override the appropriate setting by specifying a value in the Override field. Overriding the default values helps you merge the changes during upgrades because the overridden values are maintained separately from the default settings.
For more information about the Administrative Console, see the Administration Guide.
Note
Don't modify the back-end properties file that specifies the values to display in the Administrative Console.
4.3.8.9 Example: Modifying the FS-QUO Help
This topic explores extensibility scenarios that apply to legacy functionality for versions of FS-QUO earlier than 3.0.
FS-QUO provides a Help link that opens the Help files. This Help describes the default interface and how to use it. If you want to modify the Help (for example, describe a screen or section that you extended), use the following best practices:
● Don't modify the help text provided by FS-QUO. Instead, make a copy of the file that you want to change, edit that copied version, and add your version to the Help table of contents. ● In the table of contents, add your own help files and remove the help files that you don't need.
The Help files are located in the following directory in the development environment: ASWeb\web\help
Note
Any changes that you make to the FS-QUO Help must be maintained and supported by your own organization.
4.4 Unsupported Extension Types
The following types of extensions aren't supported:
● Changing policy model object relationships ● Adding transaction types or statuses ● Batch or offline processing ● Making existing processes "headless" ● Externalizing persistence (for example, for Producer or Account data) ● Managing uploads through the browser ● Changes in core logic, such as Premium Handling and Out-of-Sequence ● Changing Spring aspects
Developer Guide Extensibility Best Practices PUBLIC 67 4.5 Understanding TransferObjectBase Usage in Risk-Based Architecture
A TransferObject is used by FS-QUO as a container to pass data from one service to another. It contains one or more related Policy Model objects, such as Transaction, Term, Account, Producer, and so on. It contains convenience methods for accessing data within the TransferObject.
There are several purposes for TransferObjects:
● Using Java interfaces and inheritance, TransferObjects allow services to take different types of TransferObjects, as long as they contain the required Policy Model objects. ● TransferObjects simplify method signatures, allowing us to pass multiple related objects together in one container. ● TransferObjects manage the loading and grouping of related Policy Model objects together, reducing the need to write additional code to manage these dependencies.
There are four main types of Policy TransferObjects:
PolicyTransactionTransferObject (PTTO) Contains one transaction, one term, all options, all risks, and so on.
PolicyTransactionSummaryTransferObject Contains one transaction and one term. (PTSTO)
PolicyMasterTransferObject (PMTO) Contains everything for a policy This would be small for a new policy, but could grow to be massive over time. Use caution in choosing this type.
PolicyMasterSummaryTransferObject (PMSTO) Contains all transactions and all terms for a policy.
There are several other TransferObject types, such as the AccountTransferObject, ProducerTransferObject and TaskTransferObject. These are much smaller and simpler than the Policy TransferObjects described above, containing only a single Policy Model object.
You should take the following items into consideration to ensure best performance:
● Use the smallest form of TransferObject that contains enough data for operations at all times when retrieving data as TransferObjects ● Once retrieved, pass the TransferObject from method to method instead of IDs which cause reloads ● As much as possible, always use the TransferObject and its "getters" and "setters". If that fails, get URS inside the PTTO via URS URSObject = Common.getUrs(PTTO.get
Developer Guide 68 PUBLIC Extensibility Best Practices ● Avoid excessive TransferObject.refresh() and TransferObject.update(). Typically should only retrieve the TransferObject once at the beginning of an action, no need to refresh it in the middle (unless it is out of sync), and save it once at the end of the same action.
The following examples provide guidelines in retrieving and setting various information in the PTTO according to the policy and product model:
Getting Effective Date from Policy Term from the PTTO, PTSTO, or PMSTO
● The PTTO always has one Term in it. ● A Term can have 1..* Term History objects. ● Effective/Expiration dates should be retrieved from the Term History:
Term term = ptto.getTerm(); TermHistory termHistory = ptto.getLatestTermHistory(term); Date effectiveDate = termHistory.getEffectiveDate();
Getting Quote Option from the PTTO
● The PTTO can contain 1..* Options:
List
Option option = ptto.getOption(optionId);
Getting Specific Risk from the PTTO
There is a fair bit of code involved to search through the PTTO to retrieve a specific risk; for example, location or classification. This code is present in ModelInstanceVisitor. Our visitor classes extend this to go through the PTTO and operate on each Risk, Coverage, etc. in the PTTO. Generally actions need to be repeated for each object in the tree, rather than for one specific object. The visitor will visit each object and either perform that action directly, or call a rule, which can have access to the URS, PTTO or a specific object.
Getting a Specific Form from the PTTO
FormSearchInstanceVisitorImpl.retrieveForm() can search for a specific Form within a PTTO.
Developer Guide Extensibility Best Practices PUBLIC 69 Getting Specific quote_coverage from the PTTO
CoverageHelperImpl.getAllCoveragesForOption() will return a list of all Coverages.
The list will need to be iterated through to find a specific one.
Getting the Address of Specific Additional Insured from the PTTO or PTSTO
Given the ID of the additional insured – insuredId:
AdditionalInsured insured = ptto.getInsured(insuredId); Address address = insured.getAddress();
Getting the Address of an Account from the PTTO, PTSTO or PMSTO
The PTTO always has one account in it:
Account account = ptto.getAccount(); String accountName = account.getAccountName();
Getting a Property of a Product Extension Table of Specific Risk from the PTTO
There are three types of risks: Risk, CoverageGroupRisk and PolicyRisk, which all inherit from RiskBase.
In the sample below, the the extension table is named GL_Classification and Classification is the specific risk:
// Get the main URS UpdateableResultSet riskUrs = Common.getUrs(risk);
// Column in the main URS long id = riskUrs.getLong("PK_ID"); //Note: This could be retrieved using risk.getId().
// Column in the extension table. GL_CLASSIFICATION is a product extension of CLASSIFICATION double exposureAmount = riskUrs.getDouble("GL_CLASSIFICATION.PCO_EXPOSURE_AMT");
Developer Guide 70 PUBLIC Extensibility Best Practices Setting a Property of a Product Extension Table of a Specific Risk from the PTTO
For the example below, the extension table is named GL_Location and Location is the specific risk:
// Get the main URS UpdateableResultSet riskUrs = Common.getUrs(risk);
// Column in the extension table. GL_CLASSIFICATION is a product extension of CLASSIFICATION riskUrs.setString("GL_LOCATION.DESC_TX", "Description of Location"); // Note: Since this is using the URS from a PTTO (or similar) object, this record will be saved when the PTTO.update() is called.
Getting a Property of a Specific Risk from the PTTO
Most of the properties of a Risk are used internally. Generally, the business-relevant fields are contained in the extension tables.
For example, given a risk pointing to a Location: risk.getDisplaySequenceNumber();
Setting a Property on Producer Rep in the PTTO, PTSTO or PMSTO
ProducerContact producerContact = ptto.getProducerContact(); producerContact.setEmailAddress("[email protected]");
Developer Guide Extensibility Best Practices PUBLIC 71 5 Sencha-Based UI
5.1 Modifying the User Interface
This topic details how to modify a Sencha-based user interface.
The FS-QUO user interface (UI) consists of screens and sections that display information that's common to all transactions. For example, the FS-QUO application provides default Account Information and Producer screens for new transactions.
You can modify the screens and sections according to your organization's needs. To modify the UI, extend the UI development components.
Best Practices
When you modify the user interface, we recommend the following best practices:
● Reduce white space because it contributes to the size and memory use in the browser. We recommend no more than one blank line between methods or properties. ● Don't use JavaScript alerts. ● Keep the classes clean and easy to understand.
Terminology
FS-QUO user interface development uses the following terms:
Action An action that can be performed on a screen (for example, entering content in a field or clicking a button in a script). Many actions, or a single action (such as only clicking the Next button) can make up a task.
Case During testing, the scenario to be tested.
Info Text In an FS-QUO screen, the instructional text that's part of the ASContextForm base class in the top screen panel. Don't refer to instructional text as message text or information text.
Layout The combination of ASContextForm, ButtonBar, Content Area, and Sections.
Panel Contains multiple sections on a screen.
Screen A single page in the FS-QUO user interface containing transaction information and questions.
Script During testing, the automation of a series of activities performed in the application and the known result.
Developer Guide 72 PUBLIC Sencha-Based UI Section An entity on a screen or popup (for example, grid, form, and so on).
Task During testing, a single task is all the actions that can be performed on a single screen (for example, in a script, content might be entered into several fields and a button clicked on a single screen).
5.1.1 Understanding the User Interface Development Components
This topic describes the user interface development components for a Sencha-based application.
Each screen or section in the FS-QUO UI is developed using the following components:
Ext JS code Defines the design, structure, and fields of the screen or section
Handler Translates data between the UI and business services
Handler bean Contains the data sent to the UI and data received from the UI
You can extend the base code of these components to modify a screen or section.
Note
You can also modify the flow of the user interface. The flow defines how the screens transition to one another. To modify the flow, you must configure the flow definitions.
Related Information
Configuring Handlers [page 102] Working with Application Flows [page 150]
5.1.1.1 JavaScript classes
This topic details the use of JavaScript classes in the FS-QUO user interface for Sencha-based applications.
The FS-QUO user interface is developed using a base set of widgets and controls. Both widgets and controls are JavaScript classes that are specific to Ext JS.Class hierarchy
The FS-QUO screens are viewed in the portal (browser) window. They are based on ASLayoutBase, which is an extension of Ext.Panel. Screens that perform searches use ASSearchScreen, which is an extension of ASScreen. All other screens are based on ASScreen. Popups are based on ASPopup, which is an extension of ASLayoutBase. The grey boxes represent the actual base classes, and the blue boxes represent the screens and popups that are created from those base classes.
Developer Guide Sencha-Based UI PUBLIC 73 5.1.1.2 Layout Components
This topic details the framework layout components in the FS-QUO user interface for Sencha-based applications.
The framework layout components are the classes that you can extend to create the frame of the screen.
ASScreen ASScreen is comprised of three sections:
● ASContextForm ● Button Bar, part of ASScreen ● Content Pane, which can consist of ASSectionGrid and ASSectionForm
In the Content Pane, you can create multiple sections of entry fields (ASSectionForm) and sections of search results or data value rows (ASSectionGrid).
ASSearchScreen ASSearchScreen is an extension of ASScreen. Use ASSearchScreen for any search screen. It includes the Search, Clear, and More Actions buttons in the button bar.
ASPopup ASPopup is an extension of ASLayoutBase.
Developer Guide 74 PUBLIC Sencha-Based UI Use ASPopup for any popup windows. It includes the following three sections:
● ASContextForm ● Button Bar, part of ASScreen ● Content Pane, which can consist of ASSectionGrid and ASSectionForm
5.1.1.3 Screen Components
This topic details the framework screen components in the FS-QUO user interface for Sencha-based applications.
ASFormBase is the base class for ASSectionForm and ASContextForm. ASSectionForm contains only fields. ASContextForm contains the Info text and optional form fields.
ASSectionForm Use ASSectionForm to capture or display read-only data.
ASContextForm The ASContextForm contains the Info text that appears at the top of the screen. ASContextForm can also include fields in the context area.
ASSectionGrid ASSectionGrid is used to display search results or rows of data. The base class has check box functionality. You can use checkboxes by setting the flag in the extended grid class, as follows: hasSelectionCheckbox:true Setting the flag automatically adds a checkbox column on the left side, and a checkbox (all/ none) box in the header. The checkbox works with WorkListSearchGrid and SearchProducer.PoliciesGrid. To get the list of selected rows, code the following: selectedItems = grid.getSelectionModel().getSelections(); . You can iterate through the list.
5.1.2 Modifying a Screen or Section
This topic provides a high-level overview of how to modify a screen or section in the FS-QUO user interface for Sencha-based applications.
You can modify the Authority screens or sections according to your organization's needs. For example, you might want to add a County field to the address section. As another example, you might want to add a new section to display claims history information gathered from an external source.
To modify a screen or section, follow these steps:
1. Extending the Screen Handler 2. Extending the Handler Bean 3. Modify the asHandlers.xml File 4. Extending a JavaScript Class 5. (Optional) Calling a Class from another Class
Developer Guide Sencha-Based UI PUBLIC 75 6. (Optional) Modify the User Interface Styles. 7. Configure Validation Settings for Fields, Data Types, and Services 8. Deploying the Changes 9. Modify the flowstore and Policy Model. 10. Verify the Modified Screen or Section
Note
Store your modified files for the extensions in a new directory or project that uses the same directory structure as the project libraries installed from the FS-QUO development toolkit. Storing your files in your own project helps you merge changes during upgrades and preserves backups of original files.
Related Information
Location of Configuration Changes [page 59] Modifying the Policy Model [page 228]
5.1.2.1 Extending a Screen Handler
This topic describes how to extend a screen handler in the FS-QUO user interface for Sencha-based applications.
Context
Screen handlers call business services to handle the logic triggered by user interface events. Examples of user interface events are clicking a search button or clicking a row in the WorkList grid to open an existing transaction.
Procedure
1. Identify the parent handler class to extend from. 2. Create a class that extends the parent class and use the following package structure: com.camilion.as.dialogs.
Note
Specify the extended handler bean as the first parameter.
Developer Guide 76 PUBLIC Sencha-Based UI This method retrieves the incoming bean data from the handler bean. The incoming data are from the fields that you modified in the user interface. Business services run based on this data. 4. Define all the business services that the handler needs as private properties with set methods. 5. Override existing methods as needed.
Note
If you override the validate method of a handler, the FS-QUO validation framework won't work as expected.
6. Add new methods as needed. 7. Save the class file.
Results
The extended screen handler is defined.
Example
Suppose that you want to modify the ProducerInformationSaveHandler class. To make the changes, identify the parent class (ProducerInformationSaveHandler) and extend it. In the extended class, you can write your own methods or override existing methods. For example, the following extended class overrides the processRequest and validate methods public class CustomProducerInformationSaveHandler extends.
ProducerInformationSaveHandler
@Override public ASViewModel processRequest( CustomProducerInformationBean producerInformationBean, SessionContext asSession) throws Exception {
// Perform some Pre-Processing ASViewModel viewModel = super.processRequest(producerInformationBean, asSession); // Perform Some Post-Processing
return viewModel; } @Override protected ASViewModel validate(CustomProducerInformationBean requestBean, SessionContext asSession) {
// Skip the parent class's validation method return new ExtSuccessResponse(); } }
To use this extended handler, you must also create a corresponding bean. To create this bean, identify the parent bean class and extend it.
Developer Guide Sencha-Based UI PUBLIC 77 Note
To help you extend handlers, FS-QUO is installed with examples of extended handlers.
Related Information
Configuring Handlers [page 102] Example: Extended Handlers and Handler Beans [page 111] Extending a Handler Bean [page 78]
5.1.2.2 Extending a Handler Bean
You can extend a handler bean in the FS-QUO user interface for Sencha-based applications.
Context
A handler bean acts as a container to transfer the data sent to the UI and received from the UI. Each UI section or screen defines a handler bean. When you modify a screen or section, you must create a corresponding bean that extends the ExtBean class.
Procedure
1. Identify the parent bean class to extend from. 2. Create a class that extends the parent class and use the following package structure: 3. Define the class header as follows: public class
Results
The extended handler bean is defined.
Developer Guide 78 PUBLIC Sencha-Based UI Note
Some handlers rely on request and response beans from other controls in the dialog. Repeat this procedure for all request and response beans for the screen.
Example
Example 1: Extend ProducerInformationBean
Suppose that you extended the ProducerInformationSaveHandler class. To use that handler, you must also create a corresponding bean. To create this bean, identify the parent bean class (ProducerInformationBean) and extend it. In the extended class, you can write your own methods or override existing methods. For example, the following extended class contains two new methods (getCustomField and setCustomField):
public class CustomProducerInformationBean extends ProducerInformationBean { private static final long serialVersionUID = 1L;
private String customField; public String getCustomField() { return customField; } public void setCustomField(String customField) { this.customField = customField; }
}
Note
To help you extend beans, FS-QUO is installed with examples of extended beans.
Example 2: Extend ExtBean
The following class is an example of an extended bean class:
public class AccountData extends ExtBean { /* * Define bean properties that will match * the JsonStore fields being sent/received from the UI */ private String accountName;
public String getAccountName() { return accountName; }
public void setAccountName(String accountName) { this.accountName = accountName; } }
Developer Guide Sencha-Based UI PUBLIC 79 Related Information
Understanding Property Annotations for Handler Beans [page 109] Example: Extended Handlers and Handler Beans [page 111]
5.1.2.3 Modifying the asHandlers.xml File
This topic describes how to complete the handler configuration in the FS-QUO user interface for Sencha-based applications.
Context
After you create the extended handler, define it in the asHandlers.xml file to complete the handler configuration.
Note
When you upgrade FS-QUO, your data is migrated to a new environment. To preserve your asHandlers.xml changes, merge the upgraded asHandlers.xml file with your modified file, and build, deploy, and restart the server.
Procedure
1. Open the following file in an editor: /ASlibrary/src/com/camilion/as/beans/runtime/ asHandlers.xml 2. Add the following entry to the file:
handlerName Defines the ID of the handler.
className Specifies the associated class name.
[property Specifies the properties that the handler requires. values] This value is optional.
Developer Guide 80 PUBLIC Sencha-Based UI Example: The following property specifies the business service that a handler might require:
ExtBeanClass Specifies the full class name of the ExtBean class that the handler works with. Example: com.camilion.as.dialogs.common.filloutapplication.AddFormsSearchBean The name of the bean class must match the value in the bean class declaration. Otherwise, you'll get a ClassCastException when the bean class is called. For the previous example, the associated class must be declared as follows: public class AddFormsSearchBean
3. Add the following mapping to the "appConfigHandlerMapping" section:
URL Specifies the URL of the associated Java class that handles the logic triggered by the UI event.
handlerID Specifies the handler's ID.
This entry maps the URL of the associated Java class to the ID. 4. Save your changes.
Results
The asHandlers.xml file is modified.
5.1.2.4 Extending a JavaScript Class
To modify a screen or section, you can extend an existing JavaScript class and override or add methods.
Procedure
1. Create a new file and name it the same name as the class that you want to define in it. 2. Open the file in an editor, and enter the following: Ext.
namespace Specifies the namespace for the class. This value must match the folder structure on the file system.
The namespace for the class is set. 3. (Optional) Use the _import method to import other classes into the file. 4. Add the following code to the class:
// Static Form Panel properties can be set here });
Developer Guide Sencha-Based UI PUBLIC 81 new_class Defines the name of the class you're creating.
class_to_extend_from Specifies the name of the class that the new class extends (inherits) from.
5. (Optional) Override one or more existing methods.
Note
You must call the superclass.
6. (Optional) Add one or more new methods. 7. Add the following code:
getLoadUrl: function(){ return '/extendedHandlerName.exhtm'; },
Results
The new JavaScript class is created and extends from the class that you specified.
Example
In the following example, the file name for the StatesComboBox class is StatesComboBox.js. The following class creates the combo box for the list of States:
StatesComboBox = Ext.extend(Ext.form.ComboBox, { displayField: 'state', valueField: 'abbr', editable: false, mode: 'local', forceSelection: true, triggerAction: 'all', selectOnFocus:true, fieldLabel: 'State', name: 'state', anchor:'95%',
someMethod: function() { }, listeners: { 'select': function (combo, record, index) { if (combo.getValue() == ' ') { combo.setValue(''); } } },
createStore: function () { var statesStore = new Ext.data.SimpleStore( { fields: ['abbr', 'state', 'nick'], data : Ext.exampledata.states }); return statesStore; },
Developer Guide 82 PUBLIC Sencha-Based UI
// Recommended way to initialize the subclass initComponent: function() { // set up store Ext.apply(this, { store: this.createStore(), }); StatesComboBox.superclass.initComponent.apply(this, arguments); } }); Ext.reg('StatesComboBox', StatesComboBox);
You can inherit the class as follows:
AccountStatesComboBox = Ext.extend(StatesComboBox, { // Static Form Panel properties can be set here }); Ext.reg('AccountStatesComboBox', AccountStatesComboBox);
You can also override the methods in extended classes. For example, the initComponent method is called by Ext when a component (widget or control) is initialized. You can apply any changes to the component using the initComponent method.
The following example shows an overridden method:
AccountStatesComboBox = Ext.extend(StatesComboBox, { // Override a method… someMethod: function() { // explicitly call superclass… AccountStatesComboBox.superclass.someMethod.call(this); }, initComponent: function() { // Provide overrides of properties here Ext.apply(this, { fieldLabel: 'Acocunt State', name: 'accountState' }); } }); Ext.reg('AccountStatesComboBox', AccountStatesComboBox);
Related Information
Understanding the JavaScript Classes [page 92]
Developer Guide Sencha-Based UI PUBLIC 83 5.1.2.5 Calling a Class from Another Class
You can call a JavaScript class to drop a component onto another component. For example, to use a class that you extended, you can call it from another class. You can also call an existing class from the new extended class.
Procedure
1. Check that the class that you want to call includes the following code: Ext.reg("
class_name Specifies the name of the class.
register_name Specifies the string to register the class under. Enter the name of the class.
The class is registered under its name. 2. From the class where you want to call the registered class, add the following code: xtype: '
register_name Specifies the name that the class is registered under. This value is the name specified in the Ext.reg method call.
The specified class is called.
Example
In this example, the AccountStatesComboBox class is registered under its name as follows: Ext.reg("AccountStatesComboBox", AccountStatesComboBox);
The following layout creates an AccountStatesComboBox as one of the fields on the form by specifying the xtype value:
AccountFormPanel = Ext.extend(Ext.FormPanel, { frame: true, title: 'Account Search', bodyStyle: 'padding:5px 5px 0',
createFormItems:function(){ var items = [{ xtype: 'AccountStatesComboBox', fieldLabel: 'Account State', name: 'accountState' } ]; return items; },
initComponent: function() { // set up form fields Ext.apply(this, {
Developer Guide 84 PUBLIC Sencha-Based UI items: this.createFormItems() }); AccountFormPanel.superclass.initComponent.apply(this, arguments); } }); Ext.reg('AccountFormPanel', AccountFormPanel);
5.1.2.6 Modifying the User Interface Styles
This topic describes how to modfy the styles for the FS-QUO user interface for Sencha-based applications.
You can modify the user interface to show colors, fonts, and images that are specific to your organization.
To modify the user interface styles, modify the following files:
● /ASWeb/web/j_scripts/authoritysuite/css/asCustom.css ● /ASDesignerContent/
5.1.2.7 Configuring Validation Settings for Fields, Data Types, and Services
This topic describes how to configure validation settings for the FS-QUO user interface for Sencha-based applications.
After you extend JavaScript classes to modify the code components for a screen or section, configure the validation settings. These settings help ensure that the input entered into the UI is appropriate.
To configure validation, complete the following tasks:
Task Description For
Configure field validation Set screen controls (fields in the UI) as Screen Control component mandatory. (see the required and requiredErrorMessage attrib utes)
Define business questions for screen Configuring screen control validation controls. using business questions
Configure data type validation In the extended handler bean, use the Data type validation sequence ModelAttribute annotation for the ModelAttribute annotation properties that you want to validate.
Configure service-level validation Define validation checks when a busi Validation folder ness service is called.
Developer Guide Sencha-Based UI PUBLIC 85 Example: Configuring data type validation for a bean property
The following ModelAttribute annotation checks whether the accountId value matches the data type of the id property in the Account class:
@ModelAttribute (path="MXP://Model:accounts/Model:id", eClassName="Account", propertyName="id") private String accountId;
Related Information
Working with the Validation Framework [page 112]
5.1.2.8 Deploying the Changes
This topic describes how to deploy changes for the FS-QUO user interface for Sencha-based applications.
Context
To deploy your changes and use your modified handlers, handler beans, and JavaScript files, you must add them to the Custom Class Folder and Custom Web Root in the FS-PRO Administrative Console. When the FS- QUO runtime runs, your custom files are read before the files that are provided with FS-QUO.
Procedure
1. Log in to the FS-PRO Administrative Console.
2. Select System File System . The PA - Custom Web Root (Write) tree is displayed. 3. Select AuthoritySuite - Custom Class Folder (Write) from the Path dropdown list in the navigation pane. The AuthoritySuite - Custom Class Folder (Write) tree displays. 4. Create folders that match your project and FS-QUO folder structure, as follows: a. Right-click in the main pane and select New Folder. The Explorer User Prompt dialog opens. b. Enter ASLibrary, and choose OK. The ASLibrary folder is created and displayed. c. Repeat steps a-b to create folders for the following paths:
Developer Guide 86 PUBLIC Sencha-Based UI ○ /ASLibrary/src/com/camilion/as/dialogs/
The Upload Files dialog opens. c. Browse for your modified files. d. Choose Upload. The modified handler and handler bean files are uploaded and displayed. 6. Select AuthoritySuite - Custom Web Root (Write) from the Path dropdown list in the navigation pane. The AuthoritySuite - Custom Web Root (Write) tree displays. 7. Create folders that match your project and FS-QUO folder structure. a. Right-click in the main pane and select New Folder. The Explorer User Prompt dialog opens. b. Enter ASWeb, and choose OK. The ASWeb folder is created and displayed. c. Repeat steps a-b to create folders for the following path: /ASWeb/web/j_scripts/ authoritysuite/Screens/
The Upload Files dialog opens. c. Browse for your modified files. d. Choose Upload. The modified files are uploaded and displayed in the AuthoritySuite - Custom Web Root (Write) folder.
Next Steps
● You must also re-package the modified asHandlers.xml file as part of aslib.jar. ● You must modify the Java classpath to load your custom files before the FS-QUO JAR file.
Developer Guide Sencha-Based UI PUBLIC 87 5.1.3 Modifying Buttons in the Button Bar
This topic describes how to modify buttons in the FS-QUO user interface for Sencha-based applications.
Context
The button bar is part of ASScreen and displays buttons such as Return to Work List, << Previous, Next>>, and More Actions.
These buttons are coded using the following two files:
● /ASWeb/web/j_scripts/authoritysuite/Screens/Transaction/ASTransactionScreen.js ● /ASWeb/web/j_scripts/authoritysuite/Screens/Transaction/Custom/ CustomTxnJavascript.js
You can modify the buttons by updating the CustomTxnJavascript.js file.
Procedure
1. Make a copy of the following file: /ASWeb/web/j_scripts/authoritysuite/Screens/Transaction/ Custom/CustomTxnJavascript.js 2. Open the copied file in a text editor. 3. Modify the following functions as needed:
getLeftDefaultButtons Returns an array of buttons and menu options to display in the left side of the button bar.
getDefaultMoreActions Returns an array of buttons and menu options to display in the More Actions dropdown list.
4. Save the file.
The buttons in the button bar are modified. The following functions from the ASTransactionScreen.js file call your modified functions and render the buttons as specified:
_getLeftDefaultButtons Defines the buttons to display on the left side of the button bar. By default, this function displays the Return to Work List button.
_getDefaultMoreActions Defines the options to display in the More Actions dropdown list.
_updateTxnButtons Calls the appropriate functions to display the buttons.
5. If you're using a shared environment (for example, production), do one of the following: ○ Upload the modified CustomTxnJavascript.js file to the custom web folder using the FS-PRO Administrative Console. ○ Repackage the ASWeb.jar with the customized version.
Developer Guide 88 PUBLIC Sencha-Based UI Note
If you made this change in your local development environment and you junctioned the paths appropriately, you don't need to repackage the JAR file.
Example
Example 1: Adding Left Buttons
The CustomTxnJavascript.js file contains the following function:
getLeftDefaultButtons: function(){ return []; },
The following is the corresponding function in the ASTransactionScreen.js file:
_getLeftDefaultButtons: function(){ var defaultLeftButton = null; defaultLeftButton = [{ xtype: 'tbbutton', handler: this._doReturn, text: 'Return to Work List', scope: this } ]; defaultLeftButton = defaultLeftButton.concat(this.customJS.getLeftDefaultButtons()); return defaultLeftButton; },
To add your own left buttons to the button bar, you can modify the getLeftDefaultButtons function in the CustomTxnJavascript.js file, as shown in the following example:
getLeftDefaultButtons: function(){ defaultClientLeftButtons = [ '-',{xtype: 'tbbutton', handler: this._yourCustomMethod, text: 'Button 1', scope: this }, '-',{xtype: 'tbbutton', handler: this._yourCustomMethod, text: 'Button 2', scope: this }, '-',{xtype: 'tbbutton', handler: this._yourCustomMethod, text: 'Button 3', scope: this } ]; return defaultClientLeftButtons; },
Example 2: Adding new options for the More Actions button
Developer Guide Sencha-Based UI PUBLIC 89 The CustomTxnJavascript.js file contains the following function:
getDefaultMoreActions: function(){ return []; },
The following is the corresponding function in the ASTransactionScreen.js file:
_getDefaultMoreActions: function(){ var disableDiscardButton=this.disableDiscardButton(); var defaultMoreActions = [ { text: 'Discard Transaction', disabled: disableDiscardButton, name: 'discardTransaction', id: 'discardTransaction', handler: this.discardTransaction, scope: this } ]; defaultMoreActions =defaultMoreActions.concat(this.customJS.getDefaultMoreActions()); return defaultMoreActions;
To add your own options in the More Actions list, you can modify the getDefaultMoreActions function in the CustomTxnJavascript.js file, as shown in the following example:
_getDefaultMoreActions: function(){ var clientDefaultMoreActions=null; var clientDefaultMoreActions = [ { text: 'Menu Option 1', disabled: false, name: 'menuOption1', id: 'menuOption1', handler: this._yourCustomMethod, scope: this }, { text: 'Menu Option 2', disabled: false, name: 'menuOption2', id: 'menuOption2', handler: this._yourCustomMethod, scope: this }, { text: 'Menu Option 3', disabled: false, name: 'menuOption3', id: 'menuOption3', handler: this._yourCustomMethod, scope: this } ]; return clientDefaultMoreActions; },
Note
To load the screen, you must define the _yourCustomMethod function.
Developer Guide 90 PUBLIC Sencha-Based UI 5.1.4 Extending the User Interface
In FS-QUO you can customize and extend the user interface as desired.
Context
The following list details some of the possible extensions for an FS-QUO screen:
● Insert a customized corporate logo ● Customized the text and background color of the title bar ● Customize the background color of the progress tracker ● Customize the text and background colors of the information bar ● Customize the background color of the button bar ● Customize the text and background colors of the enabled/disabled buttons ● Customize the text and background colors of the section headers ● Customize the color of the read-only mask
The following extensions can be performed for the Simplified Insurance Application Renderer:
● Customized text and background colors of current tab ● Customized text and background colors of non-current tabs ● Customized background color of tab bar ● Customized text color, font and size of section headers ● Customized text and background color of enabled/disabled buttons ● Customized text and background colors of column headers in grid ● Customized text and background colors of enabled/disabled buttons in grid
You can also style the following components for all grid forms (such as forms and referrals) within the eApp for the following:
● Customized text and background colors of grid form header ● Customized text and background colors of enabled/disabled buttons in grid form ● Customized text and background colors of column headers in grid form ● Customized background color of button and status bar in grid form
Finally, the login page can be customized as follows:
● Customized company trademark ● Customized company logo ● Customized company copyright information
All the extensions mentioned are configured by modifying stylesheets AuthoritySuiteCustom.css and EappLayout.java. You can use any of the following widely used tools:
● Internet Explorer Developer Toolbar ● Chrome Developer Tools ● Firebug (a Firefox plug-in)
Developer Guide Sencha-Based UI PUBLIC 91 Procedure
1. Modify AuthoritySuiteCustom.css and EappLayout.java to configure the desired extensions. 2. Log in to the FS-PRO Administrative Console.
3. Go to System Edit File System CSS AuthoritySuite . 4. Specify the Path to the stylesheets from the dropdown list. Specify the Custom CSS directory.
5.2 Understanding the JavaScript Classes
This topic provides an overview of how JavaScript classes can be used to develop the FS-QUO user interface for Sencha-based applications.
The JavaScript classes used to develop the FS-QUO user interface are written using the EXT JS framework.
Note
The FS-QUO documentation only describes the functions and controls used for FS-QUO. For general information about Ext JS classes, see the API documentation for Ext JS.
The following UML diagram shows the relationships between the base classes that create the screen and popup structure and the classes that populate those structures:
Developer Guide 92 PUBLIC Sencha-Based UI 5.2.1 Available Classes and Functions
5.2.1.1 ASFormBase
This topic describes the ASFormBase JavaScript class, which is used to design screens in the FS-QUO user interface for Sencha-based applications.
The following functions are available in the ASFormBase class: getFormValues Gets the values that are specified in the ASContextForm class. acceptAll Accepts all the validation errors to prepare for the next save. getTitleContext Gets the context part of the title. setTitle Sets the form title in the section. clearForm Clears all the values that are specified in the ASContextForm class. resetForm Clears all the fields. updateTitleState Refreshes the section title. setReadOnly Sets all the fields to read-only. createItems Constructs the fields. getUrl The URL for the handler of this form panel. getTitleLinks Gets the labels that are shown for the links in the ASContextForm class. getCmp Don't use this function. initComponent Initializes the whole section.
For more information about the function parameters and code details, see the following file: /ASWeb/web/ j_scripts/authoritysuite/controls/form/ASFormBase.js
Developer Guide Sencha-Based UI PUBLIC 93 5.2.1.2 ASScreen
This topic describes the ASScreen JavaScript class, which is used to design screens in the FS-QUO user interface for Sencha-based applications.
The following functions are available in the ASScreen class: getContentAreaTabs Creates the tab structure in the content area. Although it supports many tabs, the current implementation is a single tab. You don't have to create a ContentPanel class for your ASScreen to hold multiple sections in the content area. Instead, add the items to the tab in the getContentAreaTabs method of your ASScreen. For an example, see PolicySummaryScreen.js. getLeftButtons Gets the buttons that will be placed on the left-hand side of the button bar that are specified. getRightButtons Gets the buttons that will be placed on the right-hand side of the button bar that are specified. getMoreActions Gets the values that will be placed in the More Actions button dropdown list.
For more information about the function parameters and code details, see the following file: /ASWeb/web/ j_scripts/authoritysuite/controls/layout/ASScreen.js
5.2.1.3 ASLayoutBase
This topic describes the ASLayoutBase JavaScript class, which is used to design screens in the FS-QUO user interface for Sencha-based applications.
The following functions are available in the ASLayoutBase class: getContextArea Defines the context area class that's used on the screen. If you have no fields or complex interactions on the context area form, use ASContextForm directly in the getContextArea method of your ASScreen.
For an example, see the ChangeViewPopup and ReassignPopup classes in the Worklist. getMoreActions Gets the values that will be placed in the More Actions button dropdown list. onBeforeEnter Called before the screen is entered. onBeforeLeave
Developer Guide 94 PUBLIC Sencha-Based UI Called just before the screen is left. onEnter Called right after the screen has been entered. onLeave Called right after the screen is left. isDirty Checks to see if the screen is dirty (changed). updateDirtyState Called after isDirty to determine how to handle the screen controls.
For more information about the function parameters and code details, see the following file: /ASWeb/web/ j_scripts/authoritysuite/controls/layout/ASLayoutBase.js
5.2.1.4 ASPopup
This topic describes the ASPopup JavaScript class, which is used to design screens in the FS-QUO user interface for Sencha-based applications.
The following functions are available in the ASFormBase class: getLeftButtons Gets the buttons that will be placed on the left-hand side of the button bar that are specified. getRightButtons Gets the buttons that will be placed on the right-hand side of the button bar that are specified. getMoreActions Gets the values that will be placed in the More Actions button dropdown list. showPopup Displays the popup on the screen. close Closes the popup.
For more information about the function parameters and code details, see the following file: /ASWeb/web/ j_scripts/authoritysuite/controls/layout/ASPopup.js
5.2.1.5 ASSearchScreen
This topic describes the ASSearchScreen JavaScript class, which is used to design screens in the FS-QUO user interface for Sencha-based applications.
The following functions are available in the ASSearchScreen class: getLeftButtons
Developer Guide Sencha-Based UI PUBLIC 95 Gets the buttons that will be placed on the left-hand side of the button bar that are specified. getRightButtons Gets the buttons that will be placed on the right-hand side of the button bar that are specified. getMoreActions Gets the values that will be placed in the More Actions button dropdown list. getContextAreaXType Identifies the ASContextForm to use on the screen. getContextAreaId Returns an ID for the ASContextForm. getContextAreaGridXType Identifies the ASSectionGrid to use on the screen. getContextAreaGridId Returns an ID for the ASSectionGrid. isDirty Checks to see if the screen is dirty (changed). updateDirtyState Called after isDirty to determine how to handle the screen controls.
For more information about the function parameters and code details, see the following file: /ASWeb/web/ j_scripts/authoritysuite/controls/search/ASSearchScreen.js
5.2.1.6 ASContextForm
This topic describes the ASContextForm JavaScript class, which is used to design screens in the FS-QUO user interface for Sencha-based applications.
The following functions are available in the ASContextForm class: instructionalText The text that's displayed in the ASContextForm. updateInstructionalText Updates the text that's displayed in the ASContextForm.
For more information about the function parameters and code details, see the following file: /ASWeb/web/ j_scripts/authoritysuite/controls/form/ASContextForm.js
Developer Guide 96 PUBLIC Sencha-Based UI 5.2.1.7 ASTransactionContentScreen
This topic describes the ASTransactionContentScreen JavaScript class, which is used to design screens in the FS-QUO user interface for Sencha-based applications.
The following functions are available in the ASTransactionContentScreen class: onBeforeEnter Called before the screen is entered. onBeforeLeave Called just before the screen is left. onEnter Called right after the screen has been entered. onLeave Called right after the screen is left. getMoreActions Gets the values that will be placed in the More Actions button dropdown list. enableContextButton Enables or disables a button on the button bar. doClose Closes the transaction screen. doFinish Closes the last activity.
For more information about the function parameters and code details, see the following file: /ASWeb/web/ j_scripts/authoritysuite/controls/content/ASTransactionContentScreen.js
5.2.1.8 ASSectionGrid
This topic describes the ASSectionGrid JavaScript class, which is used to design screens in the FS-QUO user interface for Sencha-based applications.
The following functions are available in the ASSectionGrid class: getIdColumn Identifies which column holds the ID for the record. getUrl The URL for loading the grid. createStoreFields Creates the record object for the grid. createGridToolBar Creates the grid's toolbar. clearGrid
Developer Guide Sencha-Based UI PUBLIC 97 Clears the grid. createGridColumns Creates a new column in the grid. getSelections Gets a list of all the selections that have been made based on what's checked. This uses the getIdColumn to know which selected items to store. clearSelections Clears all the selected checkboxes.
For more information about the function parameters and code details, see the following file: /ASWeb/web/ j_scripts/authoritysuite/controls/grid/ASSectionGrid.js
5.2.2 Available Control Classes
5.2.2.1 Combobox
This topic describes the Combobox JavaScript control class, which is used to design screens in the FS-QUO user interface for Sencha-based applications.
The following functions are available in the Combobox class:
AccountTypeComboBox A combo box that's populated with the account types. ASComboBoxBase The base class that all the combo boxes extend from. Don't modify this class. CancellationReasonComboBox Displays a list of the cancellation reasons when a policy is canceled. CancellationTypeComboBox Displays a list of cancellation types. CountryComboBox A combo box that's populated with the countries. CoverageComboBox Displays a list of coverages, used in the Add/Edit Forms window. DateTypeComboBox A combo box that's populated with Policy Effective Date, Policy Expiration Date, and Transaction Effective Date. MandatoryComboBox A Yes or No combo box used in the Tasks window. PolicyStatusComboBox A combo box that's populated with the policy statuses.
Developer Guide 98 PUBLIC Sencha-Based UI ProductsComboBox A combo box that's populated with the available products. For example, used on the policy search screen. ReasonTypeComboBox A combo box that's populated with Quote Not Taken reasons. StatesComboBox A combo box that's populated with the states. TaskPriorityComboBox The Priority dropdown list in the Tasks window. TaskStatusComboBox The Status dropdown list in the Tasks window. TaskUsersComboBox The list of users that a task can be assigned to in the Tasks window. TitleComboBox The Title dropdown list in the Accounts screen. This dropdown list is populated with abbreviated honorifics such as Mr., Mrs., and Dr.. TxnStatusComboBox A combo box that's populated with the transactions statuses. TxnTypeComboBox A combo box that's populated with the transaction types.
5.2.2.2 Datefield
This topic describes the Datefield JavaScript control class, which is used to design screens in the FS-QUO user interface for Sencha-based applications.
The following function is available in the Datefield class: ASDateField Used for all the Date fields.
5.2.2.3 Content
This topic describes the Content JavaScript control class, which is used to design screens in the FS-QUO user interface for Sencha-based applications.
The following functions are available in the Content class: ASeAppContentSection The panel that holds the eApp. ASTransactionContentSection
Developer Guide Sencha-Based UI PUBLIC 99 The container for all transaction screens. Grids and form are kept in this for each activity. PolicyTermControl The Policy Effective Date, Policy Expiration Date, and Policy Term Length fields. YesNoCancelMessagePopup Used for standard popups that have the Yes, No, and Cancel buttons on it.
5.2.2.4 Form
This topic describes the Form JavaScript control class, which is used to design screens in the FS-QUO user interface for Sencha-based applications.
The following functions are available in the Form class: ASContextForm The top section of the screen that contains the information text. This extends ASFormBase. ASFormBase The base class for forms. Don't modify this class. ASSectionForm A form that appears as a section, for example, the Physical Address section in the Select Account activity. ErrorSummary The section that contains the errors.
5.2.2.5 Grid
This topic describes the Grid JavaScript control class, which is used to design screens in the FS-QUO user interface for Sencha-based applications.
The following functions are available in the Grid class: ASSectionGrid Use this grid as a base class for all other grids. MaximizedGridPanel Provides the maximized version of the grid. Used in the search screens, such as account, policy, and producer searches.
Note
Don't use this in the content areas that have multiple sections. Use the ASSectionGrid class directly.
Developer Guide 100 PUBLIC Sencha-Based UI 5.2.2.6 Number
This topic describes the Number JavaScript control class, which is used to design screens in the FS-QUO user interface for Sencha-based applications.
The following functions are available in the Number class: ASNumberField Used for text boxes that have numbers in them. For example, the Policy Term Length field.
5.2.2.7 Search
This topic describes the Search JavaScript control class, which is used to design screens in the FS-QUO user interface for Sencha-based applications.
The following functions are available in the Search class: ASSearchScreen An extension of ASScreen. Use this class as the base class for all search screens.
5.2.2.8 Layout
This topic describes the Layout JavaScript control class, which is used to design screens in the FS-QUO user interface for Sencha-based applications.
The following functions are available in the Layout class: ASScreen An extension of ASBaseLayout. Use this class as the base class for all screens except search screens. For search screens, extend ASSearchScreen. ASPopup An extension of ASBaseLayout. Use this class as the base class for all popups. ASBaseLayout The base layout class. Don't directly extend this class. ASMessagePopup The message popup base class. Don't modify this class. ASSearchPopup
Developer Guide Sencha-Based UI PUBLIC 101 The search popup base class. Don't modify this class.
5.3 Understanding Handlers and Handler Beans
This topic details the purpose of handlers and handeler beans in the FS-QUO user interface for Sencha-based applications.
Handlers translate data between the user interface (UI) and business services as follows:
● Translate ExtBean data from the UI into model objects ● Translate model objects into ExtBean data to send back to the UI
For example, the handler for the worklist screen uses the search framework to retrieve all the transactions with the default criteria and returns the results to display on the screen. When you perform an action on the screen (such as click a row in the grid to open an existing transaction, or click the search button), the handler translates the data required for these actions.
You can extend the behavior of an existing handler to work with your environment.
Note
Handlers can call multiple service methods to perform their function. However, they can't contain business logic.
The following diagram shows the ExtHandler and ExtBean class:
5.3.1 Configuring Handlers
This topic describes how to configure handlers for the FS-QUO user interface for Sencha-based applications.
Every control handler extends the ExtHandlerBase class. This class defines the processRequest method, which retrieves the incoming bean data. Business services run based on this data. You can extend an existing
Developer Guide 102 PUBLIC Sencha-Based UI handler to implement changes that are specific to your organization. In your handler subclass, override the processRequest method, and define all the business services that the handler needs as private properties with set methods. These definitions support the handler in the context of Spring's IoC container. The service class is injected into the handler through the Spring configuration.
Example
Example: Defining an extended handler class
The following example shows a test service that's used in the processRequest method. TestService is initialized by Spring when the IoC container starts up.
public class AccountHandler extends ExtHandlerBase
@Override protected ExtResponse processRequest(TestBean requestBean, HttpServletRequest request, HttpServletResponse response) { ExtResponse responseBean = new ExtResponse(); AccountData account = (AccountData)requestBean;
// Do your business service calls, etc… here testService.getUserName();
responseBean.addItem(account); return responseBean; } }
Related Information
Extending a Screen Handler [page 76]
5.3.1.1 Understanding the Package Structure for Handlers
This topic describes the package structure of handlers for the FS-QUO user interface for Sencha-based applications.
Handlers use the following package structure: com.camilion.as.dialogs.
Developer Guide Sencha-Based UI PUBLIC 103 Note
To make an AJAX call to a handler, use the global callHandler method.
The ExtHandlerBase provides the basic flow for all URL handlers. The following sequence diagram shows the flow:
5.3.1.2 Understanding the Handler Validation Sequence
This topic describes the validation sequence for handlers for the FS-QUO user interface for Sencha-based applications.
Handler validation determines whether fields are required and whether the values are the proper type.
Developer Guide 104 PUBLIC Sencha-Based UI Required Field Sequence
The following diagram shows the sequence of events for required fields:
Developer Guide Sencha-Based UI PUBLIC 105 Data Type Validation Sequence
The following diagram shows the sequence of events for data type validation:
Developer Guide 106 PUBLIC Sencha-Based UI 5.3.1.3 Understanding the asHandlers.xml File
This topic describes the asHandlers.xml file used by the FS-QUO user interface for Sencha-based applications.
The asHandlers.xml file defines how the handlers are configured. The file is located in the following directory: /ASlibrary/src/com/camilion/as/beans/runtime/asHandlers.xml
Each handler entry is defined as follows:
Developer Guide Sencha-Based UI PUBLIC 107
The asHandlers.xml file also includes an appConfigHandlerMapping section that maps the URL of each handler to its defined ID. Each mapping is specified as follows:
The ExtJS JavaScript calls the handler using the specified URL. The Spring framework resolves this URL mapping to the associated Java class that handles the logic triggered by the UI event.
Example
Example: Defining a handler in the asHandlers.xml file
The following entry in the asHandlers.xml file defines the handler that saves the account details:
The handler's URL mapping is specified in the asHandlers.xml file as follows:
The ExtJS JavaScript calls the handler using the /accountDetailsSaveHandler.exhtm URL. The Spring framework resolves this URL mapping to the associated accountDetailsSaveHandler Java class that handles the logic triggered by the UI event.
Developer Guide 108 PUBLIC Sencha-Based UI Related Information
Modifying the asHandlers.xml File [page 80]
5.3.2 Configuring Handler Beans
This topic describes how to configure handler beans for the FS-QUO user interface for Sencha-based applications.
Each UI section or screen defines a handler bean that acts as a container for UI data. These beans extend the ExtBean class. Handlers work with these beans to transfer data to and from the UI.
5.3.2.1 Understanding the Package Structure for Handler Beans
This topic describes the package structure of handler beans for the FS-QUO user interface for Sencha-based applications.
Handler beans that extend the ExtBean class use the following package structure: com.camilion.as.dialogs.
5.3.2.2 Understanding Property Annotations for Handler Beans
This topic describes propertry annotations for handler beans for the FS-QUO user interface for Sencha-based applications.
Each property in the ExtBean is annotated with one or both of the following FS-QUO Java annotations:
ModelAttribute Annotation
The ModelAttribute annotation has the following properties:
eClassName Identifies the eClass for the property. This property is used in the ExtModelTypeValidator class.
propertyName Identifies the property in the data model. This property is used in the ExtModelTypeValidator class.
Developer Guide Sencha-Based UI PUBLIC 109 path Matches ServiceValidationItems returned from a service call, and dynamically transfers to and from ExtBean object. Use the following format: MXP://
ServiceParameter Annotation
Service validations can occur on service method parameters. In this situation, a validation error is reported back to the caller with a service parameter path. A ServiceParameter annotation provides mapping from the Service Validation back to the ExtBean field that was passed as that parameter.
path Identifies the property as a service parameter. Use the following format: SP://
5.3.3 Extending a Handler
If you want to change a handler to work specifically with your environment, you can extend the behavior of that handler.
Procedure
1. Create a new class that extends the parent handler bean class. 2. Override the processRequest method. 3. Define an entry in the asHandlers.xml. 4. Specify the URL mapping in the asHandlers.xml file. 5. Build, deploy, and restart the server.
Results
The handler bean configuration in the asHandlers.xml file uses the new class.
Related Information
Extending a Screen Handler [page 76] Modifying the asHandlers.xml File [page 80]
Developer Guide 110 PUBLIC Sencha-Based UI 5.3.4 Extending a Handler Bean
You can extend a handler bean for the FS-QUO user interface for Sencha-based applications.
Context
When you modify a screen or section, you must create a corresponding handler bean that extends the ExtBean class. The extended bean acts as a container to transfer the data sent to the UI and data received from the UI.
Procedure
1. Create a new class that extends the ExtBean class. 2. Build, deploy, and restart the server.
Related Information
Extending a Handler Bean [page 78]
5.3.5 Preserving Extended Handlers After Upgrading
This topic describes how to preserved extended handlers for the FS-QUO user interface for Sencha-based applications.
When you upgrade FS-QUO, your data is migrated to a new environment. To preserve the modified handler bean configuration, merge the asHandlers.xml file, and build, deploy, and restart the server.
5.3.6 Example: Extended Handlers and Handler Beans
This topic provides an overview of sample handlers for the FS-QUO user interface for Sencha-based applications.
FS-QUO is installed with examples of extended handlers. You can use these examples to help you create your extended handlers. The sample files are located in the following directory: ASlibrary/examples/com/ camilion/as/
Developer Guide Sencha-Based UI PUBLIC 111 The following diagram shows the handler type hierarchy for the WorkListSearchHandler example:
The corresponding files for the WorkListSearchHandler example are the following:
● asHandlers.xml file: /ASlibrary/examples/com/camilion/as/base/runtime/asHandlers.xml ● Extended handler class file: /ASlibrary/examples/com/camilion/as/dialogs/worklist/ handler/CustomWorkListSearchHandler.java ● Extended handler bean: /ASlibrary/examples/com/camilion/as/dialogs/worklist/bean/ CustomWorkListFormData.java
5.4 Working with the Validation Framework
This topic provides an overview of the Validation Framework for the FS-QUO user interface for Sencha-based applications.
The validation framework lets you define the validation required in FS-QUO screens and workflow activities. You can configure the following:
● Screen controls. For example, set fields as mandatory. ● Workflow activities. For example, validate requirements before transitioning from the General Information screen to Fill Out Application screen. ● eApp activities. For example, validate that all mandatory tabs in an eApp are completed.
You can configure validation in the Product Configurator. Data type validation is configured in the Java code.
Developer Guide 112 PUBLIC Sencha-Based UI FS-QUO performs the following four types of validation:
Mandatory You can set fields in the user interface as mandatory. Screen Controls If the field doesn't contain a value, an error message is displayed. (fields) You can set mandatory fields using the Product Configurator.
Screen Control In addition to setting screen controls as mandatory or optional, you can define business (field) Validation questions that perform validation. For example, you can configure validation on a button that transitions to the next screen. If the business question requirements are met, the next screen is displayed. You can configure screen control validation using the Product Configurator.
Data Type Data type validation checks whether the data is the correct type. Validation For example, an Annual Revenue field might only accept a number. If a string is entered, the data type validation method displays an error message. You can configure data type validation when you add a new attribute or UI component.
Business You can define validation checks when a business service is called. Services For example, the transactionService is called when you proceed to bind. When the bind Validation method in the service is called, the business questions run. If the conditions are met, the service runs. You can configure business services validation using the Product Configurator.
Related Information
Configuring Validation Settings for Fields, Data Types, and Services [page 85]
5.4.1 Locating the Validation Framework
This topic describes the location of the validation framework for the FS-QUO user interface for Sencha-based applications.
The validation framework is located in the following two folders of the Underwriting Application Configuration object in the Product Configurator:
● Screen Framework ● Validation
XML representation of the data for a specific policy transaction. The model is generated by FS-QUO and contains information from the FS-QUO Data Model and the Product Data Model. The Policy Model lets you access data without querying the FS-QUO database tables and views. Business services can get policy information from the Policy Model.
Developer Guide Sencha-Based UI PUBLIC 113 5.4.2 Understanding the Screen Framework Folder
This topic provides an overview of the Screen Framework folder for the FS-QUO user interface for Sencha- based applications.
The Screen Framework folder defines the permissions that control access to screen controls (for example, buttons, menus, fields, and so on) in FS-QUO. The framework also defines the permissions that allow actions, such as selecting a producer.
5.4.2.1 Screen Component
This topic describes the Screen component, which is used in the validation framework of the FS-QUO user interface for Sencha-based applications.
The Screen component lists the screens and popups in the FS-QUO runtime. The Screen component contains the following attributes: PCD Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automatically generates this value. ScreenName Defines the name of the screen. Effective Date This attribute isn't used. Expiration Date This attribute isn't used.
5.4.2.2 Screen Control Component
This topic describes the Screen Control component, which is used in the validation framework of the FS- QUO user interface for Sencha-based applications.
The Screen Control component lists all the screen controls that permissions and validation are performed on. This component also specifies when a control is required. For example, in the Account Details screen, the Save button is disabled for users associated to the roles that have the editAccount permission.
The Screen Control component contains the following attributes: PCD Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automatically generates this value. control
Developer Guide 114 PUBLIC Sencha-Based UI Defines the name of the control on the screen. The naming format depends on the value you enter in the context attribute. context Defines the type of control. This value is case-sensitive. The following options are available:
● checkboxes ● contextbutton ● field ● form ● formfields ● moreactions ● portal ● titlelinks ● toolbar
Note
This configuration is developed as part of the permissions framework. required Indicates whether the control is a required field on the screen. The following options are available:
● 0—Indicates that the control is an optional field. ● 1—Indicates that the control is a required field. requiredErrorMessage If the required attribute is set to 1, defines the error message that's displayed if the FS-QUO user doesn't enter a value in the control (field).
Related Information context Attribute in the Screen Control Component [page 202]
5.4.2.3 Permission Component
This topic describes the Permission component, which is used in the validation framework of the FS-QUO user interface for Sencha-based applications.
The Permission component in the Screen Framework folder controls access to screen controls. This configuration is developed as part of the permissions framework.
Developer Guide Sencha-Based UI PUBLIC 115 Related Information context Attribute in the Screen Control Component [page 202]
5.4.2.4 Business Questions Component
This topic describes the Business Questions component, which is used in the validation framework of the FS-QUO user interface for Sencha-based applications.
The Business Questions component contains all the business questions in the Underwriting Application Configuration object. For screens, you can select the business questions that verify the requirements to enable the screen control (field).
Note
The Business Questions Set component is reused (assembled) in multiple frameworks.
Related Information context Attribute in the Screen Control Component [page 202]
5.4.2.5 Business Questions Set Component
This topic describes the Business Questions Set component, which is used in the validation framework of the FS-QUO user interface for Sencha-based applications.
The Business Questions Set component contains groups of related business questions. For screens, you can select the business questions sets that verify the requirements to enable the screen control (field).
Note
The Business Questions Set component is reused (assembled) in multiple frameworks.
Related Information context Attribute in the Screen Control Component [page 202]
Developer Guide 116 PUBLIC Sencha-Based UI 5.4.2.6 Opening a Screen Control's Anchored Components
Each screen control component has anchored Permissions, Business Questions, and Business Questions Set components. You can open these components to see how the screen control's permissions are configured.
Procedure
1. Open your extended Underwriting Application Configuration object, expand the Screen Framework folder, and choose Screen.
The Screen component opens. 2. Select the Values tab. 3. Select All from the Views dropdown list.
All the screens are displayed. 4. Choose next to the screen that contains the control that you want to configure.
Note
If you can't select , the screen isn't selected. Select the checkbox next to it, save your changes, and select again.
The Screen Control component opens. 5. Select All from the Views dropdown list.
All the screen controls are displayed. 6. Choose next to the screen that contains the control that you want to configure.
Note
If you can't select , the screen isn't selected. Select the checkbox next to it, save your changes, and select again.
Results
The Permission, Business Questions, and Business Questions Set components open. These anchored components determine the permissions for the screen control.
Developer Guide Sencha-Based UI PUBLIC 117 5.4.2.7 Setting up Permissions for a Screen Control
You can enable and disable controls on a screen by setting permissions. Users can see a screen control only if their roles have the same permissions that the control is associated with.
Procedure
1. Open the screen control's anchored components. a. Open your extended Underwriting Application Configuration object, expand the Screen Framework folder, and choose Screen.
The Screen component opens. b. Select the Values tab. c. Select All from the Views dropdown list.
All the screens are displayed. d. Choose next to the screen that contains the control that you want to configure.
Note
If you can't select , the screen isn't selected. Select the checkbox next to it, save your changes, and select again.
The Screen Control component opens. e. Select All from the Views dropdown list.
All the screen controls are displayed. f. Choose next to the screen that contains the control that you want to configure.
Note
If you can't select , the screen isn't selected. Select the checkbox next to it, save your changes, and select again.
2. Choose the Permission tab. 3. Select All from the Views dropdown list.
All the permissions are displayed. 4. Do one or both of the following actions:
○ To use existing permissions, select the checkbox next to the permissions that you want to apply to the screen control. ○ To add new permissions, add a new row for each new permission, complete the fields, and enable the checkbox. 5. Deselect the checkbox next to the permissions that don't apply. 6. Save your changes.
Developer Guide 118 PUBLIC Sencha-Based UI Results
The selected permissions are set up for the screen control.
Next Steps
You must also set up the same permissions for the roles that access the screen control.
Related Information
Permission Component [page 115] Opening a Screen Control's Anchored Components [page 117] Setting up Permissions for a Role [page 199]
5.4.2.8 Configuring Screen Control Validation Using Business Questions
Similar to setting permissions, you can use business questions for enabling and disabling controls on a screen. Business questions let you define logic (for example, a business rule) that's more complex than permissions.
Procedure
1. Open the screen control's anchored components a. Open your extended Underwriting Application Configuration object, expand the Screen Framework folder, and choose Screen.
The Screen component opens. b. Select the Values tab. c. Select All from the Views dropdown list.
All the screens are displayed. d. Choose next to the screen that contains the control that you want to configure.
Note
If you can't select , the screen isn't selected. Select the checkbox next to it, save your changes, and select again.
The Screen Control component opens.
Developer Guide Sencha-Based UI PUBLIC 119 e. Select All from the Views dropdown list.
All the screen controls are displayed. f. Choose next to the screen that contains the control that you want to configure.
Note
If you can't select , the screen isn't selected. Select the checkbox next to it, save your changes, and select again.
2. Perform either of the following options:
○ To select individual questions, choose the Business Questions tab. ○ To select a group of related questions, choose the Business Questions Set tab. 3. Select All from the Views dropdown list. 4. Perfrom one or both of the following options:
○ To use existing business questions or sets, select the checkbox next to values that you want to apply to the screen control. ○ To add a new business question or set, add a new row, complete the fields, and select the checkbox. 5. Deselect the checkbox next to the business questions or sets that don't apply. 6. Save your changes.
Results
The selected business questions or sets are applied to the screen control. If the result of a question is false, that screen control is disabled on the screen.
Related Information
Business Questions Component [page 116] Business Questions Set Component [page 116] Configuring Validation for Flat Cancellation Type [page 351] Business Questions Component [page 129] Business Questions Set Component [page 130]
5.4.3 The Validation Folder
This topic is an overview of the Validation folder, which is used in the validation framework of the FS-QUO user interface for Sencha-based applications.
The Validation folder contains objects that configure the validation for FS-QUO screens and activities transition.
Developer Guide 120 PUBLIC Sencha-Based UI The Validation framework folder contains two groups of components:
● Spring Bean Configurations ● UI Controllers
5.4.3.1 Spring Beans Configurations
The Spring Beans Configurations objects define business service validation. When a service is called, the validation checks determine whether the requirements are met before the service runs.
5.4.3.1.1 Spring Bean Configurations Object
This topic describes the Spring Bean Configurations object, which is used in the validation framework of the FS-QUO user interface for Sencha-based applications.
The Spring Bean Configurations object defines how business services and business components are created and configured.
The Spring Bean Configurations object has the following attributes: beanId Specifies the unique bean ID. classname Specifies the Java class name. parentBeanId Specifies the parent bean ID. abstract Specifies if the bean is abstract, if it can be instantiated. Use for objects that have states. scope Leave blank for a singleton or enter prototype for a new instance of the bean. attributes Specifies anything that will be passed to the XML definition. Use the form of XML element attributes.
5.4.3.1.2 Spring Bean Properties Object
This topic describes the Spring Bean Properties object, which is a part of the validation framework of the FS-QUO user interface for Sencha-based applications.
The Spring Bean Properties object isn't used.
Developer Guide Sencha-Based UI PUBLIC 121 5.4.3.1.3 Spring Bean Constructor Arguments Object
This topic describes the Spring Bean Constructor Arguments object, which is used in the validation framework of the FS-QUO user interface for Sencha-based applications.
The Spring Bean Constructor Arguments object isn't used.
5.4.3.1.4 Method Object
This topic describes the Method object, which is used in the validation framework of the FS-QUO user interface for Sencha-based applications.
The Method object contains the methods in the business service that validation is performed on. When the method is called, validation runs.
The Method object has the following attributes: PCD Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automatically generates this value. methodName Specifies the name of the method that validation is performed on.
5.4.3.1.5 Validation Object
This topic describes the Validation object, which is used in the validation framework of the FS-QUO user interface for Sencha-based applications.
This Validation object isn't used at this time. It is reserved for future use by SAP.
5.4.3.1.6 Business Questions Component
This topic describes the Business Questions component, which is used in the validation framework of the FS-QUO user interface for Sencha-based applications.
The Business Questions component contains all the business questions in the Underwriting Application Configuration object. For Spring Beans Configurations, you can select the business questions that are called before a handler.
Note
The Business Questions Set component is reused (assembled) in multiple frameworks.
Developer Guide 122 PUBLIC Sencha-Based UI Related Information
Understanding Business Questions [page 127]
5.4.3.1.7 Business Questions Set Component
This topic describes the Business Questions Set component, which is used in the validation framework of the FS-QUO user interface for Sencha-based applications.
The Business Questions Set component contains groups of related business questions. For Spring Beans Configurations, you can select the business questions sets that are called before a handler.
Note
The Business Questions Set component is reused (assembled) in multiple frameworks.
Related Information
Understanding Business Questions [page 127]
5.4.3.2 UI Controllers Folder
This topic describes the purpose of the UI Controllers folder, which is used in the validation framework of the FS-QUO user interface for Sencha-based applications.
This folder and its objects are reserved for future use by SAP. Don't modify these components.
5.4.3.3 Opening an Anchored Business Service Method
You can configure validation for a business service method defined in the Product Configurator. To configure validation, you must navigate to the method anchored to the selected business service.
Procedure
1. Open your extended Underwriting Application Configuration object, expand the Validation folder, and choose Spring Bean Configurations.
Developer Guide Sencha-Based UI PUBLIC 123 Note
Typically, the extended Underwriting Application Configuration object is named Extended Underwriting Application Configuration and is located in the Company Library Configuration Objects folder.
The Spring Bean Configurations component opens. 2. Select the Values tab. 3. Select All from the Views dropdown list.
All the business services are displayed. 4. Choose next to the business service that you want to call from your flow.
Note
If you can't select , the method isn't selected. Select the checkbox next to it, save your changes, and choose again.
The child components open. 5. Choose the Method tab. 6. Select All from the Views dropdown list.
All the methods in the business service are displayed. 7. Choose next to the method that you want to configure a business question for.
Note
If you can't select , the method isn't selected. Select the checkbox next to it, save your changes, and choose again.
Results
The Validation, Business Questions, and Business Questions Set components open. These anchored components determine the validation for the business service method.
Developer Guide 124 PUBLIC Sencha-Based UI 5.4.3.4 Configuring Flow Validation Using Business Questions
This topic applies to the validation framework of the FS-QUO user interface for Sencha-based applications.
Context
Flow questions are business validation questions that are performed during the application process flow, between activities.
For each validation question, create a flow business question in the Product Configurator and modify the appropriate flow XML file. When the FS-QUO flow calls that method, the business questions run to validate the requirements.
Procedure
1. Open the business service method for which you want to configure validation. a. Open your extended Underwriting Application Configuration object, expand the Validation folder, and choose Spring Bean Configurations.
Note
Typically, the extended Underwriting Application Configuration object is named Extended Underwriting Application Configuration and is located in the Company Library Configuration Objects folder.
The Spring Bean Configurations component opens. b. Select the Values tab. c. Select All from the Views dropdown list.
All the business services are displayed. d. Choose next to the business service that you want to call from your flow.
Note
If you can't select , the method isn't selected. Select the checkbox next to it, save your changes, and choose again.
The child components open. e. Choose the Method tab. f. Select All from the Views dropdown list.
All the methods in the business service are displayed. g. Choose next to the method that you want to configure a business question for.
Developer Guide Sencha-Based UI PUBLIC 125 Note
If you can't select , the method isn't selected. Select the checkbox next to it, save your changes, and choose again.
2. Perform one of the following options:
○ To select individual questions, choose the Business Questions tab. ○ To select a group of related questions, choose the Business Questions Set tab. 3. Select All from the Views dropdown list.
All the values are displayed. 4. Perform one or both of the following options:
○ To use existing business questions or sets, select the checkbox next to the values that you want to apply to the method. ○ To add a new business question or set, add a new row, complete the fields, and select the checkbox.
Note
In the businessQuestionType attribute, select [FlowQuestion] - FlowQuestion.
5. Deselect the checkbox next to the business questions or sets that don't apply. 6. Save your changes.
The selected business questions or sets are applied to the method. If the result of a question is false, that method doesn't run. 7. Add the question to the flow as follows: a. Find the XML file for the flow that you want to run validation on.
Example: /ASLibrary/src/com/camilion/as/beans/runtime/flow/flow-NEWBUS.xml b. Add the following line to the appropriate section of the file:
Results
The flow validation is configured.
Note
The handler must be called before the business question is triggered because the value that the business question needs is read from the flowScope. The handler puts the value into the scope.
Developer Guide 126 PUBLIC Sencha-Based UI 5.4.4 Understanding Business Questions
This topic explains the purpose of Business Questions in the validation framework of the FS-QUO user interface for Sencha-based applications.
Business questions are validation checks. These questions verify the requirements for fields (for example, a field might require a number in a specific range) and for the business service to run (for example, all mandatory tabs must be completed before the service can run).
Business questions are defined in the following components:
● Business Questions ● Business Questions Set (groups of related business questions selected from the Business Questions component)
The FS-QUO installation provides default business questions and business questions sets. You can add questions and sets as needed.
To set up validation, you can do the following:
● Select individual business questions from the Business Questions component to apply (anchor) to a parent component. ● Select groups of related business questions from the Business Questions Set component.
You can use either method. Business questions sets let you apply multiple questions with one value row selection. Alternatively, you might want to select individual questions from the Business Questions component if the questions aren't related.
Developer Guide Sencha-Based UI PUBLIC 127 5.4.4.1 Reusing Business Questions
This topic explains the purpose of Business Questions in the validation framework of the FS-QUO user interface for Sencha-based applications.
The Business Questions component and Business Questions Set component are standalone. These components are assembled in the following locations in the Underwriting Application Configuration
object:
Because the components are assembled in multiple folders, any change you make to a business question or business question set is local to the folder that the component belongs to.
When you modify or add a business question or set in a specific folder, consider whether the question or set will be used in other folders. To reuse a question or set, you must make the same change in the other folders.
Developer Guide 128 PUBLIC Sencha-Based UI 5.4.4.2 Business Questions Component
This topic describes the Business Questions component, which is used in the validation framework of the FS-QUO user interface for Sencha-based applications.
The Business Questions component contains all the business questions that can be used in the FS-QUO runtime.
In the Screen Framework folder, business questions enable and disable controls on a screen. These questions let you define logic (for example, a business rule) that's more complex than permissions. For example, if a policy is issued once, it can't be issued again. To configure this setting, you can define a business question for the issue button that checks the status of the policy. If the policy is already issued, the button is disabled.
Note
The same Business Questions component is also used (assembled) in the Business Questions Set object in Screen Control and in the Business Behavior folder.
The Business Questions component has the following attributes:
PCD Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automically generates this value. businessQuestionName Defines the name of the business question. businessQuestionRule Defines the rule that runs on the screen control.
Note
For an example of specifying validation stems, see the isLobSelected business question. businessQuestionErrorMessage Defines the error message that's displayed when the businessQuestionRule is false. businessQuestionSortOrder Specifies the order that the businessQuestionRule runs in. You can use this value to specify the order that the questions run in. businessQuestionType Specifies the type of question that best supports the business rule. Choose from the following options:
[ModelQuestion] - Use this option when you know that the transfer object is ModelQuestion available in the ServiceCommand. This option calls a stem that contains only a ServiceCommand.
Developer Guide Sencha-Based UI PUBLIC 129 [DataTypeQuestion] - Use this option when you can't assume that the transfer DataTypeQuestion object is available in the ServiceCommand. This option calls a stem that contains a ServiceCommand and an EMF XPath.
[FlowQuestion] - Use this option when you want to add a business condition FlowQuestion to user interface components in the screen (for example, between activities in the flow). You can use data type questions to access the transfer object to query the model.
The only difference between data type questions and model questions is that you can't access values of user interface controls using the name of that control in the stem using model questions.
Note
Stems are available for the rules that support specific types of questions.
Related Information
Using Validation Stems [page 131] Configuring Flow Validation Using Business Questions [page 125]
5.4.4.3 Business Questions Set Component
This topic describes the Business Questions Set component, which is used in the validation framework of the FS-QUO user interface for Sencha-based applications.
The Business Questions Set component contains groups of related questions. The individual questions are defined in the child Business Questions component. When a business questions set is selected, all the questions in that set are performed as part of the validation. For example, the FS-QUO installation provides the isEligibleForRenewal business questions set. This set groups all the validation that must be performed before you can proceed with a renewal application in FS-QUO.
The Business Questions Set component has the following attributes:
PCD Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automically generates this value. Name Defines the name of the business questions set. The FS-QUO installation provides the following default sets:
Developer Guide 130 PUBLIC Sencha-Based UI ● clearanceRules ● isLobSelected ● isEligibleForRenewal ● isEligibleForAutoRenewal ● isEligibleForBind ● isOptionEligibleForRemoval
Effective Date This attribute isn't used. Expiration Date This attribute isn't used.
5.4.5 Using Validation Stems
This topic lists the stems available for use with the validation framework of the FS-QUO user interface for Sencha-based applications.
The following stem classes work with validation questions:
ASDataTypeStem Use the ASDataTypeStem methods in rules that support the [DataTypeQuestion] - DataTypeQuestion question.
● [ModelQuestion] - ModelQuestion—Use this option when you know that the transfer object is available in the ServiceCommand. This option calls a stem that contains only a ServiceCommand.
ASFlowStem Use the ASFlowStem in rules that support the [FlowQuestion] - FlowQuestion question.
● [ModelQuestion] - ModelQuestion—Use this option when you know that the transfer object is available in the ServiceCommand. This option calls a stem that contains only a ServiceCommand.
ASPolicyModelStem Use the ASFlowStem methods in rules that support the [ModelQuestion] - ModelQuestion question.
AccountStem AccountStem is an extension of ASPolicyModelStem.
Notes:
● The stem classes and their functions and arguments are listed in the FS-QUO javadoc. ● All stems are an extension of ASBaseStem. If you need to create a new stem that isn't already supported by the stems, extend ASBaseStem. If you need to add functionality to an existing stem, extend the stem and add the new functionality to the extended stem.
Related Information
Using Stems [page 310] Accessing the javadoc [page 313]
Developer Guide Sencha-Based UI PUBLIC 131 5.5 Working with the Search Framework
This topic provides an overview of how the Search Framework works with FS-QUO for Sencha-based applications.
The search framework configures how search behavior works for each search operation in FS-QUO. You can configure the following search operations in the framework:
● The Work List search ● The Policy search (Search, Policies) ● The Accounts search (Search, Accounts) ● The Producers search (Search, Producers) ● The Producer search within a policy ● The Task List search (Manage, Tasks)
5.5.1 Locating the Search Framework
This topic describes the location of the search framework for the FS-QUO user interface for Sencha-based applications.
The search framework is located in the Search Framework folder of the Underwriting Application Configuration object in FS-PRO Product Configurator.
XML representation of the data for a specific policy transaction. The model is generated by FS-QUO and contains information from the FS-QUO Data Model and the Product Data Model. The Policy Model lets you access data without querying the FS-QUO database tables and views. Business services can get policy information from the Policy Model.
5.5.2 The Search Framework Folder
This topic provides an overview of the Search Framework folder for FS-QUO for Sencha-based applications.
The Search Framework folder contains all the objects related to search behavior.
5.5.3 Search Component
This topic describes the Search component, which is used in the FS-QUO search framework for Sencha-based applications.
The Search component contains all the screens that a search is performed on.
The Search component has the following attributes: PCD
Developer Guide 132 PUBLIC Sencha-Based UI Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automatically generates this value. screenName Specifies the screen name. This value can be one of the following:
● The actual screen name. Specify this value in the screenName attribute of the Underwriting Application Configuration Screen Framework Screen object . ● The screen alias name when the same search criteria is performed on multiple screens viewName Specifies the name of the database view for the screen. orderDirection Displays the results order in ascending (ASC) or descending (DESC) order. instructionalText Defines the description displayed on the search screen. screenTitle Defines the title displayed on the search screen. This attribute only applies to manageaccountdialog and managerenewalsdialog. rows Defines the number of rows on the grid that the search screen is displayed across. This attribute only applies to manageaccountdialog and managerenewalsdialog. columns Defines the number of columns on the grid that the search screen is displayed across. This attribute only applies to manageaccountdialog and managerenewalsdialog. Effective Date This attribute is not used. Expiration Date This attribute is not used.
5.5.4 SearchCriteriaItem Component
This topic describes the SearchCriteriaItem component, which is used in the FS-QUO search framework for Sencha-based applications.
The SearchCriteriaItem component contains the search criteria information.
The SearchCriteriaItem component has the following attributes: PCD Specifies the unique identifier for the value row in the component and across the system.
Developer Guide Sencha-Based UI PUBLIC 133 You can leave this attribute blank, and the system automatically generates this value. searchType Specifies the type of match to perform for the criteria item. The following options are available:
LIKE Searches for like matches. This option is useful when searching for a partial word to return all matches.
EQUAL Requires that the search result be the same as the search criteria.
NOTEQUAL Returns matches that aren't equal to the search criteria.
LESSTHAN Returns matches that are less than the search criteria, excluding search results that are equal to the search criteria.
GREATERTHAN Returns matches that are greater than the search criteria, excluding search results that are equal to the search criteria.
LESSEQUAL Returns matches that are less than the search criteria, including search results that are equal to the search criteria.
GREATEREQUAL Returns matches that are greater than the search criteria, including search results that are equal to the search criteria. dataType Specifies the data type. The following options are available:
● STRING ● LIST ● DATE ● INTEGER ● DOUBLE ● LONG displayName Defines the label on the screen located on the left side of the text box control. This attribute is optional. This attribute only applies to manageaccountdialog and managerenewalsdialog. lookupName Specifies the lookup service name. This attribute is optional. This attribute only applies when the dataType attribute has been set to LIST. controlName Specifies the name of the control where the search criteria is entered or selected from (for lists).
Developer Guide 134 PUBLIC Sencha-Based UI 5.5.5 SearchCriteriaItemColumns Component
This topic describes the SearchCriteriaItemColumns component, which is used in the FS-QUO search framework for Sencha-based applications.
The SearchCriteriaItemColumns component contains a list of database view columns that the search is performed on.
The SearchCriteriaItemColumns component has the following attributes: PCD Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automatically generates this value. columnName Specifies the column in the database view that contains the data to be searched.
5.5.6 SearchControlUIConfiguration Component
This topic describes the SearchCriteriaItem component, which is used in the FS-QUO search framework for Sencha-based applications.
The SearchControlUIConfiguration component contains the control type values. These values determine how the search criteria displays in FS-QUO.
The SearchControlUIConfiguration component has the following attributes: PCD Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automatically generates this value. Horizontal Position Coordinate Specifies the horizontal position where the control type is displayed. This attribute is optional. This attribute only applies to manageaccountdialog and managerenewalsdialog. Vertical Position Coordinate Specifies the vertical position where the control type is displayed. This attribute is optional. This attribute only applies to manageaccountdialog and managerenewalsdialog. Cell Span Specifies the number of cells in the grid that the control type is displayed across. This attribute is optional. This attribute only applies to manageaccountdialog and managerenewalsdialog. UI Control Type
Developer Guide Sencha-Based UI PUBLIC 135 Specifies the type of control, such as text box, dropdown list, radio button, and so on. This attribute is optional. This attribute only applies to manageaccountdialog and managerenewalsdialog.
5.5.7 SearchGroupByColumns Component
This topic describes the SearchGroupByColumns component, which is used in the FS-QUO search framework for Sencha-based applications.
This component is reserved for future use by SAP.
5.5.8 SearchOrderByColumns Component
This topic describes the SearchOrderByColumns component, which is used in the FS-QUO search framework for Sencha-based applications.
The SearchOrderByColumns component configures the column ordering of the results.
The SearchOrderByColumns component has the following attributes: PCD Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automatically generates this value. columnName Specifies the database view column that contains the data to be searched. order Specifies the sort order of the columns. For example, if you entered a state column and an account name column, you can sort the results by account name and then state, or by state and then account name. This attribute is optional.
5.5.9 SearchResultItem Component
This topic describes the SearchResultItem component, which is used in the FS-QUO search framework for Sencha-based applications.
The SearchResultItem component contains the column control names of the grid where the search results are displayed.
The SearchResultItem component has the following attributes: PCD
Developer Guide 136 PUBLIC Sencha-Based UI Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automatically generates this value. controlName Specifies the name of the result grid column control. dataType Specifies the data type. This is a required attribute. The following options are available:
● STRING ● LIST ● DATE ● INTEGER ● DOUBLE ● LONG displayInGrid Specifies whether this column displays in the search result grid. This attribute is optional. This attribute only applies to manageaccountdialog and managerenewalsdialog. gridPosition Specifies the location in the grid where the column is displayed. Depending on your business requirements, you can use this attribute to order the columns. This attribute is optional. This attribute only applies to manageaccountdialog and managerenewalsdialog. displayName Defines the label header displayed in the search result grid. This attribute is optional. This attribute only applies to manageaccountdialog and managerenewalsdialog. SYSATTR_TABLE_NAME This attribute isn't used.
5.5.10 SearchColumns component
This topic describes the SearchColumns component, which is used in the FS-QUO search framework for Sencha-based applications.
The SearchColumns component specifies the database columns from the corresponding search view that contain the search results. The view is defined in the Search component.
Developer Guide Sencha-Based UI PUBLIC 137 The SearchColumns component has the following attributes: PCD Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automatically generates this value. columnName Specifies the column in the database view that contains the search result.
5.5.11 Example: Configuring the Work List Search
This topic provides an example of the Search Framework for the FS-QUO user interface for Sencha-based applications.
The Work List search in FS-QUO contains the following search fields:
● Account Name ● Transaction Type ● Transaction Status ● Date Type ● From ● To
The Work List search criteria and results are configured in FS-PRO Product Configurator. In the Search Framework folder of the Underwriting Application Configuration object, the Screen component lists all the search screens in FS-QUO.
The worklistsearchdialog entry defines the search configuration for the Work List.
To see how the search criteria is configured, expand the worklistsearchdialog row. The anchored components open. The SearchCriteriaItem tab displays all the search criteria.
For example, the first anchored criteria is currentUserPkId. This entry performs a search to get the records associated with the user (the user who is logged in or the selected user when the view is changed).
To see which database view columns are searched to find transactions associated with the user, expand the currentuserPkId row.
The UW_OF_RECORD_ID and WORKING_USER_ID columns are searched.
The results of the user search aren't explicitly deployed in the results grid.
The Work List search is also based on the Account Name (control name accountName). In the anchored SearchCriteriaItem component, expand the Account Name row. The SearchCriteriaItemColumns component opens. The ACCOUNT_NM Policy Model column is searched for strings that match the entered value in some way (for example, entering ra would match Brandon and Rachel). The search results are displayed in the Search Results grid in FS-QUO.
To see which field (control) in the user interface displays the Account Name search results, select the SearchResultItem tab in Product Configurator. The selected control name accountName indicates that the results are displayed in the Account Name column in the Work List result grid. You can expand the accountName row to see which column in the database view that the search results are retrieved from.
Developer Guide 138 PUBLIC Sencha-Based UI The Work List screen doesn't have a SearchOrderByColumns component entry anchored to it. In this situation, the search results are displayed according to the view specified in the following scripts:
● Oracle_Search_Views_Creations_DDL.sql ● SQLS_Search_Views_Creations_DDL.sql
These scripts are located in the following directory: /ASlibrary/db/views/
The Search Framework configuration for the Work List creates the following query:
Query Description
SELECT
FROM WorkListSearch The SELECT statement gets the information from the WorkListSearch entry in the Screen component. This FROM value corresponds to the viewName attribute.
WHERE
( ( UW_OF_RECORD_ID = ? ) OR The SELECT statement searches for the user ID in any of ( WORKING_USER_ID = ? ) ) AND the UW_OF_RECORD_ID and WORKING_USER_ID columns. ( ( UPPER(ACCOUNT_NM) LIKE UPPER(?)) ) The search tries to match (LIKE) the Account Name field value in the ACCOUNT_NM column in the database view.
5.5.12 Modifying a Database View
FS-QUO provides database views used to support searches. To modify the search to query additional columns, copy an existing view and add the information.
Context
The modified database view is also helpful if you created extended classes. You can modify the class to query the new view for data.
Developer Guide Sencha-Based UI PUBLIC 139 Procedure
1. Make a copy of one of the following scripts, depending on the database that you're using: ○ /ASlibrary/db/views/Oracle_Search_Views_Creations_DDL.sql ○ /ASlibrary/db/views/SQLS_Search_Views_Creations_DDL.sql 2. Place the copied script in the same directory (/ASlibrary/db/views/). 3. In the copied file, specify additional columns required in the search query. 4. Run the new SQL script.
The modified database view is created in the database. 5. In FS-PRO Product Configurator, modify the corresponding search framework component to point to the new view.
Next Steps
If the search criteria changes, update the script again and run it during upgrades.
5.5.13 Understanding the Search Framework Methods
This topic describes the methods available for the Search Framework for FS-QUO for Sencha-based applications.
The Underwriting Application Configuration Config API Application Configuration API object contains services that get information for the FS-QUO application. The following table describes the services in the Underwriting Application Configuration API object that apply to the Search Framework:
Search Framework Methods
Service Name Description Input Return Value Default
getSearchColumn Returns the list of the Screen Name Data Table N/A s columns the search is Criteria Item performed on.
getSearchCriter Returns the UI attrib Screen Name Data Table N/A ia utes for a search crite ria section (for exam ple, informational text, search title, and so on) on a given screen.
Developer Guide 140 PUBLIC Sencha-Based UI Service Name Description Input Return Value Default
getSearchCriter Returns the UI configu- Screen Name Data Table N/A iaUIConfig ration for a search cri Criteria Item teria item (for exam ple, a text field, com bobox, and so on) on a given screen.
getSearchCriter Returns all the search Screen Name Data Table N/A iaItems criteria items on a given screen.
getSearchGroupB Returns the list of the Screen Name Data Table N/A yColumns columns (and their or der of preference) to group by in the result set.
getSearchOrderB Returns the list of the Screen Name Data Table N/A yColumns columns (and their or der of preference) to order by in the result set.
getSearchResult Returns the list of the Screen Name Data Table N/A Items columns (for the result set) to display on a given screen.
Caution
Don't modify these methods because FS-QUO uses them.
5.6 Working with the Simplified Insurance Application Renderer
This topic provides an overview of the product renderers for FS-QUO for Sencha-based applications.
The product renderers determine how to display the marketable product information in the Fill Out Application section in the FS-QUO runtime.
You can configure your products in the Product Configurator to use one of the following renderers:
● Complex insurance application renderer ● Simplified insurance application renderer
Developer Guide Sencha-Based UI PUBLIC 141 Complex Insurance Application Renderer
The complex insurance application renderer is intended for products that contain many risks and different types of risks in the risk hierarchy. The renderer displays the risk hierarchy using the Quick Access Panel navigation section.
The Product Configurator provides sample marketable products that use the complex insurance application renderer. Examples are Mock Commercial General Liability Monoline, Mock Commercial Package, and Mock Commercial Property Monoline.
Note
For information about setting up the complex insurance application renderer, contact SAP support.
Simplified Insurance Application Renderer
The simplified insurance application renderer is intended for products that contain a small number of coverages and risks. The rendered interface is helpful for FS-QUO users who aren't familiar with the risk hierarchy. Instead of displaying the Quick Access Panel navigation section, the renderer organizes the risk information into tabs that display horizontally across the screen.
The Product Configurator provides a sample marketable product named Mock Directors and Officers Liability Monoline that uses the simplified insurance application renderer.
Related Information
Extending the Simplified Insurance Application Renderer [page 149]
5.6.1 Suppressing Error Information
This topic describes how to suppress error information for the FS-QUO user interface for Sencha-based applications.
Context
By default, FS-QUO permits users to access the session and user information by pressing Ctrl + Alt + D (Debug Console) in FS-QUO runtime (Sencha UI) or by pressing Ctrl + Alt + P (Debug Console) in FS- IPW (Fiori UI).
You can also access the stack trace information by using the Show Details >> button whenever there's an unexpected error.
Developer Guide 142 PUBLIC Sencha-Based UI However, while this information is essential for troubleshooting, it exposes information that external users, such as brokers, shouldn't be able to see for reasons of security and confidentiality. Therefore, you can configure FS-QUO to hide error information.
Procedure
1. Log into the FS-QUO Administrative Console.
2. Navigate to System Edit Configuration Settings Configuration Application AuthoritySuite Env Application Environment and set the SUPPRESS_ERROR_DETAILS value to Yes.
5.6.2 Setting Up the Simplified Insurance Application Renderer
This topic provides an overview of the steps necessary to set up the Simplified Insurance Application Renderer for the FS-QUO user interface for Sencha-based applications.
You can set up a marketable product to use the simplified insurance application renderer. The rendered interface organizes the risk information into tabs that display horizontally across the screen.
To set up the simplified insurance application renderer, follow these steps:
1. Log in to Product Configurator. 2. Open the marketable product that you want to modify. 3. Set up the first-level tabs 4. Define the risk hierarchy 5. Set up the coverage group sub-tabs 6. Add coverage information to the Risk tabs 7. Publish the product. 8. Restart the server.
The simplified insurance application renderer is set up. When you select that product in FS-QUO, the Fill Out Application section displays the product information using the rendered interface.
Note:
● When following these steps, we recommend that you also refer to the Mock Directors and Officers Liability Monoline configuration in Product Configurator as an example. ● For more information about eApps and using Product Configurator, see the Product Configurator User Guide.
Developer Guide Sencha-Based UI PUBLIC 143 5.6.2.1 Setting up the First-Level Tabs
This topic describes how to set up the first-level tabs that the renderer displays in the simplified insurance application renderer for Sencha-based applications.
Context
You'll perform the following actions:
● Define the container (eApp layout) for the insurance application. ● Define information that doesn't require sub-tabs as first-level tabs, including their content (eApplication sections and screens). Examples are general information, forms, and referrals. ● Define lines of business as first-level tabs only. Typically, these tabs contain sub-tabs.
Procedure
1. Go to the marketable product in the Product Tree.
2. Choose Product Name Data Capture eApp Layout . The eApp Layout component displays. 3. Select the Values tab. 4. Add a row to represent the container (eApp layout) for the insurance application for the marketable product. 5. Complete the following fields for the new row: a. Define a name for the insurance application that you want the renderer to display in the eApp Name field.. b. Select the [eAppTabularLayout] - com.camilion.as.eapp.lightproduct. renderer.EappLayout option from the Renderer dropdown list. c. Select [Tab] - Tab from the Render Type dropdown list. d. Enter any value (for example, Display Name) in the Display Name field.
You'll define the actual display name in the appropriate eApplication component described in step 7. e. Save your changes. 6. Define and anchor the first-level tabs (eApp layout sections), as follows: a. Choose the Plus sign icon next to the row that you created. The eApp Layout Section component opens. b. Select All from the Views dropdown list. All the rows display. c. For each tab that you want to display in the first-level, add a row if it isn't already inherited from the parent component, and complete the following fields: ○ Section Name—Enter a name for the section. ○ Target eApp—Enter the name of the eApp for this tab. This name must match the eApp name defined in the appropriate eApplication component.
Developer Guide 144 PUBLIC Sencha-Based UI ○ Section Order—Enter the order to display the tab. d. Select the checkbox for the rows that you want to anchor to the eApp layout, and save your changes. The selected section rows are anchored to the eApp layout. These rows will be displayed as first-level tabs.
Remember
In the previous example, only one row represents a tab for a coverage group (DO Quote Risk eApp). The other three rows are tabs that don't contain sub-tabs.
7. For the tabs that don't contain sub-tabs (for example, Policy General Information, Forms, and Referrals), define the eApplication sections and screens:
a. Choose Product Name Data Capture eApplication in the Product Tree. The eApplication component displays. b. For each tab, create a row, and complete the following fields: ○ eApp Name—Enter a name for the eApp. This name must match the Target eApp value specified in the eApp Layout Section component. ○ Renderer—Select the following option from the dropdown list: [eAppTabularContent] - com.camilion.as.eapp.lightproduct. renderer.EappContent ○ Render Type—Select [Panel] - Panel from the dropdown list. ○ Display Name—Enter the name that you want to display in the tab. c. Save your changes. d. For each row, choose the Plus sign icon, and create and anchor corresponding rows in the eApp Section and eApp Screen component. The sections and screens are set up to display the information for the tabs. 8. Commit all the changes.
Results
The first-level tabs are set up.
Related Information
Setting up the Coverage Group Sub-Tabs [page 146]
Developer Guide Sencha-Based UI PUBLIC 145 5.6.2.2 Defining the Risk Hierarchy
This topic describes how to define the risk hierarchy for the simplified insurance application renderer for Sencha-based applications.
Context
To display the marketable product information, all renderers use the risk hierarchy.
Procedure
1. Choose the marketable product in the Product Tree.
2. Choose Product Name Coverage Groups Coverage Group Name Identification Risk Hierarchy . The Risk Hierarchy component opens. 3. Add a row for each risk in the hierarchy.
Note
In the Primary_Option_Eapp field, specify the eApp that represents the risk. This eApp will be displayed as a tab.
Results
The risk hierarchy is defined.
5.6.2.3 Setting up the Coverage Group Sub-Tabs
This topic describes how to set up coverage group sub-tabs for the simplified insurance application renderer for Sencha-based applications.
Context
After you set up the first-level tabs and define the risk hierarchy, set up the coverage group sub-tabs as follows:
● Create a container for the coverage group tab (eApp layout). ● Define sub-tabs (eApplication sections and screens). These sub-tabs display coverage group and coverage information.
Developer Guide 146 PUBLIC Sencha-Based UI Procedure
1. Choose Product Name Coverage Groups Coverage Group Name Data Capture eApp Layout in the Product Tree. 2. Select the Values tab. 3. Add a row to represent the container for the coverage group tab (eApplication). 4. Complete the following fields for the new row: a. Define a name for the coverage group in the eApp Name field. This name must match the Target eApp value specified in the eApp Layout Section component in the first- level tabs. b. Select the [eAppTabularHierarchyLayout] - com.camilion.as.eapp. lightproduct.renderer.EappHierarchy option from the Renderer dropdown list: c. Select [Tab] - Tab from the Render Type dropdown list. d. Enter the name that you want to display in the tab in the Display Name field. e. Save your changes. 5. Define and anchor the coverage group sub-tabs: a. Choose the Plus Sign icon next to the row that you created. The eApp Layout Section component opens. b. Select All from the Views dropdown list. All the rows display. c. Add a row for each sub-tab and complete the following fields: ○ Section Name—Enter a name for the section to display. ○ Target eApp—Enter the name of the eApp to display. This name must match the eApp name defined in the appropriate eApplication component described in step 5. ○ Section Order—Specifies the order to display the tab. d. Select the checkbox for the rows that you want to anchor to the eApp layout, and save your changes. The selected rows are anchored to the eApp layout. These rows are the sub-tabs. 6. For each sub-tab that you defined in the eApp layout, define the eApp sections:
a. Choose Product Name Coverage Groups Coverage Group Name Data Capture eApplication in the Product Tree. The eApplication component displays. b. Select the Values tab. c. For each sub-tab, create a row and complete the following fields: ○ eApp Name—Enter a name for the eApp. This name must match the Target eApp value specified in the eApp Layout Section component. ○ Renderer—Select the following option from the dropdown list: [eAppTabularContent] - com.camilion.as.eapp.lightproduct. renderer.EappContent ○ Render Type—Select [Panel] - Panel from the dropdown list. ○ Display Name—Enter the name that you want to display in the tab. d. Save your changes. e. For each row, choose the Plus Sign icon, and create and anchor corresponding rows in the eApp Section and eApp Screen components. 7. Commit all the changes.
Developer Guide Sencha-Based UI PUBLIC 147 Results
The coverage group tabs are set up.
5.6.2.4 Adding Coverage Information to the Risk Tabs
For each risk tab (sub-tab in a coverage group), you can append coverage information to the screen.
Context
This topic describes how to add coverage information to the risk tabs for the simplified insurance application renderer for Sencha-based applications.
Procedure
1. Choose Product Name Coverage Groups Coverage Group Name Coverages Coverage Name Data Capture eApplication in the Product Tree. The eApplication component displays. 2. Select the Values tab. 3. Create a row for each risk (sub-tab). 4. Complete the following fields for each new row: ○ eApp Name—Enter a name for the eApp. This name must match the Target eApp value specified in the eApp Layout Section component in the coverage group tabs. ○ Renderer—Select the following option from the dropdown list: [eAppTabularContent] - com.camilion.as.eapp.lightproduct. renderer.EappContent ○ Render Type—Select [Panel] - Panel from the dropdown list. ○ Display Name—Enter the name that you want to display in the tab. 5. Save your changes. 6. For each row, choose , and create and anchor corresponding rows in the eApp Section and eApp Screen components. These sections and screens are appended to the eApplication defined for the coverage group tab. 7. Commit all the changes.
Results
The coverage information is appended to the risk tabs.
Developer Guide 148 PUBLIC Sencha-Based UI 5.6.2.5 Creating Additional Levels of Sub-Tabs
This topic describes how to create more sub-tab levels for the simplified insurance application renderer for Sencha-based applications.
You can create additional levels of sub-tabs in your simplified insurance application. For help with creating additional levels, contact SAP support.
5.6.3 Extending the Simplified Insurance Application Renderer
This topic describes how to extend the simplified insurance application renderer for Sencha-based applications.
Context
You can extend the simplified insurance application renderer to implement behavioral changes that your organization needs. For example, the Next >> button traverses through each tab in the Fill Out Application section by default. You can modify the behavior of this button to traverse every second tab or jump to the last tab.
To extend the simplified insurance application renderer, perform the following steps:
Procedure
1. In your FS-QUO development environment, navigate to the following directory: /ASWeb/web/j_scripts/ authoritysuite/eapp/js/eapplayout/ 2. Make a copy of the following file: EappContainerTabPanelTemplate.js The renderer template package is backed up. 3. Modify the methods in the original EappContainerTabPanelTemplate.js file. 4. Repackage the modified file. 5. Check the file in to the location in step 1.
Results
The simplified insurance application renderer displays marketable products based on the changes you specified in the file.
Developer Guide Sencha-Based UI PUBLIC 149 6 Core FS-QUO
6.1 Working with Application Flows
A flow is a sequence of activities and screens in the FS-QUO runtime. Flows determine how the FS-QUO application runs, the flow of the application, and how the screens transition to one another. For example, a default flow is provided for underwriters who want to create a new policy transaction. That flow contains the following seven activities (states):
● Select Account ● Select Producer ● Select Product ● Fill out Application ● Review Quote ● Bind Quote ● Issue Policy
You can modify flows by adding, modifying, or deleting an activity.
Each FS-QUO flow is defined in an XML file. These flow definitions are maps to the states, transitions, actions, and components (such as handlers and services) involved in developing the flows.
Tip
The flows are defined using the Spring Web Flow flow definition language. For more information about this language, see the Spring Web Flow Reference Guide available on the Spring Web Flow web site.
The FS-QUO flow definitions are defined in XML files located in the /ASlibrary/src/com/camilion/as/ beans/runtime/flow/ directory. The following flow definitions are provided with the installation:
● flow-ASBASE.xml ● flow-CAMBASE.xml ● flow-CANCEL.xml ● flow-ENDORSEMENT.xml ● flow-EXTENSION.xml ● flow-NEWBUS.xml ● flow-PREMIUMAUDIT.xml ● flow-PRODUCER_ENDORSEMENT.xml ● flow-PRODUCER_NEWBUS.xml ● flow-REINSTATE.xml ● flow-REISSUE.xml ● flow-RENEWAL.xml ● flow-REWRITE.xml
Developer Guide 150 PUBLIC Core FS-QUO A flow can contain the following two types of activities:
view-state activity
A view-state activity defines what's displayed on the screen. The activity expects input from the user. You can change the following in a view-state activity:
● Screen title ● Screen class name ● The label of the activity in the progress meter
The following is an example of a view-state activity:
action-state activity
An action-state activity defines what FS-QUO does when transitioning from one state to the next. These actions can run until the next view-state or end of the flow. No user input is expected. In an action-state activity, you can change the services that the activity calls.
The following is an example of an action-state activity:
Developer Guide Core FS-QUO PUBLIC 151
For both view-state and action-state activities, you can update the next and previous transitions in the adjacent elements to link to the activity.
6.1.1 Overriding a Flow
This topic describes how to override the default flow.
Procedure
1. Using the Administrative Console, place a copy of the app-manifest.xml file in the META-INF directory under the custom class folder. 2. Within the app-manifest.xml file, add entries for the flows that you wish to override.
Note
Currently, it isn't possible to override just a single state in the flow. The entire flow must be copied and modified.
For example, in a customized app-manifest.xml file:
3. Place the flow-CustomNEWBUS.xml file in the custom class folder, under the path specified above.
6.1.2 Modifying a Flow
This topic provides a high-level overview of the steps required to modify flows.
You can modify an FS-QUO flow according to your organization's needs.
Developer Guide 152 PUBLIC Core FS-QUO To modify a flow, follow these steps:
1. Copy the flow definition XML file 2. Modify the copied flow definition XML file 3. Modify the app-manifest.xml file 4. Modify the Java classpath 5. Add the modified flow files to the custom class folder 6. Deploy the changes. 7. Verify the modified flow
For more information about deploying the changes, see the SAP Underwriting for Insurance Installation Guide.
6.1.2.1 Copying the Flow Definition XML File
This topic describes how to copy the flow definition file as part of modifying a flow.
Context
To modify a flow or create a new flow using an existing flow as a template, we recommend that you create a copy of the original definition and modify the copied version. Copying the file preserves the original flow definition as a backup.
Procedure
1. Create a new directory or project in your coding environment. Use the same directory structure as the project libraries from the FS-QUO Development Toolkit. 2. Locate the flow XML file that you want to modify or use as a template. 3. Create a copy of the file, and place it in your new directory or project. 4. Perform one of the following actions:
○ If you're modifying the same flow, use the same file name for the copied file. ○ If you're creating a new flow, specify a different file name for the copied file.
Results
A copy of the flow definition file is created. The original file is preserved as a backup.
Developer Guide Core FS-QUO PUBLIC 153 6.1.2.2 Modifying the Copied Flow Definition XML File
This topic describes how to copy the flow definition file as part of modifying a flow.
Context
Using the copied flow definition XML file, you can create a new flow, modify the activities within an existing flow, or delete an activity within a flow. For example, you might want to create a new flow for particular set of underwriters. As another example, you might want to add an activity after Select Producer in the default underwriter flow.
To modify the copied flow definition, perform the following steps:
Procedure
1. Open the copied flow definition. 2. If you want to add an activity within the flow, perform the following steps: a. Add a view-state or action-state element. b. Update the next and previous transitions in the adjacent elements to link to the new activity. 3. If you want to modify an existing activity within the flow, modify the view-state or action-state element. 4. If you want to delete an activity within the flow, update the next and previous transitions in the adjacent view-state elements to link to the appropriate activities. 5. Save the XML file.
Results
The flow definition is modified.
Related Information
Modifying a Screen or Section [page 75] Extending a Handler [page 110] Extending a Handler Bean [page 111] Extending a Business Service [page 167]
Developer Guide 154 PUBLIC Core FS-QUO 6.1.2.3 Modifying the app-manifest.xml File
This topic describes how to modify the app-manifest.xml file as part of modifying a flow.
Context
If your copied XML file is a new flow, define it in the app-manifest.xml file to complete the flow configuration.
Note
If your copied file replaces an existing flow, you don't have to modify the app-manifest.xml file. The XML entry is already defined in the file.
To modify the app-manifest.xml file, perform the following steps:
Procedure
1. Open the/ASLibrary/src/META-INF/app-manifest.xml file in an editor. 2. Add the following entry to the file:
Results
The app-manifest.xml file is modified.
Developer Guide Core FS-QUO PUBLIC 155 6.1.2.4 Modifying the Java Classpath
For FS-QUO to use your modified flow files or extended files (for example, extended business services and handlers), you must modify the Java classpath.
Context
This configuration loads any custom files before the FS-QUO JAR file.
Procedure
1. On the FS-QUO server, log in with administrator privileges. 2. Navigate to the following directory: ${CSI.home}/ppms/app/as/config 3. Open the app_static.config file and modify the ClassPath entry as follows:
ClassPath=${APP.home}/as/custom/class;${APP.home}/as/custom/lib;$ {APP.home}/as/custom/lib/ext;${APP.home}/as/class;${APP.home}/as/lib;$ {APP.home}/as/lib/ext
4. Save your changes.
Results
The Java classpath is modified.
6.1.2.5 Adding the Modified Flow Files to the Custom Class Folder
This topic describes how to add the modified files to the custom class folder as part of modifying a flow.
Prerequisites
The Java classpath must be modified to load your custom files before the FS-QUO JAR file.
Developer Guide 156 PUBLIC Core FS-QUO Context
To use your modified flow files, you must add the files to the Custom Class Folder in the FS-PRO Administrative Console. When the FS-QUO runtime runs, your custom flow is used instead of the default flow. The original flow XML files won't be used, but they'll be preserved as a backup.
Procedure
1. Log in to the FS-PRO Administrative Console.
2. Select System File System .
The PA - Custom Web Root (Write) tree is displayed. 3. In the navigation pane, select AuthoritySuite - Custom Class Folder (Write) from the Path dropdown list.
The AuthoritySuite - Custom Class Folder (Write) tree displays. 4. In the main pane, right-click and select New Folder.
The Explorer User Prompt dialog opens. 5. Specify a name for the folder. 6. Choose OK.
The new folder is created and displayed. 7. Repeat steps 4-5 to create folders that match your project and FS-QUO folder structure. 8. Upload your modified flow XML files as follows: a. In the navigation pane, go to the /ASlibrary/src/com/camilion/as/beans/runtime/flow/ directory. b. In the main pane, right-click and select Upload.
The Upload Files dialog opens. c. Browse for your modified XML files. d. Choose Upload.
The files are uploaded and displayed. 9. If you modified the app-manifest.xml file, upload it using the following steps: a. In the navigation pane, go to the /ASLibrary/src/META-INF/ directory. b. In the main pane, right-click and select Upload.
The Upload Files dialog opens. c. Browse for your modified app-manifest.xml file. d. Choose Upload.
The file is uploaded and displayed.
Developer Guide Core FS-QUO PUBLIC 157 Results
The modified flow files are uploaded to the Custom Class Folder.
6.1.2.6 Verifying the Modified Flow
After you deploy the changes that you made to the flow, verify the changes in FS-QUO.
Procedure
1. Check that you built and deployed the changes, and restarted the server. 2. Open your instance of FS-QUO. 3. Start a transaction that uses the flow that you modified or added. 4. Check that the screens and sections display according to your changes. 5. Enter data to verify the validation settings and the results.
Results
The modifed flow is verified.
6.1.3 Example: Adding an Activity to a Flow
This topic provides sample steps for adding an activity to a flow in FS-QUO.
FS-QUO provides a default flow for underwriters who want to create a new policy transaction. That flow contains seven activities (states) and is defined in the following file: /ASlibrary/src/com/camilion/as/ beans/runtime/flow/flow-NEWBUS.xml
Suppose that you want to add a new Add Applicant Notes activity after the Select Producer activity.
To add the activity to the flow, perform the following steps:
1. Create a new directory or project in your coding environment to store your modified files. 2. (Optional) Extend the handler, handler bean, and modify the screens and sections as needed for the new Add Application Notes activity. 3. Create a copy of the flow-NEWBUS.xml file, store it in the new directory or project, and use the same file name. 4. In the copied file, add a view-state XML element similar to the following:
Developer Guide 158 PUBLIC Core FS-QUO
5. In the Select Producer view-state element, modify the next transition element to link to the new activity. 6. Create a JAR file that contains your modified files. 7. Modify the Java classpath and specify the path to your JAR file followed by the path to the FS-QUO JAR file. 8. Deploy the changes. The activity is added to the flow. 9. Run FS-QUO and verify the underwriter new business flow includes the new activity.
Note
The file you modified uses the same file name (flow-NEWBUS.xml). Therefore, you don't have to modify the app-manifest.xml file.
6.1.4 Preserving Modified Flows After an Upgrade
When you upgrade FS-QUO, your data is migrated to a new environment. To preserve the modified flows, merge the flow definitions, and build, deploy, and restart the server.
6.2 Business Services
This topic provides an overview of the FS-QUO business services.
Business services are Java methods that FS-QUO uses to perform operations on policies. For example, when you create a new account using the FS-QUO user interface, FS-QUO invokes the create method in the Account Business Service. Similarly, to add a form, FS-QUO invokes the addForms method in the Form Business Service.
Developer Guide Core FS-QUO PUBLIC 159 Business services aren't specific to products.
You can extend the application by adding business service classes or methods, or by adding logic to a business service method.
6.2.1 Accessing the javadoc
This topic provides an overivew of the FS-QUO javadoc.
For details about the business service classes and methods, see the FS-QUO javadoc. This javadoc contains information about the FS-QUO API. For information about business services, see the following packages:
● com.camilion.as.asservice ● com.camilion.as.service.business.*
1. Contact your FS-QUO administrator to get the FS-QUO software download ZIP file. The ZIP file is available to customers in the SAP Software Download Center under PRODUCT AND QUOTATION MGMT. 2. From the software ZIP file, find the following file and unzip it: FS-QUO-javadoc-releasenumber.zip The files are extracted. 3. Open index.html in a browser.
The javadoc is displayed.
6.2.2 Business Service Components and Methods
Business services are defined in the asServices.xml file. Every service component implements a set of methods that are specific to that component. Each method has a return type of ServiceResponse. ServiceResponse is a generic type, which is typed by the service method signature to a specific type. The following types are allowed:
● Java types (List, String, Date) ● Primitives (int, boolean, long) ● AS Data Model objects (Transfer Object or specific model objects)
Note
Business Service methods can't call other service methods within the same bean. If you call a method on the same bean, AOP (aspect-oriented programming) aspects won't be applied. If you need to call a method on the same bean, refactor that method so that the part you need to call is in a private method. Both methods on the bean can call that private method.
Developer Guide 160 PUBLIC Core FS-QUO 6.2.2.1 Extending Spring Configurations
You can extend and override the beans from the default out of the box configuration.
Context
For example, you can override the searchService bean by a new custom service bean called newService.
Procedure
1. Using the Administrative Console, place a copy of context-manifest.xml in the META-INF directory under the custom class directory.
Note
This path and file name can't be changed or the code won't be able to find it.
2. Within the context-manifest.xml file, list the customized XML files containing your overridden beans.
The file should look like the following example:
3. Using the Administrative Console, upload the mockCompanyServices.xml file to the com/ camilion/as/beans/runtime directory in the custom class folder. 4. This path and file name can be changed, but this matches the way that AS defines these files. 5. Ensure that the customized file does not have the same file name as any of the existing files (for example, asServices.xml, asHandlers.xml). This prevents the system from finding the copy of the file. 6. In the customized file (mockCompanyServices.xml), define any new beans required or overwrite any beans to be changed.
Spring only allows one bean with the same id, and will use the last instance found, which will be the one under the custom class folder.
For example, in mockCompanyServices.xml:
You must copy the
6.2.2.2 Package Structure for Business Services
The Business Service class uses the following package structure: com.camilion.as.service.business.
6.2.2.3 Business Service Class Definition
Each Service component is implemented as an interface and an implementation class, which implements the interface.
Interface
All Business Service Component interfaces extend the BusinessService interface. The following is an example of a Business Service Component interface:
public interface AccountService extends BusinessService { public List
Developer Guide 162 PUBLIC Core FS-QUO Implementation Class
The implementation class for business service components extends the BusinessComponentBase class. The following is an example of an Implementation Class:
public class AccountServiceImpl extends BusinessComponentBase implements AccountService { public AccountServiceImpl() { } private AccountCoreService accountCore; public void setAccountCore (AccountCoreService coreService) { this.accountCore = coreService; } public ArrayList
public List
public AccountTransferObject retrieve(Long accoutPkId) { return ...; } public void update(AccountTransferObject ato) { return ...; } }
6.2.2.4 Service Component Class Diagram
The following diagram shows the basic structure of the Business Service Components. All Business Service Components extend the BusinessServiceComponent base class. This base class provides wiring for the AppConfig bean and the ModelService.
Developer Guide Core FS-QUO PUBLIC 163 6.2.2.5 The asServices.xml file
The asServices.xml file defines all the FS-QUO service java classes available in the Spring MVC architecture. For example, the accountService bean is defined as an available service in the asServices.xml file. If the UI needs to invoke a method within an Account Service, you can specify the accountService bean as a property in the corresponding handler entry in the asHandlers.xml file. This specification injects the accountService bean into the handler bean. By injecting the accountService bean, the handler bean can use the business service to handle the logic triggered by the UI event.
The asServices.xml file is located in the following directory: /ASlibrary/src/com/camilion/as/beans/ runtime/asServices.xml
6.2.3 Understanding Business Validation
This topic explains how business validation works in FS-QUO.
Business validation is handled by an aspect applied to the bean definition for each service component. If business validation errors occur, each service method returns a ServiceResponse object populated with a list of validation errors. In this situation, the result property of the ServiceResponse is null and errors are added to the ServiceResponse.
Developer Guide 164 PUBLIC Core FS-QUO The following diagram shows the business validation class:
How business validation works
The aspect looks for a list of validation beans in the AppConfig and runs the corresponding method in each configured validation bean. For example, suppose that the service contains a method with the following signature:
public ServiceResponse
The BusinessValidator aspect invokes the following method on each of the configured validation beans:
protected ServiceResponse
The BusinessServiceValidator class runs business questions or a set of business questions associated with the business service method. These questions are defined in a standalone component in the Product Configurator and associated with business service methods in the Underwriting Application Configuration object.
If a service method is associated with multiple questions, BusinessServiceValidator runs logical AND operations on the result of these questions. If one of the questions returns “false”, the business service doesn't run.
If the isSuccess method on the service response returns true, the BusinessValidator aspect calls the actual service method. Otherwise, the validator returns the service response that contains all validation errors from all the configured validation beans.
Developer Guide Core FS-QUO PUBLIC 165 6.2.3.1 Applying the Business Validator
This topic describes how to activate the Business Validator in FS-QUO.
The Business Validator is applied using the BeanNameAutoProxyCreator bean from Spring Web Flow.
To apply the Business Validator, add the following configuration to the asServices.xml file:
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyProxyCreator" >
6.2.4 Understanding the Core Service Components
Core services are the underlying layer for business services.
In a FS-QUO upgrade, the signatures of the core services might change. Therefore, don't create a service class that extends a core service. Instead, you can extend a business service. FS-QUO preserves the signatures of the business services.
6.2.4.1 Package Structure for Core Services
The Core Service class uses the following package structure: com.camilion.as.service.core.
6.2.4.2 Core Services Class Definition
Each Service component is implemented as an interface and an implementation class, which implements the interface.
Developer Guide 166 PUBLIC Core FS-QUO Interface
All Core Service component interfaces extend the CoreService interface. The following is an example of a Core Service component interface:
public interface AccountCoreService extends CoreService { public AccountTransferObject retrieve(Long accoutPkId); public void update(AccountTransferObject ato); }
Implementation class
The implementation class for core service components extends the ServiceComponentBase class. The following is an example of an Implementation Class:
public class AccountCoreServiceImpl extends ServiceComponentBase implements AccountCoreService { public AccountServiceImpl() { } public AccountTransferObject retrieve(Long accoutPkId) { return ...; } public void update(AccountTransferObject ato) { } }
6.2.5 Extending a Business Service
If you want to add or modify FS-QUO functionality to work specifically with your environment, you can extend existing business services.
Context
For example, the Producer Service includes a setDefaultCommission() method. This method sets the commission percentage in the Policy Transaction given a commission amount. Suppose that your organization has its own algorithm of determining the default commissions, and you want to set the default percentage elsewhere in the policy model. You can extend the Producer Service and override the setDefaultCommission() method to perform your own logic.
Developer Guide Core FS-QUO PUBLIC 167 Procedure
1. Create a new class that extends the parent service class. 2. Override the methods as needed. 3. Optionally, you can add new methods to the extended interface and implementation.
Note
Call the new methods from the extended classes (for example, extended UI handlers).
4. Add the following bean XML to the asServices.xml file:
5. Optionally, you can ddd validation extensions using AppConfig. The validation extensions are added. These new extensions don't impact existing code. 6. Build, deploy, and restart the server.
Results
The service bean configuration in asServices.xml uses the new class. The additional methods don't impact how other services use this service.
6.2.6 Preserving Extended Services After Upgrading
When you upgrade FS-QUO, your data is migrated to a new environment. To preserve the changes made to your extended business service beans, merge the asServices.xml file, and build, deploy, and restart the server.
6.3 Underwriting Application Configuration
The FS-QUO application configuration is stored in the Underwriting Application Configuration standalone object in FS-PRO Product Configurator. You can modify the configuration using objects inherited from the Underwriting Application Configuration standalone object.
The application configuration is accessed through the Underwriting Application Configuration service bean. Any Business Service that requires configuration elements use the Underwriting
Developer Guide 168 PUBLIC Core FS-QUO Application Configuration bean to retrieve its configuration from the Underwriting Application Configuration product.
The following folders in the Underwriting Application Configuration object are associated with specific frameworks and are described in separate topics:
● Role Framework folder ● Screen Framework folder ● Search Framework folder ● Validation folder
The Underwriting Application Configuration object contains all the information that is used to configure theFS- QUO application. For example, these settings determine how search results are displayed and the number of days before a quote expires.
The following diagram represents the logical organization of the Underwriting Application Configuration object:
Related Information
Folders in the Underwriting Application Configuration Object [page 173]
6.3.1 AppConfig Service Bean
The following diagram shows the AppConfig Service bean definition. Configure every Business Service to inject the AppConfig bean.
Developer Guide Core FS-QUO PUBLIC 169 6.3.2 Locating the Standalone Underwriting Application Configuration
The Underwriting Application Configuration standalone object is located in the System Repository Underwriting Application Template Library Configuration Objects Underwriting Application Configuration folder in the Product Configurator.
Caution
Don't modify the Underwriting Application Configuration standalone object. The standalone object is replaced when you upgrade your environment. To define application changes that are specific to your organization, modify an extended (inherited) Underwriting Application Configuration object.
Developer Guide 170 PUBLIC Core FS-QUO 6.3.3 Extending the Underwriting Application Configuration Standalone Object
You can define application changes that are specific to your organization.
Context
We recommend that you do not modify the Underwriting Application Configuration standalone object because it is replaced during FS-QUO upgrades. Instead, define application changes in an object extended (inherited from) the Underwriting Application Configuration standalone object.
Note
During implementation, an Extended Underwriting Application Configuration object may have already been created in the Product Repository Company Library Configuration Objects folder. If that object exists, you can skip this procedure. You can modify the objects in the Extended Underwriting Application Configuration object as needed.
Procedure
1. Log in to Product Configurator. 2. Expand your
3. Choose the icon in the Object List tab,. The New Object dialog appears. 4. Complete the fields as follows: ○ Name—Enter the name for the new object (for example, Extended Underwriting Application Configuration) ○ Component Type—Choose the Application Configuration option. ○ Based On—Select Underwriting Application Configuration from System Repository Underwriting Application Template Library Configuration Objects Underwriting Application Configuration . 5. Choose OK. The new object is created and displayed in the Object List tab. 6. Register the new extended Underwriting Application Configuration object as follows: a. Log in to the FS-PRO Administrative Console. b. Choose System Configuration Manager . The Configuration folder tree is displayed. c. Choose Configuration Application AuthoritySuite Env Application Environment . The Application Environment properties are displayed.
Developer Guide Core FS-QUO PUBLIC 171 d. Go to the AppConfig_Product_Name row and specify the name of the new extended Underwriting Application Configuration object in the Override field. e. Go to the AppConfig_Product_Version row and specify the version number of the new extended Underwriting Application Configuration object in the Override field,. f. Save your changes. The extended Underwriting Application Configuration is registered in the Administrative Console of the FS-QUO Runtime environment.
Results
The extended Underwriting Application Configuration object is created.
Note
The FS-QUO Runtime environment can only point to one extended Underwriting Application Configuration object. You might have multiple extended Underwriting Application Configuration objects for different libraries in the Product Configurator. However, the FS-QUO Runtime uses only the one extended object specified in the Administrative Console for its application configuration.
6.3.4 Modifying Application Configuration Settings
You can modify the FS-QUO application settings according to your organization's needs.
Procedure
1. Open your extended Underwriting Application Configuration object.
Typically, the object is named Extended Underwriting Application Configuration and is located in the
XML representation of the data for a specific policy transaction. The model is generated by FS-QUO and contains information from the FS-QUO Data Model and the Product Data Model. The Policy Model lets you access data without querying the FS-QUO database tables and views. Business services can get policy information from the Policy Model. 2. Publish the extended Underwriting Application Configuration object.
Developer Guide 172 PUBLIC Core FS-QUO 6.3.5 Folders in the Underwriting Application Configuration Object
The Underwriting Application Configuration object consists of the following folders:
Config API Contains an object that calls business services, runs rules, and specifies the return type for the FS-QUO application.
Role Framework Contains objects that define roles and the permissions associated with those roles.
Screen Framework Contains objects that configure the permissions on controls, mandatory fields, and business questions. The objects in this folder use parts of the permissions and validation frameworks.
Configuration Contains an object that specifies a Service method and function to populate reusable dropdown fields (such as the State field).
Business Behavior Contains objects that specify business behavior within the application (for example, the number of days before a quote expires or the values that appear in the Task Type dropdown field).
Search Framework Contains objects that configure how searches are performed and how the results are displayed.
Validation Contains objects that configure validation for screen controls and business services. The objects in this folder use the validation framework.
Reference Contains an object that defines the insurance products that can be selected in the Select Product activity.
Error Messages Contains a list of error messages that are returned when the type of data entered into a field isn't consistent with the type of data the Policy Model column expects.
6.3.5.1 Application Configuration API Folder
The Underwriting Application Configuration folder contains the Underwriting Application Configuration API object, which contains the services and rules used by FS-QUO.
6.3.5.1.1 Application Configuration API object
The Underwriting Application Configuration API object contains rules that call methods to get information for the FS-QUO application.
The Underwriting Application Configuration API object has the following attributes: SERVICE_NAME Specifies the name of the service that's called.
Developer Guide Core FS-QUO PUBLIC 173 SERVICE_RULE Defines the rule that contains the XPath to get the data. Return Type Specifies the data return type. The following options are available:
● Boolean ● DataTable ● String
Inputs Specifies information to pass to the Underwriting Application Configuration API method. This information comes from FS-QUO.
6.3.5.2 Configuration Folder
The Configuration folder contains the Lookup Service Configuration component. This component is used to access external lookup methods.
6.3.5.2.1 Lookup Service Configuration object
The Lookup Service Configuration object is used to access external methods to populate controls (usually dropdown lists) in the UI.
The Lookup Service Configuration object has the following attributes: lookupName Specifies the look up name in the code. lookupServiceMethodName Specifies the Business Service method. beanId Specifies the name of the Service component.
Enter the value configured in the beanId attribute located in Spring Bean Definitions Spring Bean Configurations Validation .
6.3.5.3 Business Behavior Folder
The Business Behavior folder contains objects that configure business behavior within the FS-QUO application.
Developer Guide 174 PUBLIC Core FS-QUO 6.3.5.3.1 Task Management Folder
The Task Management folder contains objects that configure task behavior.
6.3.5.3.1.1 Task Management Config Object
The Task Management Config object configures the behavior of tasks.
The Task Management Config object has the following attributes: propertyValue Specifies the value that FS-QUO uses to change the business behavior. propertyName Specifies the property name called by the code.
6.3.5.3.1.2 Task Type List Object
The Task Type List object contains the content that's displayed in the Task Type dropdown list in the Manage Task and Add Task windows.
The Task Type List object has the following attributes: taskName Specifies the value that FS-QUO uses to change the business behavior. This value is displayed in the Task Type dropdown list. taskDesc This attribute isn't used.
6.3.5.3.2 Transaction Management Folder
The Transaction Management folder contains objects that configure policy transaction information.
6.3.5.3.2.1 Business Behavior Object
The Business Behavior object specifies configurable transaction business behaviors within the FS-QUO application.
The Business Behavior object has the following attributes: propertyName
Developer Guide Core FS-QUO PUBLIC 175 Specifies the property name called by the code. propertyValue Specifies the value FS-QUO uses to change the business behavior.
6.3.5.3.2.2 Quote Not Taken Reason List Object
The Quote Not Take Reason List object contains the content that's available in the Reason field in the Quote Not Taken window.
The Quote Not Take Reason List object has the following attributes: propertyName Specifies the property name that FS-QUO uses to process the entry. propertyValue Defines the description that's displayed in the dropdown list.
6.3.5.3.3 Clearance Folder
The Clearance folder contains an object that configures product clearance behavior.
6.3.5.3.3.1 Business Behavior Object
The Business Behavior object specifies configurable clearance business behaviors within the FS-QUO application.
The Business Behavior object has the following attributes: propertyName Specifies the property name called by the code. propertyValue Specifies the value that FS-QUO uses to change the business behavior.
6.3.5.3.4 Business Questions Set Component
The Business Questions Set component assembled in the Business Behavior folder define the verification checks that the FS-QUO runtime can use.
These sets are groups of related business questions. For example, when a producer is selected during a transaction, FS-QUO runs a business question to determine whether the producer is active.
Developer Guide 176 PUBLIC Core FS-QUO The business questions in the Business Behavior folder aren't specific to screen controls or business services.
Note
The Business Questions Set component is reused (assembled) in multiple frameworks.
Related Information
Business Questions Set Component [page 116]
6.3.5.3.5 Business Questions Component
The Business Questions component contains all the business questions that the FS-QUO Runtime can use.
For business behavior, you can't select individual questions from the Business Questions component. Instead, anchor the questions to the parent Business Questions Set component and select the applicable sets.
Note
The Business Questions Set component is reused (assembled) in multiple frameworks.
6.3.5.3.6 Configuring Business Behavior Questions
FS-QUO runs default sets of business questions to verify requirements in the Runtime environment. You can modify or add questions in the Business Behavior folder of the Underwriting Application Configuration object.
Procedure
1. Open your extended Underwriting Application Configuration object. Typically, the object is named Extended Underwriting Application Configuration and is located in the Company Library Configuration Objects folder. 2. Expand the Business Behavior folder, and choose the Business Questions Set tab. 3. Select the Values tab. 4. Select All from the Views dropdown list. All the values are displayed.
Developer Guide Core FS-QUO PUBLIC 177 5. Perform one or both of the following actions:
○ To use existing business question sets, you need to select the checkbox next to the sets that you want to apply to the screen control. ○ To add a new business question set, you need to add a new row, complete the fields, and select the checkbox. 6. Deselect the checkbox next to the business question sets that don't apply. 7. Save your changes. 8. If you created a new business question set, modify the Underwriting Application Configuration API object as follows: a. Open the Underwriting Application Configuration API component in the Config API folder. b. Select the Values tab. c. In the FS-QUO code that calls the name of the product service API (defined in the Underwriting Application Configuration API component), pass the name of your new business question set as an argument.
Example
Adding ClearanceRules business questions
When a producer writes a policy, FS-QUO checks whether that producer is active at the time the policy becomes effective. This validation is defined in the clearanceRules business questions set in the Business Behavior folder of the Underwriting Application Configuration object.
Suppose that you want to create additional validation checks. In the extended Underwriting Application Configuration object, you can add new questions to the Business Questions object and anchor (select) them to the ClearanceRules business questions set.
Related Information
Business Questions Component [page 116] Business Questions Set Component [page 116]
6.3.5.4 Reference Folder
The Reference folder contains the Available Products and Lookup Forms Type component.
Developer Guide 178 PUBLIC Core FS-QUO 6.3.5.4.1 Available Products Object
The Available Products object contains the products that are available in the Select Product activity.
The Available Products object has the following attributes: Product Id Specifies the value that FS-QUO uses to identify the product. Product Name Specifies the product name that appears in the Select Product activity. Version No Specifies the product version number. Display Order Specifies the order that the products are displayed in.
6.3.5.4.2 Forms Object
The TransactionType column in the Forms object specifies the types of forms to display on the screen for forms attachment.
Related Information
Configuring Tax Rules [page 350]
6.3.5.5 Error Messages Folder
The Error Messages folder contains the Error Messages component, which contains error messages that are displayed when the data type isn't what the Policy Model expects. The data type validation occurs when a screen is saved by clicking the Save button or clicking the next activity button.
6.3.5.5.1 Error Messages Object
The Error Messages object contains the data types that the Policy Model checks for and the messages that are displayed when the data type is incorrect.
The Error Messages object has the following attributes: messageKey
Developer Guide Core FS-QUO PUBLIC 179 Specifies the data type that's being validated. errorMessage Defines the error message that's displayed when a data type is wrong.
6.3.5.6 Example: Modifying the Allowable Lapse Period
The number of days is defined using the maximumAllowableLapsePeriod configuration setting in the Underwriting Application Configuration object. You can override the default value of 10 days if needed.
Context
If you cancel a policy in FS-QUO, you can reinstate it within 10 days by default. For example, if you cancel a policy on October 1st, you can reinstate it by October 10th.
Procedure
1. Log in to Product Configurator. 2. Open your extended Underwriting Application Configuration object. Typically, the object is named Extended Underwriting Application Configuration and is located in the
3. Navigate to Business Behavior Transaction Management Business Behavior . The Business Behavior component opens. 4. Select the Values tab. 5. Override the maximumAllowableLapsePeriod row, and enter a new value in the propertyValue attribute. 6. Save and commit the change. The maximumAllowableLapsePeriod configuration setting is modified. 7. Optionally, modify the associated screen control validation and settings.
Related Information
Understanding the Screen Framework Folder [page 114]
Developer Guide 180 PUBLIC Core FS-QUO 6.3.5.7 Debug Console Folder
The Debug Console folder contains the configuration objects for the Debug Console.
6.3.5.7.1 Enabling the Debug Console
The Debug Console is disabled by default; you can enable it.
Procedure
1. Go to the Administrative Console at https://
3. Choose System Edit Configuration Settings from the menu bar.
4. Navigate to Application ProductAuthority Env Application Environment 5. Find the row with the name SuppressErrorInAS and set the override value to No. 6. Save your changes.
7. Navigate to Application AuthoritySuite Env Application Environment 8. Find the row with the name SUPPRESS_ERROR_DETAILS and set the override value to No. 9. Save your changes. 10. Reload the configuration settings as follows:
a. In the Administrative Console menu bar, select System Reload Configuration Settings . b. Select Reload All Config.
6.3.5.7.2 Using the Debug Console
FS-IPW Debug Console
The FS-IPW Debug Console is available in all areas of all apps.
The Debug Console is accessed by pressing Ctrl + Shift + Alt + D , which opens the Debug Console in a new browser tab.
Caution
The Debug Console is only available and supported in desktop mode.
Developer Guide Core FS-QUO PUBLIC 181 Sencha UI Debug Console
The Sencha UI Debug Console is available in all areas of the application.
The Debug Console is accessed by pressing Ctrl + Alt + D , which opens the Debug Console in a new browser tab within the FS-QUO Runtime.
6.3.5.7.3 Debug Categories Object
The Debug Categories object defines the sections that display in the Debug Console navigation bar.
The Debug Console displays the following sections:
● Session ● State ● Data ● System ● Trace ● Util
The Debug Categories object has the following attributes: PCD Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automatically generates this value. name Defines the name that's displayed in the section title. description This attribute isn't used.
6.3.5.7.4 Debug Sections Object
The Debug Sections object defines the options that display in the sections in the Debug Console navigation bar.
The Debug Console displays the following options:
● Tracing ● UserInfo
The Debug Sections object has the following attributes: PCD Specifies the unique identifier for the value row in the component and across the system.
Developer Guide 182 PUBLIC Core FS-QUO You can leave this attribute blank, and the system automatically generates this value. name Defines the name that's displayed in the section. description Defines the instruction text that displays in the title bar when you hover over the section. url Specifies the URL of the page that's called to render the debug page.
6.3.5.7.5 Modifying a Debug Console Setting
You can modify the Debug Console settings according to your organization's needs.
Context
For example, you can change the sections that display in the Debug Console navigation bar by modifying the Debug Categories object.
Procedure
1. Open your Extended Underwriting Application Configuration object. Typically, the object is named Extended Underwriting Application Configuration and is located in the
The Values tab opens. 5. Right-click the row heading (the left-most cell) of the row that contains the configuration setting that you want to modify, and choose Override.
The Override dialog opens. 6. Select Override association and value.
The row is now local and can be modified. 7. Modify the attributes as needed and save your changes. 8. Right-click the row heading, choose Locking and then choose Commit.
Developer Guide Core FS-QUO PUBLIC 183 Results
The configuration setting is modified.
6.4 Using the Scheduler
The FS-QUO Scheduler is a Java application based on the Quartz framework.
It can be configured to run at any desired frequency. The Scheduler works by sending a SOAP request stored in the config folder and writing the resulting response in the responses folder.
6.4.1 Installing the Scheduler
Procedure
1. Copy the scheduler folder from /csi/as/main/trunk/QuartzScheduler to any location on a machine that'll run the scheduler. 2. Use Ant to run QuartzScheduler/build.xml. 3. Use the completed files from \QuartzScheduler\dist\zipped\QuartzScheduler_0.0.0.zip.
Results
The extracted files are in the following directory structure:
Developer Guide 184 PUBLIC Core FS-QUO 6.4.2 Configuring the Scheduler
The Scheduler configuration files are found in the config folder.
6.4.2.1 The schedule.properties File
The schedule.properties file contains the following parameters: RunDailyAt=16:35:10 CronExpression=0/10 * * * * ? Scheduler can be configured with either a cron expression or by RunDailyAt.
If RunDailyAt is provided, it takes precedence over the cron expression.
To use a cron expression, leave RunDailyAt= or comment it out. Cron expressions allow much greater flexibility than a timestamp. A cron expression can be configured to run only on weekdays or weekends, to run multiple times during the day, or to run on a certain day of the month. WebServiceURL Points to the FS-QUO installation TestMode Can be set to true and policies won't be renewed. Permits the testing of a connection to the server, or view a response with policy information, and verify the list of policies that are eligible for renewal. PolicyId Can also be used for test purposes. Instead of renewing all eligible policies, only that single policy will be renewed. RenewalUser User performing the renewal.
6.4.2.2 The request.xml File
The request.xml file contains a SOAP request that's send to FS-QUO integration services. By default, the file contains a request to the policy renewal service containing two optional parameters (TestMode and PolicyId). Values for those parameters are set in the schedule.properties file.
Developer Guide Core FS-QUO PUBLIC 185
The two optional parameters are used as follows:
● If TestMode is set to true the policies won't be renewed, giving you a chance to test the server connection, see the response with policy information, and verify the list of policies that are eligible for renewal. ● For test purposes you can also use the PolicyNumber field. Instead of renewing all eligible policies, only that single policy will be renewed.
6.4.3 Creating or Updating the Archive
Procedure
1. Right-click on build.xml.
2. Select Run As Ant Build... . 3. Select Package target and choose Run.
6.4.4 Running the Scheduler
Context
The scheduler can run indefinitely executing the renewal job at scheduled intervals.
Procedure
1. Ensure the machine has internet access. The scheduler opens a connection on the default port for the protocol. For example, the default port for http is 80. 2. Double-click, or from the command line execute the scheduler.bat file.
This is a convenient shortcut to run the scheduler packaged in the scheduler.jar file. The scheduler window opens.
Developer Guide 186 PUBLIC Core FS-QUO 6.4.5 Shutting Down the Scheduler
Procedure
1. Press Ctrl + C when scheduler window is open.
The shutdown process begins.
INFO [Thread-2] (QuartzScheduler.java:653) - Scheduler MyScheduler_ $_NON_CLUSTERED shutting down. INFO [Thread-2] (QuartzScheduler.java:572) - Scheduler MyScheduler_ $_NON_CLUSTERED paused. INFO [Thread-2] (QuartzScheduler.java:725) - Scheduler MyScheduler_ $_NON_CLUSTERED shutdown complete. Terminate batch job (Y/N)?
2. Press Y to close the window.
Results
The scheduler is shut down.
6.4.6 Interpreting the Scheduler Results
Basic information about scheduler execution is contained in the file log/log4jfile.log.
Policy renewal results are contained in the output folder in a file with a time-stamped file name matching the scheduler runtime.
Sample output:
Developer Guide Core FS-QUO PUBLIC 187 6.4.7 Renewal Information
A policy is a candidate for renewal if both of the following conditions are met (Eligible for Renewal search criteria):
● Policy product code isn't empty ● Days left to Expiry <= Renewal Lead Time
Alternately, you can use the PolicyId parameter in the schedule.properties file to renew a single policy, as discussed above.
6.5 SAP Business Partner Integration
This section contains information specific for the SAP Solution and covers the information on accessing FS- QUO and FS-PRO through NetWeaver Business Client together with configuration and security settings.
Reference should also be made to the SAP Underwriting for Insurance Installation Guide and the SAP Product Lifecycle Managment for Insurance Installation Guide.
In addition to the material in this section, you should also refer to the NetWeaver Java Security Guide to ensure NetWeaver Java is configured securely.
Currently, Role Painter is the module in the Administrative Console used to manage authentication and authorization, define organizational hierarchies, define roles, and assign employees to the appropriate organization level and role. For additional information, refer to the Role Painter section in the Administration Guide.
Role Painter can be configured for Single Sign-On (SSO). Refer to Adding Single Sign-On Support section in the Administration Guide. With the SAP implementation an Identity Management System (IMS) will be used for user authentication.
Defining producer, producer contact, and account information will be done in an external repository (business partner).
6.5.1 NetWeaver Business Client
Through a NetWeaver Business Client, users can access FS-QUO and FS-PRO. When logging in to the NetWeaver Business Client the Identity Management System (IMS) will manage authorization, authentication and session management.
Note
Both create and update functions exist for producer, producer contact, account or product-related party in FS-QUO.
Developer Guide 188 PUBLIC Core FS-QUO 6.5.2 Business Partner Configuration
SAP uses SAP JCo to connect to a configured server, and call an SAP function module to acquire business partner data. How and where to connect can be configured by accessing the Administrative Console and navigating to: System Config Manager Configuration System Env Business Partner Setting .
By default, there are 5 parameters that must be set as a minimum; these parameters are directly passed to a SAP JCo client in order to connect to a SAP server and call a function module. The names of each parameter must match the name of a standard SAP JCo client parameter:
● BusinessPartnerEnabled (set override to Yes) ● jco.client.client ● jco.client.sysnr ● jco.client.ashost ● jco.client.user ● jco.client.passwd
For details, see the official JCo documentation or navigate to: http://help.sap.com/javadocs/NW04S/ SPS09/jc/com/sap/mw/jco/JCO.html#createClient(java.util.Properties)
Additional parameters may be added as necessary depending on the required SAP JCo configuration.
6.5.3 Field Mapping Illustrations
6.5.3.1 Field Mapping 'Person' record with an FS-BP role of 'Policyholder'
The following table illustrates the field mappings between a 'Person' record (in Business Partner) with an FS-BP role of 'Policyholder' to an Account record (in FS-QUO) with Legal Entity as 'Individual'.
'Person' record with an FS-BP role as 'Policyholder' Account with Legal Entity as 'Individual'
Business Partner # Account # *
First Name First Name *
Last Name Last Name *
Street Address1 *
Postal Code Zip *
City City *
Country Country *
Developer Guide Core FS-QUO PUBLIC 189 'Person' record with an FS-BP role as 'Policyholder' Account with Legal Entity as 'Individual'
Region State *
Telephone Phone #
E-Mail EMail Address
Note
All fields with an asterisk are mandatory in FS-QUO. The records won't appear for retrieval if any of the mandatory fields in FS-QUO aren't provided.
6.5.3.2 Field Mappings 'Organization' record with an FS-BP role of 'Policyholder' with Legal Entity as 'Corporation'
The following table illustrates the field mappings between an 'Organization' record (in Business Partner) with an FS-BP role of 'Policyholder' to an Account record (in FS-QUO) with Legal Entity as 'Corporation':
'Organization' record with an FS-BP role as 'Policyholder' Account with Legal Entity as 'Corporation'
Business Partner # Account # *
Name 1 Account Name *
Street Address1 *
Postal Code Zip *
City City *
Country Country *
Region State *
Telephone Phone #
E-Mail EMail Address
Note
All fields with an asterisk are mandatory in FS-QUO. The records won't appear for retrieval if any of the mandatory fields in FS-QUO aren't provided.
Developer Guide 190 PUBLIC Core FS-QUO 6.5.3.3 Field Mappings 'Group' record with an FS-BP role of 'Policyholder' with Legal Entity as 'Other'
The following table illustrates the field mappings between a 'Group' record (in Business Partner) with an FS-BP role of 'Policyholder' to an Account record (in FS-QUO) with Legal Entity as 'Other'.
'Organization' record with an FS-BP role as 'Policyholder' Account with Legal Entity as 'Other'
Business Partner # Account # *
Name 1 Account Name *
Street Address1 *
Postal Code Zip *
City City *
Country Country *
Region State *
Telephone Phone #
E-Mail EMail Address
Note
All fields with an asterisk are mandatory in FS-QUO. The records won't appear for retrieval if any of the mandatory fields in FS-QUO aren't provided.
6.5.3.4 Field Mappings 'Organization' record with an FS-BP role of 'Broker'
The following illustrates the field mappings between an 'Organization' record (in Business Partner) with an FS- BP role of 'Broker' to a Producer record (in FS-QUO)
'Organization' record with an FS-BP role as 'Broker' Producer
Business Partner # Code *
Name Producer *
Street Physical Address -> Address1 *
Developer Guide Core FS-QUO PUBLIC 191 'Organization' record with an FS-BP role as 'Broker' Producer
Postal Code Physical Address -> Zip *
City Physical Address -> City *
Country Physical Address -> Country *
Region Physical Address -> State *
Telephone Producer Contact -> Phone #
Fax Producer Contact -> Fax #
E-Mail Producer Contact -> EMail Address
Note
All fields with an asterisk are mandatory in FS-QUO. The records won't appear for retrieval if any of the mandatory fields in FS-QUO aren't provided.
6.5.4 Permissions
By default, all users don't have the following permissions (New indicates that the permission is newly added to FS-QUO):
● editAccount ● addAccount (New) - default behavior without the permission as follows: ● ○ The Account Information section in the Enter General Information activity is read-only. ○ In the Enter General Information activity the More Actions Create New Account menu option is disabled. ○ In the Write New Business - [Review Quote] dialog, the Edit Account button in the Submission cannot be bound with an anonymous account warning is disabled. ○ The Add button in the Search Account screen is disabled. ● addProducer (New) - default behavior without the permission as follows: ○ The Add button in the Search Producer screen is disabled. ● editProducer (New) - default behavior without the permission as follows: ○ The Save button in the Edit Producer screen is disabled. ○ The Producer Details section in Edit Producer screen is read-only. ○ The Physical Address section in Edit Producer screen is read-only. ● addProducerContact (New) - default behavior without the permission as follows: ○ The Add button in the Add Producer Contact screen is disabled.
When the Business Partner setting in the Administrative Console is enabled, the following activities area available:
● The Add button is enabled in the Search Account screen.
Developer Guide 192 PUBLIC Core FS-QUO ● The Save button is enabled in the Edit Account screen. ● When adding a new account in the streamlined workflow in the Enter General Information activity, the More Actions Create New Account menu option is enabled. ● The Edit Account button enabled in the Write New Business - Binding with an Anonymous Account warning. ● When adding a new account in the expanded workflow in the Select Account activity, the More Actions Create New Account menu option is enabled. ● The Edit Account button enabled in Write New Business - Review Quote warning. ● The Add button in Search Producer screen is enabled. ● The Save button is enabled in the Edit Producer screen when modifying an existing producer.
For more information on managing policies, accounts, producers, and writing new business, see the SAP Underwriting for Insurance Functional Guide.
6.5.5 Single Sign-On
FS-QUO / FS-PRO supports authenticating users through a third-party Single Sign-On (SSO) system. For a complete discussion of SSO, see the Administration Guide.
Direct access to FS-QUO
When directly accessing FS-QUO (this only applies to FS-QUO) through SSO, you must use the following URL format:
SSO settings in the Administrative Console
The SSO settings can be found by accessing the Administrative Console and navigating to: System Config Manager Configuration System Env SSO Setting
UMEUserPrefix A user's unique ID (com.sap.security.api.IUser.getUniqueID()) will be checked to see if it matches the prefix configured here. The default value is set to match what would come from a locally stored UME database.
UMERolePrefix A user's unique ID (com.sap.security.api.Irole.getUniqueID()) will be checked to see if it matches the prefix configured here. The default value is set to match what would come from a locally stored UME database.
UMERoleNamePrefix The internal roles used are mapped from the user database accessed through SAP UME.
Developer Guide Core FS-QUO PUBLIC 193 The current user is queried for their list of role names and the roles whose names (com.sap.security.api.Irole.getUniqueName()) begin with the value of this field are mapped directly to internal role names. As a base, users that wish to access Designer or FS-PRO may be configured to have the following role names (prefix not included). For additional details, see the Role Painter section in the Administration Guide for further explanation of these roles:
● ADMINISTRATOR ● AE_ADMIN_ROLE ● CUSTOM_VIEW_CREATOR_ROLE ● SE_ADMIN_ROLE ● SE_AUTHOR_ROLE ● SE_FINALIZE_PROD ● TemplateAuthor
UMEAuthProfilePrefix In FS-QUO every user has an 'authorization profile', a unique name that identifies which profile to associate the user with when acquiring their permissions. See the Role Painter section in the Administration Guide for more information. Only one authorization profile is mapped to the user from the UME database - it is the first role associated with the current user whose unique name (com.sap.security.api.Irole.getUniqueName()) matches the value of this field. The following list contains examples of built-in authorization profiles (prefix not included):
● Auditor ● Producer ● Underwriter ● UW Manager
Developer Guide 194 PUBLIC Core FS-QUO 7 Risk-Based Architecture
7.1 Working with Roles and the Permissions Framework
In FS-QUO, users are associated with roles. A role identifies a user's basic relation to the system.
Roles are associated with permissions. Permissions define what a role can access and do in the system. For example, a given permission controls access to a given screen control (a button, a menu, a field, and so on) or allows an action, such as selecting a producer. FS-QUO has predefined permissions, but you can add more.
All roles and permissions are defined in the role and permissions frameworks. The frameworks consist of components that you can modify according to your organization's needs.
7.1.1 Reusing the Permission Component
The same Permission component is assembled in the following locations in the Extended Underwriting Application Configuration object:
Note
The same permission types must be available in both the Role Framework folder and Screen Framework folder. Therefore, if you add or modify a permission type in the one folder, you must make the same change in the other folder.
Related Information
Permission Component in the Screen Framework Folder [page 203]
Developer Guide Risk-Based Architecture PUBLIC 195 Permission Component in the Role Framework [page 197]
7.1.2 The Role Framework
The Role framework defines all the role types and associated permission types in FS-QUO. You can modify these roles and permissions.
The Role framework consists of the following components:
7.1.2.1 Locating the Role Framework
The role framework is located in the Role Framework folder of the Underwriting Application Configuration object in the Product Configurator.
XML representation of the data for a specific policy transaction. The model is generated by FS-QUO and contains information from the FS-QUO Data Model and the Product Data Model. The Policy Model lets you access data without querying the FS-QUO database tables and views. Business services can get policy information from the Policy Model.
7.1.2.2 Role Component
The Role component contains all the role types in FS-QUO. You can assign roles to users.
Roles and their associated permissions indicate what users can do and access in FS-QUO.
The following roles are provided with the FS-QUO installation:
● Producer ● Senior Underwriter ● Underwriter ● UW Manager
The Role component contains the following attributes: PCD Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automatically generates this value. roleName
Developer Guide 196 PUBLIC Risk-Based Architecture Defines the name of the role type. roleDescription Describes the role type.
7.1.2.3 Permission Component in the Role Framework
The Permission component contains all the permission types in FS-QUO. The permissions are assigned (anchored) to the role types that they apply to.
Note
The same Permission component is also used in the Screen Framework folder. The same permission types must be available in both the Role Framework folder and Screen Framework folder. Therefore, if you add or modify a permission type in the one folder, you must make the same change in the other folder.
When assembled in the Role Framework folder, the attributes in the Permission component are used as follows: PCD Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automatically generates this value. permissionCode Defines a unique ID for the permission. permissionDescription Describes what the permission allows. permissionRule Defines the rule that determines whether the permission applies to the role. SYSATTR_TABLE_NAME Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automatically generates this value.
Related Information
Permissions Provided with FS-QUO [page 204]
Developer Guide Risk-Based Architecture PUBLIC 197 7.1.2.4 Adding or Modifying a Role Type
You can add or modify a role type if needed.
Procedure
1. Open your extended Underwriting Application Configuration object, expand the Role Framework folder, and choose Role.
Typically, the object is named Extended Underwriting Application Configuration and is located in the Company Library Configuration Objects folder.
The Role component opens. 2. Add or modify a value row. 3. Save your changes.
Results
The role type is added or modified.
Related Information
Role Component [page 196]
7.1.2.5 Selecting Which Roles to Use
You can specify which roles are available to be assigned to users. The roles that aren't selected can't be assigned to users, but they're stored in the role component for later use if needed.
Procedure
1. Open your extended Underwriting Application Configuration object, expand the Role Framework folder, and choose Role.
Typically, the object is named Extended Underwriting Application Configuration and is located in the Company Library Configuration Objects folder.
The Role component opens.
Developer Guide 198 PUBLIC Risk-Based Architecture 2. Select the Values tab. 3. Select the checkbox for the roles that you want to use in your FS-QUO instance. 4. Deselect the checkboxes for the roles that you won't use. 5. Save your changes.
Results
The selected roles are available to be assigned to users.
7.1.2.6 Setting up Permissions for a Role
You can change the permissions for a role type if needed.
Procedure
1. Open your extended Underwriting Application Configuration object, expand the Role Framework folder, and choose Role.
Typically, the object is named Extended Underwriting Application Configuration and is located in the Company Library Configuration Objects folder.
The Role component opens. 2. Select the Values tab. 3. Select All from the Views dropdown list.
All the role types are displayed. 4. Choose the icon next to the role type that you want to modify.
If you can't choose the , the role type isn't selected. Select the checkbox next to it, save your changes and choose again. The child components open. 5. Select the Permission tab. 6. Select All from the Views dropdown list.
All the permissions are displayed. 7. Perform one or both of the following actions:
○ To use existing permissions, select the checkbox next to the permissions that you want to apply to the role type. ○ To add new permissions, add a new row for each new permission, complete the fields, and select the checkbox. 8. Deselect the checkboxes for the permissions that don't apply, if any.
Developer Guide Risk-Based Architecture PUBLIC 199 9. Save your changes.
Results
The permissions are set up for the role type.
Next Steps
You must set up the same permissions for the screen controls that the role type needs to access.
Related Information
Permission Component in the Role Framework [page 197] Setting up Permissions for a Screen Control [page 118]
7.1.2.7 Modifying the Workflow Type for a Role
By default, the Producer role type is assigned producerWorkflow. The other role types are assigned underwriterWorkflow. You can modify the workflow type for a role according to your organization's needs.
Procedure
1. Open your extended Underwriting Application Configuration object, expand the Role Framework folder, and choose Role.
Typically, the object is named Extended Underwriting Application Configuration and is located in the Company Library Configuration Objects folder.
The Role component opens. 2. Select the Values tab. 3. Select All from the Views dropdown list.
All the role types are displayed. 4. Choose the icon next to the role type that you want to modify.
If you can't choose the icon, the role type isn't selected. Select the checkbox next to it, save your changes, and choose again.
The child components open.
Developer Guide 200 PUBLIC Risk-Based Architecture 5. Select the Properties tab. 6. Select All from the Views dropdown list.
All the properties are displayed. 7. Select the checkbox for one of the following items:
underWriterWorkflow Specifies that the role runs through the New Business and Endorsement transactional workflows as an underwriter.
producerWorkflow Specifies that the role runs through the New Business and Endorsement transactional workflows as a producer.
8. Deselect the checkbox for the workflow type that doesn't apply. 9. Save your changes.
Results
The selected workflow type is applied to the role.
7.1.2.8 Portal Menu Component
The Portal Menu component specifies all of the dropdown menus (Search, View, Write, Manage) shown by default at the top-right corner of FS-QUO. This component is assembled under the Role component and appears as an anchored tab. For each role, you can select the portal menus that the role needs access to.
Note
If a portal menu is selected for a role, but the role doesn't have the corresponding permission set in the Permission component, users assigned to that role can access that portal menu, but the fields on the screen are read-only.
As a best practice, we recommend that you make corresponding role permission and portal menu changes. For example, if you deselect the writeNewBusiness permission for a role, you can also navigate to the role's Portal Menu tab, expand the portalWriteMenu row, and deselect the portalnewbusinssbtn row in the Portal Menu Item component. This role doesn't have permission to write new business, and the Portal Menu configuration disables the Write New Business button in FS-QUO. Users assigned to that role can't access the Write New Business - [Enter General Information] screen.
Developer Guide Risk-Based Architecture PUBLIC 201 7.1.3 Screen Control Permissions
The permissions framework is used in the Screen Framework folder to control access to screen controls (for example, buttons, menus, fields, and so on) in FS-QUO. These permissions are defined in the following locations:
● context attribute in the Screen Control component ● permission component in the Screen Framework folder
7.1.3.1 context Attribute in the Screen Control Component
The Screen Control component contains a context attribute.
The context attribute defines the type of control. This value is used with permissions and is case-sensitive.
The following options are available:
checkboxes Disables all the checkboxes on a grid. In the control attribute, use the name of the checkbox (for example, transactions). This feature isn't used in the default FS-QUO configuration.
contextbutton Disables a button in a form. In the control attribute, use the naming format
field Disables a field in a form. In the control attribute, use the naming format
form Disables all the fields in a form and all title links. In the control attribute, enter the name of the form (for example, producerDetails).
formfields Disables all the fields in a form but doesn't disable any title links on that form. In the control attribute, enter the name of the form (for example, accountAddress).
moreactions Disables an option under the More Actions menu.
portal Disables a portal button in Menu.
titlelinks Disables only the title links in a form. This value doesn't disable the fields.
toolbar Disables a button on a toolbar.
Related Information
Screen Control Component [page 114]
Developer Guide 202 PUBLIC Risk-Based Architecture 7.1.3.2 Permission Component in the Screen Framework Folder
The Permission component contains all the permission types in FS-QUO. In the Screen Framework folder, the permissions are assigned (anchored) to the screen controls that they apply to. For a screen control to stay enabled, the appropriate permission must be assigned to it.
Note
The same Permission component is also used in the Role Framework folder. The same permission types must be available in both the Role Framework folder and Screen Framework folder. Therefore, if you add or modify a permission type in the one folder, you must make the same change in the other folder.
When assembled in the Screen Framework folder, the attributes in the Permission component are used as follows:
PCD Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automically generates this value. permissionCode Specifies the code that defines the permissions that a specific control on the screen is associated with. This permission defines the control for roles as follows:
● Each user in the system has a role that's defined in the Role component in Underwriting Application Configuration. Each role is associated with a set of permissions ( Role Permissions ). ● If a screen control is associated with a set of permissions, users can use that screen control only if their roles have the same permissions. Otherwise, the control is disabled. ● If a screen control isn't associated with any permissions, any user can use the screen control. permissionDescription Defines a description of the permission. If you get an error message that includes this description, the screen control is displayed but is disabled. permissionRule Defines the rule that determines whether the permission applies. SYSATTR_TABLE_NAME Specifies the unique identifier for the value row in the component and across the system. You can leave this attribute blank, and the system automatically generates this value. Effective Date This attribute isn't used. Expiration Date
Developer Guide Risk-Based Architecture PUBLIC 203 This attribute isn't used.
Related Information
Permissions Provided with FS-QUO [page 204]
7.1.4 Permissions Provided with FS-QUO
The following table lists all the permissions that are supported by the current release of FS-QUO, their purpose, where they are used in the system, and which roles they are assigned to:
addAccount Grants the ability to add an account. This permission is used in the following areas:
● Write New Business – [Enter General Information] screen, More Actions Create New Account option. ● Write New Business – [Review Quote] pop-up, Edit Account button. ● Search Account screen, Add button.
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
addProducer Grants the ability to add a producer. This permission is used in the following area:
● Search Producer screen, Add button
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
addProducerContact Grants the ability to add a producer contact. This permission is used in the following areas:
● Write New Business – [Enter General Information] screen, Add option on Producer Information panel. ● Edit Producer screen, Add button on Producer Contacts panel.
Assigned to the following roles:
Developer Guide 204 PUBLIC Risk-Based Architecture ● Underwriter ● Senior Underwriter ● UW Manager ● Producer
assignTask Grants the ability to assign a task to another user. If a user doesn't have this permission, they can only view their own tasks. This permission is used in the following areas:
● Task List (More Actions) ● Task Details (dropdown list)
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
assignTransaction Grants the ability to reassign a transaction. If a user doesn't have this permission, they can only view the transactions that belong to them. This permission is used in the following areas:
● Work List (More Actions) ● In a transaction (More Actions)
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
assignUserToProducerContacts Grants the ability to associate a Producer Contact with a Producer. This permission is used in the following area:
● Edit Producer screen, Assign User button on Producer Contacts panel.
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
cancelPolicy Grants the ability to cancel a policy. This permission is used in the following area:
● View Policy Summary (More Actions)
Assigned to the following roles:
● Underwriter ● Senior Underwriter
Developer Guide Risk-Based Architecture PUBLIC 205 ● UW Manager
cancelReissue Grants the ability to cancel or reissue a policy. This permission is used in the following area:
● View Policy Summary (More Actions)
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
cancelRewrite Grants the ability to cancel or rewrite a policy. This permission is used in the following area:
● View Policy Summary (More Actions)
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
changePremiumAuditParameters Grants the ability to change Premium Audit parameters outside of a transaction. This permission is used in the following area:
● View Policy Summary (More Actions)
Assigned to the following role:
● UW Manager
changeProducer Grants the ability to change the producer of a policy. This permission is used in the following area:
● View Policy Summary (More Actions) and Edit Producer screen
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
changeProducerContact Grants the ability to change the producer contact of a policy. This permission is used in the following areas:
● View Policy Summary (More Actions) ● Edit Producer screen
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
Developer Guide 206 PUBLIC Risk-Based Architecture ● Producer
changeSubjectToAudit Grants the ability to change subject to audit. This permission is used in the following area:
● Issue Policy screen for the New Business, Rewrite, Reissue, Renewal transactions.
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
changeProducerContact Grants the ability to change the producer contact of a policy. This permission is used in the following areas:
● View Policy Summary (More Actions) ● Edit Producer screen
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
changeSubjectToAudit Grants the ability to change subject to audit. This permission is used in the following area:
● Issue Policy screen for the New Business, Rewrite, Reissue, Renewal transactions.
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
changeUnderwriterOfRecord Grants the ability to change the underwriter of record of a policy. This permission is used in the following areas:
● View Policy Summary (More Actions) ● Edit Producer screen
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
declineTransaction Grants the ability to decline a transaction. This permission is used in the following area:
● Review Quote screen
Developer Guide Risk-Based Architecture PUBLIC 207 Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
editAccount Grants the ability to modify account information. This permission is used in the following area:
● Edit button in Search Account
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
editAudit Grants the ability to edit the Audit flag and comments. This permission is used in the following area:
● View Policy Summary (More Actions - Edit Policy Flags)
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
editClaim Grants the ability to edit the Claim flag and comments. This permission is used in the following area:
● View Policy Summary (More Actions - Edit Policy Flags)
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
editDNR Grants the ability to edit the DNR flag and comments. This permission is used in the following area:
● View Policy Summary (More Actions - Edit Policy Flags)
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
editFreeze Grants the ability to edit the Freeze flag and comments. This permission is used in the following area:
● View Policy Summary (More Actions - Edit Policy Flags)
Developer Guide 208 PUBLIC Risk-Based Architecture Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
editPremiumAuditAdjustment Grants the ability to perform a premium audit adjustment. This permission is used in the following area:
● Edit button in the Manage Premium Audit and View Policy Summary screens
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
editPremiumAuditSchedule Grants the ability to manage a premium audit schedule. This permission is used in the following area:
● Issue Policy (New Business, Rewrite, Reissue)
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
editProducer Grants the ability to edit a Producer. This permission is used in the following area:
● Edit Producer screen, Save button
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
editProducerContact Grants the ability to edit a Producer Contact. This permission is used in the following areas:
● Write New Business – [Enter General Information] screen, Edit option on Producer Information panel. ● Edit Producer screen, Edit button on Producer Contacts panel
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
Developer Guide Risk-Based Architecture PUBLIC 209 editRatingWorksheet Grants the ability to access the rating worksheet. This permission is used in the following area:
● eApp - Rating Worksheet tab
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
editRRR Grants the ability to edit the RRR flag and comments. This permission is used in the following area:
● View Policy Summary (More Actions - Edit Policy Flags)
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
endorsePolicy Grants the ability to endorse a policy. This permission is used in the following area:
● View Policy Summary (More Actions)
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
extendPolicy Grants the ability to extend a policy. This permission is used in the following area:
● View Policy Summary (More Actions)
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
findProducer Grants the ability to search for a producer. Doesn't enforce data visibility. To associate a user to an Agency, assign the user to a producer contact in that Agency. This permission is used in the following area:
● Search Producer link in the Global navigation bar
Developer Guide 210 PUBLIC Risk-Based Architecture Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
manageNotes Grants the ability to ability to manage notes. This permission is used in the following area:
● Notes link in the Title bar.
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
manageTasks Grants the ability to manage tasks. This permission is used in the following area:
● Tasks link in the Title bar and View Policy Summary.
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
outOfSequence Determines whether you can start an out-of-sequence transaction. This permission is used in the following areas:
● Review Quote screen - Resolve Conflicts dialog ● Endorsement - Enter Effective Date screen ● Cancel - Enter Effective Date screen
Assigned to the following roles:
● Underwriter ● UW Manager ● Producer
overrideAuditPremium Grants the ability to override Premium Audit Adjustments amount. This permission is used in the following area:
● Premium Audit Adjustment screen
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
overrideCancellationPremium Grants the ability to override cancellation premium. This permission is used in the following area:
● Cancel Policy screen.
Developer Guide Risk-Based Architecture PUBLIC 211 Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
overrideCommission Grants the ability to override commissions. This permission is used in the following area:
● New Business – [Review Quote] screen.
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
overrideReinstatePremium Grants the ability to override reinstate premiums. This permission is used in the following area:
● Reinstate Policy screen
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
premiumAuditPolicy Grants the ability to do a premium audit transaction. This permission is used in the following area:
● View Premium Audit List
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
quoteNotTaken Grants the ability to set a transaction as Quote Not Taken. This permission is used in the following area:
● Review Quote screen
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
reactivateDecline Grants the ability to reactivate a declined transaction. This permission is used in the following area:
● Review Quote screen
Developer Guide 212 PUBLIC Risk-Based Architecture Assigned to the following role:
● UW Manager
reactivateInterval Grants the ability to reactivate an interval. This permission is used in the following areas:
● View Premium Audit List, More Actions Reactivate Audit Interval ● Audit Premium – [Audit premium], More Actions Reactivate Risk/Coverage Audit
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
reactivateQuoteNT Grants the ability to reactivate a quote not taken. This permission is used in the following area:
● Review Quote screen
Assigned to the following roles:
● UW Manager
reinstatePolicy Grants the ability to reinstate a policy. This permission is used in the following area:
● View Policy Summary (More Actions)
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
reinstateWithLapse Grants the ability to reinstate a policy with lapse. This permission is used in the following area:
● Transaction Effective Date field in Reinstate Policy transaction
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
renewPolicy Grants the ability to renew a policy. This permission is used in the following areas:
● Manage Renewal screen ● View Policy Summary screen
Assigned to the following roles:
Developer Guide Risk-Based Architecture PUBLIC 213 ● Underwriter ● Senior Underwriter ● UW Manager ● Producer
resolveHardConflict Grants the ability to resolve hard conflicts for out-of-sequence transactions. This permission is used in the following area:
● Review Quote screen - Resolve Conflicts dialog
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
resolveReferralConflict Grants the ability to resolve referral conflicts for out-of-sequence transactions. This permission is used in the following area:
● Review Quote screen - Resolve Conflicts dialog
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
resolveSoftConflict Grants the ability to resolve soft conflicts for out-of-sequence transactions. This permission is used in the following area:
● Review Quote screen - Resolve Conflicts dialog
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
resolveValidationConflict Grants the ability to resolve validation conflicts for out-of-sequence transactions. This permission is used in the following area:
● Review Quote screen - Resolve Conflicts dialog
Assigned to the following roles:
● Underwriter ● Senior Underwriter
Developer Guide 214 PUBLIC Risk-Based Architecture ● UW Manager ● Producer
reversePremiumAuditAdjustment Grants the ability to reverse a Premium Audit. This permission is used in the following area:
● View Policy Summary, More Actions Reverse Selected
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
reverseTransaction Grants the ability to reverse an issued transaction (an endorsement). This permission is used in the following area:
● View Policy Summary (More Actions)
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
reviewReferral Grants the ability to edit a referral in a transaction. Doesn't enforce authority limits. This permission is used in the following area:
● eApp - Referrals Tab
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
searchAccountsTransaction Grants the ability to search for existing accounts within a transaction. This permission is used in the following areas:
● Write New Business – [Enter General Information] ● Write New Business – [Review Quote]
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
terminateProducer Grants the ability to set a termination date for a producer. This permission is used in the following area:
● Edit Producer (More Actions)
Assigned to the following roles:
Developer Guide Risk-Based Architecture PUBLIC 215 ● Underwriter ● Senior Underwriter ● UW Manager
transferPolicy Grants the ability to transfer a policy to another producer. This permission is used in the following area:
● Policy Details (More Actions)
Assigned to the following roles:
● Underwriter ● UW Manager
unAssignUserToProducerContacts Grants the ability to disassociate a Producer Contact with a Producer. This permission is used in the following area:
● Edit Producer screen, Unassign User button on Producer Contacts panel.
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
updateMarketableProduct Grants the ability to Ability to decide whether to take an update to a newer version of the marketable product. This permission is used in the following areas:
● New Business – [Fill Out Application] Rate book tab. ● New Business – [Review Quote] screen.
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
updateReferenceProduct Grants the ability to decide whether to take an update to a newer version of a reference product. This permission is used in the following areas:
● New Business – [Fill Out Application] Rate book tab. ● New Business – [Review Quote] screen.
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
viewPremiumAuditAdjustment Grants the ability to view a premium audit adjustment. This permission is used in the following area:
Developer Guide 216 PUBLIC Risk-Based Architecture ● View Policy Summary
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
viewTaskForUser Grants the ability to view tasks that belong to another user. Doesn't enforce data visibility. This permission is used in the following area:
● Task List (More Actions)
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
viewTransactionForUser Grants the ability to view the transactions that belong to another user by changing views. This permission is used in the following area:
● Work List (More Actions)
Assigned to the following roles:
● Senior Underwriter ● UW Manager
waiveInterval Grants the ability to waive a Premium Audit interval manually. This permission is used in the following area:
● View Premium Audit List, More Actions Waive Audit Interval .
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager
writeNewBusiness Grants the ability to write new business This permission is used in the following area:
● Write New Business – [Enter General Information] screen
Assigned to the following roles:
● Underwriter ● Senior Underwriter ● UW Manager ● Producer
Developer Guide Risk-Based Architecture PUBLIC 217 For the following transaction permissions, if a role isn't granted the permission, users assigned to that role can view the related screen, but the fields are read-only:
● writeNewBusiness ● endorsePolicy ● cancelPolicy ● cancelRewrite ● cancelReissue ● reinstatePolicy ● renewPolicy ● extendPolicy ● reverseTransaction ● premiumAuditPolicy
If the screen contains an Issue button, that button is disabled.
7.2 Understanding Visitor Patterns
Visitor patterns are the notification mechanism that FS-QUO uses to traverse the policy tree (the structure of the FS-QUO Policy Model) to return policy information.
The visitor pattern visits each node (risk) and determines the premium, premium rollup, referral, and forms for that risk.
The following diagram shows an example of how the policy risks are extensions of the RiskBase method and the relationship of the RiskBase method to premium rollup, coverage, forms, and premiums:
The two types of visitor patterns are the following:
Definition visitor Traverses the objects in the Product Configurator tree to return everything pattern associated with the classes of the Policy Model
Instance visitor pattern Traverses the FS-QUO Policy Model to create a snapshot of the policy
Developer Guide 218 PUBLIC Risk-Based Architecture For example, the definition visitor pattern returns all the forms that are available for a policy. This information is useful for populating the Form Chooser. In contrast, the instance visitor pattern returns all the forms that are actually attached to a policy. The definition visitor pattern returns one of each form. The instance visitor pattern can return multiple instances of a form if the same form is attached to several coverages or if the form is attached multiple times to a single coverage.
7.2.1 Model Visitor
The model visitor is the name of the FS-QUO visitor class. The visitor pattern abstracts the recursive traversal of a Policy Model instance or a Policy Model definition. This abstraction lets you apply functions to the traversal of a model instance or model definition without knowing how to traverse the object tree.
For example, coverage selection can implement a visitor extension to run rules on the coverage definitions for a given product. As another example, you can write a visitor extension to return all attached forms for a given model instance.
7.2.2 ModelVisitor Class
To determine the premium, premium rollup, referral, and forms for each risk in a policy tree, the model visitor uses the following methods:
package com.camilion.as.model.visitor; public interface ModelVisitor { void visit(); void visitRisk(Object risk); void visitCoverage(Object coverage); void visitForm(Object form); void visitReferral(Object referral); void visitNonPremium(Object financial); void visitPremiumRollup(Object premiumRollup); void visitStatCodeValue(Object statCode); void visitAdditionalInterestDetails(Object interest); void visitAdditionalInsuredDetails(Object insured); }
7.2.2.1 Extending a Visitor
To extend a visitor, configure it as a Business Service (Spring Bean) with a bean tag that includes the following line:
Developer Guide Risk-Based Architecture PUBLIC 219 Setting the singleton=”false” property lets the visitor store class variables safely (multi threading). This property is a requirement for visitors because there are collections of objects during the visit, depending on the function of the visitor.
7.2.2.2 Using the Extended Visitor Pattern
For other services to use visitor services, inject the visitor property using getter injection.
Procedure
1. In the service that'll use the visitor declare, include an abstract get method for the visitor as follows:
protected abstract
2. In the service configuration (asServices.xml), define the lookup-method within the Service bean definition as follows:
Note
The Spring framework provides the get method implementation.
Developer Guide 220 PUBLIC Risk-Based Architecture 7.2.3 Policy Traversal
The following example is a visitor pattern that uses the Commercial General Liability line of business (coverage group):
The visitor pattern traverses the following policy parts:
PolicyRisk The policy risk is the product. It contains coverage groups and can contain coverages. It can also be associated with forms and premiums.
Coverage Groups A coverage group consists of related coverages. Coverage groups can have forms, premiums, and premium rollups.
Risks A risk is anything that has a coverage. Risks can have forms, premiums, and rollups.
Coverages Coverages are the rated categories of the risk. Coverages can have forms, premiums, non premiums, rollups, and sub-coverages.
Forms A form is associated with a risk or a coverage. Forms can have premiums and non premiums associated with them.
Premiums A premium is a charge that is associated with a risk, coverage, or form.
NonPremium Non premiums are charges that include taxes, fees, and surcharges that are associated with a risk, coverage, or form.
PremiumRollup The premium rollup holds the sum of all the premiums that are under a level. For example, the premium rollup for a coverage includes all premiums associated with that coverage (and any sub-coverages) and any premium-bearing forms associated with that coverage.
StatCodes Stat codes are associated with premiums and non premiums.
Developer Guide Risk-Based Architecture PUBLIC 221 Stat codes are markers for reporting.
Related Information
Definition Visitor Patterns [page 222] Instance Visitor Patterns [page 224]
7.2.4 Definition Visitor Patterns
The definition visitor pattern traverses the objects in the Product Configurator tree to return everything associated with the classes of the Policy Model. The traversal pattern is different for risks, coverages, and forms.
Risk Definition Visitor Pattern
The risk definition visitor pattern has the following traversal pattern:
Developer Guide 222 PUBLIC Risk-Based Architecture Coverage Definition Visitor Pattern
The coverage definition visitor pattern has the following pattern:
The Premium has a dotted line because no functions visit Premium. Functions visit the other objects. However, Premium can be used while visiting the Coverage.
Form Definition Visitor Pattern
The form definition visitor pattern has the following pattern:
Developer Guide Risk-Based Architecture PUBLIC 223 7.2.5 Instance Visitor Patterns
The instance visitor pattern traverses the FS-QUO Policy Model to create a snapshot of the policy. The traversal pattern is different for risks, coverages, forms, and premiums.
Risk Instance Visitor Pattern
The risk visitor pattern has the following traversal pattern:
Developer Guide 224 PUBLIC Risk-Based Architecture Coverage Instance Visitor Pattern
The coverage visitor pattern has the following pattern:
The Premium has a dotted line because no functions visit Premium. Functions visit the other objects. However, Premium can be used while visiting the Coverage.
Developer Guide Risk-Based Architecture PUBLIC 225 Form Instance Visitor Pattern
The form visitor pattern has the following pattern:
The Premium has a dotted line because no functions visit Premium. Functions visit the other objects. However, Premium can be used while visiting the Form.
Premium Instance Visitor Pattern Rollup
The premium rollup visitor pattern has the following pattern:
Developer Guide 226 PUBLIC Risk-Based Architecture 7.3 Policy Models
The Policy Model is an XML representation of the data for a specific policy transaction.
The model is generated by FS-QUO and contains information from the FS-QUO Data Model and the Product Data Model. The Policy Model lets you access data without querying the FS-QUO database tables and views. Business services can get policy information from the Policy Model.
The Policy Model consists of the static model and dynamic model. The static model is a representation of the data that's the same for every policy transaction. For example, the static model contains attributes for the select account and producer fields.
The dynamic model is a representation of the data for a specific marketable product. The dynamic model can't be determined until a marketable product is selected in a policy transaction.
The Policy Model consists of three main components:
model.uml The metadata representation of the UML Policy Model.
ASModelInstanceBuilder Creates an instance of the Policy Model.
ASModelExtender Creates classes dynamically based on what's configured in the Product Configurator Metadata Painter.
7.3.1 Policy Model and Database Tables
The Policy Model attributes are mapped to physical database tables. The database tables are grouped as follows:
● Policy tables ● Supporting tables ● Task table
Note
To see the relationships between the Policy Model classes, see the following graphic image: /ASModel/ model/model.jpg
Related Information
Policy Database Tables [page 239] Supporting Database Tables [page 280] Task Database tables [page 284]
Developer Guide Risk-Based Architecture PUBLIC 227 7.3.2 Modifying the Policy Model
Prerequisites
To modify the Policy Model, the following is required:
● You are familiar with the Eclipse Modeling Framework (EMF). ● The Eclipse EMF plug-in is installed in your development environment We recommend that you install Eclipse with EMF. For more information and to download the software, see www.eclipse.org . The Policy Model was created using Eclipse 3.4.1. You can use Eclipse 3.5; however, it isn't backwards compatible with Eclipse 3.4.x. ● Java version 1.8 is installed in your development environment. No other Java version is compatible with FS- QUO. ● You have access to the FS-QUO Development Toolkit.
Context
Generally, we recommend that you don't modify the Policy Model because you must manually recreate the changes when you upgrade FS-QUO. However, if you want to collect or display additional information in the FS- QUO runtime, you can add new fields or sections to the user interface. To add a new field or section, you must add a field to a database to support the product (using the Product Configurator Metadata Painter or Designer Metadata Painter) and add an attribute or class to the Policy Model.
For example, you might want to add a County field to the address section. To store County data, you need to create a column to the ADDRESS table and add an attribute to the Policy Model. As another example, you might want to add a new section to display claims history information gathered from an external source. To store the claims history data, you need to create a new flowstore and add a new claims class to the Policy Model.
Note
The following process describes how to modify the static model of the Policy Model. The dynamic model can't be determined until a marketable product is selected in the policy transaction.
To modify the Policy Model, follow these steps:
Procedure
1. Install the FS-QUO Eclipse projects (libraries and source) from the FS-QUO Development Toolkit. 2. Update the flowstore.
Developer Guide 228 PUBLIC Risk-Based Architecture 3. Open the Policy Model Packages 4. Do one or more of the following:
○ Add a Class to the Policy Model ○ Add an Attribute to a Class ○ Add a Reference to a Class ○ Delete a Class or Attribute 5. Generate the classes 6. (Optional) Create a Graphic Image of the Policy Model. 7. (Optional) Update the XSD for the Policy Model. 8. Update the Policy Model and Flowstore Mapping
Results
We recommend that you track all changes to the Policy Model in a log file and version the file with the ASModel project. During an upgrade, you can re-apply the modifications to the Policy Model.
7.3.2.1 Updating the Flowstore
If you want to collect or display additional information in the FS-QUO runtime, you can add new fields or sections to the user interface. To store the additional data that you gather or display, you must update the flowstore (database) tables.
Procedure
1. Log in to Designer. 2. Do one of the following:
○ If you're adding a new field to an existing section, add a column to an existing flowstore table. ○ If you're adding a new section to the user interface, add a child or master flowstore table.
Note
We recommend that you prefix modified tables and columns with a value that's specific to your organization (for example, yourCompanyName_NEW_TABLE or yourCompanyName_NEW_COLUMN). By prefixing the table and column names, you can avoid name clashes when you upgrade FS-QUO.
New application table XML files are generated. 3. Commit the application table XML files.
Developer Guide Risk-Based Architecture PUBLIC 229 7.3.2.2 Opening the Policy Model Packages
Before you can modify the Policy Model, open the graphical and metadata views of the model.
Context
Some actions (such as adding references) are easier to perform in the graphical view, and other actions (such as adding attributes) are easier to perform in the metadata view.
Procedure
1. Open the FS-QUO projects in Eclipse. 2. Expand ASModel, and expand >model. 3. Double-click model.umlclass.
The package opens. 4. Click the top-left corner, and navigate to com::camilion::as::model.
The graphical view of the Policy Model is displayed. 5. In the >model folder, choose model.uml.
The model.uml tab opens. 6. Expand platform:/resource/ASModel/model/model.uml, and navigate to <
The metadata view of the Policy Model opens.
7.3.2.3 Adding a Class to the Policy Model
You can add a new class to the Policy Model.
Prerequisites
You must have already opened the Policy Model Packages.
Developer Guide 230 PUBLIC Risk-Based Architecture Context
New classes are typically needed to support new features for FS-QUO. For example, to add a section that lets underwriters or producers enter additional details or notes to a policy, you need to create a new class to hold the data.
Procedure
1. In model.uml, right-click the <
2. Select New Child Owned Type Class .
3. Select the new
<
Don't complete any other fields.
The standard naming convention for Java class names is to use an initial capital letter and a capital letter for every new word. 9. Save model.uml.
Results
The class is added to the Policy Model.
7.3.2.4 Adding an Attribute to a Class
You can add an attribute to an existing class in the Policy Model.
Prerequisites
You must have already opened the Policy Model Packages.
Developer Guide Risk-Based Architecture PUBLIC 231 Context
New attributes are needed when you want to add new fields to the FS-QUO Runtime.
Procedure
1. In model.uml, right-click the class that you want to add an attribute to.
2. Select New Child Owned Attribute Property .
3. Select the
The EAttribute and UML sections are added. 8. Complete the following section name: field values:
EAttribute: Xml Specify Element or leave blank. Feature Kind When the Policy Model is serialized to XML, attributes with Xml Feature Kind set to Element are serialized as elements. Attributes set to blank are serialized as attributes. Typically, attributes are set as Element.
EAttribute: Defines the name of the attribute. XML Name Specify the UML: Name value. This value is used when the Policy Model is serialized to XML.
UML: Name Defines the name of the attribute. The standard Java naming convention is to use an initial lowercase letter and a capital letter for every new word (for example, isDeleted).
UML: Type Defines the attribute type. Select one of the following options:
ecore::EString For all string values. Corresponds to String.
ecore::EInt For all INT (integer) values. Corresponds to int.
ecore::ELong For all LONG values. Corresponds to long.
ecore::Float For all FLOAT values. Corresponds to float.
Developer Guide 232 PUBLIC Risk-Based Architecture ecore::EBoolean For all True/False and char=1 values. Corresponds to boolean and VARCHAR=1 (in Designer).
ecore::EDate For all dates. Corresponds to DATETIME/DATE (Date).
ecore::EDouble For all amounts/percentages. Corresponds to a NUMBER (16,2) (double) (in Designer).
Note
Don't choose any fields that you aren't setting because Eclipse will insert an empty string in the UML file. This string displays as _stuff in the generated classes and XML and must be manually removed from the UML file in text mode.
9. Repeat steps 2-7 for each attribute. 10. Save model.uml.
Results
The attribute is added to the class.
7.3.2.5 Adding a Reference to a Class
You can add a reference to create a relationship between the new class and existing classes in the Policy Model. A reference to a class lets objects access the data inside that class.
Prerequisites
You must have already opened the Policy Model Packages.
Context
Tip
References are easier to create in the graphical view of the Policy Model than the metadata view.
Developer Guide Risk-Based Architecture PUBLIC 233 Procedure
1. Go to model.umlclass and open com::camilion::as::model.
The graphical view of the Policy Model is displayed. 2. Find the new class that you added.
If the class is on top of another class, move it to an open location. 3. In the Palette located at the right-hand side of the workspace, choose the arrow near the Association option, and select the Navigable Association. 4. Select the source class, and drag it to the destination class.
A line is created between the source and destination classes. 5. In the text box for the line, enter the structural feature name. 6. Select the src and dst lines, and enter the names.
You can also specify the cardinality by entering the value following the dst name (for example, exampleClass [0..*]). 7. If the cardinality of the class isn't one-to-one (for example, a list), right-click the line, and select Association Type Composite .
The reference is now a containment reference. 8. Save com::camilion::as::model. 9. Open model.uml.
The metadata view of the Policy Model is displayed.
10. Expand the source class, and apply the EReference stereotype ( UML Editor Element Apply Stereotype ) to the new class. 11. Right-click the attribute that you configured in the source class and select Show Properties View in the EReference section. 12. Complete the following fields: a. Set Is Resolve Proxies to true. b. Set XML Feature Kind to Element. c. Enter the name in the XML Name field that you want displayed when the Policy Model is serialized to XML . 13. Save model.uml. 14. To apply a color to a class:
a. Select the class diagram in the graphical view and choose . b. Select a color.
The color is applied to the class. Applying a color visually illustrates the relationship among related classes. 15. Save the model.
Developer Guide 234 PUBLIC Risk-Based Architecture Results
The reference is added to the class.
7.3.2.6 Deleting a Class or Attribute
If you no longer need a class or an attribute, you can delete it from the Policy Model.
Prerequisites
You must have already opened the Policy Model Packages.
Procedure
1. In model.uml, select the class or attribute that you want to delete.
2. Choose UML Editor Element Destroy on the toolbar.
Results
The class or attribute is deleted.
7.3.2.7 Generating the Classes
After you add new classes and attributes, you must generate the classes to complete the change in the Policy Model.
Prerequisites
You must have already opened the Policy Model Packages.
Developer Guide Risk-Based Architecture PUBLIC 235 Procedure
1. Expand >model, right-click model.genmodel, and select Reload. 2. Select UML Model in the Reload window and choose Next >. 3. Verify that all the Options are set to Process, and choose Next >. 4. Verify that Package Com is selected. 5. Choose Finish.
6. Delete the following source files in >ASModel >src : ○ com.camilion.as.model ○ com.camilion.as.model.impl ○ com.camilion.as.util 7. Double-click model.genmodel.
The model.genmodel tab opens. 8. Right-click SAP Underwriting for Insurance Model and select Generate Model Code.
The files that you deleted are regenerated in >src. 9. Expand com.camilion.as.com, and verify the new classes and attributes are displayed. 10. Right-click AsModelJarDesc.jardesc in the >ASModel folder, and select Create Jar.
Results
The Policy Model source is packaged into the AuthorityUnderwriter project.
Next Steps
Verify that the JAR path is set properly for your development environment.
7.3.2.8 Creating a Graphical Image of the Policy Model
This topic describes how you can generate a graphical image of the Policy Model to help you see a visual representation of the model.
Prerequisites
You must have already opened the Policy Model Packages.
Developer Guide 236 PUBLIC Risk-Based Architecture Context
This task is optional; it isn't a required part of modifying the Policy Model.
Procedure
1. Navigate to com::camilion::as::model in model.umlclass.
2. Right-click the workspace and select File Save as Image File . 3. Verify the settings in the Save As Image File window. 4. Choose OK.
We recommend that you use the JPG graphic format because other formats might hang Eclipse.
Results
The new image file is created and appears in the model folder.
7.3.2.9 Updating the XSD for the Policy Model
Context
You can update the XSD for the static portion of the Policy Model. The static portion is common to all products. The XSD is contained in the com.camilion.as.model.xsd and Ecore.xsd files. Updating the XSD is helpful when you want to validate the Policy Model against the latest schema.
To update the XSD for the Policy Model, perform the following steps:
Procedure
1. Open the FS-QUO projects in Eclipse. 2. Expand ASModel, and expand >model. 3. Right-click model.genmodel and select Export Model.
The Select a Model Exporter dialog opens. 4. Select XML schema.
Developer Guide Risk-Based Architecture PUBLIC 237 5. Choose Next>>.
The XML Schema Export dialog opens. 6. Leave the default Directory URI value. 7. Choose Next>>.
The packages dialog opens. 8. Select com.camilion.as.model and org.eclipse.emf.ecore, leave the default Referenced generator models setting, and choose Next >.
The Select Export Options dialog opens. 9. Leave the default settings. 10. Choose Finish.
Results
The com.camilion.as.model.xsd and Ecore.xsd files are updated.
7.3.2.10 Updating the Policy Model and Flowstore Mapping
After you modify the Policy Model and update the flowstore (database), update the mapping file to associate the Policy Model with the corresponding flowstore change.
Procedure
1. Open the following file in an editor: ASWeb/resource/model/default.xml 2. Define the mapping between the modified Policy Model attribute or class and the modified flowstore. 3. Save the file and commit the changes.
Results
The Policy Model and flowstore mapping is updated.
Example
The following example shows a mapping of the Account object in the Policy Model:
Developer Guide 238 PUBLIC Risk-Based Architecture
7.3.3 Policy Database Tables
This section lists the database tables related to policies. Attributes in the Policy Model are mapped to these tables.
7.3.3.1 Account and Related Accounts
Related Accounts are used to identify parent and child relationships, householding or identifying headquarters, parent or holding companies, or other account relationships
7.3.3.1.1 ACCOUNT table
The ACCOUNT table contains information about the accounts (customers or primary named insureds).
ACCOUNT is implemented as a flowstore master.
Class Attribute ColumnName DataType Comment
Account id PK_ID INTEGER Core Column – Pri mary Identifier
Account isDeleted DELETE_FLAG VARCHAR(1) Core Column – Soft Delete indicator
Account previousId PREV_PK_ID INTEGER Core Column – Used for record cloning – ID of previous record
Developer Guide Risk-Based Architecture PUBLIC 239 Class Attribute ColumnName DataType Comment
Account createdBy CREATE_USERID_TX VARCHAR(254) Core Column – User ID that created the re cord.
Account createdOn CREATE_TS DATETIME Core Column – Time stamp when the record was created
Account updatedBy UPDATE_USERID_TX VARCHAR(254) Core Column – User ID that last updated the record
Account updatedOn UPDATE_TS DATETIME Core Column – Time stamp when the record was updated
Individual lastName LAST_NM VARCHAR(30) Last name of the ac count – if the ac count's an individual
Individual initial MIDDLE_IN_NM VARCHAR(1) Middle initial of the ac count- if the account's an individual
Individual firstName FIRST_NM VARCHAR2(20) First name of the ac count – if the ac count's an individual
Individual title SALUTATION_TX VARCHAR2(4) Salutation – if the ac count's an individual. Customizable drop down
Account accountName ACCOUNT_NM VARCHAR2(254) Name of the account – either the commercial name, or 'Salutation Last Name, First Name, Middle Initial'. This is set when the account is created au tomatically
CompanyAccount revenue REVENUE_AMT NUMBER(16) Company annual reve nue. Not historical. Transaction data should replicate to use as a basis for rating
Developer Guide 240 PUBLIC Risk-Based Architecture Class Attribute ColumnName DataType Comment
CompanyAccount sicCode PRIMARY_SIC_CD VARCHAR(4) Primary industry clas sification of company
Account emailAddress EMAIL_TX VARCHAR(50) Email address of the individual
CompanyAccount naicsCode NAICS_NO NUMBER NAICS number. Looked up from table
Account website WEBSITE_TX VARCHAR(50) Website of the organi zation. Optional.
Account phoneNumber PHONE_NO NUMBER(50) Organization phone number
CompanyAccount naicsDescription DESC_OPER_TX VARCHAR(300) Description of primary operations. Populated from NAICS
CompanyAccount sicDescription PRIMARY_SIC_TX VARCHAR(254) Description of the SIC code.
Account legalEntity LEGAL_ENTITY_CD VARCHAR(254) Describes what type of legal entity owns the policy:
● I (Individual) ● C (Corporation) ● J (Joint Venture) ● P (Partnership) ● O (Other) ● S (Sole Proprie torship) ● L (Limited Liability Company)
CompanyAccount businessAs DBA_TX VARCHAR(50) What the policy owner prefers to be called (Doing Business As).
7.3.3.1.2 ADDL_INTEREST table
The ADDL_INTEREST table contains the list of additional interests added to the account. These interests can be selected on the policy at the various levels.
Developer Guide Risk-Based Architecture PUBLIC 241 Class Attribute ColumnName DataType Comment
AdditionalInterest id PK_ID INTEGER Core Column – Pri mary Identifier
AdditionalInterest isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
AdditionalInterest name NAME_TX VARCHAR(50) Name of the interest
AdditionalInterest name2 NAME2_TX VARCHAR(50) Additional room to en ter the name
AdditionalInterest name3 NAME3_TX VARCHAR(50) Additional room to en ter the name
AdditionalInterest reference REF_TX VARCHAR(50) A Reference name for the interest
AdditionalInterest selectedIn CHKBOX_SEL_IN VARCHAR(1) Allows deselection (disabling) of the inter est
AdditionalInterest typeCode TYPE_CD VARCHAR(20)
AdditionalInterest description DESC_TX VARCHAR(250)
AdditionalInterest addlInterestId ADDL_INSRD_ID NUMBER(16)
AdditionalInterest sequenceId SEQ_NO_ID NUMBER(16)
AdditionalInterest type TYPE VARCHAR(254)
7.3.3.1.3 ADDL_INSURED table
The ADDL_INSURED table contains a the list of additional insureds added to the account. These insureds can be selected on the policy at the various levels.
Class Attribute ColumnName DataType Comment
AdditionalInsured id PK_ID INTEGER Core Column – Pri mary Identifier
AdditionalInsured isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
AdditionalInsured name NAME_TX VARCHAR(50) Name of the insured
Developer Guide 242 PUBLIC Risk-Based Architecture Class Attribute ColumnName DataType Comment
AdditionalInsured name2 NAME2_TX VARCHAR(50) Additional room to en ter the name
AdditionalInsured name3 NAME3_TX VARCHAR(50) Additional room to en ter the name
AdditionalInsured reference REF_TX VARCHAR(50) A Reference name for the interest
AdditionalInsured selectedIn CHKBOX_SEL_IN VARCHAR(1) Allows deselection (disabling) of the inter est
AdditionalInsured typeCode TYPE_CD VARCHAR(20)
AdditionalInsured description DESC_TX VARCHAR(250)
AdditionalInsured addlInsuredId ADDL_INSRD_ID NUMBER(16)
AdditionalInsured sequenceId SEQ_NO_ID NUMBER(16)
AdditionalInsured type TYPE VARCHAR(254)
7.3.3.2 Policy and Policy Term
The Policy and Policy Term tables contain data about the policy and the policy term.
7.3.3.2.1 POLICY table
The POLICY table is created for each policy (the sale of a product to an account). Each policy can have one or more policy terms.
Class Attribute ColumnName DataType Comment
PolicyMaster id PK_ID INTEGER Core Column – Pri mary Identifier
PolicyMaster isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
Developer Guide Risk-Based Architecture PUBLIC 243 Class Attribute ColumnName DataType Comment
PolicyMaster previousId PREV_PK_ID INTEGER Core Column – Used for record cloning – ID of previous record
PolicyMaster createdBy CREATE_USERID_TX VAR Core Column – User ID CHAR(25 that created the re 4) cord.
PolicyMaster createdOn CREATE_TS DATE Core Column – Time TIME stamp when the record was created
PolicyMaster updatedBy UPDATE_USERID_TX VAR Core Column – User ID CHAR(25 that last updated the 4) record
PolicyMaster updatedOn UPDATE_TS DATE Core Column – Time TIME stamp when the record was updated
PolicyMaster accountId ACCT_ID INTEGER Key to the Account ta ble REF: ACCOUNT: Read Only
PolicyMaster submissionNumber POLICY_ID INTEGER Same as PK_ID – used to pass to child tables through subproc invo cation
PolicyMaster policyActive POLICY_ACTIVE_FG VAR Post-bind use. CHAR(8) Set to 'N' when the pol icy is canceled or non- renewed
Developer Guide 244 PUBLIC Risk-Based Architecture Class Attribute ColumnName DataType Comment
PolicyMaster policyStatus POLICY_STATUS_CD VAR Current status of the CHAR(20 policy. ) See the status log for options.
Pre-issuance statuses:
● NEW – New ● LOS – Lost ● SUB – Submitted ● ABN – Aban doned Post-issu ance statuses ● INF – In force ● CAN - Canceled
PolicyMaster effectiveDate POLICY_EFFECTIVE_DT DATE Initial effective date of TIME the policy.
Each term will have its own effective date
PolicyMaster expirationDate POLICY_EXPIRATION_DT DATE Final expiration date of TIME the policy.
Updated as each new term is created
PolicyMaster producerContactId PRDCR_REP_ID INTEGER Producer rep as se lected in the workdesk transaction. No refer ence link
Note
This column is deprecated.
PolicyMaster producerId PRDCR_CO_ID INTEGER Producer as selected in the workdesk trans action. No reference link.
Note
This column is deprecated.
Developer Guide Risk-Based Architecture PUBLIC 245 Class Attribute ColumnName DataType Comment
PolicyMaster renewalRequired RENEWAL_REQ_IN VAR Indicates that a re CHAR(1) newal is required on the policy.
Typically if lead time for termination is greater than the num ber of days remaining on the policy
PolicyMaster isFrozen FREEZE_IN VAR Indicates that the pol CHAR(1) icy has been flagged for no further transac tions
PolicyMaster frozenComments FREEZE_COMMENT_TX VAR Underwriter com CHAR(25 ments 0)
PolicyMaster isAuditRequired AUDIT_IN VAR Indicates that a policy CHAR(1) audit is required
PolicyMaster auditComments AUDIT_COMMENTX_TX VAR Underwriter com CHAR(25 ments 0)
PolicyMaster isDoNotRenew DNR_IN VAR Indicates that the DNR CHAR(1) flag has been set on the policy, and the pol icy shouldn't be re newed
PolicyMaster dnrComments DNR_COMMENTS_TX VAR Underwriter Com CHAR2(2 ments 50)
PolicyMaster changeProducerCon PRDCR_REP_CBOR NUMBER Maps to the PK_ID of tactId the PRODUCER_REP table.
Used for change broker of record.
PolicyMaster changeProducerId PRDCR_CBOR NUMBER Maps to the PK_ID of the PRODUCER table.
Used for change broker of record.
Developer Guide 246 PUBLIC Risk-Based Architecture Class Attribute ColumnName DataType Comment
PolicyMaster hasClaim CLAIM_IN VAR Used to flag a claim CHAR(1) against the policy.
PolicyMaster statusUpdatedOn LAST_STATUS_CHG_TS DATE Timestamp when the status of the policy transaction was changed
PolicyMaster changeProducerBy CHANGE_PRDCR_BY NUMBER
7.3.3.2.2 POLICY_PARTY_ROLE table
The POLICY_PARTY_ROLE table contains information about the relationship between a policy and parties (underwriter of record, producer, and producer contact).
Class Attribute ColumnName DataType Comment
PolicyPartyRole id PK_ID NUMBER(16) Core Column – Pri mary Identifier
PolicyPartyRole isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
PolicyPartyRole parentId PARENT_ID NUMBER(16) Core Column – Parent table Foreign Key – in this case, PK_ID of POLICY.
PolicyPartyRole partyId PARTY_ID NUMBER(16)
PolicyPartyRole effectiveDate EFFECTIVE_DT DATETIME
PolicyPartyRole expirationDate EXPIRATION_DT DATETIME
PolicyPartyRole roleType ROLE_TYPE VARCHAR The role type can be one of the following:
● UWOR—Under writer of Record. ● PRODUCER—Pro ducer associated with the Policy ● PCONTACT—Pro ducer Contact as sociated with the Policy
Developer Guide Risk-Based Architecture PUBLIC 247 7.3.3.2.3 POLICY_TERM table
The POLICY_TERM table contains details that change on a term-by-term basis (typically annually) on the policy.
Class Attribute ColumnName DataType Comment
Term id PK_ID INTEGER Core Column – Pri mary Identifier
Term isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
Term previousId PREV_PK_ID INTEGER Core Column – Used for record cloning – ID of previous record
Term createdBy CREATE_USERID_TX VARCHAR(254) Core Column – User ID that created the re cord.
Term createdOn CREATE_TS DATETIME Core Column – Time stamp when the record was created
Term updatedBy UPDATE_USERID_TX VARCHAR(254) Core Column – User ID that last updated the record
Term updatedOn UPDATE_TS DATETIME Core Column – Time stamp when the record was updated
Term effectiveDate EFFECTIVE_DT DATETIME Effective date of the policy term
Term expirationDate EXPIRATION_DT DATETIME Expiration date of the policy term
Term policyNumber POLICY_NUMBER_TX VARCHAR(25) Policy number (which may change by term)
Term policyTermId POLICY_TERM_ID INTEGER ID of the current term. Will match PK_ID
Developer Guide 248 PUBLIC Risk-Based Architecture 7.3.3.2.4 TERM_HISTORY table
Class Attribute ColumnName DataType Comment
TermHistory id PK_ID INTEGER Core Column – Pri mary Identifier
TermHistory isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
TermHistory effectiveDate EFFECTIVE_DT DATETIME Effective date of the policy term
TermHistory expirationDate EXPIRATION_DT DATETIME Expiration date of the policy term
TermHistory policyTermId POLICY_TERM_ID INTEGER ID of the current term. Will match PK_ID
7.3.3.2.5 CLAIMS table
Class Attribute ColumnName DataType Comment
Claims id PK_ID NUMBER Core Column – Pri mary Identifier
Claims isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
Claims claimNumber CLAIM_NO VARCHAR2(17) The claim number, user entered.
Claims dateOfLoss DATE_OF_LOSS DATE The date the claim oc curred, user entered.
Developer Guide Risk-Based Architecture PUBLIC 249 7.3.3.2.6 POLICY_TERM_NOTES table
Class Attribute ColumnName DataType Comment
PolicyTermNote is PK_ID NUMBER Core Column – Pri mary Identifier
PolicyTermNote parentId PARENT_ID NUMBER Core Column – Parent table Foreign Key – in this case, PK_ID of POLICY_TERM.
PolicyTermNote isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
PolicyTermNote previousId PREV_PK_ID NUMBER Core Column – Used for record cloning – ID of previous record
PolicyTermNote note MESSAGE VARCHAR2(500) User entered com ment.
PolicyTermNote updatedOn LAST_MODIFIED DATE The date that the notes status was last altered.
PolicyTermNote updatedBy USER_ID NUMBER Reference to the user ID for the user who is changing the notes status.
7.3.3.2.7 POLICY_ACTIVITY_LOG table
The POLICY_ACTIVITY_LOG logs all activities on a policy that aren't transactions (such as setting DNR flags, reassigning underwriters, or flagging a policy for audit).
Class Attribute ColumnName DataType Comment
Activity id PK_ID INTEGER Core Column – Pri mary Identifier
Developer Guide 250 PUBLIC Risk-Based Architecture Class Attribute ColumnName DataType Comment
Activity activityTypeCode ACT_TYPE_CD VARCHAR(10) The activity being log ged.
Current values:
● BOR – Broker (Agent) of Record change ● UOR – Under writer of record change ● DNR – Policy flag- ged for 'do not re new' ● FREEZE – Policy has been frozen from further proc essing ● AUDIT – Policy has been flagged for audit
Activity activityValue ACT_VALUE_TX VARCHAR(50) Indicates the new value (if applicable) set by the policy activity
Activity comment COMMENT_TX VARCHAR(250) User entered
Activity userId USER_ID NUMBER(16,0) ID of the user that set the flag.
Activity effectiveDate EFFECTIVE_DT DATE Date the flag was set.
7.3.3.3 Policy Transaction
7.3.3.3.1 POLICY_TXN table
The POLICY_TXN table represent the transactions that can occur on a policy. As a new transaction is started, the previous transaction is copied as a starting point.
Class ColumnName DataType Comment
PolicyTransaction PK_ID NUMBER(16) Core Column – Primary Iden tifier
Developer Guide Risk-Based Architecture PUBLIC 251 Class ColumnName DataType Comment
PolicyTransaction DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
PolicyTransaction PREV_PK_ID NUMBER(16) Core Column – Used for re cord cloning – ID of previous record
PolicyTransaction CREATE_USERID_TX VARCHAR2(254) Core Column – User ID that created the record.
PolicyTransaction CREATE_TS DATE Core Column – Timestamp when the record was created
PolicyTransaction UPDATE_USERID_TX VARCHAR2(254) Core Column – User ID that last updated the record
PolicyTransaction UPDATE_TS DATE Core Column – Timestamp when the record was updated
PolicyTransaction POLICY_ID NUMBER(16) Identifier to the Policy this transaction is attached to
PolicyTransaction ACCT_ID NUMBER(16) Identifier to the ACCOUNT this transaction is attached to
PolicyTransaction PRDCR_CO_ID NUMBER(16) Agency/Brokerage – Foreign key to Producer table
Note
This column is depre cated.
PolicyTransaction PRDCR_REP_ID NUMBER(16) Agent/Broker/Individual pro ducer – foreign key to the producer contact table
Note
This column is depre cated.
PolicyTransaction ADMITTED_IN VARCHAR2(1) Indicated admitted or non- admitted business. Optional Y/N
Developer Guide 252 PUBLIC Risk-Based Architecture Class ColumnName DataType Comment
PolicyTransaction BOUND_OPTION_ID NUMBER(16) Quote option selected for is suance. PK_ID of the child re cord
PolicyTransaction CNCL_EFFECTIVE_DT DATE Effective date of the cancella tion – essentially the transac tion effective date
PolicyTransaction CNCL_NOTICE_DAYS_NO NUMBER(3) Days notice required, as de fined by business rules, or ODEN
PolicyTransaction CNCL_NOTICE_REQ_FG VARCHAR2(1) Notice required indicator. '1' or blank
PolicyTransaction CNCL_OVR_PREM_AMT NUMBER(16) Return premium – UW over ride amount, if the calculated premium isn't acceptable
PolicyTransaction CNCL_REASON_CD VARCHAR2(15) Reason for cancellation. The list is provided by the product and may include such values as 'non pay' and 'insured re quest'.
PolicyTransaction CNCL_TYPE_CD VARCHAR2(5) Type of cancel. The values may include F – Flat, SR – Short Rate, and PR – Prorate
PolicyTransaction COMMISSION_PCT NUMBER(4,1) Agent commission – DEPRE CATED
PolicyTransaction DUE_DT DATE
PolicyTransaction ENV_CD VARCHAR2(5) Interface processing – DEV or PROD. Can be looked up by interfaces to use stub, test, or production interfaces
PolicyTransaction INTERFACE_STATUS_CD VARCHAR2(5) Interface processing – status of the interface. Set by inter face. Typically Good, Warn ing, Error.
PolicyTransaction MARKET_SEG_CD VARCHAR2(4) Optional – can be used for market segmentation logic
PolicyTransaction MARKET_SEG_TX VARCHAR2(250) Optional – can be used for market segmentation logic
Developer Guide Risk-Based Architecture PUBLIC 253 Class ColumnName DataType Comment
PolicyTransaction NEW_ASSIGNED_TO_ID NUMBER(16) UW reassignment – UW about to receive the policy
PolicyTransaction PAPER_CO_TX VARCHAR2(50) Optional – Paper on which to write the policy
PolicyTransaction PATH_CD VARCHAR2(10) Used for workflow navigation
PolicyTransaction PAY_PLAN_CD VARCHAR2(20) Billing pay plan – Codes as defined in billing system
PolicyTransaction PAY_PLAN_DESC_TX VARCHAR2(255) Billing pay plan – description as defined in billing system
PolicyTransaction PAY_PLAN_PCD VARCHAR2(40) Billing pay plan – Internal part code
PolicyTransaction POLICY_DELIVERY_OP VARCHAR2(1) Extendable – O – Online, U – TION_IN US Mail. Can extend to in clude multiple copies, direct to customer, etc.
PolicyTransaction POLICY_TERM_FACTOR NUMBER(18,4) The ratio of the term length to one year. This factor is used to calculate the PREM_FULL_TERM_AMT value.
PolicyTransaction PREV_NAV_QUOTE_CD VARCHAR2(20) Used for workflow navigation
PolicyTransaction PREV_OPTION_ID NUMBER(16) Post-bind transactions – identifies the record that was a copy of the previous trans action for delta calculations
PolicyTransaction PREV_TXN_STATUS_CD VARCHAR2(20) Used for workflow navigation
PolicyTransaction PREV_TXN_TYPE_CD VARCHAR2(30) Used for workflow navigation
PolicyTransaction PRINT_DOC_TYPE VARCHAR2(50) Print interface – document type requested
PolicyTransaction PRINT_REQ_TYPE_CD VARCHAR2(40) Print interface – print re quest type
PolicyTransaction PRINT_RESPONSE_ERROR VARCHAR2(254) Print interface – if error, mes sage received
PolicyTransaction PRINT_RESPONSE_URL VARCHAR2(254) Print interface – URL to PDF to display
Developer Guide 254 PUBLIC Risk-Based Architecture Class ColumnName DataType Comment
PolicyTransaction PRINT_TEMPLATE_ID VARCHAR2(254) Print interface – optional – if multiple templates can be used
PolicyTransaction PRINT_TEMPLATE_TYPE VARCHAR2(254) Print interface – optional – if multiple templates can be used
PolicyTransaction PRIORITY_CD VARCHAR2(1) Can be used for worklist sort ing
PolicyTransaction, Product PRODUCT_CD VARCHAR2(250) Product selected
PolicyTransaction, Product PRODUCT_NAME_TX VARCHAR2(254) Product selected
PolicyTransaction, Product PRODUCT_VERSION_NO NUMBER(3) Version of the product se lected (automatically based on date)
PolicyTransaction PRODUCT_XPATH_TX VARCHAR2(254) Path to the product
PolicyTransaction QUOTE_EXPIRATION_DT DATE Set by application rules – the date when the quote is no longer valid
PolicyTransaction QUOTE_ID NUMBER(16) Used for workflow navigation
PolicyTransaction REAPPLY_FG VARCHAR2(1) Used for OOS processing
PolicyTransaction REFER_UW_ID NUMBER(16) Management referral –the UW the policy is being reas signed to
PolicyTransaction REFERRAL_IN VARCHAR2(1) Indicates that a referral rule has triggered
PolicyTransaction REV_TXN_TYPE_CD VARCHAR2(20) Used for OOS processing
PolicyTransaction REVERSED_IN VARCHAR2(1) Used for OOS processing
PolicyTransaction REVERSIBLE_IN VARCHAR2(1) Used for OOS processing
PolicyTransaction REW_CNCL_TXN_ID NUMBER(16) For cancel/rewrite – during the rewrite transaction, tracks the cancellation trans action ID for finalization
PolicyTransaction REW_NEW_POL_NO_IN VARCHAR2(1) Indicates if the rewrite keeps the same policy number or generates a new one
PolicyTransaction SIGN_ON_USER_ID NUMBER(16) Foreign key to the employee table – logged in user
PolicyTransaction SIGNED_APP_IN VARCHAR2(1) Indicates if a signed applica tion was received. Captured at policy issuance
PolicyTransaction SIGNED_APP_RCVD_DT DATE Date the signed application was received
PolicyTransaction SOURCE_CD VARCHAR2(20) Future use. App, electronic
Developer Guide Risk-Based Architecture PUBLIC 255 Class ColumnName DataType Comment
PolicyTransaction TERM_POLICY_PREM_AMT NUMBER(16,2) Not used
PolicyTransaction TXN_COMMENTS_TX VARCHAR2(100) Description of the endorse ment. Set to 'New Business' automatically for NB
PolicyTransaction TXN_DECLINE_IN_CD VARCHAR2(20) Not used
PolicyTransaction TXN_DECLINE_REASON VARCHAR2(255) Declination reason, as en tered by user
PolicyTransaction TXN_EFFECTIVE_DT DATE Effective date of the transac tion defaults to policy effec- tive date OR most recent transaction date, if later.
PolicyTransaction TXN_EXPIRATION_DT DATE Expiration date of the trans action, defaults to term expi ration date
PolicyTransaction TXN_PREM_AMT NUMBER(16,2) Delta premium for the trans action. Denormalized from selected quote
PolicyTransaction TXN_PROCESS_CD VARCHAR2(20) Used for workflow navigation
PolicyTransaction TXN_SEQ_NO NUMBER(5) Sequence number of the transaction
PolicyTransaction TXN_STATUS_CD VARCHAR2(20) State of the transaction:
● CRE – Created ● ABN – Abandoned ● LOS – Lost ● REF – Referred ● QUO – Quoted ● BOU – Bound ● REV – Reversed ● ISS – Issued ● PEN – Pending Renewal ● DEC – Declined
PolicyTransaction TXN_TYPE_CD VARCHAR2(30) Type of transaction:
● NEWBUS ● RENEWAL ● REWRITE ● CANCEL ● REINSTATE ● RIX – Reissue ● END – Endorsement
Developer Guide 256 PUBLIC Risk-Based Architecture Class ColumnName DataType Comment
PolicyTransaction UW_OF_RECORD_ID NUMBER(16) Underwriter of record for cur rent and future transactions.
Note
This column is depre cated.
PolicyTransaction WORKING_USER_ID NUMBER(16) Current working user – broker, UW, manager – the user currently executing the transaction
Note
This column is depre cated.
PolicyTransaction LAST_STATUS_CHG_TS DATE Timestamp when the status of the policy transaction was changed
PolicyTransaction OOSE_IN VARCHAR(1) Indicates if the transaction is involved in an OOS set of transactions. Used for OOS transaction ordering
PolicyTransaction TARGET_TXN_IN NUMBER(16) Used for OOS transaction handling
PolicyTransaction PRINT_PREVIEW_IN VARCHAR(1) Selected by a user to deter mine if the document gener ation engine should flag a generated print request as draft.
PolicyTransaction BATCH_PRINT_IN VARCHAR(1) Indicates to the document generation engine to batch print the policy
PolicyTransaction DEFAULT_COMMIS NUMBER(4,1) Default commission amount, SION_PCT as configured for the broker or agent
PolicyTransaction PREV_TXN_EFFECTIVE_DT DATETIME Effective date of the previous transaction
PolicyTransaction QUOTE_DT DATE Stores the initial date the transaction was quoted.
PolicyTransaction TS_MAIL_DT DATE Customer specific column.
PolicyTransaction TS_COMMENTS_TX VARCHAR2(500) Customer specific column.
PolicyTransaction TS_NOTICE_TYPE_CD VARCHAR2(5) Customer specific column.
PolicyTransaction TS_ACTION_TX VARCHAR2(15) Customer specific column.
PolicyTransaction TS_REASON_CD VARCHAR2(15) Customer specific column.
Developer Guide Risk-Based Architecture PUBLIC 257 Class ColumnName DataType Comment
PolicyTransaction COUNTERSIG_NO_TX VARCHAR2(20) Used for the Counter Signa ture field on the Issue screen for only Illinois.
PolicyTransaction PRINT_WAIT_SEC NUMBER(5) Customer specific column.
PolicyTransaction PREV_OOSE_IN VARCHAR2(1) Used in OOS processing.
PolicyTransaction TS_TASK_STATUS NUMBER(3) Customer specific column.
PolicyTransaction COUNTERSIG_REQ_IN VARCHAR2(1) Flag on whether or not the counter signature is required.
PolicyTransaction RENEWAL_LAUNCH_TYPE VARCHAR2(50) Used for renewal processing.
PolicyTransaction DISCARD_DT DATETIME
PolicyTransaction TERM_HISTORY_ID NUMBER
7.3.3.3.2 SELECTED_COVERAGE table
The SELECTED_COVERAGE table contains information about the lines of business selected for the policy. For monolines, the single line is automatically selected. Works with the product default and coverage interaction rules.
Class Attribute ColumnName DataType Comment
CoverageGroup lobCode COVERAGE_CD VARCHAR(100)
CoverageGroup lobName LOB_CD VARCHAR(100)
CoverageGroup editionDate DATETIME
7.3.3.3.3 OOS_WORKING_TXN table
Class Attribute ColumnName DataType Comment
OosActivity transactionId TXN_PK_ID NUMBER Reference to POL ICY_TXN for each transaction involved in the OOS process.
OosActivity effectiveDate EFFECTIVE_DT DATE Effective date of the transaction.
Developer Guide 258 PUBLIC Risk-Based Architecture Class Attribute ColumnName DataType Comment
OosActivity type TYPE_CD VARCHAR2(5) Type of transactions. For example, RAP, REV, and OSE.
OosActivity status STATUS_CD VARCHAR2(5) Transaction process status. For example, CFL (conflict), CMT (committed), and PND (pending).
OosActivity isCloned CLONED_IN VARCHAR2(5) Used to indicate that when a transaction has been cloned, to reap ply the transaction to the policy.
OosActivity id PK_ID NUMBER Core Column – Pri mary Identifier
OosActivity parentId PARENT_ID NUMBER Core Column – Parent table Foreign Key – in this case, PK_ID of POLICY_TXN for the OOS transaction.
OosActivity isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
OosActivity displayOrder DISPLAY_ORDER NUMBER The order to display the working transac tions in.
OosActivity previousId PREV_PK_ID NUMBER Core Column – Used for record cloning – ID of previous record
OosActivity displayOrder DELTA_FILE_NAME VARCHAR2(300) The fully qualified name of the file where the delta of two trans actions is stored.
OosActivity comments TXN_COMMENTS_TX VARCHAR2(250) The user entered text for the OOS transac tion.
OosActivity transactionalPremium PREM_ADD_RET_AMT NUMBER The calculated differ- ence in premium that's added or returned.
Developer Guide Risk-Based Architecture PUBLIC 259 Class Attribute ColumnName DataType Comment
OosActivity clonedTransactionId PREV_TXN_PK_ID NUMBER Reference to the re cord in POLICY_TXN that this record was copied from.
OosActivity annualizedPremium PREM_ANNUAL NUMBER Annualized premium IZED_AMT for the transaction.
7.3.3.3.4 OOS_CONFLICT table
Class Attribute ColumnName DataType Comment
OosConflict id PK_ID NUMBER Core Column – Pri mary Identifier
OosConflict parentId PARENT_ID NUMBER Core Column – Parent table Foreign Key – in this case, PK_ID of OOS_WORKING_TXN.
OosConflict isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
OosConflict type TYPE_CD VARCHAR2(10) Specifies if it is a hard or soft conflict.
OosConflict riskName RISK_TABLE_TX VARCHAR2(50) The table name of the risk where the conflict occurs.
OosConflict riskDescription RISK_DESC_TX VARCHAR2(100) Description of the risk where the conflict oc curs.
OosConflict riskId RISK_PK_ID NUMBER Reference to the risk table where the con flict occurs.
OosConflict riskSequenceId RISK_OBJECT_ID VARCHAR2(25) Reference to the SEQ_NO_ID in the risk table.
OosConflict conflictColumn COLUMN_NAME_TX VARCHAR2(50) The column where the conflict occurred.
Developer Guide 260 PUBLIC Risk-Based Architecture Class Attribute ColumnName DataType Comment
OosConflict conflictDescription COLUMN_DESC_TX VARCHAR2(200) Description of the col umn where the conflict occurred.
OosConflict conflictFixMessage MESSAGE_TX VARCHAR2(250) A message describing how to fix the conflict.
OosConflict oosEffectiveDate OOSE_EFF_DT DATE The effective date of the OOS endorsement transaction.
OosConflict beforeOoseColumn OOSE_BEFORE_TX VARCHAR2(200) The value of the COL UMN_NAME_TX col umn before the OOSE transaction.
OosConflict afterOoseColumn OOSE_AFTER_TX VARCHAR2(200) The value of the COL UMN_NAME_TX col umn after the OOSE transaction.
OosConflict reapplyEffectiveDate REAP_EFF_DT DATE The effective date of the reapply endorse ment transaction.
OosConflict beforeReapplyColumn REAP_BEFORE_TX VARCHAR2(200) The value of the COL UMN_NAME_TX col umn before the reapply transaction.
OosConflict afterReapplyColumn REAP_AFTER_TX VARCHAR2(200) The value of the COL UMN_NAME_TX col umn after the reapply transaction.
OosConflict resolutionAction ACTION_CD VARCHAR2(10) Describes which action was taken to resolve the conflict, for exam ple, OOSE, REAP, or ACCEPT.
OosConflict previousId PREV_PK_ID NUMBER Core Column – Used for record cloning – ID of previous record
OosConflict conflictParentTable PARENT_TA VARCHAR2(50) The table that COL BLE_NAME UMN_NAME_TX be longs to.
Developer Guide Risk-Based Architecture PUBLIC 261 Class Attribute ColumnName DataType Comment
OosConflict reapplyComments REAP_COM VARCHAR2(250) User entered transac MENTS_TX tion comments from the reapply transac tion.
OosConflict ooseComments OOSE_COM VARCHAR2(250) User entered transac MENTS_TX tion comments from the OOSE transaction.
OosConflict coverageCode COVERAGE_CD VARCHAR2(100) The coverage where the conflict occurred.
7.3.3.3.5 TRANSACTION_PARTY_ROLE table
The TRANSACTION_PARTY_ROLE table contains information about the relationship between a transaction and parties (working user or previous working user).
Class Attribute ColumnName DataType Comment
TransactionPartyRole id PK_ID NUMBER(16) Core Column – Pri mary Identifier
TransactionPartyRole isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
TransactionPartyRole parentId PARENT_ID NUMBER(16) Core Column – Parent table Foreign Key – in this case, PK_ID of TRANSACTION.
TransactionPartyRole partyId PARTY_ID NUMBER(16)
TransactionPartyRole effectiveDate EFFECTIVE_DT DATETIME
TransactionPartyRole expirationDate EXPIRATION_DT DATETIME
TransactionPartyRole roleType ROLE_TYPE VARCHAR The role type must be the following:
● WU—Working User of the associ ated Transaction
Developer Guide 262 PUBLIC Risk-Based Architecture 7.3.3.4 Policy Quote
Policy Quote contains the quote-specific data for any quotes or quote options. The quote set of tables stores all the policy details, including all risks, selected coverage options, forms, and premium.
7.3.3.4.1 POLICY_QUOTE table
The POLICY_QUOTE table contains the premium and identification details for all quotes. It is also the table that the main product tables extend from to capture product-specific data.
Class Attribute ColumnName Data Type Comment
Option, PolicyDetails id PK_ID NUMBER(16) Core Column – Pri mary Identifier
PolicyDetails isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
PolicyDetails previousId PREV_PK_ID NUMBER(16) Core Column – Used for record cloning – ID of previous record
PolicyDetails createdBy CREATE_USERID_TX VARCHAR2(254) Core Column – User ID that created the re cord.
PolicyDetails createdOn CREATE_TS DATE Core Column – Time stamp when the record was created
PolicyDetails updatedBy UPDATE_USERID_TX VARCHAR2(254) Core Column – User ID that last updated the record
PolicyDetails updatedOn UPDATE_TS DATE Core Column – Time stamp when the record was updated
Option optionSequenceNo OPTION_SEQ_NO NUMBER(3) Unique identifier of op tion, within quote
Option prevOptionStatus PREV_QUOTE_STA VARCHAR TUS
PolicyDetails effectiveDate EFFECTIVE_DT DATE Transaction effective date
Developer Guide Risk-Based Architecture PUBLIC 263 Class Attribute ColumnName Data Type Comment
PolicyDetails expirationDate EXPIRATION_DT DATE Transaction expiration date
PolicyDetails isActive ACTIVE_IN VARCHAR2(1) 'N' if the quote is inac tive
PolicyDetails annualizedCommissio ANN_COMMIS NUMBER(16,2) Annualized commis nAmt SION_AMT sion, calculated as a percent of premium
PolicyDetails contextDate APP_CONTEXT_DATE DATE Used to look up against the product to pull the proper rates and val ues
PolicyDetails overriddenCancella CNCL_OVR_PREM_AM NUMBER(16) When cancelling, the tionPremiumAmt T return premium, if overridden by the un derwriter
Option declineReason DECLINE_REASON VARCHAR2(255) As entered by under writer
PolicyDetails changedPremiumAmt PREM_ADD_RET_AMT NUMBER(16) Delta premium
PolicyDetails annualizedPremiu PREM_ANNUAL NUMBER(16) Annualized premium mAmt IZED_AMT
PolicyDetails earnedPremiumAmt PREM_EARNED_AMT NUMBER(16,2) Earned premium
PolicyDetails previousAnnualized PREM_PREV_AN NUMBER(16) Previous annualized PremiumAmt NUALIZED_AMT premium (for delta cal culation)
PolicyDetails termPremiumAmt PREM_TERM_AMT NUMBER(16) Term premium
PolicyDetails previousEarnedPre PREV_PREM__EARNE NUMBER(16,2) Previous earned pre miumAmt D_AMT mium (for earned pre mium calc)
PolicyDetails proRatedCommissio PRORATE_COMMIS NUMBER(16,2) Prorated commission, nAmt SION_AMT for endorsement
PolicyDetails prorateRatio PRORATE_RATIO_RT NUMBER(16,14) Ratio of number of days of coverage for transaction to days in 1 year
Developer Guide 264 PUBLIC Risk-Based Architecture Class Attribute ColumnName Data Type Comment
Option optionStatus QUOTE_NUMBER_TX VARCHAR2(25) Unique number as signed to a quote, prior to a policy being gener ated
PolicyDetails referralAcceptedNo REF_ACCEPTED_NO NUMBER(3) Referral processing – number accepted
PolicyDetails referralDeclinedNo REF_DECLINED_NO NUMBER(3) Referral processing – number declined
PolicyDetails referralEscalatedNo REF_ESCALATED_NO NUMBER(3) Referral processing – number escalated
PolicyDetails referralNotHandled REF_NOT_HAN NUMBER(3) Referral schedule – DLED_NO number yet to be han dled
PolicyDetails termRatio TERM_RATIO_RT NUMBER(16,14) Ratio of number of days of coverage for full term to days in 1 year
PolicyDetails sequenceId SEQ_NO_ID NUMBER(16,0) Sequence number of the quote
Option quoteDate QUOTE_DT DATE Date that the quote was generated
PolicyDetails isTerrorismCoverage TERRORISM_IN VARCHAR(1) Indicates if terrorism Selected was globally selected for the quote
PolicyDetails printRequestTypeCode PRINT_REQ_TYPE_CD VARCHAR(50) Used for document generation – the type of print request.
PolicyDetails isShowPrintPreview PRINT_PREVIEW_IN VARCHAR(1) Indicates to the docu ment generation serv ices if a printed docu ment is to be marked as draft.
PolicyDetails terrorismCoverage TERRORISM_TIER_CD VARCHAR(1) Rating field – the tier TierCode for terrorism, if se lected globally
PolicyDetails terrorismCoverageTer TERRORISM_TERRI VARCHAR(5) Rating field – the terri ritoryCode TORY_CD tory for terrorism
Developer Guide Risk-Based Architecture PUBLIC 265 Class Attribute ColumnName Data Type Comment
PolicyDetails specialtyBrokerCode SPE VARCHAR(20) For E&S Lines – the CIALTY_BROKER_CD broker responsible for recording the specialty business
PolicyDetails specialtyBrokerNum SPE VARCHAR(50) For E&S Lines – the ber CIALTY_BROKER_NM broker responsible for recording the specialty business
PolicyDetails terrorismFactor TERROR NUMBER(10,3) Rating value - tier fac ISM_TIER_FACTOR tor for terrorism, if se lected globally.
PolicyDetails commissionAmount COMMISSION_AMT NUMBER(16,2) The amount of com mission for the trans action
PolicyDetails remarks REMARKS_TX VARCHAR(500) Underwriter remarks, to be printed on the quote letter
PolicyDetails cancellationMinimum CAN NUMBER(6,3) Minimum premium to PremiumPercentage CEL_MIN_PREM_PCT be retained during can cellation
PolicyDetails minimumPremiumPer MIN_PREM_PCT NUMBER(6,3) Minimum Premium centage
Option statusUpdatedOn LAST_STA DATE Timestamp when the TUS_CHG_TS status of the policy transaction was changed
PolicyDetails primaryRiskState TEMP_RISK_STATE_C VARCHAR2(100) Customer specific col D umn.
7.3.3.4.2 REFERRAL table
The REFERRAL table contains all the triggered referrals and the actions taken by underwriters on those referrals.
Developer Guide 266 PUBLIC Risk-Based Architecture Class Attribute ColumnName DataType Comment
Referral id PK_ID INTEGER Core Column – Pri mary Identifier
Referral parentId PARENT_ID INTEGER Core Column – Parent table Foreign Key – in this case, PK_ID of POLICY_QUOTE
Referral isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
Referral previousId PREV_PK_ID INTEGER Core Column – Used for record cloning – ID of previous record
Referral coverageCode CVG_CD VARCHAR(100) Coverage for which the referral applies
Referral referralCode REFERRAL_CD VARCHAR(100) Referral code, as con figured in the product
Referral overrideCode OVERRIDE_CD VARCHAR(20) Minimum authority which can override the referral
Referral triggerColumn COLUMN_NAME_TX VARCHAR(100) Product attribute which triggered the re ferral
Referral isAccepted ACCEPT_IN VARCHAR(1) Indicates if the referral was accepted
Referral isDeclined DECLINE_IN VARCHAR(1) Indicates if the referral was declined (causing a declination of the quote)
Referral isReferred ESCALATE_IN VARCHAR2(1) Indicates if the referral has been referred to a higher level.
Referral createdOn REFERRAL_DT DATE The date the referral is triggered.
Referral value VALUE_TX VARCHAR2(255) The value that trig gered the referral (number, which can be used in a calculation).
Developer Guide Risk-Based Architecture PUBLIC 267 Class Attribute ColumnName DataType Comment
Referral policyTxnRecordId RECORD_ID NUMBER Reference to the POLICY_TXN table.
Referral reason REASON_TX VARCHAR2(500) The description for why the referral hap pened.
Referral triggeredRiskId RISK_ID NUMBER PK_ID of the risk that triggered the referral.
Referral sequenceId SEQ_NO_ID NUMBER Unique identifier
Referral triggerRiskSequenceId RISK_OBJ_ID NUMBER The sequence number ID of the risk that trig gered the referral.
Referral triggerRiskParentId PARENT_RISK_PK_ID NUMBER Reference to the pa rent table of the risk that triggered the re ferral.
7.3.3.4.3 FORM table
The FORM table contains all of the policy forms, notices, endorsements, and other documents that attach to the policy.
Class Attribute ColumnName DataType Comment
Form id PK_ID NUMBER(16) Core Column – Pri mary Identifier
Form isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
Form previousId PREV_PK_ID NUMBER(16) Core Column – Used for record cloning – ID of previous record
Form createdBy CREATE_USERID_TX VARCHAR2(254) Core Column – User ID that created the re cord.
Developer Guide 268 PUBLIC Risk-Based Architecture Class Attribute ColumnName DataType Comment
Form createdOn CREATE_TS DATE Core Column – Time stamp when the record was created
Form updatedBy UPDATE_USERID_TX VARCHAR2(254) Core Column – User ID that last updated the record
Form updatedOn UPDATE_TS DATE Core Column – Time stamp when the record was updated
Form isDeselectionAllowed ALLOW_DESELEC VARCHAR2(1) Is the form mandatory, TION_IN or can it be deselected
Form isMultipleAllowed ALLOW_MULTIPLE_IN VARCHAR2(1) Can multiples of the form be attached?
Form isSelectionAllowed ALLOW_SELEC VARCHAR2(1) Can the form be man TION_IN ually selected
Form attachType ATTACH_SOURCE_TX VARCHAR2(254) How the form was at tached (auto or man ual)
Form clausName CLAUSE_NAME VARCHAR2(250) Used to manage form clauses – name of clause
Form clausNumber CLAUSE_NO VARCHAR2(10) Used to manage form clauses- number
Form hasContinuationPage CONTINUA VARCHAR2(1) Indicates if the form TION_PAGE_IN has a continuation page (used for some doc generation en gines)
Form coverageCode COVERAGE_CD VARCHAR2(254) Coverage the form ap plies to
Form description2 DESCRIPTION VARCHAR2(250) Description of the form
Form isDeselected DESELECTED_IN VARCHAR2(1) If form was deselected by the user
Developer Guide Risk-Based Architecture PUBLIC 269 Class Attribute ColumnName DataType Comment
Form isDisplayOnEndorse DISPLAY_INDICATOR CHAR(1) 'N' indicates the form ment doesn't display in the endorsement list on the screen
Form docManagementId DOC_MGMT_ID VARCHAR2(20) ID of the form in the document generation engine
Form editionDate EDITION_DT1 VARCHAR2(10) Edition date of the form
Form effectiveDate EFFECTIVE_DT DATE Effective date of the form
Form endSeqNumber END_SEQ_NO NUMBER(3) Unique sequence num ber for the endorse ment. Displayed on the printed endorsement
Form expirationDate EXPIRATION_DT DATE Expiration date of the form (won't attach af ter that date)
Form isAutoAttached FORM_ATTACH VARCHAR2(1) Is the form auto-at MENT_IN tached
Form description FORM_DESC VARCHAR2(255) Description of the form
Form formName FORM_NAME VARCHAR2(255) Name of the form
Form formNumber FORM_NUMBER VARCHAR2(20) Internal form number, as printed on the form
Form formType FORM_TYPE VARCHAR2(50) Type of form (types custom defined)
Form formTypeCode FORM_TYPE_CD VARCHAR2(10) Type of form (types custom defined)
Form instanceNumber ITERATION_NO NUMBER(16) Iteration of the form (if multiples are allowed)
Form legalFormNumber LEGAL_FORM_NUM VARCHAR2(100) Legal form number BER (may be different than form number)
Form lobCode LOB_CD VARCHAR2(255) Line of business that the form applies to
Developer Guide 270 PUBLIC Risk-Based Architecture Class Attribute ColumnName DataType Comment
Form minimumAuthority MINIMUM_AUTHOR VARCHAR2(10) Minimum authority ITY level to select the form
Form modifiedDate MODIFIED_DT DATE Date the form was modified
Form overriddenPremiumA OVERRID NUMBER(16,2) Overridden premium mount DEN_PREM_MOD_AM T
Form pcd PCD VARCHAR2(40) Part code for the form
Form isPremiumOverriden PREM_OVR_IN VARCHAR2(1) Indicates if calculated premium can be over ridden
Form premiumAmt PREMIUM_MOD_AMT NUMBER(16,2) Calculated premium amount
Form isPremiumAttached PREMIUM_MOD_IN VARCHAR2(1) Indicates if form has a premium attached
Form isToBePrinted RISK_ID NUMBER(16) PK_ID of the risk the form attached to
Form riskTable RISK_TA VARCHAR2(50) Type of risk the form BLE_NAME_TX attaches to
Form isScheduleRequired SCHEDULE_INDICA CHAR(1) Does the form require TOR a schedule to be at tached
Form sequenceId SEQ_NO_ID NUMBER(16) Unique, cross transac tion sequence number
Form stateApplicable STATE_APPLICA VARCHAR2(254) List of states that the BLE_TX form applies to
Form hasSysVariableData SYS_VARIA VARCHAR2(1) Indicates if the form BLE_DATA_IN has variable data de faulted by system calc fields
Form hasVariableDate VARIABLE_DATA_IN VARCHAR2(1) Indicates if the form has variable data
Form comments COMMENTS_TX VARCHAR(250) Optional – if any com ments were attached to the form
Developer Guide Risk-Based Architecture PUBLIC 271 Class Attribute ColumnName DataType Comment
Form stateCode STATE_CD VARCHAR(5) Indicates if the form applies to only one state
Form riskObjId RISK_OBJ_ID NUMBER(16,0) The unique ID of the risk to which the form applies. Only popu lated if not a policy level form
Form taxIdWhenAdded TXN_WHEN_ADDED_P NUMBER(16,0) Used for post-bind. In K_ID dicates what transac tion the form was added on so that an endorsement print re quest can print just the forms added on that transaction
Form manuscriptPremiu MANU_PREM_AMT NUMBER(16,2) Manuscript premium nAmt amount.
Form manuscriptMajorPeril MANU_MA VARCHAR2(20) Manuscript major peril Code JOR_PERIL_CD code.
Form manuscriptMinor MANU_MI VARCHAR2(20) Manuscript minor ClassCode NOR_CLASS_CD class code.
Form manuscriptText MANU_TX VARCHAR2(4000) Stores the text of the Manuscript.
Form manuscriptSubline MANU_SUBLINE_CD VARCHAR2(10) Manuscript subline Code code.
Form manuscriptDescription MANU_DESC_TX VARCHAR2(100) Manuscript description text.
Form manuscriptId MANU_ID_TX VARCHAR2(30) Manuscript ID text.
Form manuscriptRiskState MANU_RISK_STATE_C VARCHAR2(5) Manuscript risk state Code D code.
Form manuscriptStatCode MANU_STAT_CD VARCHAR2(20) Manuscript state code.
Form manuscriptHasFlatCh MANU_FLATCHRG_IN VARCHAR2(5) Manuscript flat rate arge charge flag.
Form isManuscriptValidFor MANU_VALID_FOR_LO VARCHAR2(1) Manuscript valid for Loss SS_IN loss flag.
7.3.3.4.4 FORM_VARIABLE_DATA table
The FORM_VARIABLE_DATA contains data that's specific to a form that isn't captured through the application process.
Developer Guide 272 PUBLIC Risk-Based Architecture Class Attribute ColumnName DataType Comment
FormVariableData1 isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
FormVariableData1 createdBy CREATE_USERID_TX VARCHAR(254) Core Column – User ID that created the re cord.
FormVariableData1 createdOn CREATE_TS DATETIME Core Column – Time stamp when the record was created
FormVariableData1 updatedBy UPDATE_USERID_TX VARCHAR(254) Core Column – User ID that last updated the record
FormVariableData1 updatedOn UPDATE_TS DATETIME Core Column – Time stamp when the record was updated
FormVariableData1 displayStateCode DISPLAY_STATE_CD VARCHAR(10) Used to filter the ques tion based on domicile state
FormVariableData1 isDataRequired REQUIRED_IN VARCHAR(1) Indicates if the data is required or optional for the form
VariableData value VALUE_TX VARCHAR(512) Value entered in the variable data screen
FormVariableData1 isActiveStatus ACTIVE_STATUS_IN VARCHAR(1) Defines if the ques tion's active (should be shown on the screen)
VariableData questionId QUES_ID VARCHAR2(50) Unique key for the question
VariableData dataType QUES_DATA_TYPE VARCHAR(20) Text, Number, Date
FormVariableData1 mandatoryQuestion IS_QUES_MANDA VARCHAR(5) Indicates if the data's TORY required or optional for the form
VariableData sequenceId SEQ_NO_ID NUMBER(16,0) Sequences the ques tions on the screen
FormVariableData1 questionExtraProperty QUES_EXTRA_PROP VARCHAR2(250) Used to control screen ERTY display
Developer Guide Risk-Based Architecture PUBLIC 273 Class Attribute ColumnName DataType Comment
FormVariableData1 childQuestionTrigger CHILD_QUES_TRIG VARCHAR(5) Used to control screen Value GER_VALUE display
FormVariableData1 questionOtherIn IS_QUES_OTHER VARCHAR2(10) Used to control screen display
FormVariableData1 questionQuesTrigger PARENT_QUES_TRIG VARCHAR(5) Used to control screen Value GER_VALUE display
FormVariableData1 questionControlStyle QUES_CON VARCHAR(50) Used to control screen TROL_STYLE display
FormVariableData1 questionDisplayType QUES_DISPLAY_TYPE VARCHAR(20) Used to control screen display
FormVariableData1 questionType QUES_TYPE VARCHAR(10) Used to control screen display
7.3.3.4.5 REASON_COMMENTS table
The REASON_COMMENTS table contains data that corresponds to the Quote Not Taken feature.
Class Attribute ColumnName DataType Comment
QuoteNotTakenInfo date QNT_DATE DATETIME Core Column – Pri mary Identifier
QuoteNotTakenInfo comment COMMENT_TX VARCHAR(256) Core Column – Parent table Foreign Key – in this case, PK_ID of FORM
QuoteNotTakenInfo reason VALUE_TX VARCHAR(256) Core Column – Not used in FS-QUO
7.3.3.4.6 REPEATING_DATA_TABLE table
The REPEATING_DATA_TABLE contains information about the repeating data group, row, and variable data.
Developer Guide 274 PUBLIC Risk-Based Architecture Class Attribute ColumnName DataType Comment
ReapeatingDataTable id PK_ID INTEGER Core Column – Pri mary Identifier
ReapeatingDataTable isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
ReapeatingDataTable previousId PREV_PK_ID INTEGER Core Column – Used for record cloning – ID of previous record
ReapeatingDataTable repeatingGroupName REPEAT VARCHAR(40) Name of the schedule ING_GROUP_NAME
ReapeatingDataTable sequenceId SEQ_NO_ID NUMBER(3) Unique identifier
7.3.3.4.7 REPEATING_DATA_ROW table
Class Attribute ColumnName DataType Comment
RepeatingDataRow id PK_ID INTEGER Core Column – Pri mary Identifier
RepeatingDataRow isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
RepeatingDataRow previousId PREV_PK_ID INTEGER Core Column – Used for record cloning – ID of previous record
RepeatingDataRow rowNumber ROW_NUMBER INTEGER Sequence number of the record
RepeatingDataRow sequenceId SEQ_NO_ID NUMBER(3) Sequence number of the record
Developer Guide Risk-Based Architecture PUBLIC 275 7.3.3.4.8 REPEATING_VARIABLE_DATA table
Class Attribute ColumnName DataType Comment
RepeatingVariableData id PK_ID INTEGER Core Column – Pri mary Identifier
RepeatingVariableData parentId PARENT_ID INTEGER Core Column – Parent table Foreign Key – in this case, PK_ID of REPEATING_VARIABL E_DATA
RepeatingVariableData isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
RepeatingVariableData previousId PREV_PK_ID INTEGER Core Column – Used for record cloning – ID of previous record
RepeatingVariableData isRequired REQUIRED VARCHAR(1) Indicates if the row is required or not
RepeatingVariableData questionId QUESTION_ID VARCHAR(255) Unique identifier for the question
RepeatingVariableData domainCode DOMAIN_CD VARCHAR(10) Text, Number, Date
RepeatingVariableData sequenceId SEQ_NO_ID NUMBER(3) Unique identifier
RepeatingVariableData questionDataType QUES_DATA_TYPE VARCHAR(20) Used to control display
7.3.3.4.9 QUOTE_COVERAGE table
The QUOTE_COVERAGE table contains information about the lines of business and coverages on the quote. The data is used to calculate all premiums and do all statistical coding. Will include coverages at the lowest statistically reported level, as well as any additional fees and taxes.
Class Attribute ColumnName DataType Comment
Coverage id PK_ID INTEGER Core Column – Pri mary Identifier
Coverage isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
Developer Guide 276 PUBLIC Risk-Based Architecture Class Attribute ColumnName DataType Comment
Coverage previousId PREV_PK_ID INTEGER Core Column – Used for record cloning – ID of previous record
Coverage, NonPre coverageTX COVERAGE_TX VARCHAR(100) Description of the cov miumBase erage
NonPremiumBase CoverageType COVERAGETYPE VARCHAR(256)
Coverage CoverageCode COVERAGE_CD VARCHAR(100) Coverage code
Coverage, NonPre isDeselected COVER VARCHAR(1) Indicates if the cover miumBase AGE_QUOTE_FG age was deselected for a particular quote
Coverage, NonPre isSelected COVERAGE_SEL_FG VARCHAR(1) Y or N – coverage can miumBase be deselected
FinancialBase deductibleAmount DEDUCTIBLE_AMT NUMBER(16) Deductible, if applies for the coverage
FinancialBase limitAmount LIMIT_AMT NUMBER(16) Limit, if applies for the coverage
Coverage, NonPre lobCode LOB_CD VARCHAR2(255) The line of business miumBase the coverage is at tached to
Coverage, NonPre transactionId POLICY_TXN_ID NUMBER(16) Same as the PK_ID – miumBase used for denormaliza tion on related records
FinancialBase returnPremium PREM_ADD_RET_AMT NUMBER(16,2) Delta premium (onset/ offset)
FinancialBase annualizedPremium PREM_ANNUAL NUMBER(16,2) Annualized Premium IZED_AMT
FinancialBase cancelReturnPremium PREM_CANCEL_RE NUMBER(16,2) Return premium on a TURN_AMT cancel transaction
FinancialBase earnedPremium PREM_EARNED_AMT NUMBER(16,2) Earned Premium
FinancialBase offsetAmount PREM_OFFSET_AMT NUMBER(16,2) Premium accounting – offset premium
FinancialBase onsetAmount PREM_ONSET_AMT NUMBER(16,2) Premium accounting – onset premium
Developer Guide Risk-Based Architecture PUBLIC 277 Class Attribute ColumnName DataType Comment
FinancialBase previousAnnualized PREM_PREV_AN NUMBER(16,2) Annualized premium Premium NUALIZED_AMT for the previous trans action
FinancialBase termPremium PREM_TERM_AMT NUMBER(16,2) Term premium, ac counting for all trans actions
Coverage, NonPre riskSequenceId RISK_OBJ_ID NUMBER(16) Object ID of the risk miumBase that the coverage ap plies to
Coverage, NonPre riskName RISK_TABLE_TX VARCHAR(50) The type of risk that miumBase the coverage applies to. Physical name of the table
FinancialBase isTax TAX_IN VARCHAR2(1) Indicates if the entry is a tax, surcharge or fee. Used for rollup logic. '1' indicates it is. Blank in dicates the item is a true coverage.
Coverage, NonPre isRemoved REMOVE_IN VARCHAR2(1) Indicates if the cover miumBase age has been removed (in a post-bind trans action)
FinancialBase isRollup ROLLUP_IN VARCHAR2(1) Indicates if the cover age is a lowest level (statistically reported) coverage, or has rolled up premium for display purposes
7.3.3.4.10 QUOTE_ROLLUP table
The QUOTE_ROLLUP table contains information about the rolled up premiums for the various risks. Coverages are rolled up on the QUOTE_COVERAGE table.
Developer Guide 278 PUBLIC Risk-Based Architecture Class Attribute ColumnName DataType Comment
PremiumRollup id PK_ID INTEGER Core Column – Pri mary Identifier
PremiumRollup parentId PARENT_ID INTEGER Core Column – Parent table Foreign Key – in this case, PK_ID of POLICY_QUOTE
PremiumRollup isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
PremiumRollup previousId PREV_PK_ID INTEGER Core Column – Used for record cloning – ID of previous record
PremiumRollup returnPremium PREM_ADD_RET_AMT NUMBER(16,2) Delta premium (onset/ offset)
PremiumRollup annualizedPremium PREM_ANNUAL NUMBER(16,0) Annualized Premium IZED_AMT
PremiumRollup cancelReturnPremium PREM_CANCEL_RE NUMBER(16,2) Return premium on a TURN_AMT cancel transaction
PremiumRollup earnedPremium PREM_EARNED_AMT NUMBER(16,2) Earned Premium
PremiumRollup offsetPremium PREM_OFFSET_AMT NUMBER(16,2) Premium accounting - offset premium
PremiumRollup onsetPremium PREM_ONSET_AMT NUMBER(16,2) Premium accounting - onset premium
PremiumRollup previousAnnualized PREM_PREV_AN NUMBER(16,2) Annualized premium Premium NUALIZED_AMT for the previous trans action
PremiumRollup termPremium PREM_TERM_AMT NUMBER(16,2) Term premium, ac counting for all trans actions
PremiumRollup riskObjectId RISK_OBJ_ID NUMBER(16) Object ID of the risk that the coverage ap plies to
PremiumRollup riskTable RISK_TABLE_TX VARCHAR(50) The type of risk that the coverage applies to. Physical name of the table
Developer Guide Risk-Based Architecture PUBLIC 279 Class Attribute ColumnName DataType Comment
PremiumRollup printRequestTypeCode PRINT_REQ_TYPE_CD VARCHAR(40)
PremiumRollup printRequestId PRINT_REQ_ID NUMBER(16)
PremiumRollup lobCode LOB_CD VARCHAR(255)
PremiumRollup rollupType RISK_TABLE_TX VARCHAR(50)
7.3.4 Supporting Database Tables
This section lists the supporting database tables. Attributes in the Policy Model are mapped to these tables.
7.3.4.1 ADDRESS table
The ADDRESS table is linked to any entity requiring address information.
Class Attribute ColumnName DataType Comment
Address address1 ADDR1_TX VARCHAR(64) Mandatory – line 1 of address
Address address2 ADDR2_TX VARCHAR(64) Optional
Address address3 ADDR3_TX VARCHAR(64) Optional, unused on screens
Address address4 ADDR4_TX VARCHAR(64) Optional, unused on screens
Address city CITY_TX VARCHAR(32) Mandatory – city
Address state STATE_PROV_CD VARCHAR(2) State or province – matches to reference data. Uses North American postal standard
Address zip POSTAL_CD VARCHAR(20) Zip Code (US), Postal code (Canada), as en tered by the user
Developer Guide 280 PUBLIC Risk-Based Architecture Class Attribute ColumnName DataType Comment
Address country COUNTRY_CD VARCHAR(5) Country code – name stored in reference data
Address createdOn CREATE_TS DATETIME Core Column – Time stamp when the record was created
Address updatedOn UPDATE_TS DATETIME Core Column – Time stamp when the record was updated
7.3.4.2 PRODUCER table
The PRODUCER table represents the brokerage or agency on the policy.
Class Attribute Name ColumnName DataType Comment
Producer id PK_ID INTEGER Core Column – Pri mary Identifier
Producer iSDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
Producer previousId PREV_PK_ID INTEGER Core Column – Used for record cloning – ID of previous record
Producer createdBy CREATE_USERID_TX VARCHAR(254) Core Column – User ID that created the re cord.
Producer createdOn CREATE_TS DATETIME Core Column – Time stamp when the record was created
Producer updatedBy UPDATE_USERID_TX VARCHAR(254) Core Column – User ID that last updated the record
Producer updatedOn UPDATE_TS DATETIME Core Column – Time stamp when the record was updated
Developer Guide Risk-Based Architecture PUBLIC 281 Class Attribute Name ColumnName DataType Comment
Producer agencyId PRDCR_CO_ID INTEGER Same as PK_ID
Producer agencyName PRDCR_CO_NM VARCHAR(254) Brokerage or Agency name
Producer regionCode PRDCR_REGION_CD VARCHAR(5) Region in which the producer works
Producer regionName PRDCR_REGION_NM VARCHAR(254) Region in which the producer works
Producer agencyCode PRDCR_CD VARCHAR(10) Business key - pro vided by the licensing system
Producer statusCode PRDCR_STATUS_CD VARCHAR(10) Determines if the pro ducer is active
Producer distributionOffice PRDCR_DIST_CD VARCHAR(3) Distribution Office
Producer branchId BRANCH_ID_TX VARCHAR(10) Branch in which the producer works
Producer agencyWebsite WEBSITE_URL_TX VARCHAR(1024) Brokerage or Agency Website
Producer agencySubId PRDCR_SUB_CODE_T VARCHAR(8) Sub-producer id X
Producer businessAddressId PHYS_ADDR_ID INTEGER Foreign key to the ad dress table – for the physical address
Producer mailingAddressId MAIL_ADDR_ID INTEGER Foreign key to the ad dress table- for the mailing address
Producer isMailAddressDifferent IS_MAIL_ADDR_DIFF CHAR(1) 'Y' indicates that a dif ferent mailing address is used
Producer billType BILL_TYPE VARCHAR(1) Agency or client bill
Producer commissionPercent COMMISSION_PCT NUMBER(4,1) The agent/broker age commission percent age.
Producer terminationDate EXPIRATION_DT DATE Expiration date of the agency.
Developer Guide 282 PUBLIC Risk-Based Architecture Class Attribute Name ColumnName DataType Comment
Producer terminationReason TERMINATE_REASON VARCHAR(1000) User entered text to describe why an agent/broker was ter minated.
7.3.4.3 PRODUCER_REP table
The PRODUCER_REP table defines the contact, agent, or broker responsible for the policy.
Class Attribute ColumnName DataType Comment
ProducerContact id PK_ID INTEGER Core Column – Pri mary Identifier
ProducerContact producerId PRDCR_CO_ID INTEGER Foreign key to the pro ducer table
ProducerContact isDeleted DELETE_FLAG CHAR(1) Core Column – Soft Delete indicator
Individual firstName FIRST_NAME_TX VARCHAR(40) Contact First Name
Individual initial MIDDLE_INITIAL_TX VARCHAR(5) Contact middle initial
Individual lastName SURNAME_TX VARCHAR(40) Contact Last Name
Individual otherGivenName OTHER_GIVEN_NM VARCHAR(40) Contact Other given name (if applicable)
Individual nickName NICK_NM VARCHAR(40) Contact nickname
Individual title TITLE_PREFIX_TX VARCHAR(254) Contact title
ProducerContact phoneType PHONE_TYPE_CD VARCHAR(10) Office, Cell.
ProducerContact phoneNumber PHONE_NUMBER_TX VARCHAR(32) Contact Phone num ber
ProducerContact faxNumber FAX_NUMBER_TX VARCHAR(32) Contact Fax Number
ProducerContact emailAddress EMAIL_ADDR_TX VARCHAR(128) Contact email address
ProducerContact branchId BRANCH_ID_TX VARCHAR(10) Branch at which the contact works
Developer Guide Risk-Based Architecture PUBLIC 283 Class Attribute ColumnName DataType Comment
ProducerContact isNewContact ISNEWCONTACT VARCHAR(1) For navigation - indi cates a new contact being created
ProducerContact isCanceled CANCEL_FG VARCHAR(1) Used for workflow nav igation
7.3.5 Task Database tables
This section lists the database tables related to tasks. Attributes in the Policy Model are mapped to these tables.
7.3.5.1 TASK_ITEM table
The TASK_ITEM table contains all the data related to tasks.
Class Attribute ColumnName DataType Comment
Task id PK_ID NUMBER(16)
Task parentId PARENT_ID NUMBER(16)
Task isDeleted DELETE_FLAG CHAR(1)
Task status STATUS VARCHAR(10)
Task subject TASK_SUBJECT VARCHAR(200)
Task createdDate CREATED_DATE DATETIME
Task lastUpdateDate LAST_UPDATE_DATE DATETIME
Task dueDate DUE_DATE DATETIME
Task assignee ASSIGNEE VARCHAR(50)
Task owner OWNER VARCHAR(50)
Task notes NOTES VARCHAR(500)
Task description DESCRIPTION VARCHAR(500)
Developer Guide 284 PUBLIC Risk-Based Architecture Class Attribute ColumnName DataType Comment
Task priority PRIORITY VARCHAR(10)
Task type TXN_COMMENTS_TX VARCHAR(2)
Task mandatory MANDATORY CHAR(1)
Task transactionId POLICY_TXN_ID NUMBER(16)
TaskType code TASK_TYPE_CD VARCHAR(10)
TaskType description TASK_TYPE_DESC VARCHAR(500)
7.4 Product and Reference Services
Services are functions that FS-QUO applications and external application systems can call to access marketable product and reference data.
Services are defined in the Product Configurator. Each service contains a rule expression that returns a string, looks up data, or performs an operation on data. For example, an FS-QUO business service can call a product service to get product-specific data for a particular policy.
Services comply with key technical and industry standards that let you integrate product data defined in FS- PRO with any technology (for example, SOA, XML, ACORD XML, and IBM IAA).
FS-PRO provides the following two types of services:
Product These services access marketable product definitions and invoke product rule and rating Services execution. For example, you call a product service in an eApp questionnaire field that returns all referrals for a marketable product.
Reference These services access reference object data (static information used to populate dropdown Services lists and common data that's reused across marketable products). For example, you can call a reference service that returns all forms for a specified risk level.
FS-PRO provides a default set of product services and reference services.
7.4.1 User-Defined Services
You can define your own product and reference services. Typically, user-defined product services are used for implementing forms attachments, referral rules, and rating rules.
When you define a rule expression as part of a service, you need to handle or convert the data that the rule is calling for the rule to function properly. This data conversion is required for rating rules. The data handling functions in Rule Painter are called using stems.
Developer Guide Risk-Based Architecture PUBLIC 285 For more information about creating user-defined services, see the Product Configurator User Guide.
7.4.2 Location of the Product Services
The product services are defined in the following location in the Product Configurator: Product Repository
For example, the Mock Company Library provided with FS-QUO includes a a product template. The default product services for the Mock Commercial P and C Product Template are defined in the Service API object.
If you need to add, modify, or delete product services, update the Service API object in your company library's product template. These product services apply to all marketable products that inherit from that template. Alternatively, you can update the Service API object for a specific marketable product. Those changes apply only to that product.
Caution
Your company library's Service API object inherits from the product Service API object in the Commercial P and C Template Library. Don't modify this base object because it can apply to multiple company libraries.
7.4.3 Location of the Reference Services
The reference services are defined in the following location in the Product Configurator: Product Repository
For example, the Mock Company Library provided with FS-QUO includes a reference object template. The default reference services for the Mock Reference Object Template are defined in the Service API object.
If you need to add, modify, or delete reference services, update the Service API object in your company library's reference object template. These services apply to all reference objects that inherit from that template. Alternatively, you can update the Service API object for the countrywide reference object or a specific state reference object. Those changes apply only to that countrywide or state level.
Caution
Your company library's Service API object inherits from the reference Service API object in the Commercial P and C Template Library. Don't modify this base object because it can apply to multiple company libraries.
Developer Guide 286 PUBLIC Risk-Based Architecture 7.4.4 Service API for the Commercial P and C Product Template
The product services for the Commercial P and C Product Template are defined in a Service API object in the Product Configurator. This section describes some of the frequently-used product services provided with FS-PRO.
Related Information
Location of the Product Services [page 286]
7.4.4.1 getCoverageForms
This topic describes the getCoverageForms product service.
Description
Gets all forms in a coverage for a particular risk. These are Coverage Level forms.
Return Type
DataTable
Inputs
CoverageCode
RiskName
Expected Data
Forms Library row
Developer Guide Risk-Based Architecture PUBLIC 287 Sample XPath
//*[@modified_type="COV" and .// *[@modified_type="IDENTIFICATION"]/Code="
7.4.4.2 getCoverageFormsByRisk
This topic describes the getCoverageFormsByRisk product service.
Description
Gets all forms in the Coverage Group for a particular risk. These are Risk Level forms.
Return Type
DataTable
Inputs
CoverageCode
RiskName
Expected Data
Forms Library row
Sample XPath
//*[@modified_type="COV_GROUP" and .// *[@modified_type="IDENTIFICATION"]/Code="MOCK GL"]/Forms// *[@modified_type="FORMS_LIBRARY" and ./Associated_Risk="LOCATION"]
Developer Guide 288 PUBLIC Risk-Based Architecture 7.4.4.3 getCoverageGroupCoverages
This topic describes the getCoverageGroupCoverages product service.
Description
Gets all coverages for a particular coverage group and returns the result as a DataTable object
Return Type
DataTable
Inputs
CoverageGroupCode
Expected Data
Coverage information, such as coverage ID, display name, risk table, parent risk, and rollup indicator
Sample XPath
//*[@modified_type=\"COV_GROUP\"]// *[@modified_type=\"IDENTIFICATION\" and ./Code=\"MOCK GL\"]/ancestor:: *[@modified_type=\"COV_GROUP\"]//*[@modified_type=\"COV\"]/ descendant::*[@modified_type=\"IDENTIFICATION\"]
Developer Guide Risk-Based Architecture PUBLIC 289 7.4.4.4 getCoverageGroupFees
This topic describes the getCoverageGroupFees product service.
Description
Gets all coverage group fee objects and returns the result as a DataTable object
Return Type
DataTable
Inputs
CoverageGroupCode
Expected Data
Fee information, such as fee ID, display name, and risk table
7.4.4.5 getCoverageGroupForms
This topic describes the getCoverageGroupForms product service.
Description
Gets all forms in the Coverage Group (for example, a Declaration page)
Return Type
DataTable
Developer Guide 290 PUBLIC Risk-Based Architecture Inputs
CoverageGroupCode
Expected Data
Forms Library row
Comments
The XPath checks for associated risk to be POLICY_QUOTE or EMPTY.
Sample XPath
//*[@modified_type="COV_GROUP" and .//
*[@modified_type="IDENTIFICATION"]/Code="
*[@modified_type="FORMS_LIBRARY" and (./Associated_Risk="POLICY_QUOTE" or ./ Associated_Risk="")]
7.4.4.6 getCoverageGroups
This topic describes the getCoverageGroups product service.
Description
Gets all coverage groups for the marketable product and returns the result as a DataTable object
Return Type
DataTable
Developer Guide Risk-Based Architecture PUBLIC 291 Inputs
None
Expected Data
Coverage Group information, such as coverage group ID, display name, primary risk table, and rollup indicator
Sample XPath
'//*[@modified_type=\"COV_GROUP\"]/*/Coverage_Group_Id'
7.4.4.7 getCoverageGroupTaxes
This topic describes the getCoverageGroupTaxes product service.
Description
Gets all coverage group tax objects and returns the result as a DataTable object
Return Type
DataTable
Inputs
CoverageGroupCode
Expected Data
Tax information, such as tax ID, display name, and risk table
Developer Guide 292 PUBLIC Risk-Based Architecture 7.4.4.8 getCoveragePremiumHandlingRule
This topic describes the getCoveragePremiumHandlingRule product service.
Description
Given the name of a coverage group and one if its coverages with the name of the feature, this service API goes to the Rating/Premium_Handling component and returns the Rule ID for that coverage given the feature name.
The feature name can be similar to "Pro Rate", "Short Rate", "Flat Rate" "Fully Earned", and so on.
Return Type
DataTable
Inputs
CoverageGroupCode
CoverageCode
RiskName
IterationLevel
Sample XPath
//Coverages/*/*[Identification/COVERAGE_CD="MOCK GL"]/../Rating/ Premium_Handling[FEATURE="Short Rate"]
Developer Guide Risk-Based Architecture PUBLIC 293 7.4.4.9 getCoverageReferralsByRisk
This topic describes the getCoverageReferralsByRisk product service.
Description
Gets all referrals in a coverage group for a particular risk
Return Type
DataTable
7.4.4.10 getCovGroupCoveragesByRisk
This topic describes the getCovGroupCoveragesByRisk product service.
Description
Gets all coverage group coverages for a single risk and returns the result as a DataTable object
Return Type
DataTable
Inputs
CoverageGroupCode
RiskName
Expected Data
Coverage information, such as coverage ID, display name, risk table, parent risk, and rollup indicator
Developer Guide 294 PUBLIC Risk-Based Architecture 7.4.4.11 getCovGroupFeesByRisk
This topic describes the getCovGroupFeesByRisk product service.
Description
Gets all coverage group fees for a single risk and returns the result as a DataTable object
Return Type
DataTable
Inputs
CoverageGroupCode
RiskName
Expected Data
Tax information, such as tax ID, display name, and risk table
7.4.4.12 getCovGroupTaxesByRisk
This topic describes the getCovGroupTaxesByRisk product service.
Description
Gets all coverage group taxes for a single risk and returns the result as a DataTable object
Return Type
DataTable
Developer Guide Risk-Based Architecture PUBLIC 295 Inputs
CoverageGroupCode
RiskName
Expected Data
Tax information, such as tax ID, display name, and risk table
7.4.4.13 getCovGroupWithCoverage
This topic describes the getCovGroupWithCoverage product service.
Description
When given the unique name of a coverage in a product, this service API returns the name (specifically, the Code value) of the coverage group that it is specified under. This values is written to QUOTE_COVERAGE.LOB_CD.
Return Type
DataTable
Inputs
CoverageCode
Expected Data
Use this service API to get coverage group information that the coverage is contained in.
Developer Guide 296 PUBLIC Risk-Based Architecture Sample XPath
"/*/Coverages/*[.//Coverages/*/Identification/Identification/ COVERAGE_CD="Electronic Data"]/Identification/Identification"
Returns "Commercial General"
7.4.4.14 getDefaultRisk
This topic describes the getDefaultRisk product service.
Description
Gets the default risk that's added when a new policy is created
Return Type
String
Inputs
None
Comments
product.valueLookUp(ServiceCommand,'//*/Config[KEY=\"defaultRisk\"]', 'VALUE', '')
If value isn't empty, return the value. Otherwise, return an empty string.
Sample XPath
//*/Config[KEY=\"defaultRisk\"]
Developer Guide Risk-Based Architecture PUBLIC 297
7.4.4.15 getDefaultRiskRule
This topic describes the getDefaultRiskRule product service.
Description
Gets the default risk title that will be displayed on the Navigation Bar under the default risk
Return Type
String
Inputs
None
7.4.4.16 getFormUsageForCoverage
This topic describes the getFormUsageForCoverage product service.
Description
Retrieves a list of forms to attach to a particular coverage
Return Type
DataTable
Developer Guide 298 PUBLIC Risk-Based Architecture Inputs
CoverageGroupCode
CoverageCode
Expected Data
A list of form numbers
7.4.4.17 getFormUsageForPolicyRisk
This topic describes the getFormUsageForPolicyRisk product service.
Description
Retrieves a list of forms to attach to the policy risk
Return Type
DataTable
Inputs
None
Expected Data
A list of form numbers
Developer Guide Risk-Based Architecture PUBLIC 299 7.4.4.18 getFormUsageForRisk
This topic describes the getFormUsageForRisk product service.
Description
Retrieves a list of forms to attach to a particular risk
Return Type
DataTable
Inputs
CoverageGroupCode
Expected Data
A list of form numbers
7.4.4.19 getProductForms
This topic describes the getProductForms product service.
Description
Gets all forms in the marketable product (for example, President's Letter, Policy Jacket, and so on)
Return Type
DataTable
Developer Guide 300 PUBLIC Risk-Based Architecture Inputs
Expected Data
Forms Library row
Sample XPath
/*[@modified_type="PROD_BAS"]/Forms// *[@modified_type="FORMS_LIBRARY"]
7.4.4.20 getProductReferrals
This topic describes the getProductReferrals product service.
Description
Gets all referrals for a marketable product
Return Type
DataTable
7.4.4.21 getRiskHierarchy
This topic describes the getRiskHierarchy product service.
Description
Gets the risk hierarchy information and returns a DataTable object
Developer Guide Risk-Based Architecture PUBLIC 301 Return Type
DataTable
Inputs
CoverageGroupCode
7.4.4.22 getVarDataQuestionsForForm
This topic describes the getVarDataQuestionsForForm product service.
Description
Gets variable data questions for a particular form based on a unique ID
Expected Data
Variable Data row
Sample XPath
//*[@modified_type="FORMS_LIBRARY" and PCD=1685099 and (EXPIRY_DATE="" or translate(substring-before(EXPIRY_DATE," "), "-","")>=translate(substring-before("2009-07-21 00:00:00.0"," "),"-","")) and (EFFECTIVE_DATE="" or translate(substring-before(EFFECTIVE_DATE," "),"-","")<=translate(substring-before ("2009-07-21 00:00:00.0"," "),"-",""))]/*[@modified_type="QUES_BAS"]
Developer Guide 302 PUBLIC Risk-Based Architecture 7.4.4.23 hasNavBar
This topic describes the hasNavBar product service.
Description
Used in Initial Limits and Retentions flow to determine whether the product will use the Navigation Bar
Return Type
Boolean
Inputs
None
7.4.4.24 hasPrimaryApp
This topic describes the hasPrimaryApp product service.
Description
Determine whether the product has a Primary Application eApp.
Business Logic
Query product for Primary Application eApp:
Product.queryProduct(ServiceCommand, '//Applications/eApp/ eApplication[EAPP_NAME=\"Primary Application\"]', '')
If the eApp exists, return 'Yes'. Otherwise, return 'No'.
Developer Guide Risk-Based Architecture PUBLIC 303 Return Type
Boolean
Inputs
None
Comments
product.valueLookUp(ServiceCommand,'// */Config[KEY=\"hasPrimaryApp\"]', 'VALUE', '')
If value is true, return true. Otherwise, return false.
Sample XPath
//*/Config[KEY=\"hasPrimaryApp\"]
7.4.4.25 resetCoverageGroupRating
This topic describes the resetCoverageGroupRating product service.
Description
Invokes the rule to reset rating factors and premiums for a specific coverage group.
The expected rule name is resetCoverageGroupRating.
Return Type
String
Developer Guide 304 PUBLIC Risk-Based Architecture Inputs
CoverageGroupCode
7.4.4.26 resetCoverageRating
This topic describes the resetCoverageRating product service.
Description
Invokes the coverage rule to reset rating factors and premiums at a specific risk level and iteration (for example, pass 1, pass 2, and so on).
It is expected that a single rule exists at each risk level.
Return Type
String
Inputs
CoverageGroupCode
CoverageCode
RiskName
IterationLevel
7.4.4.27 runCoverageGroupRating
This topic describes the runCoverageGroupRating product service.
Description
Invokes the rating calculation for a specific coverage group.
Developer Guide Risk-Based Architecture PUBLIC 305 The expected rule name is runCoverageGroupRating.
Return Type
String
Inputs
CoverageGroupCode
7.4.4.28 runCoverageRating
This topic describes the runCoverageRating product service.
Description
Invokes the coverage rating rule at a specific risk level and iteration (for example, pass 1, pass 2, and so on). It is expected that a single rule exists at each risk level.
Return Type
String
Inputs
CoverageGroupCode
CoverageCode
RiskName
IterationLevel
Developer Guide 306 PUBLIC Risk-Based Architecture 7.4.4.29 runInitQuoteDefaults
This topic describes the runInitQuoteDefaults product service.
Description
Called by GetQuoteDefaults_1_1 in the doService method to set the SUBJECT field in the URS (Updatable Result Set)
Return Type
String
Inputs
CoverageGroupCode
Comments
Open the getInitQuoteDefaults rule in the Commercial P and C Product Template
7.4.5 Service API for the Commercial P and C Reference Object Template
The reference services for the Commercial P and C Reference Object Template are defined in a Service API object in FS-PRO Product Configurator. This section describes the reference services provided with FS-PRO.
Developer Guide Risk-Based Architecture PUBLIC 307 7.4.5.1 getFormEditions
This topic describes the getFormEditions reference service.
Description
Retrieves the form editions available for a particular form
Return Type
DataTable
Inputs
Form PCD
Expected Data
Edition date
Effective date
Expiry date
7.4.5.2 getForms
This topic describes the getFormEditions reference service.
Description
Retrieves the Form details for a particular risk level (POLICY_QUOTE, LOCATION, and so on)
Developer Guide 308 PUBLIC Risk-Based Architecture Return Type
DataTable
Inputs
AssociatedRisk
Expected Data
Form data (form name, form number, attachment indicator and rule, selection indicator and rule, and so on)
7.4.5.3 getRepeatingData
This topic describes the getRepeatingData reference service.
Description
Retrieves the repeating data for a form, if configured
Return Type
DataTable
Inputs
Question PK_ID
Expected Data
Column headers and types for a repeating grid
Developer Guide Risk-Based Architecture PUBLIC 309 7.4.5.4 getVariableData
This topic describes the getVariableData reference service.
Description
Retrieves the variable data for a form, if configured
Return Type
DataTable
Inputs
Edition PCD
Expected Data
Variable data information (question ID, question type, question text, and so on)
7.5 Using Stems
In FS-QUO, a stem is a short name that represents a Java class. These classes contain related functions that you can use in rule expressions in FS-PRO Product Configurator.
Context
For example, the com.camilion.as.stem.QuoteOption class (quoteOption stem) contains an updateCoverageAnnualizedPremium function. You can define a rule that calls that function to update the policy model with the annualized premium amount for a specified coverage.
Note
With any rule, but particularly with rating rules, you must handle or convert the data that the rule returns for the rule to function properly. The data handling functions in Rule Painter are called using stems.
Developer Guide 310 PUBLIC Risk-Based Architecture You can use stems to specify a function in a rule expression.
Procedure
1. Define a rule in Rule Painter. 2. Perform one of the following actions in the Expression Editor:
○ Enter the name of the stem that contains the function you want to use.
○ Choose and select the stem from the Stem List dialog.
The stem name is added as the first element (the rule object) in the expression. 3. Enter a period (.) at then end of the stem name. The Functions List dialog opens and displays the list of functions for the specified stem. 4. Select the function that you want use. The function signature is added to the expression. 5. Complete the rule expression as appropriate.
Next Steps
Whenever a stem is specified, the ServiceCommand is passed to the rule. For the rule to be executable, you must include the following within the ServiceCommand:
● A reference to a valid URS (Updatable Result Set) for the key MasterResultSet and ResultSet. ● A reference to a Policy Transaction Transfer Object (PTTO) for the key transferObject.
Note
As a general rule, a reference to a PTTO should always be passed in when calling rules.
7.5.1 Stem Classes and Functions
This topic lists the the stems provided in FS-QUO.
Stem Name Source
account com.camilion.as.stem.
AccountStem com.camilion.as.stem.AccountStem
ASDataTypeStem com.camilion.as.stem.ASDataTypeStem
Developer Guide Risk-Based Architecture PUBLIC 311 Stem Name Source
ASFlowStem com.camilion.as.stem.ASFlowStem
ASPolicyModelStem com.camilion.as.stem.ASPolicyModelStem
ASPremiumAuditStem com.camilion.as.stem.ASPremiumAuditStem
ASServiceMethodStem com.camilion.as.stem.ASServiceMethodStem
ASStemUtil com.camilion.as.stem.ASStemUtil
bpLookup com.camilion.as.stem.FSPMIntegrationBPLookupStem
COVRATING com.camilion.custom.stems.CoverageRating
DisplayIllustration com.sap.fs.quo.core.stem.DisplayIllustrationServiceStem
Flowstore com.camilion.custom.stems.FlowStore
FormsValidation com.camilion.as.stem.FormsValidation
LOC com.camilion.custom.stems.LocationUtility
ModelQuestion com.camilion.as.stem.ModelQuestion
POLICY com.camilion.util.functions.FormsFunctionLibrary
PrintDataTypeMapping com.camilion.custom.stems.PrintDataTypeMapping
QUERYTOTABLE com.camilion.custom.stems.QueryToDataTable
quoteOption com.camilion.as.stem.QuoteOption
rating com.camilion.custom.stems.Rating
ratingrollup com.camilion.custom.stems.Rollup
Reference com.camilion.custom.stems.ReferenceUtil
REFERRAL com.camilion.custom.stems.Referral
ResetRating com.camilion.custom.stems.ResetRating
Risk com.camilion.as.stem.ASRiskStem
ROLLUP com.camilion.custom.stems.RiskPremiumRollup
STATRATING com.camilion.custom.stems.StatisticalRating
TransactionStem com.camilion.as.stem.TransactionStem
UsersList com.camilion.custom.stems.UsersList
Developer Guide 312 PUBLIC Risk-Based Architecture Stem Name Source
userStem com.camilion.as.stem.User
util com.camilion.custom.util.UtilLibrary
Notes:
● Any stem that isn't listed in this topic is reserved for internal use by SAP or is deprecated. ● For more information about the stem classes and their functions and arguments, see the FS-QUO javadoc. ● In addition to the FS-QUO stems, FS-PRO provides system stems that you can use (for example, form., data., step., PRODUCT., and ProductService.). For more information about system stems, see the rule objects topics in the Product Configurator User Guide.
7.5.2 Accessing the javadoc
You can view the FS-QUO javadoc to see details about the stem classes and their functions and arguments. This javadoc contains information about the FS-QUO API.
Context
For details about the business service classes and methods, see the FS-QUO javadoc. This javadoc contains information about the FS-QUO API. For information about business services,see the following packages:
● com.camilion.as.asservice ● com.camilion.as.service.business.*
Procedure
1. Contact your FS-QUO administrator to get the FS-QUO software download ZIP file.
The ZIP file is available to customers in the SAP Software Download Center under PRODUCT AND QUOTATION MGMT. 2. From the software ZIP file, find the following file and unzip it: FS-QUO The files are extracted. 3. Open index.html in a browser.
Results
The javadoc is displayed.
Developer Guide Risk-Based Architecture PUBLIC 313 Related Information
Stem Classes and Functions [page 311]
7.5.3 Adding a Stem Class
You can add a stem class that performs tasks specific to your organization.
Context
In FS-QUO, a stem is a short name that represents a Java class. These classes contain related functions that you can use in rule expressions in the Product Configurator.
Procedure
1. Extend the stem implementation class and stem class. 2. (Optional) Test the extended stem classes in FS-QUO. 3. Upload the new stem class to FS-PRO. 4. Register the stem in the FS-PRO Function Library.
7.5.3.1 Extending Stem Implementation Classes and Stem Classes
This topic details how to extend a stem implementation class and stem class to create a stem that performs tasks specific to your organization.
Context
Caution
For extensibility, don't modify an existing stem class to add methods. Instead, to add methods, add a stem class.
Developer Guide 314 PUBLIC Risk-Based Architecture Stems consist of two types of classes:
Stem These implementation classes extend the StemProxy class. They contain the logic implementation that performs tasks. class These classes reside in FS-QUO. Each implementation class corresponds to a stem class.
Stem class These classes extend the FunctionLibraryBase class. Each class acts as an interface to a corresponding stem implementation class. For Rule Painter to use these class signatures, you must upload and register these classes in FS-PRO.
Procedure
1. Find the stem implementation class that you want to extend from the following location: / ASLibrary/src/com/camilion/as/stem/impl For example, TransactionImpl.java. 2. Extend the stem implementation class and add the functions you need. 3. Save the file. 4. Find the stem class that corresponds to the implementation class from the following location: / ASLibrary/src/com/camilion/as/stem/impl For example, TransactionImpl.java. 5. Extend the stem class and add the signatures that correspond to the extended implementation class. 6. Save the file. 7. Package the extended classes in a JAR file (for example, custom_aslib.jar) and upload it to the server. 8. Modify the Java classpath to load your custom JAR file before the FS-QUO JAR file.
Results
The stem implementation class and stem class are extended.
Related Information
Modifying the Java Classpath [page 156]
Developer Guide Risk-Based Architecture PUBLIC 315 7.5.3.2 Testing the Extended Stem Classes in FS-QUO
This topic details how to test your extended stem classes in FS-QUO during development.
Context
Note
After testing, remove these extended stem classes from the FS-QUO folder. For production, you'll package the extension files and upload them to the FS-PRO Administrative Console.
Procedure
1. Log in to the FS-QUO Administrative Console.
2. Go to System Edit File System . The PA - Custom Web Root (Write) tree appears. 3. Select AuthoritySuite - Custom Class Folder (Write) from the Path dropdown list in the navigation pane. The AuthoritySuite - Custom Class Folder (Write) tree appears. 4. Create folders that match the package name of your stem classes: a. Right-click in the main pane and select New Folder. The Folder Name dialog opens. b. Enter com, and choose OK. The com library is created. c. Repeat steps a-b to create folders required to establish the following path: com/camilion/as/stem/ impl 5. Navigate to the stem folder and upload your new stem class: a. Right-click in the main pane and select Upload.
The Upload Files dialog opens. b. Browse for the stem definition and stem class that you created. c. Choose Upload. The stem definition and class are uploaded and displayed. 6. Navigate to the impl folder and upload your implementation file: a. Right-click in the main pane and select Upload
The Upload Files dialog opens. b. Browse for the implementation file that you created. c. Choose Upload. The implementation file is uploaded and displayed. 7. Restart the FS-QUO server.
Developer Guide 316 PUBLIC Risk-Based Architecture Results
The stems are uploaded to FS-QUO and can be used by rules.
Related Information
Uploading New Stem Classes to FS-PRO [page 317]
7.5.3.3 Uploading New Stem Classes to FS-PRO
Context
For FS-PRO to access the new stem class that you extended, you must upload it to the FS-PRO Administrative Console.
Remember
You don't need to upload the stem implementation class.
To upload the new stem class to FS-PRO, perform the following steps:
Procedure
1. Log in to the FS-PRO Administrative Console.
2. Go to System Edit File System .
The PA - Custom Web Root (Write) tree appears. 3. Select PS - Custom Class from the Path dropdown list in the navigation pane.
The PS - Custom Class tree appears. 4. Expand the tree and navigate to the com/camilion/as/stem folder where the stem classes were created. If this location doesn't exist, create the appropriate folders by performing the following steps: a. Right-click in the main pane and select New Folder. The Folder Name dialog opens. b. Enter com as the folder name. c. Choose OK. The com library is created.
Developer Guide Risk-Based Architecture PUBLIC 317 d. Repeat steps a-b to create folders for the following path: com/camilion/as/stem 5. Upload your new stem class, as follows: a. Right-click in the main pane and select Upload.
The Upload Files dialog opens. b. Browse for the stem definition and stem class that you created. Don't select the implementation class. c. Choose Upload.
Results
The new stem class is uploaded and displayed.
Next Steps
If you make changes to the extended stem classes later, you must re-package the extended classes in a JAR file (for example, custom_aslib.jar), upload the JAR file to the server, and upload the stem class to FS-PRO again.
7.5.3.4 Registering Stems in the FS-PRO Function Library
The Function Library is a registry of stems in FS-PRO. You must register the new stem class in the Function Library so that the Rule Painter can access it.
Procedure
1. Log in to the FS-PRO Administrative Console.
2. Choose System Register Function Library > . The Library Manager appears. 3. Complete the following fields in the Register a New Function Library section:
Class Name Specifies the fully qualified name of the stem class that you uploaded to the PS - Custom Class. Example: com.camilion.as.stem.ExtendedStemName, com.camilion.custom.stems.ExtendedStemName
Library Name Specifies the name of the library.
Developer Guide 318 PUBLIC Risk-Based Architecture Library Defines a short description of the stem. Description
Stem Name Defines the name of the stem. Use a naming convention that distinguishes your stem name. This name is used in rules. We recommend that you specify a name that corresponds to the Java class name (for example,
Stem Defines synonyms for the stem name. Synonyms You can enter a synonym in Rule Painter to access the same stem. This field is optional.
4. Choose Register. The stem class is registered in the Function Library. A new row appears in the Current Function Libraries table containing the stem information. 5. In the row for the new stem class, choose Validate. The validation result indicates that the stem appears to be valid.
7.6 Configuring Premium Audits
FS-QUO lets you process audits on policies to adjust the premium.
Context
Marketable products aren't auditable by default. If you want to make a marketable product auditable, configure the fields, screens, and permissions in the Product Configurator. You must configure premium audits at the marketable product level and coverage (risk) level.
Tip
For more information about processing premium audit transactions, see the SAP Underwriting for Insurance Help or the SAP Underwriting for Insurance Functional Guide.
To configure premium audits for each of your marketable products, you must make changes in Product Configurator.
Developer Guide Risk-Based Architecture PUBLIC 319 Procedure
1. Configure the premium audit parameters for a marketable product 2. Configure a deposit premium calculation 3. Configure a Premium Audit eApp at the Product level 4. Configure a Premium Audit eApp at the Coverage Group level 5. Configure a Premium Audit eApp for a Coverage 6. Configure fields that impact the premium calculation 7. Assign permissions to process premium audits 8. (Optional) Set up the premium audit parameter rules. 9. (Optional) Assign permission to change premium audit parameters post-bind. 10. (Optional) Set up automatic waiving of premium audit intervals. 11. (Optional) Assign permission to manually waive premium audit intervals. 12. (Optional) Configure premium audit override.
7.6.1 Configuring Premium Audit Parameters for a Marketable Product
In the Product Configurator, configure the available values for the premium audit parameters for each marketable product.
Context
For these marketable products that are configured to be auditable, FS-QUO lets you enter the values for premium audit parameters for all transactions (except for Cancel, Reinstate, Reverse, and Extend). For example, you can specify whether a policy is to be audited and when to perform the audit.
Tip
For more information about the component attributes described in this procedure, see the Standardized Product Model Help. Navigate to P and C Insurance Structure P and C Insurance Product Template to see the premium audit components.
Procedure
1. Log in to Product Configurator. 2. Open the marketable product that you want to configure premium audit parameters for. 3. Configure, save, and commit the following parameters if you want to set parameters for audit eligibility, lead days, and post due dates:
Developer Guide 320 PUBLIC Risk-Based Architecture Premium Audit Eligibility Indicates whether a product is eligible for auditing.
Location of the component to configure:
Location of the component to configure:
Location of the component to configure:
Location of the component to configure:
Location of the component to configure:
Location of the component to configure:
If a frequency value doesn't apply to your product, you can remove the value from the list by deselecting the row.
7. Configure, save, and commit the following parameter if you want to set parameters for audit override: Premium Audit Override Defines the override reasons.
Location of the component to configure:
Developer Guide Risk-Based Architecture PUBLIC 321 8. Publish the marketable product.
Results
The premium audit parameters are configured for the marketable product.
Related Information
Adding a New Type of Audit Frequency [page 323] Configuring Premium Audit Override [page 334]
7.6.1.1 Configuring Column Rules for Premium Audit Risk Coverage Risk Description Column
Depending on your company implementation you may want a value populated in the Risk Description column on the premium audit adjustment screen.
To populate this value you need to add a rule to the product to update each impacted
For more information, see the Adding Rules to Standard eApp Data Elements topic in the Product Configurator User Guide.
Notes:
● It could be defaulted or set some other way. However, no Service API is called in the product to set it. ● The
Developer Guide 322 PUBLIC Risk-Based Architecture 7.6.1.2 Adding a New Type of Audit Frequency
The P and C Insurance Product Template in the Product Configurator provides common frequency values for premium audits in the Audit Frequency component. If you want to add a new type of frequency, you must code your own audit intervals generator class.
Context
Note
For more information about the Audit Frequencies component and attributes, see the Standardized Product Model Help.
Procedure
1. Create a new class that extends the following abstract class: com.camilion.as.asservice.premiumaudit.PremiumAuditIntervalsGenerator 2. Implement the following two methods:
createIntervals Creates audit intervals and attaches them to the premium audit schedule.
getMinimumNumberOfIntervals Returns the minimum number of audit intervals that the policy must have in the policy term.
3. Add the new audit frequency in the Product Configurator as follows:
a. Log in to the Product Configurator, and open the following component:
Related Information
Extending a Business Service [page 167]
Developer Guide Risk-Based Architecture PUBLIC 323 7.6.2 Configuring Deposit Premium Calculations
To calculate the deposit premiums for your marketable product, write your own rule.
Context
When a policy is issued, FS-QUO calls the calculateDepositPremium product service API to calculate the deposit premium. By default, this service in the P and C Insurance Product Template contains a rule that returns the value 0.
Note
The deposit premium value is calculated based on the policy data and appears on the Premium Audit screen. You can use this value for your own data processing.
Procedure
1. Open the following component in the Product Configurator:
Results
The calculateDepositPremium row is overridden.
Developer Guide 324 PUBLIC Risk-Based Architecture 7.6.3 Configuring Premium Audit eApps at the Product Level
For the coverage eApp to appear in the FS-QUO, you must first configure an eApp at the product level.
Context
Note
For more information about creating eApps, see the enhanced eApps topics in the Product Configurator User Guide.
Procedure
1. Log in to Product Configurator. 2. Open the marketable product that the coverage is a part of.
3. Create an eApp layout in the following folder:
4. Create an eApp Layout Section in the following folder:
Related Information
Working with the Simplified Insurance Application Renderer [page 141]
Developer Guide Risk-Based Architecture PUBLIC 325 7.6.4 Configuring Premium Audit eApps at the Coverage Group Level
For the coverage eApp to appear in FS-QUO, you must configure an eApp at the coverage group level.
Context
Note
For more information about creating eApps, see the enhanced eApps topics in the Product Configurator User Guide.
Procedure
1. Log in to Product Configurator. 2. Open the marketable product that the coverage is a part of.
3. Create an eApp layout in the following folder:
Note
The eApp Name must be the same as Target eApp name that you configured in the eApp Layout Section component at the product level. This configuration connects the eApps.
4. Create an eApp layout section in the following folder:
Related Information
Working with the Simplified Insurance Application Renderer [page 141]
Developer Guide 326 PUBLIC Risk-Based Architecture 7.6.5 Configuring Premium Audit eApps for a Coverage
Context
A coverage or risk is eligible for a premium audit if the following criteria are met:
● The coverage belongs to a marketable product that's eligible for a premium audit. ● A premium audit eApp (questionnaire) is configured in Product Configurator for the coverage.
The eApp lets users enter actual audit values for a risk or coverage in FS-QUO. The eApp appears as part of the Audit Premium screen.
Note
Perform this procedure for every coverage in your marketable product that's auditable.
For more information about the Audit Config Coverage component and attributes, see the Standardized Product Model Help. For more information about creating eApps, see the enhanced eApps topics in the Product Configurator User Guide.
Procedure
1. Log in to Product Configurator. 2. Open the marketable product that the coverage is a part of. 3. Create a questionnaire.
4. Create an eApp in the following folder:
Note
The eApp Name must be the same as Target eApp name that you configured in the eApp Layout Section component at the coverage group level. This configuration connects the eApps.
5. Set Disable Section and Disable screen to Y. The table of contents or tabs are excluded.
6. Create an eApp Section in the following folder:
7. Create an eApp screen in the following folder:
10. Go to the following location:
Developer Guide Risk-Based Architecture PUBLIC 327 premiumAuditEApp The name of the new eApp. Associated_Risk The risk level that this coverage is associated with. 12. Publish the marketable product. 13. Restart the server.
Results
For the specified auditable risk, the new eApp (questionnaire) appears as part of the Audit Premium screen in FS-QUO.
Related Information
Working with the Simplified Insurance Application Renderer [page 141]
7.6.6 Configuring Fields that Impact Premium Calculation
To calculate the premium audit adjustment amount, all of the data changes made within the interval that impact the premium are processed. In the Product Configurator, you must specify which fields impact premium calculation.
Procedure
1. Log in to Product Configurator. 2. Open the data definition that you want to configure. 3. For each field that impacts premium calculation, do the following: a. Determine which table column in the data model it maps to. b. Expand data model name table name Column in the Product Tree. The Column component displays. c. Select the Values tab. The column details are displayed. d. Find the column name that maps to the user input field. e. Right-click the row heading (the left-most cell) of the row. A menu displays. f. Choose Override.
Developer Guide 328 PUBLIC Risk-Based Architecture g. Select Override association and value, and choose Select. The row is now local and can be modified. h. Scroll to the USAGE_TYPE column. i. Select the cell and the down arrow. A dropdown list displays. j. Select [IN] - Input Field from the dropdown list. k. Save your changes. 4. Publish the marketable product. 5. Restart the server.
7.6.7 Assigning Permissions to Process Premium Audits
Permissions need to be assigned to allow for the processing of premium audits.
Procedure
1. Log in to Product Configurator. 2. Open the Extended Underwriting Application Configuration object in your library. 3. Expand the Role Framework (1.0D) folder. 4. Select the Role (1.0D) component. 5. Select the Values tab. 6. Select the on the row for the Underwiter Role Name. 7. Select All from the Views dropdown list. 8. Select the checkbox for the permissionCodes for the following permissions, if they aren't already selected: ○ editPremiumAuditSchedule ○ editPremiumAuditAdjustment ○ overrideAuditPremium ○ premiumAuditPolicy ○ reversePremiumAuditAdjustment ○ viewPremiumAuditAdjustment 9. Save your changes to anchor your selections. 10. Repeat steps 4 to 7 for Senior Underwriter and UW Manager Role Name
Related Information
Permissions Provided with FS-QUO [page 204]
Developer Guide Risk-Based Architecture PUBLIC 329 7.6.8 Setting up Premium Audit Parameter Rules
For marketable products that are configured to be auditable, FS-QUO lets you enter premium audit values for all transactions (except for Cancel, Reinstate, Reverse, and Extend).
Context
Instead of having users enter these values, you can set up rules in Product Configurator that automatically determine the following premium audit parameters (settings):
● Subject to audit ● Audit frequency ● Audit method ● Audit reason
These rules run for all policy transactions. The rules determine the values based on policy data. For example, audit frequency and audit method might depend on the term premium and classification codes.
These rules are likely based on term premium, classification codes, and transaction type. In general, a rule can be based on any data populated within a transaction prior to the issue of a transaction and any premium audit parameter for the schedule the intervals belong to.
Notes:
● Product eligibility for premium audits takes priority over the premium audit parameter rules. In other words, if a policy isn't eligible for premium audits, the rules don't run. ● Premium audit parameter rules aren't date dependent. In other words, only one set of rules is available to run at any given time. ● If a premium audit parameter rule is changed, different rules might run for some transactions during the same policy term. ● If you need to trigger audits by date, you can build date logic in the rule. ● On the Issue Policy screen, premium audit parameters that are automatically generated can't be manually overridden during a policy transaction. However, they can be overridden using the More Actions Change Premium Audit Parameters option on the View Policy Summary screen, depending on your permissions. The exception is the Subject to Audit field, which can be changed at anytime.
Procedure
1. Log in to Product Configurator.
2. Open the following component:
Developer Guide 330 PUBLIC Risk-Based Architecture ○ getSubjectToAudit
Notes: ○ By default getSubjectToAudit returns No, so the premium audit fields in FS-QUO aren't enabled. ○ If getSubjectToAudit returns Yes or the Subject to Audit field is set to Yes, the getAuditFrequency, getAuditMethod, getAuditReason rules run. By default, these rules return a blank value. You can override these rules. ○ If you set up these rules to automatically generate the premium audit parameters, users can't override the values on the Issue Policy screen. 4. Save and commit the changes. 5. Publish the marketable product.
Results
The premium audit parameter rows are overridden. The defined rules run for all policy transactions.
7.6.9 Assigning Permission to Change Premium Audit Parameters Post-Bind
You can assign this permission to other roles as needed.
Context
By default, the UW Manager role in FS-QUO has the permission to change premium audit parameters after a new business has been issued. For example, a producer, insured, or underwriter might request changes to the audit frequency or audit method outside of post-bind transactions.
Procedure
1. Log in to Product Configurator. 2. Open your extended Underwriting Application Configuration object. Typically, the object is named Extended Underwriting Application Configuration and is located in the
3. Open the Role Framework Role component. 4. In the Values tab, expand the row for the role that you want to modify, and anchor the following row: Permission changePremAuditParameters 5. Save and commit the change.
Developer Guide Risk-Based Architecture PUBLIC 331 6. Publish the extended Underwriting Application Configuration object.
Results
The specified role can change premium audit parameters during post-bind transactions.
7.6.10 Setting up Automatic Waiving of Premium Audit Intervals
Context
Premium audit intervals can be manually waived. For any policy transaction, premium audit intervals can also be waived automatically based on rules using criteria such as term premium and class codes. The waived transaction triggers a message when audit intervals are automatically waived.
Notes:
● Product eligibility for premium audits takes priority over the waive rule. In other words, if a policy isn't eligible for premium audits, the waiver rule doesn't run. ● Waiver rules aren't date dependent. In other words, only one set of rules is available to run at any given time. ● If the waiver rule is changed, different rules might run for some transactions during the same policy term. ● On the Issue Policy screen, you can automatically waive intervals. To waive coverages, you must perform a manual waive.
Procedure
1. Log in to Product Configurator.
2. Open the following component:
Developer Guide 332 PUBLIC Risk-Based Architecture Results
The getAutoWaiveEligible row is overridden. This rule runs for all policy transactions to determine whether premium audit intervals are waived automatically.
7.6.11 Assigning Permission to Manually Waive Premium Audit Intervals
Context
On the View Premium Audit List screen in FS-QUO, the UW Manager and Underwriter roles can manually waive Due premium audit intervals, Overdue intervals, and the next Scheduled interval. You can assign this permission to other roles as needed.
Procedure
1. Log in to Product Configurator. 2. Open your extended Underwriting Application Configuration object. Typically, the object is named Extended Underwriting Application Configuration and is located in the
3. Open the Role Framework Role component. 4. In the Values tab, expand the row for the role that you want to modify, and anchor the following row: Permission waiveInterval . 5. Save and commit the change. 6. Publish the extended Underwriting Application Configuration object.
Results
The specified role can waive scheduled premium audit intervals.
Developer Guide Risk-Based Architecture PUBLIC 333 7.6.12 Configuring Premium Audit Override
You can change the override reasons shown and the distribution of the adjustment amount to the coverages.
Context
When you perform a premium audit adjustment in FS-QUO, you can override the transactional premium at the policy level for an audit interval. The Premium Audit Adjustment screen is configured to show a default set of override reasons. The premium audit adjustment amount is distributed equally among the coverages (risks), including taxes and fees.
Procedure
1. Log in to Product Configurator.
2. Open the following component:
7.7 Selecting a Ratebook
FS-QUO 2.0 introduced capabilities for using different ratebooks. The ratebook selection feature lets you define a particular set of rates that apply to policies written on or after a certain date using the appropriate rates, rules, and forms (for a specific state) for a defined effective period.
When upgrading to FS-QUO 2.0 and any subsequent Support Package for the first time, manual configurations related to ratebook selection are required. These configurations also apply to new installations.
During an upgrade, the following updates are required, whether you use ratebook selection or not:
● Updates to your custom flowstore risk tables. These changes are performed as part of the process described in the SAP Underwriting for Insurance Support Package Upgrade Guide. ● Updates to the Risk Hierarchy component, main eApp, and Ratebook eApp for each marketable product. If you are using multiple ratebooks, you must also configure the Reference Object Link component.
Developer Guide 334 PUBLIC Risk-Based Architecture Class diagram example
The illustration provided are based on the ISO GL product and a risk structure of: Policy_Quote: Location and Classification. The structure of your Marketable Product determines the number of rows required when configuring the Risk Hierarchy component.
There is only one physical data model for a given line of business and it's used across multiple versions. The application context date is an attribute of all risks (in the RiskBase class). The following diagram provides an illustration:
Note
The currentRefVersion and recentRefVersion attributes are part of the Riskbase class so that all risks would inherit those attributes. The system populates the currentRefVersion and recentRefVersion attributes (by running the reference rule) for the risk after the context date is populated.
Related Information
Example: Adding a Risk Type [page 62] Configuring Ratebook Selection [page 336]
Developer Guide Risk-Based Architecture PUBLIC 335 7.7.1 Configuring Ratebook Selection
When migrating to new versions of FS-QUO, you must make configuration changes in the Product Configurator to support ratebook selection.
Context
Note
Verify that the corresponding flowstore risk tables were updated for the risks you're working with.
Procedure
1. Create ratebooks by adding rows to a reference object in the Product Configurator. For each ratebook, specify the Effective Date and Expiration Date. For more information about configuring the reference object, see the Product Configurator User Guide and Standardized Product Model Help. This step is only required if you're using multiple ratebooks. 2. Configure Application_Context_Date_Rule for each risk. 3. Configure Reference_Object_Version_Rule for each risk. 4. Configure Inherit_Parent_Reference_Indicator for each risk. 5. Configure the Reference Object Link component This step is only required if you're using multiple ratebooks. 6. Configure the main eApp 7. Configure the Ratebook eApp 8. Assign permissions related to Ratebooks 9. Publish the marketable product. 10. Restart the Product Configurator server.
Related Information
Example: Adding a Risk Type [page 62]
Developer Guide 336 PUBLIC Risk-Based Architecture 7.7.1.1 Configuring Application_Context_Date_Rule for Each Risk
For each coverage group in a marketable product, define an application context date rule for each risk.
Context
This rule returns a date representing the context date for the associated risks. For example, in the Class diagram example, 123 King Street is an associated risk for the risk type, LOCATION.
Tip
For more information about the Application_Context_Date_Rule attribute, see the Risk Hierarchy topic in the SAP Product Lifecycle Management for Insurance Standardized Product Model Help.
Procedure
1. Log in to Product Configurator.
2. Open the following object:
Example: Context rule
The following is an example of a context rule (in pseudo code):
If transaction type = new business II cancel/rewrite II endorsement Returns effective date of the term Else if transaction type = renewal Returns effective date of the renewal term End
Developer Guide Risk-Based Architecture PUBLIC 337 7.7.1.2 Configuring Reference_Object_Version_Rule for Each Risk
For each coverage group in a marketable product, define a rule for each risk that returns a data table representing the latest version of the state reference object available for the associated risks.
Context
Note
The following procedure must be completed for all risks in your structure.
For more information about the Reference_Object_Version_Rule attribute, see the Risk Hierarchy topic in the SAP Product Lifecycle Management for Insurance Standardized Product Model Help.
Procedure
1. Log in to Product Configurator.
2. Open the following object:
Example: Reference rule
The following is an example of a reference rule (in pseudo code):
If context date for the associated risk is not null If state code for the associated risk (by running the state code rule) is not null Returns latest version with context date, state code, LOB and transaction type as inputs to the Reference Object Link component End End
Developer Guide 338 PUBLIC Risk-Based Architecture 7.7.1.3 Configuring Inherit_Parent_Reference_Indicator for Each Risk
Context
The Inherit_parent_Reference_Indicator determines whether the instances of the associated risk type should inherit the state reference version from their parents if the indicator is set to Y. This can reduce manual configuration.
If the indicator is set to N for the associated risk type, all of its instances appear in the Ratebook tab under the Update Ratebook Version column (displaying the version number and date) in FS-QUO, whenever there are new versions of the state reference objects available for them.
Notes:
● If the column isn't specified for a risk type, the default indicator value is N. ● Changing the default indicator is only required if you are using multiple rate books and you want to display instances of the associated risk type to allow an Underwriter to select the appropriate version and date.
Procedure
1. Log in to Product Configurator.
2. Open the following object:
Developer Guide Risk-Based Architecture PUBLIC 339 7.7.1.4 Configuring the Reference Object Link Component
Context
If you are using multiple ratebooks, create entries for new ratebook dates by setting the transaction type in the Reference Object Link component. Add an individual row in the Reference Object Link component for each transaction type and version number. If you are using a single ratebook, you can skip this task.
Notes:
● If you are adding a new row to the Reference Object Link component, you must attach (anchor) the row to the Reference Object Line component. ● If you are only modifying an existing row, you don't need to reattach it to the Reference Object Line component. ● Before you delete a row from the Reference Object Link component, you must first detach (deselect the checkbox) the row from the Reference Object Line component. ● In your marketable product, check that AppConfigProduct is set to
To configure the Reference Object Link component, perform the following steps:
Procedure
1. Log in to Product Configurator. 2. Open your Reference Config object.
This object is usually assembled in the following location:
3. Open the following object:
Developer Guide 340 PUBLIC Risk-Based Architecture Example: Reference Object Link configuration
An example of configuring the Reference Object Link component is illustrated in the following table:
Transaction Reference Ob Version Num PCD State Code Type ject Name ber Effective Date Expiration Date
1699554 OH NEWBUS GL REFERENCE 1 01-01-2011 01-01-2012 OH
16995545 OH RENEWAL GL REFERENCE 1 03-01-2011 03-01-2012 OH
1699556 OH NEWBUS GL REFERENCE 2 01-01-2012 01-01-2013 OH
For information about the attributes and acceptable transaction types in the Reference Object Link component, see the following topic in the Standardized Product Model Help: Product Studio System Repository Underwriting Application Template Library Components Reference Object Link .
7.7.1.5 Configuring the Main eApp
Context
Depending on your company implementation, it is the product analyst's responsibility to add or change any validation rules for a field or question in the eApp to enforce any required restrictions.
For example, a field or question may not contain a validation rule because its input was previously restricted by the UI or a dropdown list. As another example, a field or question may need a validation rule to display or hide depending on the version number.
Notes
● For more information on configuring objects, see the configuring objects topics in the Product Configurator User Guide. ● For more information on adding rules see the Rule Scripting Language topics in the Product Configurator User Guide.
Developer Guide Risk-Based Architecture PUBLIC 341 7.7.1.6 Configuring the Ratebook eApp
You can configure the provided Ratebook eApp as part of your main eApp.
Context
The Ratebook eApp shows a tab that lists all the risks in the policy transaction that have multiple ratebooks. Roles that have the updateReferenceProduct permission can select which version of the ratebook to use.
Tip
By default, the Underwriter, UW Manager, and Senior Underwriter roles are granted the UpdateReferenceProduct permission. To use this default permission setting, you must configure the Ratebook eApp. If you don't want to use the Ratebook eApp, deselect the UpdateReferenceProduct permission from all the roles.
For more information on configuring objects, see the configuring objects topics in the Product Configurator User Guide.
Procedure
1. Log in to Product Configurator.
2. Open the following object:
5. Open the following object:
Developer Guide 342 PUBLIC Risk-Based Architecture Related Information
Setting up Permissions for a Role [page 199]
7.7.1.7 Assigning Permissions Related to Ratebooks
While a policy transaction is in progress, a new ratebook can become available. The following permissions let you select the version to use:
UpdateMarketableProduct Grants the permission to choose whether to use the latest version of a ratebook at the policy level. In the Review Quote activity, a message appears prompting you to use the latest ratebook or continue using the current version. If you choose to use the latest ratebook, all the options and risks of that quote are updated to use the latest version.
UpdateReferenceProduct Grants the permission to select and use a version of a ratebook when multiple versions are available. You can select a ratebook version for each risk.
Remember
If the Ratebook eApp isn't configured within your main eApp, don't grant the UpdateReferenceProduct permission to any roles. You must also deselect this permission from the Underwriter, UW Manager, and Senior Underwriter roles (the default settings). Otherwise, the ratebook isn't automatically updated to the latest version, but the appropriate tab and fields aren't displayed to let you update the version.
By default, the following roles have these UpdateMarketableProduct and UpdateReferenceProduct permissions:
● Underwriter ● UW Manager ● Senior Underwriter
If you (for example, the Producer role) don't have these permissions, the quote is automatically updated with the latest available version of the ratebook.
You can grant or deny these permissions to role types as needed.
Related Information
Setting up Permissions for a Role [page 199]
Developer Guide Risk-Based Architecture PUBLIC 343 7.7.2 Example of Ratebook Selection Configuration
To help you with configuring ratebook selection, see the Mock Commercial General Liability Monoline example product provided out of the box in the Product Configurator.
Note
To see Mock Commercial General Liability Monoline, you must have imported the Mock GL Underwriting Bootstrap during the migration process. For more information about this bootstrap, see the SAP Underwriting for Insurance Migration Guide.
7.7.2.1 Viewing the Risk Hierarchy Rules in the Mock Product Example
This task is part of the example of ratebook selection configuration.
Context
The ratebook selection configuration involves defining rules for the following attributes in the Product Configurator:
● Application_Context_Date_Rule ● Reference_Object_Version_Rule ● Inherit_Parent_Reference_Indicator
To help you see how these rules are configured, you can view the sample rules in the Mock Commercial General Liability Monoline product.
Procedure
1. Log in to Product Configurator.
2. Open the following object: Mock Company Library Marketable Products General Liability .
3. Open the following object: Mock Commercial General Liability Monoline Coverage Groups Mock Commercial General Liability Identification Risk Hierarchy . The Values tab shows three rows based on the risk structure for the Mock Commercial General Liability coverage group.
4. For a row (risk) in the Values tab, find the following attributes, right-click the Rule icon and select View: ○ Application_Context_Date_Rule ○ Reference_Object_Version_Rule
Developer Guide 344 PUBLIC Risk-Based Architecture ○ Inherit_Parent_Reference_Indicator
The Rule Painter dialog appears, showing the rule.
7.7.2.2 Viewing the Reference Object Link in the Mock Product Example
To help you see how the Reference Object Link object is configured for multiple ratebooks, you can view the example component in the Mock Commercial General Liability Monoline product.
Procedure
1. Log in to Product Configurator. 2. Enter Mock Reference Config in the Search panel. 3. Choose Search. 4. Double-click Mock Reference Config. 5. Expand the Reference Config folder. 6. Expand the Reference Object Line. 7. Select Reference Object Link. 8. Select the Values tab.
Results
The configuration for Mock Commercial General Liability Monoline appears. In this example a separate row has been created for each state. If there's more than one version, a separate row is created for each version number for each state. In this example, the Transaction Type is shown as ALL. If separate transaction types are required, then a separate row is added for each transaction type and version for each state.
Developer Guide Risk-Based Architecture PUBLIC 345 7.8 Configuring Out-of-Sequence Endorsements
FS-QUO lets you issue out-of-sequence (OOS) endorsements. An OOS endorsement is a change to a policy that has an Effective Transaction Date prior to the Effective Transaction Date of another in-force transaction on the same policy.
Context
For FS-QUO to process OOS transactions properly, configure the data definitions and roles in the Product Configurator. You must specify which fields (columns in the data model) are compared when a transaction is reapplied. Conflicts trigger based on these fields. You must also specify which roles can process OOS endorsements and resolve OOS conflicts.
For OOS endorsements to process properly, you must make configuration changes in the Product Configurator.
For more information about OOS endorsements, see the FS-QUO Help or SAP Underwriting for Insurance Functional Guide.
Procedure
1. Configure the input fields to be reapplied 2. Specify the extension tables 3. Set the OOS permissions 4. Publish the marketable product. 5. Restart the server.
7.8.1 Configuring the Input Fields to be Reapplied
In the Product Configurator, you must configure the fields in the insurance application to be reapplied. Fields that gather information from users or that impact the premium or other policy factors should be reapplied.
Context
Before an OOS endorsement is processed, all of the transactions with an effective date later than the OOS endorsement are reversed first. After the OOS endorsement is processed, all of the reversed transactions are reapplied.
Developer Guide 346 PUBLIC Risk-Based Architecture Procedure
1. Log in to Product Configurator. 2. Open the data definition that you want to configure. 3. For each input field that needs to be reapplied during an OOS endorsement, perform the following steps: a. Determine which table column in the data model it maps to. b. Expand
Related Information
Specifying Extension Tables [page 347]
7.8.2 Specifying Extension Tables
Context
When you publish and deploy your marketable product in the Product Configurator, the data definition objects defined in the product's data model become extension tables in the FS-QUO flowstore. The flowstore is a subset of the database that stores run-time transaction data, such as the risk and quote information that FS- QUO users enter in the Fill Out Application activity of a new business.
Developer Guide Risk-Based Architecture PUBLIC 347 Together, the main tables and extension tables in the flowstore represent the product model. FS-QUO uses the product model to look up data for processing.
When reversed transactions in an OOS endorsement are reapplied, FS-QUO looks through the product model for all of the fields that are configured with USAGE_TYPE set to [IN] - Input Field and reapplies the changed values.
For these fields to be included in the product model, you must specify the data definition tables containing the columns that store the data for the fields. When you publish and deploy your marketable product, these data definition tables become extension tables in the product model. FS-QUO can then look up these fields in the product model and reapply the changed values during OOS endorsements.
Procedure
1. For an input field that needs to be reapplied during an OOS endorsement, identify the risk or coverage where the associated column and table need to extend from.
Note
The associated column is the column in the data definition that maps to the input field. Its USAGE_TYPE is set to [IN - Input Field].
2. Log in to Product Configurator. 3. If the column for the input field is part of a table that extends from a risk, perform the following steps: a. Open the coverage group object. b. Go to
Note
To specify multiple table names in the ExtensionTables column, enter a comma-separated list of table names.
7. Save your changes. 8. Repeat steps 1-7 for each input field that needs to be reapplied during an OOS endorsement.
Related Information
Configuring the Input Fields to be Reapplied [page 346] Configuring the Input Fields to be Reapplied [page 346]
Developer Guide 348 PUBLIC Risk-Based Architecture 7.8.3 Setting OOS Permissions
You can specify which FS-QUO roles can perform OOS endorsements and which roles can resolve conflicts.
Procedure
1. Log in to Product Configurator.
2. Open the Underwriting Application Configuration Role Framework Role component. 3. For each role that you want to set OOS permissions for, add one or more of the following permissions in the Permission tab: ○ outOfSequence ○ resolveHardConflict ○ resolveReferralConflict ○ resolveSoftConflict ○ resolveValidationConflict 4. Save your changes. The permissions are set. 5. Publish the Underwriting Application Configuration.
Related Information
Permissions Provided with FS-QUO [page 204] Setting up Permissions for a Role [page 199]
7.9 Additional Configuration Procedures
7.9.1 Applying Form Configuration Changes
You can make form configuration changes for a marketable product in Product Configurator.
Context
However, the Product Model isn't refreshed in FS-QUO memory after the configuration changes are published and deployed. If you want FS-QUO to include these form changes, you must clear the Product Models from memory and pre-load all the products.
Developer Guide Risk-Based Architecture PUBLIC 349 Procedure
1. Open a web browser and enter the following address: http://
7.9.2 Configuring Forms Attachment
When forms are defined for a line of business in a Form Library, FS-QUO looks for these forms when the TransactionType column in the Form object is populated with specified values.
Depending on the configuration, the forms are automatically attached to the policy, or the forms are displayed so that you can attach them to or detach them from the policy.
For more information, see the Form mapping and publishing and The Form component topics in the Product Configurator.
7.9.3 Configuring Tax Rules
To calculate tax premiums, FS-QUO runs rules that you define in the Product Configurator. The CalcTaxPremiumService then calculates the annual transaction and term premium.
Context
Remember
In your marketable products, if the tax premium calculation rules are already defined in your marketable product Coverage Groups
For more information about the Premium Handling component, see the P and C Insurance Tax Template Rating Premium Handling topic in the Standardized Product Model Help.
Developer Guide 350 PUBLIC Risk-Based Architecture Procedure
1. Log in to Product Configurator.
2. Open the following component:
Results
The tax rule is configured for the marketable product.
7.9.4 Configuring Validation for Flat Cancellation Type
Context
By default, FS-QUO is configured to prevent a policy that's in In Force status from being canceled in the following situation:
● The specified Transaction Effective Date for cancellation is the same as the policy effective date. ● The specified Cancellation Type isn't Flat.
A message appears indicating that you must select the Flat cancellation type when the dates are the same. You can change this configuration to let users specify any cancellation type when the dates are the same.
Procedure
1. Log in to Product Configurator. 2. Open your extended Underwriting Application Configuration object. Typically, the object is named Extended Underwriting Application Configuration and is located in the
Developer Guide Risk-Based Architecture PUBLIC 351 4. In the Values tab, expand the Screens_Transaction_Cancel_EnterDate_CancelTransactionScreenContent row. 5. In the anchored Screen Control component, expand the cancelTransactionInfoForm.cancelEffectiveDate row. 6. In the anchored Business Questions tab, deselect the isCancelEffectiveDateWithinPolicyTermForFlatCancel row. 7. Save and commit the changes. 8. Publish the extended Underwriting Application Configuration object.
Results
The business question isn't used for validation any longer. When the cancellation and policy effective dates are the same, you can now select any cancellation type.
7.9.5 Referrals Configuration Note
When referrals are configured, they are required to have a table and column name that contains the value that triggered the referral. This is used for display purposes and to determine if the value of a referral has changed from when it was initially accepted.
The column that's used for the table name was changed from SYSATTR_TABLE_NAME to Process Table Id. Previously, the rule had to work on the same table that contained the value column. This is no longer required. An exception will be thrown if the table.column (Process Table Id.Field Name) doesn't exist in the flowstore.
7.9.6 Configuring the Delta Service
The Delta Service, which is used to compare transaction differences, takes two Policy Transaction Transfer Objects (PTTO) and generates the differences between transactions.
There are three possible changes.
Record/ New Coverage or Form present in the second transaction that isn't present in the first. The Object added whole record/object including the children will be presented as a single delta object (No configuration necessary).
Record/ Coverage or Form present in the first transaction that isn't present in the second. The whole Object record/object including the children will be presented as a single delta object (No deleted Configuration necessary).
Column Individual column value will be compared base on the configured usage type and given usage value type list. A single column change is represented by a delta object. A delta object contains field modified that has changed, and the before and after values. For example, a change in PCO_EXPOSURE value from 0.1 to 0.2 is one delta.
Developer Guide 352 PUBLIC Risk-Based Architecture ● The usage type for the columns defined in the Product Data definition will be set by selecting one of the possible values from the dropdown list under usage type attribute. ● The usage type for the columns defined in the designer flowstore requires AS developer to change the policy Model and code deployment.
Example
Usage type (config No. Column Name ured) Transaction 1 Transaction 2
1 Cvg1.Field1 IN 5 6
2 Cvg1.Field2 DELTA 100 200
3 Cvg1.Field3 IN_DELTA 125 175
4 Cvg1.Field4 IN 10 10
5 Cvg1.Field5 DELTA 20 20
6 Cvg1.Field6 IN_DELTA 30 30
7 Cvg1.Field7 30 40
8 Cvg1.Field8 30 30
9 Cvg1.Field9 7 90
If the Delta service called with 'DELTA' as in the case of summary view, row 2 and 3 will be returned as two delta objects since the values are different and the column applicable to the 'DELTA'. The row 5 and 6 won't be returned due to the values being the same. The other rows won't be applicable to 'DELTA'.
If the Delta service called with 'IN' as in the case of OOSE, row 1 and 3 will be returned as two delta objects since the values are different and the column applicable to the 'IN'. The row 4 and 6 won't be returned since no change in the values. The other rows won't be applicable to 'IN'.
If the Delta service called with 'IN,DELTA' as a future use case, row 1, 2 and 3 will be returned as three delta objects since the values are different and the column applicable to 'IN' and 'DELTA'. The row 4, 5, and 6 won't be returned due to the values being the same. The other rows won't be applicable to 'DELTA'.
The usage type can't be set to Form variable data due to the way they are configured in the product. As a result the form variable data will always be compared and if any change is detected a delta object representing the change will be returned.
No. Column Name Usage type (N/A) Transaction 1 Transaction 2
1 Frm1.VarData1 5 6
Developer Guide Risk-Based Architecture PUBLIC 353 No. Column Name Usage type (N/A) Transaction 1 Transaction 2
2 Frm1.VarData2 100 200
3 Frm1.VarData3 125 175
4 Frm1.VarData4 10 10
5 Frm1.VarData5 20 20
6 Frm1.VarData5 30 30
In the above form, variable data case rows 1, 2, and 3 will be returned as three delta objects since the values are different. The usage type is irrelevant in this case.
Restriction
The current delta service implementation doesn't support form variable data grids.
Possible usage type that can be assigned to Data Definitions:
Code Description
IN Input Field
SYS System Field
CALC Calculated Field
PRICE Premium, Tax and Fee visible Field
SYSRATE System level Premium or Stat code
STAT Stat code value
FORM Form Field
DELTA DeltaView Field
IN_DELTA Fields applicable to both IN and DELTA
IN_DELTA_STAT Fields applicable to IN, DELTA, and STAT
IN_DELTA_STAT_PRICE Fields applicable to IN, DELTA, STAT, and PRICE
Developer Guide 354 PUBLIC Risk-Based Architecture 8 Coverage-Based Architecture
8.1 SAP Insurance Portals and Workplaces (IPW)
8.1.1 Extending Fiori Apps UI
Underwriting and Group Insurance are UI5 web applications, and the framework is based on UI5 Fiori. The core library is “UI5 Mobile” (sap.m).
Browser and platform support aligns with the UI5 specification.
The middle tier is based mainly on OData services.
The UI is customized by configuring Components. You can extend the delivered standard application through such customization.
Prerequisites
Because the customization is implemented on Fiori web applications, the rules of Fiori must be complied with.
You should use the component.js as the entry file to define all configuration parameters of your web application, such as includes, dependencies, routing, customizing and so on.
Principle
The front end is based on the UI5. The following aspects can be customized:
● Views can be extended by inserting custom content (Views or Fragments) into Extension Points in the UI structure provided by application development ● Views can be replaced entirely by custom-developed Views ● Views can be modified by customizing specific properties of controls ● Controllers can be extended with additional code (optionally overriding existing code) ● i18N resource texts can be customized New views can be added ● New navigation paths can be added ● Navigation routes can be customized ● Inheritance
First of all, the custom Component needs to inherit from the main Component of the custom application component.js, as shown below:
jQuery.sap.registerModulePath("fs.ipw.grpinsquote.create", "/ fs.ipw.grpinsquote.create");
Developer Guide Coverage-Based Architecture PUBLIC 355 jQuery.sap.require("fs.ipw.grpinsquote.create.Component"); jQuery.sap.require("fs.ipw.custom.app.MyRouter"); jQuery.sap.declare("fs.ipw.custom.app.Component"); fs.ipw.grpinsquote.create.Component.extend("fs.ipw.custom.app.Component", { metadata:{ name : "Custom Application", version : "1.0", includes : ["./css/style.css"], dependencies : { libs : ["sap.suite.ui.commons", "sap.ui.layout", "sap.ui.unified", "sap.m", "sap.ui.comp", "sap.ui.commons"], components : [] } } init: function(){ fs.ipw.grpinsquote.create.Component.prototype.init.apply(this, arguments); } });
Steps:
1. Register the module path of the application to extend: jQuery.sap.registerModulePath("fs.ipw.myuwworklist", "/fs.ipw.myuwworklist");
Caution
In the launch-pad, the module path is quite different, so make sure you register the correct module path. ○ Launch-Pad: jQuery.sap.registerModulePath("fs.ipw.myuwworklist", "/sap/bc/ ui5_ui5/sap/zipwmyuwwl4d/"); ○ WildFly Server: jQuery.sap.registerModulePath("fs.ipw.myuwworklist", "/ fs.ipw.myuwworklist");
2. Refer to the script of the base Component. jQuery.sap.require("fs.ipw.myuwworklist.Component"); 3. State the extension. fs.ipw.myuwworklist.Component.extend("fs.ipw.grpinsquote.create.Component", {…}); 4. Inherit the initialization function of the original application.
8.1.1.1 Extending Views
Extension points are inserted in the views of the delivered standard applications, making it much easier to insert custom content to the custom application.
8.1.1.1.1 Adding New Routers
Before adding any custom routers, you must clear the routing of the main application.
Developer Guide 356 PUBLIC Coverage-Based Architecture For example, assuming that we want to perform the following actions:
● Add a new router “custom” into the routing of Underwriting ● Add another new router “custom” as a sub-router of underwritingDetailFullScreenPage.
Here is how to add a router at the first level:
customizing: { "routerExtend": [ {viewId: "customWeb", pattern : "custom", name : "custom", view :"fs.ipw.custom.app.custom", targetAggregation : "pages", viewLevel: 1, targetControl: "app" } ]}
Here is how to add a sub-router to “detailFullScreen”:
customizing: { "routerExtend": [ {viewId: "customTab", parent: "detailFullScreen", pattern : "{previousPage}/StatusCode/{StatusCode}/caseId/{caseId}/ uwItemId/{uwItemId}/customTab", name : "customTabScreen", view :"fs.ipw.custom.app.custom", targetAggregation : "content", viewLevel: 3, targetControl: "iconTabBarBlock--customTab" }]
The routeExtend has the following properties:
Name Type Note
ViewId String View id of router
parent String Parent router name
Name String Router name
View String View path
Developer Guide Coverage-Based Architecture PUBLIC 357 Name Type Note
targetControl String Views will be put into a container Con trol (it may be a control, or when work ing with mobile, any other container). The ID of this control must be placed here.
targetAggregation String The name of an aggregation of the tar getContro that contains views. For ex ample, m.app has an aggregation "pa ges". Another example is that the layout has "content".
viewLevel Int The router level
8.1.1.1.2 Adding New Views and Fragments
The delivered standard My Underwriting Worklist application provides the following view extension points
View Point Name Parent Type
fs.ipw.myuwwork inboxFilterBarExtension smartFIl sap.ui.comp.filterbar.FilterI- list.view.frame.inbox terBar tem
inboxTableHeaderBarExtension tool sap.m.Button Bar(ta ble)
inboxFooterBarExtension tool sap.m.Button Bar(page )
inboxActionSheetExtension action sap.m.Button Sheet
fs.ipw.myuwwork membersObjectHeaderAttrExtension objec sap.m.ObjectAttribute list.view.frame.member tHeader
membersTableHeaderBarExtension tool sap.m.Button Bar(ta ble)
Developer Guide 358 PUBLIC Coverage-Based Architecture View Point Name Parent Type
membersFooterBarExtension tool sap.m.Button Bar(page )
membersActionSheetExtension action sap.m.Button Sheet
fs.ipw.myuwwork optionsObjectHeaderAttrExtension objec sap.m.ObjectAttribute list.view.frame.options tHeader
optionsTableHeaderBarExtension tool sap.m.Button Bar(ta ble)
optionsFooterBarExtension tool sap.m.Button bar(page )
optionsActionSheetExtension action sap.m.Button Sheet
fs.ipw.myuwwork masterDetailNavBelowSearchExtension sub sap.ui.core list.view.frame.masterDetail Header(p age)
fs.ipw.myuwwork detailFullScreenObjectHeaderExtension objec sap.m.ObjectAttribute list.view.frame.detail tHeader FullScreen masterDetailActionSheetExtension action sap.m.Button Sheet
fs.ipw.myuwwork masterDetailActionSheetExtension tool sap.m.Button list.view.sections.violation bar(ta ble)
violationTabContentAboveExtension layout sap.ui.core
violationTabContentBelowExtension layout sap.ui.core
fs.ipw.myuwwork evidencesTableHeaderBarExtension tool sap.m.Button list.view.sections.evidences bar(ta ble)
evidencesTabContentAboveExtension layout sap.ui.core
evidencesTabContentBelowExtension layout sap.ui.core
fs.ipw.myuwwork checkListTableHeaderBarExtension tool sap.m.Button list.view.sections.checkList bar(ta ble)
checkListTabContentAboveExtension layout sap.ui.core
checkListTabContentBelowExtension layout sap.ui.core
fs.ipw.myuwwork basicInfoTabTabContentAboveExtension layout sap.ui.core list.view.sections.basicInfo basicInfoTabTabContentBelowExtension layout sap.ui.core Tab
Developer Guide Coverage-Based Architecture PUBLIC 359 View Point Name Parent Type
fs.ipw.myuwwork activityLogTableHeaderBarExtension tool sap.m.Button list.view.sections.activityLog bar(ta ble)
activityLogTabTabContentAboveExtension layout sap.ui.core
activityLogTabTabContentBelowExtension layout sap.ui.core
The delivered standard Create Group Insurance Quote application provides the following view extension point:
View Name Screen Name Point Name Parent Type
fs.ipw.grpinsquote.cre General Info generalInfoGroupTea formContainer sap.ui.layout.form.For ate.view.generalInfo mAndProductExten mContainer sion
generalInfoFooterBar toolBar(page) sap.m.Button Extension
fs.ipw.grpinsquote.cre General Info Summary generalInfoSummary formContainer sap.ui.layout.form.For mContainer ate.view.generalInfo GroupTeamAndPro Summary ductExtension
generalInfoSummary actionSheet sap.m.Button FooterActionSheetEx tension
generalInfoSummary toolBar(page) sap.m.Button FooterBarExtension
fs.ipw.grpinsquote.cre Plan Management planManagementOb objectHeader sap.m.ObjectAttribute ate.view.managePlan jectHeaderExtension
planManagementIcon toolBar(table) sap.m.Button TabExtension
planManagementFoo toolBar(page) sap.m.Button terBarExtension
planManagementAc actionSheet sap.m.Button tionSheetExtension
fs.ipw.grpinsquote.cre Plan Management planManagementPlan toolBar(table) sap.m.Button ate.view.managePlan sTableHeaderExten Plans sion
planManagementPlan layout sap.ui.core sContentAboveExten sion
Developer Guide 360 PUBLIC Coverage-Based Architecture View Name Screen Name Point Name Parent Type
planManagementPlan layout sap.ui.core sContentBelowExten sion
fs.ipw.grpinsquote.cre Plan Management planManagement toolBar(table) sap.m.Button ate.view.memberTable MembersTableHeader BarExtension
planManagement layout sap.ui.core MembersContentAbo veExtension
planManagement layout sap.ui.core MembersContentBelo wExtension
Single Plan singlePlanMembersTa toolBar(table) sap.m.Button bleHeaderBarExten sion
singlePlanMember layout sap.ui.core sContentAboveExten sion
singlePlanMember layout sap.ui.core sContentBelowExten sion
fs.ipw.grpinsquote.cre Single Plan singlePlanFooterBar toolBar(page) sap.m.Button ate.view.singlePlan Extension
singlePlanActionShee actionSheet sap.m.Button tExtension
singlePlanObjectHea objectHeader sap.m.ObjectAttribute derExtension
fs.ipw.grpinsquote.cre Review Quote Sum reivewQuoteSummar objectHeader sap.m.ObjectAttribute ate.view.reviewQuote mary yObjectHeaderExten Summary sion
reivewQuoteSummar iconTabbar sap.ui.m. IconTabFilter yIconTabExtension
reivewQuoteSummary formContainer sap.ui.layout.form.For PremiumBreakdow mContainer nExtension
reivewQuoteSummary layout sap.ui.core BelowContentExten sion
Developer Guide Coverage-Based Architecture PUBLIC 361 View Name Screen Name Point Name Parent Type
reivewQuoteSummary toolBar(page) sap.m.Button FooterBarExtension
reivewQuoteSummary layout sap.ui.core TabQuoteContentBelo wExtension
reivewQuoteSummary layout sap.ui.core TabPlansContentBelo wExtension
reivewQuoteSummary toolBar(table) sap.m.Button PlansTableHeaderEx tension
reivewQuoteSummary toolBar(table) sap.m.Button MembersTableHeader Extension
reivewQuoteSummary layout sap.ui.core TabMembersContent BelowExtension
reivewQuoteSummary actionSheet sap.m.Button FooterActionSheetEx tension
Example: Add content to the extension point extensionLastTabIcon
customizing: { "sap.ui.viewExtensions": { "fs.ipw.myuwworklist.view.frame.detailFullScreen": { "extensionLastTabIcon": { className: "sap.ui.core.Fragment", fragmentName: "fs.ipw.custom.app.iconTab", type: "XML" } } } }
Caution
● There are two types of className: sap.ui.core.Frgment and sap.ui.core.mvc.View. ● fragmentName/viewName: UI view name/path ● type: "XML"
Developer Guide 362 PUBLIC Coverage-Based Architecture 8.1.1.1.3 Modifying the View
Currently you can only modify the property visible of UI5.
Example: Hide all the content of the Inbox screen
customizing: { "sap.ui.viewModifications": { "fs.ipw.myuwworklist.view.frame.inbox": { "mainContainer": { "visible": false } } } }
Caution
View modifications only apply to XML Views.
8.1.1.1.4 Replacing the View
You can replace the whole view without touching the routing.
Example: Replacing the view of Inbox screen with the view custom
customizing: { "sap.ui.viewReplacements": { "fs.ipw.myuwworklist.view.frame.inbox": { viewName: "fs.ipw.custom.app.custom", type: "XML" } } }
8.1.1.1.5 Controller Extension
You can insert the function before or after the original handle function.
It isn't recommended to replace the whole function, because this may break the logic of the original function.
Developer Guide Coverage-Based Architecture PUBLIC 363 Example: Displaying a dialog box after rendering (Inbox screen)
Custom controller:
sap.ui.controller("fs.ipw.custom.app.custom", onAfterRendering : function() { sap.m.MessageBox.show("CUSTOM APPLICATION", { title: "CUSTOM" }) } )
Custom Component:
customizing: { "sap.ui.controllerExtensions": { "fs.ipw.myuwworklist.view.frame.inbox": { controllerName: "fs.ipw.custom.app.custom" } } }
8.1.1.1.6 Extension Points
For the Create Insurance Quote transactional App, extension points are added before and after the forms on the general information screen, the general information review screen, and the review quote screen. You can add your own forms, tables, buttons and so on to these screens to meet your business requirements.
8.1.1.2 Extending Standard Mass-Uploading Data Sheet
Within the Create Group Insurance Quote app, you can create a group quote, create different plans, and add members to those plans. You can add members individually by selecting or creating business partners, or add them collectively by mass-uploading.
And in the Create Insurance Quote from Master app, you can manually create all individual quotes, or manually create one valid individual quote as a template, and then create the rest by mass-uploading.
When mass-uploading plan members or individual quotes, you need to use a standard data sheet (a CSV file).
To meet your additional requirements, you can extend the standard data sheet.
8.1.1.2.1 Extending Dynamic Columns
A standard data sheet has some static columns and some dynamic columns.
Developer Guide 364 PUBLIC Coverage-Based Architecture You can extend the standard data sheet by adding your own dynamic columns to meet additional requirements.
8.1.1.2.1.1 Extending the Group Plan Member Data Sheet
You can add your own dynamic columns to the standard data sheet.
Context
Each data value row represents the information of the policyholder/insured person, the beneficiary and so on.
The values of the first 22 mandatory columns are the details of the policyholder/insured person.
The Service API rule populateGroupMemberPolicyDataWithSpreadSheetRow uses the values of the mandatory columns to do the following:
● Populates the columns of table BUSINESS_PARTNER/BUSINESS_PARTNER_ADDRESS/ BUSINESS_PARTNER_IDENTIFIER. This is the local cache for policyholder Business Partner. ● Populates the columns of table ABDAPOLHLDR (Policyholder). ● Populates the columns of table COV_ABDASUBJCT (Insured Person).
The values of the next 22 dynamic columns are the details of the beneficiary.
The service API does the following:
● Populates the columns of table BUSINESS_PARTNER/BUSINESS_PARTNER_ADDRESS/ BUSINESS_PARTNER_IDENTIFIER. This is the local cache for beneficiary Business Partner. ● Populates the columns of table POLPR_ABDABNFCRY (Beneficiary).
Procedure
1. Add the column name in the first row of the data sheet. The column name can't contain a space. 2. Log in to Product Configurator. 3. Open the Life Capital 2009 92H0000S0002 product.
4. Select Configuration Product Services Service API from the Product tree. 5. On the right panel, choose the Values tab, and then edit/override the script rule populateGroupMemberPolicyDataFromSpreadsheetRow.
Remember
The script rule argument groupMemberUploadRowData contains all the column name - value mappings of the whole data sheet.
Developer Guide Coverage-Based Architecture PUBLIC 365 6. Inside the script rule, use groupMemberUploadRowData:OBJECTTABLE.
Restriction
The spreadsheet column name must be in upper case.
For example, if the new column name is NewColumn, then use groupMemberUploadRowData:OBJECTTABLE.NEWCOLUMN to access the data.
Here are some other examples of accessing the currently included column: ○ groupMemberUploadRowData:OBJECTTABLE.FIRSTNAME ○ groupMemberUploadRowData:OBJECTTABLE.BENEFIRSTNAME 7. Save your changes.
8. Select Build Rules from the top menu bar to compile all the rules.
9. Select File Publish Product from the top menu bar to publish the product. 10. Deploy the product to runtime FS-QUO to bring the new rule into effect.
8.1.1.2.1.2 Extending the Multi-Individual Quote Data Sheet
You can add your own dynamic columns to the standard data sheet.
Context
Within the Create Insurance Quote from Master app, you can select a master policy as the template of each individual quote. Each individual quote inherits the policyholder, commission, and sales product from the master policy. And then you can manually create all individual quotes, or manually create one valid individual quote as a template, and then create the rest by mass-uploading.
The Service API rule populateInsuredObjectDataFromSpreadsheetRow uses the values of the mandatory columns to populate the columns of table COV_ABDASUBJCT (Insured Person).
Procedure
1. Add the column name in the first row of the data sheet.
The column names can't contain space. 2. Log in to Product Configurator. 3. Open the Sample Household Product Extended product.
4. Select Configuration Product Services Service API from the Product tree. 5. Choose the Values tab on the right panel, and then edit/override the script rule populateInsuredObjectDataFromSpreadsheetRow.
Developer Guide 366 PUBLIC Coverage-Based Architecture Remember
The script rule argument insuredObjectData contains all the column name - value mappings of the whole data sheet.
6. Inside the script rule, use insuredObjectData:OBJECTTABLE.
Restriction
The spreadsheet column name must be in upper case.
For example, if the new column name is NewColumn, then use insuredObjectData:OBJECTTABLE.NEWCOLUMN to access the data. 7. Save your changes.
8. Select Build Rules to compile all the rules.
9. Select File Publish Product from the top menu bar to publish the product. 10. Deploy the product to runtime FS-QUO to bring the new rule into effect.
8.1.1.2.2 Extending the File Parser
The default file type of the supported data sheet is CSV. But you can add new supported file type with the file parser extension.
Prerequisites
You have com.sap.fs.quo.service.jar on your system.
Procedure
1. Launch Eclipse, and select a workspace.
2. Select File New Other from the menu. The New dialog box appears. 3. Create a Maven project:
a. Select Maven Maven Project in the dialog box b. Choose Next. c. In the next screen, accept all default settings. d. Choose Next. e. In the next screen, select the Artifact ID maven-archetype-quickstart. f. Choose Next.
Developer Guide Coverage-Based Architecture PUBLIC 367 g. In the next screen, enter com.customer in the Group Id field and enter extensibility in the Artifact Id field h. Choose Finish. 4. In the Project Explorer tab, expand the extensibility project, open pom.xml, and then add the following dependency for your project, while specifying the version to 300.2.0-SNAPSHOT or higher:
5. Create a new Class with the name XXXFileParser (for example, XLSFileParser) and the superclass AbstractInsuredObjectFileParser (for parsing insured object)/ AbstractInsuredPersonFileParser (for pasring insured person) (package: com.sap.fs.quo.service.helper). 6. Implement the loadContent method of the superclass for loading file content. 7. Create a META-INF folder if there isn't one in src/main/resources package, and create an XML file with the name
9. Add the spring bean into the
Developer Guide 368 PUBLIC Coverage-Based Architecture Restriction
file_type is the extension name of the standard data sheet. For example, it is csv for data sheets in CSV format. You aren't allowed to modify the attribute ID fileParserFactory and property fileParserMap.
10. In the META-INF folder, create a new XML file with the name context-manifest and the following content:
11. Right-click the project name, select Run As Maven install , expand the target folder, copy the JAR file and then deploy it into
Developer Guide Coverage-Based Architecture PUBLIC 369 8.1.1.3 Configuring Data Visibility
8.1.1.3.1 Understanding the Data Visibility Framework
To implement data visibility for underwriting, quotation, and insurance task, you need to associate the group information with each underwriting case, submission, or insurance task, as described in the diagram below:
Developer Guide 370 PUBLIC Coverage-Based Architecture To enable access control for the submission worklist, insurance task worklist, and underwriting worklist, you should follow the principles below:
● For the underwriting worklist: ○ Use the existeing Dao query to add ACCESS_CONTROL join. ○ Don't introduce any security vulnerability issues. ● For the insurance task worklist and submission worklist: ○ Extend DomainModelService.searchDomainData to optionally add ACCESS_CONTROL query. ○ Don't introduce any security vulnerability issues.
Developer Guide Coverage-Based Architecture PUBLIC 371 To add the access control support for the searchDomainData interface of DomainModelService, we introduced a new interface searchDomainDataWithAccessControl. The main class diagram for this change is as follows:
8.1.1.3.2 Data Visibility Configuration
You can define the relationship between a user and the groups in UME.
In the details panel of a user, on the Assigned Groups tab page, you can maintain the user group information of the user.
8.1.1.4 Configuring Read-only Access to Underwriting Cases
To allow customer support representatives (CSR) to access the underwriting worklist in read-only mode, you need to configure the read-only access to underwriting cases for them.
Developer Guide 372 PUBLIC Coverage-Based Architecture The main activity diagram is as follows:
The read-only access to underwriting cases is fulfilled at two dimensions:
● Data visibility of submission worklist: this is controlled with groups. ● Data operations on underwriting cases: this is controlled with permissions and roles.
At design time, you need to define a coarse-grained write permission (for example, UWFullAccess) to related underwriting roles.
At runtime, the resources should be protected with permission. The read-only access to underwriting is the default behavior, unless the user has other write permission.
The data visibility part can be implemented based on the framework as explained in the Configuring Data Visibility topic. To allow CSR users view the underwriting worklist, simply write the CSR groups to ACCESS_CONTROL for underwriting cases. And the same mechanism can be applied to quotation worklist and insurance task worklist.
The write access permission check is performed with the request /hasWritePermission? PermissionName=UWFullAccess, which loads the roles assigned to the current user and groups and their related permissions for checking. If the user has UWFullAccess permission, it returns true, otherwise it returns false. The front end will enable or disable the action buttons based on the check result.
Developer Guide Coverage-Based Architecture PUBLIC 373 Note
If a particular resource needs to be protected, you should define fine-grained permission and enable the permission filter.
Note
The roles configured in UME should be consistent with FS-PRO configuration in SAP Role components. The CSR groups defined in UME should be consistent with FS-PRO configuration in CSR Group component under Extended Underwriting Application Configuration.
The main class diagram is as follows:
8.1.1.5 Configuring Quote Letter Generation
The quote letter generation step can be configured to be before or after submitting for underwriting for a specific product from different lines of business.
Developer Guide 374 PUBLIC Coverage-Based Architecture The main activity diagram is as follows:
At design time, you need to add a configuration option generateQuoteLetterBeforeUW to SAP Insurance UWA Product Template under Configuration Config . The standard products inherit this option, and you can override it for specific products.
If generateQuoteLetterBeforeUW = true, the Generate Quote Letter button appears first. When the user clicks it, the quote option status changes to Quoted, and then the Submit for Underwriting button is visible.
If generateQuoteLetterBeforeUW = false, the Submit for Underwriting button appears first. When the user clicks it, the quote option status changes to one of the underwriting statuses according to the underwriting decision. And when it changes to Approved, the Generate Quote Letter button is visible.
Developer Guide Coverage-Based Architecture PUBLIC 375 The main class diagram is as follows:
A quote letter should be generated when the quote option status is Approved or Working, and the submission status is Working.
If the quote option status is Quoted, it means a quote letter has been generated. If the user clicks the Generate Quote Letter button again, it won’t generate a quote letter again, but shows the generated one.
If generateQuoteLetterBeforeUW = true, the user can issue a policy when the quote option status changes to Approved.
If generateQuoteLetterBeforeUW = false, the user can issue a policy when the quote option status changes to Quoted.
8.1.1.6 Using Sequential Numbers for Submission ID, Application Number and Policy Number
You can use sequential numbers for the submission ID, application number, and policy number.
The generation of sequential submission number is enabled by default in the standard product. When not enabled, submission numbers are created randomly, which can cause usability issues and confuse users.
The generation of sequential application number and policy number is supported, but it's disabled by default. To use this feature, you need to enable it in the Administrative Console.
Developer Guide 376 PUBLIC Coverage-Based Architecture 8.1.1.6.1 Generating Sequential Submission ID
To generate sequential submission ID, follow this procedure:
● Define a system configuration item in the Administrative Console. ● Create a table to hold the policy ID from FS-PM for individual quotes. ● Initialize the table.
The main class diagram is as follows:
8.1.1.6.1.1 Defining a System Configuration Item in the Administrative Console
To enable the sequential number generation when creating submissions, define the following system configuration item in the Administrative Console:
Key: submission.number.range
The default value is 1, which means it’s enabled by default.
Developer Guide Coverage-Based Architecture PUBLIC 377 8.1.1.6.1.2 Creating a Table to Hold the Policy ID from FS-PM for Individual Quotes
The main data model is as follows:
The table needs to be created during the clean install process, and you need to put the creation script in com.sap.fs.pro\FS-PRO-db\src\main\resources\${DB_TYPE}\sql\tables\sys \create_sys_tables.sql.
Example: Sample Script for Creating the Table
For SAP HANA:
CREATE COLUMN TABLE NUMBER_RANGE ( PK_ID DECIMAL(16) PRIMARY KEY NOT NULL, RANGE_KEY VARCHAR(100) NOT NULL UNIQUE, DESCRIPTION VARCHAR(255), MIN_VALUE DECIMAL(20), MAX_VALUE DECIMAL(20), NUMBER_LENGTH DECIMAL(2), TEXT_PREFIX VARCHAR(50), CURR_VAL DECIMAL(20)
Developer Guide 378 PUBLIC Coverage-Based Architecture );
For Microsoft SQL Server:
CREATE TABLE NUMBER_RANGE ( PK_ID NUMERIC(16) PRIMARY KEY NOT NULL, RANGE_KEY VARCHAR(100) UNIQUE NOT NULL , DESCRIPTION VARCHAR(255), MIN_VALUE NUMERIC(20), MAX_VALUE NUMERIC(20), NUMBER_LENGTH NUMERIC(2), TEXT_PREFIX VARCHAR(50), CURR_VAL NUMERIC(20) );
For Oracle:
CREATE TABLE NUMBER_RANGE ( PK_ID NUMBER(16) PRIMARY KEY NOT NULL, RANGE_KEY VARCHAR2(100) UNIQUE NOT NULL, DESCRIPTION VARCHAR2(255), MIN_VALUE NUMBER(20), MAX_VALUE NUMBER(20), NUMBER_LENGTH NUMBER(2), TEXT_PREFIX VARCHAR2(50), CURR_VAL NUMBER(20) );
For IBM DB2:
CREATE TABLE "NUMBER_RANGE" ( "PK_ID" DECIMAL(16,0) PRIMARY KEY NOT NULL, "RANGE_KEY" VARCHAR(100 OCTETS) NOT NULL UNIQUE, "DESCRIPTION" VARCHAR(255 OCTETS), "MIN_VALUE" DECIMAL(20,0), "MAX_VALUE" DECIMAL(20,0), "NUMBER_LENGTH" DECIMAL(2,0), "TEXT_PREFIX" VARCHAR(50 OCTETS), "CURR_VAL" DECIMAL(20,0) ) IN "CSI_DATA_8K" INDEX IN "CSI_INDX_8K" ORGANIZE BY ROW;
8.1.1.6.1.3 Initializing the Table
For clean install:
● The CURR_VALUE should be empty (default) ● The MIN_VALUE should be 1 (default) or any other specified number ● The initialization data should be put in com.sap.fs.pro\FS-PRO-db\src\main\resources\common \data\sys\NUMBER_RANGE.txt.
Developer Guide Coverage-Based Architecture PUBLIC 379 For upgrade install (only need to execute once):
● The CURR_VALUE should be empty (default) ● The MIN_VALUE should be max(POLICY_TXN.POLICY_SUBMISSION_NUMBER) + 1 ● And you need to write Java interfaces in com.sap.fs.pro\FS-PRO-db-migration to implement it
Example: Sample Script for Initializing the Table
INSERT INTO NUMBER_RANGE (PK_ID, RANGE_KEY, DESCRIPTION, TEXT_PREFIX, MIN_VALUE, MAX_VALUE, NUMBER_LENGTH ) VALUES (1, 'POLICY_TXN.SUBMISSION_NUMBER', 'Submission Number', '', (select MAX(POLICY_SUBMISSION_NUMBER) from POLICY_TXN ) + 1, 9999999999999999, 16);
8.1.1.6.1.4 Data in NUMBER_RANGE.txt
POLICY_TXN.SUBMISSION_NUMBER~Submission Number~1~9999999999999999~16~~~
8.1.1.6.2 Generating Sequential Application Number and Policy Number
To enable the sequential number generation when creating temporary applications, also define the following system configuration item in the Administrative Console:
Key: model.calc.number.range
The default value is 0, which means it’s disabled by default.
Data in NUMBER_RANGE.txt
MODEL_CALC_ABDAPOLICY.POLICYNR_TT~Number range used for creating temporary applications in FSPM for Model Calculation~19900000000000001~19999999999999999~17~~~ MODEL_CALC_ABDAPOLICY.APPLNR_CD~Number range used for creating temporary applications in FSPM for Model Calculation~00000000000000001~99999999999999999~17~999~~
Developer Guide 380 PUBLIC Coverage-Based Architecture The above number range must be consistent with the one defined in FS-PM, which can be found with the following steps:
1. Login to the FS-PM system. 2. Enter transaction code SPRO. 3. Select SAP Reference IMG. 4. Expand Policy Management General Settings Number Ranges In-Force Business Management .
The number range defined for application and policy will be displayed.
8.2 OData Extensions
8.2.1 DataTable-related Annotations
DataTableMapper annotations has been introduced to indicate an entity that can be mapped by the DataTable object. The postPropertiesSet parameter provides the capability to run customized mapping after DataTable to Entity mapping completes. By default, if the parameter isn't specified, the afterPropertiesSet API will be invoked if it exists in the Entity bean.
DataTableMapper annotations has been introduced to indicate an entity that can be mapped by the DataTable object. The postPropertiesSet parameter provides the capability to run customized mapping after DataTable to Entity mapping completes. By default, if the parameter isn't specified, the afterPropertiesSet API will be invoked if it exists in the Entity bean.
8.2.2 ProductRuleDataSource
The ProductRuleDataSource provides OData data source connection to the rules engine. The following API is provided, implementing PqmODataSingleDataSource as an abstract class. The read() method should be implemented by an inherited data source that injects into a processor the process requested by OData for linked entities. The following are the provided APIs by ProductRuleDataSource.
/** * Executes a rule with the specified information. * * @param productName * Name of the product where the rule is located, as a String. * @param productVersion * Version of the product where the rule is located, as a String. * @param contextDate * Date when the rule is to be executed, as a Timestamp object. * @param serviceName * The name of the service where the rule is located, as a * String. * @param args * List of input arguments for the rule to be executed, as * Map
Developer Guide Coverage-Based Architecture PUBLIC 381 protected RuleResult runProductRule(String productName, String productVersion, Timestamp contextDate, String serviceName, Map
8.2.3 Processor
Processor processes OData requests that declare to the supported entityType. In the OData data source methodology, Processor links entity type to a specific data source to retrieve data or perform any other functions.
8.2.4 ModelValueMapper
Currently default the ModelValueMapper implementation is DataTableValueMapper. The purpose of ModelValueMapper is to create generic/reusable mapping mechanisms between entities and back-end service objects. Customers can create their own value mapper specific to an entity and service.
/** * Map valueObjects (service objects) to List of OData entity. * @param valueObject * @param entity * @return entitySet */ public
Developer Guide 382 PUBLIC Coverage-Based Architecture
/** * Map a single object value to entity * @param value * @param entity * @return */ public
/** * Map entity value to valueObject (service object), mainly for create/ update/delete mapping. * @param valueObject * @param entity * @return */ public
8.2.5 DataTableValueMapper
DataTableValueMapper maps the general DataTable with a desired entity object. This mapper converts all data table rows to an entity list. In the above example, it converts DataTable to Product entity.
The following APIs have been following implemented by this mapper:
/** * Map entire data table (all rows) to an entity list. * * @param value The DataTable object. * @param entity Target entity. * * @return Entity list with mapped value. */ @Override public
Developer Guide Coverage-Based Architecture PUBLIC 383 8.3 Replacing EMF (PTTO) with Domain Layer
8.3.1 PTTO Removal
With the release of FS-QUO 3.0 Support Package 2, the Eclipse Modeling Framework (EMF) is no longer supported in Fiori-based architecture (it is, however, still supported in legacy Sencha-based architecture). Any customizations added using the Development Toolkit, using the EMF data access layer will be impacted. These customizations must be migrated to use the Domain Layer, which is part of the newer Fiori-based architecture in FS-QUO. These changes are required for the following scenarios:
● Any customizations to new features in 3.0 SP02. ● Any customization applied to a feature whose underlying design was updated from using EMF to the Domain Layer in 3.0 SP02.
Note
Before proceeding with these changes, you must update the Development Toolkit to the latest release.
8.3.2 Characteristics of EMF
The EMF eclipse plug-in uses the data access framework for AS Services, which is part of the Sencha-based architecture in FS-QUO. It provides an abstraction of the underlying technical data layer (URS), using XML- based mapping. The mapping/transformation can be arbitrarily complex.
Customers use the Toolkit to customize the data model by working in the ASModel project (using the EMF Eclipse plugin), as well as in supporting code such as the ASModelBuilder (requiring changes when the model changes).
EMF is an outdated and comparatively resource-intensive framework. In addition, upgrading EMF customizations requires complicated analysis of the model as well as of supporting code.
8.3.3 Areas changed from using PTTO to Domain Layer
The following areas are changed and no longer use PTTO (EMF) as of release 3.0 SP02:
● Fiori New Business application logic (OData processors and SWF flow definitions). ● Sample products for Fiori New Business (no longer using ASPolicyModelStem; PTTO isn't passed to products during Fiori New Business).
Developer Guide 384 PUBLIC Coverage-Based Architecture 8.3.4 Characteristics of Domain Layer
The Domain Layer is used in Fiori-based architecture as the data access framework FS-QUO Business Services. It provides an abstraction of the underlying technical data layer (URSDataObject), using DataObject attribute-based mapping. The mapping is one-to-one, and restricted to the behavior of URS (for example, master/child objects, reference links).
Customers use the Toolkit to customize the data model by working in the com.sap.fs.quo.domain.data project.
Supporting code (for example, for data load and save) is encapsulated in the Domain Model Service, and doesn't require changes if the data model changes.
FS-QUO code and customizations shouldn't access the URS directly
Domain Objects (memory model) are retrieved from the Domain Model Service, and aren't session-specific.
8.3.5 Comparing EMF and Domain Layer
The following compares and contrasts the two methods:
Example: PTTO (EMF) example
From ConfirmBindHandler.processRequest()
PolicyTransactionTransferObject ptto = (PolicyTransactionTransferObject) asSession.get( TRANSACTION );
PTTO is retrieved from session
getTransactionService(ptto).bindOption(ptto, optionId);
PTTO is passed to AS transaction service
From TransactionServiceBaseImpl.bindOption()
PolicyTransaction currentTransaction = ptto.getPolicyTransaction(); if(optionId==null) { optionId = currentTransaction.getBoundOptionId();
Child objects are obtained from PTTO (as per model definition)
ptto.update();
PTTO is saved to the database, using its own method.
Developer Guide Coverage-Based Architecture PUBLIC 385 Example: Domain Layer example
From QuoteOptionDataServiceImpl.getQuoteOptionById()
return domainModelService.getDomainData(QuoteOptionData.class, quoteOptionId);
Returns an instance of QuoteOptionData, loaded using the Domain Model Service.
From QuoteOptionProcess.issuePolicy()
quoteOptionService.bindAndIssueIndividualQuoteOptionToPolicy(reqInfo, quoteOption);
QuoteOptionData instance is passed to Business Service.
SubmissionData.getQuoteOptions()
Child objects are obtained from Domain Objects (as per model definition).
From QuoteOptionDataServiceImpl. bindAndIssueIndividualQuoteOptionToPolicy()
quoteOption.setStatusCode("ISS");
Setting values to Domain Object
domainModelService.updateDomainData(quoteOption);
Domain Object is saved to database, using the Domain Model Service.
8.4 Troubleshooting
The following table outlines some troubleshooting tips with suggested fixes
Issue Fixes
The FS-QUO back-end is down/inaccessible as you are get Restart the server ting HTTP response codes of 404 or 503
The FS-QUO back-end is up and running but Single Sign On In this case, check that you are logging in using a user that (SSO) isn't going through. For requests to URL /ipw/*, you exists in both the ABAP server and in the FS-QUO Java see HTTP response code 200 but the response body is in the server in UME. There could also be an SSO configuration er HTML format of the login page ror
Developer Guide 386 PUBLIC Coverage-Based Architecture 8.5 Cross-Site Request Forgery (XSRF/CSRF) Protection
Cross-Site Request Forgery (CXRF/ XSRF) is a cyber attack that tricks a victim's browser into sending a request to a vulnerable Web application, which then performs an undesired action on behalf of the victim.
If you are writing your own application that call FS-QUO services including eApps, you will need to account for CSRF/XSRF security. This requires the use of a CSRFToken header, and a specific request and response sequence.
8.5.1 CSRF Protection Within FS-IPW Applications
In FS-IPW, the SAP com.sap.xsrf.rest.filter.XsrfRestFilter is leveraged to implement a token- based solution to protect FS-IPW apps against attacks of this type. The filter provides access to the resource when a modifying HTTP method is used and a CSRF token is received with the same value as the token stored in the current session. To obtain the CSRF token, the client has to use a non-modifying HTTP method containing the string x-csrf-token with the value Fetch. The token is issued only if the user has already been authenticated. If the user hasn't been authenticated, any request with a modifying method is rejected by this filter. In addition, the client also has to include all previously received cookies in the modifying requests.
In addition to FS-PQM's OData service, CSRF token support was added to eApp HTTP request APIs.
The OData requests provided by the UI5 framework support this token-based solution out of the box so no additional implementation is required to ensure CSRF protection. However, other requests, such as jQuery AJAX requests, will need to be secured in the following way:
1. Retrieve the x-csrf-token for the current authenticated session. The following JavaScript utility function is an example taken from the Create Insurance Quote application to perform this task:
fs.ipw.insquote.create.util.SecurityHelper = { /** * Retrieves the XSRF token for an authenticated session and performs a callback on the controller function * with the token ID in the function parameter. * * @returns {string|number|null} XSRF token of authenticated session. */ getXsrfToken: function(){ var oTokenId; jQuery.ajax({ async: false, url: "/ipw/quo/getUserInfo.do", type: "GET", beforeSend: function(xhr){ xhr.setRequestHeader("x-csrf-token", "Fetch"); xhr.setRequestHeader("Accept-Language", sap.ui.getCore().getConfiguration().getLanguage()); }, contentType: "application/json;charset=utf-8", dataType: "json", cache: false, success: function(data, status, xhr) { oTokenId = xhr.getResponseHeader("x-csrf-token"); }, error: function(err) {
Developer Guide Coverage-Based Architecture PUBLIC 387 jQuery.sap.log.error(this.oBundle.getText("COULD_NOT_GET_XSRF_TOKEN") + err); } }); return oTokenId; } };
The request header is populated with the key x-csrf-token and it has the value Fetch. This server side call will then create the necessary token and return it upon success. 2. Populate the x-csrf-token within the request header for any subsequent requests. The following is an example of usage in JavaScript:
createNewFlow: function() { var oTokenId = fs.ipw.insquote.create.util.SecurityHelper.getXsrfToken(); var oTransactionId = ""; jQuery.ajax({ type: "POST", beforeSend: function(xhr){ xhr.setRequestHeader("Cache-Control", "no-cache, must- revalidate"); xhr.setRequestHeader("Pragma", "no-cache"); xhr.setRequestHeader("x-csrf-token", oTokenId); }, context: this, async: false, url: fs.ipw.insquote.create.Configuration.prototype.getSetupParameter("WebflowUrl") , dataType: "json", success: function(result) { oTransactionId = result.response.transactionId; } }); return oTransactionId; },
In the above code example, an initial request is made to the fs.ipw.insquote.create.util.SecurityHelper JavaScript class to obtain the x-csrf-token. The request header is then populated with the key x-csrf-token and it has the actual value of the token. This server side call then validates this token and either allows or rejects the request.
8.5.1.1 UI5 eApps
For eApps provided out of the box, when a web client calls the com.sap.fs.ps.eapp.renderer.controller.JSONLayoutController with the action GetNavigationModel, a random string of 32 alphanumeric characters is generated as a CSRF token. This string token is set into the HTTP session and to the NavigationModel response with the name CSRFToken.
With each POST, PUT or DELETE request, the CSRFToken is passed in the request header and compared against the one in the session. If there isn't a match, the request is rejected with an error.
Developer Guide 388 PUBLIC Coverage-Based Architecture The following JavaScript example code snippet shows an example of an AJAX request to the com.sap.fs.ps.eapp.renderer.controller.JSONLayoutController with the GetNavigationModel action set as well as obtaining the CSRFToken from the response:
$.ajax({ type: 'GET', async: false, data: jQuery.param({"Action":"GetNavigationModel"}), url: "/csiroot/eapp-runtime/JSONLayoutController", dataType: 'json', beforeSend: function(){ }, success: function(result) { var eAppNavigationModel = new sap.ui.model.json.JSONModel(); eAppNavigationModel.setData(result); var csrfToken = eAppNavigationModel.getProperty("/CSRFToken"); }, error: function(e){ jQuery.sap.log.error(e.message); }, complete: function(){ } });
8.5.2 CSRF Protection Within Sencha (Legacy) Applications
As of FS-QUO 3.0, a filter was used to implement a token-based solution to protect FS-QUO applications against attacks of this type. The filter provides access to the resource when a modifying HTTP method is used and a CSRF token is received with the same value as the token stored in the current session. The CSRF token is included in content generated by the server and sent to the client. The client has to include this token with all modifying requests to the server or the request will be rejected.
The com.sap.fs.security.CSRFFilter class filters all requests matching any of the patterns *.flow, *.exhtm, /servlet/FlowletServlet, /cservlet/CustomService. This filter was created to check that the CSRF token is present in the request and that it matches the token that's stored in the session. If the token doesn't match, an error is logged and the request is silently dropped, providing no information to a potential attacker.
The com.sap.fs.security.CSRFGenerator class also filters all requests matching any of the patterns *.flow, *.exhtm, /servlet/FlowletServlet, /cservlet/CustomService. This filter was created to handle certain cases resulting from legacy code. The CSRFFilter class expects the token to be passed within the request header named CSRFToken, but there are places within the UI that can't add a custom header without extensive rewrites. This class detects those cases where the token is passed as a parameter or in the referrer header and places it in the correct header. This filter is configured before the CSRFFilter class in the filter chain.
These filters are configured in the web.xml document under the camilionweb project and they can accept a comma-separated list of exclusions. The exclusions will be ignored by the filters, as they don't need CSRF protection. All modifying requests that match the patterns described above need to add the CSRF token to the header of the request. If this isn't possible, it can be passed as a parameter or in the referrer header, although these methods are considered less secure and are only included for legacy reasons.
Developer Guide Coverage-Based Architecture PUBLIC 389 8.5.2.1 Sencha Static Screens
All calls to *.flow or *.exhtm need to provide a valid CSRF token, or they will be rejected. Most modifying calls to the server in the Sencha UI go through the callHandler() method in ASPortalCommon.js. Since this is a common point of entry for the UI, it has already been modified to pick up the CSRF token value and add it to the list of headers.
For any custom calls, you can use the following code within an Ext.Ajax.request:
headers: { 'CSRFToken': retrievePortalFrame().csrfToken },
8.5.2.2 Sencha eApps
The MultiLevelRiskRenderer is the only renderer to have been updated to retrieve and pass along the CSRF token.
When the eApp is invoked by calling RunProcess.jsp, it will retrieve the CSRF token from the session and add it to the frame which loads the com.camilion.servlet.FlowletServlet. This first call to the FlowletServlet provides the CSRF token in the response, as a FORM input, under the name CSRFToken. Subsequent calls to FlowletServlet need to pass the valid CSRF token. Since most of these calls in the Sencha eApp are called as simple HTTP GET requests, there is no way to add a custom header. In these cases, the CSRF token is retrieved from the top-level FORM and passed as a parameter in the GET request. The com.sap.fs.security.CSRFGenerator filter will process it and move it to the correct header.
Developer Guide 390 PUBLIC Coverage-Based Architecture 9 Appendix
9.1 Building Enterprise Services for FS-QUO
This appendix provides information on building Enterprise Services for FS-QUO.
This process requires NetWeaver Development Studio (NWDS). Other Eclipse distributions such as LeanDI don't have the necessary NetWeaver and Enterprise Services plugins.
The best practice is to have a separate local workspace for NWDS that isn't connected to any source control, and use it as a temporary workspace to hold generated artifacts.
Once you generate the WSDL/Java files you then manually merge into your FS-PQM workspace. It is recommended to use a compare tool such as Beyond Compare for merging.
9.1.1 First Time Setup
9.1.1.1 Creating an EJB Project in the NWDS Workspace
You can create an EJB project in the NWDS workspace.
Procedure
1. Select menu File New EJB Project , or right click on Project Explorer view and select New Project… EJB Project . 2. Enter a new project name. 3. Enter the following values into the listed fields: ○ Target runtime = SAP Libraries ○ EJB module version = 3.0 ○ Configuration = Default Configuration for SAP Libraries 4. Choose Finish.
Developer Guide Appendix PUBLIC 391 9.1.1.2 Setting up ESR Connection in NWDS
You can set up an ESR connection in NWDS.
Procedure
1. Choose Window Preferences from the menu bar.
2. Navigate to Web Services Enterprise Service Browser . 3. Enter the connection information as shown below: ○ ESR System: X3E ○ ESR Host: pwdf3305.wdf.sap.corp ○ ESR Http Port: 54500 ○ ESR Https Port: 44345 ○ Secure Connection (HTTPs):
9.1.1.3 Configuring Default Settings in NWDS
You can configure the default settings in NWDS.
Procedure
1. Choose Window Preferences from the menu bar.
2. Navigate to Web Services Scenario Defaults .
Developer Guide 392 PUBLIC Appendix 3. Change the settings to look like the following:
4. Navigate to Web Services Server and Runtime . 5. Change the settings to values similar to the following: ○ Server = SAP Server ○ Web service runtime = SAP NetWeaver
9.1.2 Building Enterprise Service Implementation from ESR
9.1.2.1 Generating Java Bean Skeletons
You can generate Java bean skeleton.
Context
Note
There are other ways to do this (for example, download and import WSDL and generate from that). The following method is more direct and doesn't require keeping or moving separate WSDLs, and it generates WSDLs into the correct folders.
Developer Guide Appendix PUBLIC 393 Procedure
1. Open the ESR perspective:
a. Navigate to Window Open Perspective Other… . b. Choose Enterprise Services Repository. 2. Choose the Connect to ESR icon to open a connection. 3. Enter the User Name and Password (requested from DLM). 4. Choose OK. 5. Find the service interface you want to generate code for, right-click on it and choose Generate JavaBean Skeleton. 6. Select Develop Service as the level of generation and No client.
Make sure the Server and Web service runtime matches values entered in step 5 above.
The Service project should be the EJB project you created in the first time setup. 7. Choose Next. 8. Choose Update WSDL. 9. Accept the defaults and choose Next for the Output Path, Name Selection, and Namespace screens. 10. For the Global Customization Options page, enable the Retain underscore in class and method names (to avoid collision) checkbox, and choose Finish.
The JavaBean skeletons and WSDL file should be generated under the EJB project you created. 11. If there's an error, try cleaning out your
9.1.2.2 Merging Java Bean Skeletons in to your FS-PQM Workspace
Context
Procedure
1. Synchronize
Developer Guide 394 PUBLIC Appendix a. You will typically have one or more package paths with similar structure as your ESR namespaces, which have all the Java class representations of data and message types and service interfaces (for example, com.sap.xi.fs_quo.global2). Merge these and ignore other developer-written packages and classes. b. Carefully (manually) merge the contents of the service interface classes (
3. Within your FS-PQM workspace (LeanDI Eclipse), go to Project Clean… to rebuild your workspace.
Make sure there aren't any compile errors. 4. It is also a good idea to run whatever JUnit test suites you have in your project.
5. Right-click on your main FS-PRO/FS-QUO project and choose Run As Maven clean . Once it is complete, right-click on the same project but choose Run As Maven install . 6. Re-deploy the FS-PRO/FS-QUO SCA file and verify the new/existing services work. 7. If everything is working, you can commit or push to Git.
Developer Guide Appendix PUBLIC 395 Important Disclaimers and Legal Information
Hyperlinks
Some links are classified by an icon and/or a mouseover text. These links provide additional information. About the icons:
● Links with the icon : You are entering a Web site that is not hosted by SAP. By using such links, you agree (unless expressly stated otherwise in your agreements with SAP) to this:
● The content of the linked-to site is not SAP documentation. You may not infer any product claims against SAP based on this information. ● SAP does not agree or disagree with the content on the linked-to site, nor does SAP warrant the availability and correctness. SAP shall not be liable for any damages caused by the use of such content unless damages have been caused by SAP's gross negligence or willful misconduct.
● Links with the icon : You are leaving the documentation for that particular SAP product or service and are entering a SAP-hosted Web site. By using such links, you agree that (unless expressly stated otherwise in your agreements with SAP) you may not infer any product claims against SAP based on this information.
Videos Hosted on External Platforms
Some videos may point to third-party video hosting platforms. SAP cannot guarantee the future availability of videos stored on these platforms. Furthermore, any advertisements or other content hosted on these platforms (for example, suggested videos or by navigating to other videos hosted on the same site), are not within the control or responsibility of SAP.
Beta and Other Experimental Features
Experimental features are not part of the officially delivered scope that SAP guarantees for future releases. This means that experimental features may be changed by SAP at any time for any reason without notice. Experimental features are not for productive use. You may not demonstrate, test, examine, evaluate or otherwise use the experimental features in a live operating environment or with data that has not been sufficiently backed up. The purpose of experimental features is to get feedback early on, allowing customers and partners to influence the future product accordingly. By providing your feedback (e.g. in the SAP Community), you accept that intellectual property rights of the contributions or derivative works shall remain the exclusive property of SAP.
Example Code
Any software coding and/or code snippets are examples. They are not for productive use. The example code is only intended to better explain and visualize the syntax and phrasing rules. SAP does not warrant the correctness and completeness of the example code. SAP shall not be liable for errors or damages caused by the use of example code unless damages have been caused by SAP's gross negligence or willful misconduct.
Gender-Related Language
We try not to use gender-specific word forms and formulations. As appropriate for context and readability, SAP may use masculine word forms to refer to all genders.
Developer Guide 396 PUBLIC Important Disclaimers and Legal Information Developer Guide Important Disclaimers and Legal Information PUBLIC 397 www.sap.com/contactsap
© 2021 SAP SE or an SAP affiliate company. All rights reserved.
No part of this publication may be reproduced or transmitted in any form or for any purpose without the express permission of SAP SE or an SAP affiliate company. The information contained herein may be changed without prior notice.
Some software products marketed by SAP SE and its distributors contain proprietary software components of other software vendors. National product specifications may vary.
These materials are provided by SAP SE or an SAP affiliate company for informational purposes only, without representation or warranty of any kind, and SAP or its affiliated companies shall not be liable for errors or omissions with respect to the materials. The only warranties for SAP or SAP affiliate company products and services are those that are set forth in the express warranty statements accompanying such products and services, if any. Nothing herein should be construed as constituting an additional warranty.
SAP and other SAP products and services mentioned herein as well as their respective logos are trademarks or registered trademarks of SAP SE (or an SAP affiliate company) in Germany and other countries. All other product and service names mentioned are the trademarks of their respective companies.
Please see https://www.sap.com/about/legal/trademark.html for additional trademark information and notices.
THE BEST RUN