Product Model
Product Model
PolicyCenter®
Guidewire Claim Portal, Guidewire Policyholder Portal, Guidewire Spotlight, Gosu, Adapt and succeed, and the
Guidewire logo are trademarks, service marks, or registered trademarks of Guidewire Software, Inc. in the
United States and/or other countries.
All other trademarks are the property of their respective owners.
This material is confidential and proprietary to Guidewire and subject to the confidentiality terms in the
applicable license agreement and/or separate nondisclosure agreement.
Guidewire products are protected by one or more United States patents.
Product Release Information
Product Name: Guidewire PolicyCenter
Product Release: 9.0.0
Document Name: PolicyCenter Product Model Guide
Document Revision: 24-June-2016
PolicyCenter 9.0.0 Product Model Guide
Contents
About PolicyCenter Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Conventions in This Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Part I
PolicyCenter Product Model
1 Configuring the Product Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Product Model Patterns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Product and Policy Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Working with Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Products Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Working with Workspaces and Change Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Defining a Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Deleting a Product. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Associating a Policy Line with a Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Specifying Policy Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Specifying Advanced Settings for a Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Adding an Initialization Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Adding Document Templates to a Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2 Configuring Policy Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Working with Policy Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Adding Coverages to a Policy Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Coverages and Coverables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Covered Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Coverables and Coverage Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Coverables and Delegates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
CoveragePattern and Coverage Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Adding a New Coverage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Configuring Coverages in PCF Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Rendering Common Coverages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Rendering Less Common Coverages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Defining Coverage Terms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Coverage Term Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Coverage Term Model Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Adding New Coverage Term Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Coverage Term Availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Adding Exclusions to a Policy Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Adding Conditions to a Policy Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Defining Categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Defining a Coverage Symbol Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Symbols. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Business Purpose of Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
PolicyCenter Usage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Defining Official IDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Adding Quote Modifiers to a Policy Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Contents 3
PolicyCenter 9.0.0 Product Model Guide
3 Quote Modifiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Terms Associated with Modifiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Configuring Modifiers in Product Designer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Rate Modifiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Split Rating Period . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Display Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Rate Factors Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
State Min/Max Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Availability Page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Offerings Page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4 Question Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Question Set Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
When to Use Question Sets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Associating Question Sets with Multiple Products. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Questions and Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Incorrect Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Types of Question Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Configuring Question Sets in Product Designer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Adding a New Question Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Configuring Offerings for Question Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Defining New Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Configuring Question Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Configuring Question Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Configuring Incorrect Answer Behavior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Configuring Question Choices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Configuring Question Help Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Question Set Object Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
The Answer Container Delegate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Defining Answer Containers and Question Sets for Other Entities . . . . . . . . . . . . . . . . . . . . . . . . 59
Step 1: Create an Answer Container for the Entity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Step 2: Add a typekey to define the question set type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Step 3: Define Question Set and Question Lookup Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Step 4: Define Question Set and Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Step 5: Define the User Interface to Display the Question Set . . . . . . . . . . . . . . . . . . . . . . . . . 61
Step 6: Configuring an Answer Container to Trigger Underwriting Issues . . . . . . . . . . . . . . . 62
Triggering Actions when Incorrect Answers are Changed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5 System Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
What Are System Tables?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Configuring System Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Adding a System Table in Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Configuring File Loading of System Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Verifying System Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Class Codes with Multiple Descriptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Notification Config System Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Lead Time in NotificationConfig System Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6 Configuring Availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
What is Availability? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Grandfathering and Offerings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4 Contents
PolicyCenter 9.0.0 Product Model Guide
Defining Availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Performance Considerations for Availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Defining Availability in Lookup Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Defining Availability in Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Defining Grandfathering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Availability Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Setting the Reference Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Reference Date Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Specifying the Reference Date Type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Specifying the Reference Date to Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
When Reference Dates are Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Reference Date Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Customizing the Reference Date Lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Extending an Availability Lookup Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Step 1: Extend an Availability Lookup Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Step 2: Define the Column in the Availability Lookup Table . . . . . . . . . . . . . . . . . . . . . . . . . 82
Step 3: Using the Updated Availability Column . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Reloading Availability Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
External Product Model Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Availability Reload and Open Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
The Reload Availability Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Reload Availability in a Clustered Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Reloading Availability Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Step 1: Enable the Configuration Parameter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Step 2: Make Changes to Availability in Product Designer . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Step 3: Copy Changes to External Product Model Directory . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Step 4: Reload Availability in PolicyCenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Step 5: Verify Changes to Availability in PolicyCenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7 Configuring Offerings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Working with Offerings in the Product Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Product Offerings Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Product Selections Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Product Model Pattern Offerings Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Contents 5
PolicyCenter 9.0.0 Product Model Guide
Part II
Configuring Lines of Business
13 Adding a New Line of Business. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Step 1: Define the Data Model for the New Line of Business . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Defining the Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Attaching Coverages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Additional Policy Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Step 2: Register the New Line of Business. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Step 3: Add a Policy Line Package and Configuration Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Step 4: Add Coverages to the New Line of Business . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Creating the Basic Policy Line and Coverable Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Creating the Coverage Entity for the Coverable Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Understanding the Coverable and Coverage Adapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Creating the Coverable Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Creating the Coverage Adapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Updating Policy Line Methods for the New Coverages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Adding Availability Lookup Tables for Coverages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Adding a Coverage Pattern in the Policy Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
6 Contents
PolicyCenter 9.0.0 Product Model Guide
Contents 7
PolicyCenter 9.0.0 Product Model Guide
8 Contents
PolicyCenter 9.0.0 Product Model Guide
Document Purpose
InsuranceSuite Guide If you are new to Guidewire InsuranceSuite applications, read the InsuranceSuite Guide for
information on the architecture of Guidewire InsuranceSuite and application integrations.
The intended readers are everyone who works with Guidewire applications.
Application Guide If you are new to PolicyCenter or want to understand a feature, read the Application Guide.
This guide describes features from a business perspective and provides links to other books
as needed. The intended readers are everyone who works with PolicyCenter.
Upgrade Guide Describes the overall PolicyCenter upgrade process, and describes how to upgrade your
PolicyCenter database from a previous major version. The intended readers are system
administrators and implementation engineers who must merge base application changes
into existing PolicyCenter application extensions and integrations.
Configuration Upgrade Guide Describes how to upgrade your PolicyCenter configuration from a previous major version.
The intended readers are system administrators and implementation engineers who must
merge base application changes into existing PolicyCenter application extensions and inte-
grations. The Configuration Upgrade Guide is published with the Upgrade Tools, and is
available on the Guidewire Resource Portal.
New and Changed Guide Describes new features and changes from prior PolicyCenter versions. Intended readers
are business users and system administrators who want an overview of new features and
changes to features. Consult the “Release Notes Archive” part of this document for changes
in prior maintenance releases.
Installation Guide Describes how to install PolicyCenter. The intended readers are everyone who installs the
application for development or for production.
System Administration Guide Describes how to manage a PolicyCenter system. The intended readers are system admin-
istrators responsible for managing security, backups, logging, importing user data, or appli-
cation monitoring.
Configuration Guide The primary reference for configuring initial implementation, data model extensions, and
user interface (PCF) files. The intended readers are all IT staff and configuration engineers.
PCF Reference Guide Describes PolicyCenter PCF widgets and attributes. The intended readers are configuration
engineers.
Data Dictionary Describes the PolicyCenter data model, including configuration extensions. The dictionary
can be generated at any time to reflect the current PolicyCenter configuration. The intended
readers are configuration engineers.
Security Dictionary Describes all security permissions, roles, and the relationships among them. The dictionary
can be generated at any time to reflect the current PolicyCenter configuration. The intended
readers are configuration engineers.
Globalization Guide Describes how to configure PolicyCenter for a global environment. Covers globalization top-
ics such as global regions, languages, date and number formats, names, currencies,
addresses, and phone numbers. The intended readers are configuration engineers who
localize PolicyCenter.
Rules Guide Describes business rule methodology and the rule sets in PolicyCenter Studio. The
intended readers are business analysts who define business processes, as well as pro-
grammers who write business rules in Gosu.
Document Purpose
Contact Management Guide Describes how to configure Guidewire InsuranceSuite applications to integrate with
ContactManager and how to manage client and vendor contacts in a single system of
record. The intended readers are PolicyCenter implementation engineers and
ContactManager administrators.
Best Practices Guide A reference of recommended design patterns for data model extensions, user interface,
business rules, and Gosu programming. The intended readers are configuration engineers.
Integration Guide Describes the integration architecture, concepts, and procedures for integrating
PolicyCenter with external systems and extending application behavior with custom pro-
gramming code. The intended readers are system architects and the integration program-
mers who write web services code or plugin code in Gosu or Java.
Java API Reference Javadoc-style reference of PolicyCenter Java plugin interfaces, entity fields, and other utility
classes. The intended readers are system architects and integration programmers.
Gosu Reference Guide Describes the Gosu programming language. The intended readers are anyone who uses
the Gosu language, including for rules and PCF configuration.
Gosu API Reference Javadoc-style reference of PolicyCenter Gosu classes and properties. The reference can
be generated at any time to reflect the current PolicyCenter configuration. The intended
readers are configuration engineers, system architects, and integration programmers.
Glossary Defines industry terminology and technical terms in Guidewire documentation. The intended
readers are everyone who works with Guidewire applications.
Product Model Guide Describes the PolicyCenter product model. The intended readers are business analysts and
implementation engineers who use PolicyCenter or Product Designer. To customize the
product model, see the Product Designer Guide.
Product Designer Guide Describes how to use Product Designer to configure lines of business. The intended read-
ers are business analysts and implementation engineers who customize the product model
and design new lines of business.
Support
For assistance, visit the Guidewire Resource Portal – http://guidewire.custhelp.com
The product model identifies the types of products and policies that your PolicyCenter configuration offers. For
each product, the product model specifies the choices about the items that can be covered. Each product model
you define is a product configuration.
This topic includes:
• “Product Model Patterns” on page 13
• “Product and Policy Objects” on page 14
• “Working with Products” on page 15
Creating or modifying a line of business requires working with the product model with two different skill sets:
programming skills and business domain skills. In some organizations, a single person performs all requires
steps. In other organizations, software developers perform the programming steps while business analysts
perform product model design steps. Guidewire provides separate tools for each aspect:
• Guidewire Studio
• Creates entities and defines their physical implementation in the PolicyCenter database
• Defines business rules
• Creates and modifies the PolicyCenter user interface
• Guidewire Product Designer
• Configures the product model patterns that define a line of business
• Defines system tables that support the business logic needed by the line of business
Both tools can run on a single computer together with a development instance of PolicyCenter. Alternatively,
Product Designer can run on a separate application server enabling multiple business analysts to edit the product
mode at one time. The Product Designer Guide describes both installation scenarios.
Another part of a complete line of business is the set of forms that accompany each product. PolicyCenter can be
integrated with a forms issuance system and each line of business can be configured to infer the forms required
for each policy instance. For information about form patterns, see “Policy Form Pattern Administration” on
page 779 in the Application Guide for information about adding form patterns to products and policy lines.
The following graphic shows the relationship between the Product pattern and the Policy object.
The PolicyLinePattern creates PolicyLine instances. A policy line pattern is a group of legal and binding
information about the product, such as:
• The exposures in the base configuration that can be covered on the policy
• The coverages that are available on the policy
The following graphic shows the relationship between the policy line pattern and an instance of that policy.
Notice that a Product (pattern) relates to a PolicyLinePattern as an instance of a Policy relates to an instance
of a PolicyLine. Each product pattern can have one or more policy line patterns. Likewise, an instance of a
policy can have more or more instances of a policy line.
Products Pages
To access the PolicyCenter product model, log in to Product Designer and click Products in the navigation panel
to display the Products page. To add a new product, click Add. To edit an exiting product, select a product in the
Products page to display the product page for that product pattern. For example, click Businessowners to display the
Businessowners page. The product page for the selected product has the following sections:
Section See
Note: The Translate icon appears at the end of fields that can be translated. Click the icon to display the
Display Key Values by Locale dialog box where you can view or add translated text for each product locale. For
example, you can specify that the name of the Personal Auto line will be Automobile Personnelle in French.
For more information, see “Localizing Product Model String Resources” on page 50 in the Globalization
Guide.
Use links under Go to to display other pages related to the selected product. Other product pages are described in
the following topics:
• “Question Sets Page” on page 16
• “Modifiers Page” on page 17
• “Offerings Page” on page 17
• “Availability Page” on page 17
See also
• “Policy Form Pattern Administration” on page 779 in the Application Guide for information about adding
form patterns to products.
After selecting or adding a product, click Question Sets under Go to to display the Questions Sets page for the selected
product. To associate a question set with a product, click Add to display the available question sets, and then click
the question set to associate.
See also
• “Question Sets” on page 47 to learn how to define and manage question sets.
Modifiers Page
Modifiers are factors that affect rating and typically result in an increase or decrease in the premium for a policy.
There are multiple types of modifiers, many of which are specific to a jurisdiction. Modifiers can be added to a
product or a policy line. Modifiers added to a product affect rating for all lines in that product. Modifiers added
to a policy line affect only that line.
See also
• “Quote Modifiers” on page 41.
Offerings Page
Offerings define product variations, enabling you to provide products that vary depending on target customers or
other marketing criteria. For example, a Standard personal auto offering defines a standard set of coverages,
limits, and deductibles. A Beginning Driver offering has different limits and deductibles to satisfy the needs of
drivers who are just starting to drive as well as their financially-responsible parents.
To define or edit offerings, select or add a product, and then click Offerings under Go to to display the product’s
Offerings page.
See also
• “Configuring Offerings” on page 89
• “Understanding Offerings” on page 495 in the Application Guide to learn about offerings and why you use
them.
Availability Page
Availability is the product model mechanism that captures whether or not a product model pattern can be used.
Specific product model patterns in PolicyCenter can be made available only:
• As of, or until, a given date
• Within (or never within) a given jurisdiction
• When specific underwriting companies are used to write the policy
• Other, more complex conditions that can be expressed in Gosu code.
To view or edit availability for a product, select the product and then click Availability under Go to to display the
Availability page. To add a new availability row to the set of availability conditions, click Add.
See also
• “Configuring Availability” on page 73
• A workspace is a named association with a set of PolicyCenter configuration files. Product Designer refers to
the location of the PolicyCenter configuration files as the configuration root folder. Your administrator
defines Product Designer workspaces by following the instructions in “Managing Workspaces” on page 27 in
the Product Designer Guide.
• A change list is a named collection of changes that are held by Product Designer until you decide either to
commit or revert the changes. Committing your changes means moving them to the application’s configura-
tion files on the PolicyCenter server specified in the workspace with which the change list is associated.
Because your changes are in a change list, you can safely make changes and then later choose to commit or
not commit some or all of those changes. But until you commit the change list, the changes it contains do not
become part of the active PolicyCenter configuration.
Each change list is associated with a workspace. Therefore, each change list, when committed, modifies the
configuration files in a specific PolicyCenter instance. The following illustration shows the relationship between
Product Designer and other PolicyCenter components.
3ROLF\&HQWHU
3ROLF\&HQWHU
$SSOLFDWLRQ
'HYHORSPHQW
DQG
'DWDEDVH
&RQILJXUDWLRQ
)LOHV
/RFDO
&RQILJXUDWLRQ :$5($5
)LOHV
:RUNVSDFH
FRQILJXUDWLRQURRWIROGHU
*XLGHZLUH
3URGXFW'HVLJQHU
&KHFN2XW
6RXUFH 3ROLF\&HQWHU3URGXFWLRQ'DWDEDVH
&RQWURO
6\VWHP
You can create multiple change lists, and then select the active change list from among them. All changes you
make are saved in the active change list. Using multiple change lists enables you to group your changes into
separate sets and independently commit each change list at the appropriate time. Unless you assign it to another
user, each change list and the changes it contains belong to you. Other users have their own change lists. A
change list remains under your control unless you or your administrator reassigns it to another Product Designer
user.
A workspace optionally can be configured with a source control system. When configured in this way, Product
Designer automatically checks out individual files as each user makes changes to them. However, it does not
check them in again. You must manually check in your changed files using the source control system.
In addition to a configuration root folder, your administrator also can designate a test server URL for each work-
space. Test Server URL specifies a running PolicyCenter instance to which to deploy product model changes when
you select the Synchronize Product Model or Synchronize System Tables command in Product Designer.
The Test Server URL need not designate the same PolicyCenter instance as the Configuration Root Folder for the work-
space, although typically they are the same. However, the Test Server URL must point to an instance of
PolicyCenter that is running in development mode. As indicated in the previous illustration, you cannot deploy
the product model to a running instance of PolicyCenter in production mode. Instead, you must instead create a
WAR or EAR file and manually deploy the file using the application server’s deployment commands. For more
information on server modes, see “Configuring Guidewire Studio” on page 92 in the Configuration Guide.
Defining a Product
Use the Product home page to set the parameters that define the product pattern. For specific information about
each field, click Help to display the Help panel. As you work, the changes, additions, and deletions you make
are saved in a change list.
After deploying the new product, it is immediately available in the PolicyCenter Submission Manager. Although
your new product is available, you cannot use it to create submissions, because the product does not have a
policy line pattern associated with it. If you attempt to create a Quick Quote or Full Application using the new
product, PolicyCenter generates a PCF error. Before you can use the new product to create submissions, you
must be able to associate a policy line pattern with it on the Policy Lines tab within PolicyCenter. However, before
you can do that, you must define a policy line pattern in Product Designer. In addition, before using a new
product to create submissions, you must use Studio to either create the wizard screens or to associate the new
product with existing wizard screens.
Deleting a Product
You can delete a product or policy line from PolicyCenter. For example, you can delete lines of business that you
intend never to use. Before deleting a product, keep in mind that every product must have at least one policy line,
and every policy line must be associated with at least one product.
WARNING Deleting a product or line of business can have unanticipated and unintended conse-
quences. Guidewire strongly recommends that you fully understand the product model configuration
before taking this action. For example, if you do not correctly remove references to a deleted policy
line from your product definition, PolicyCenter cannot synchronize the product model at server startup.
As a consequence, it can be impossible to start the server thereafter until the problem is corrected. For
more information, see “Product Model Immutable Field Verification” on page 102.
Rather than deleting products and policy lines, consider using availability to set unwanted products to Unavailable.
Doing so hides the product in the PolicyCenter Submission Manager as well as in other areas of the user interface.
See also
• “Working with Policy Lines” on page 23 for information on how to create and manage policy line patterns.
See also
• “Rate Routines” on page 573 in the Application Guide
Note: Although it provides a place to type a Gosu script, Product Designer does not perform syntax
checking or other coding assistance functions that are common in integrated development environments.
Therefore, Guidewire recommends that you define all but the simplest scripts in Studio.
See also
• “Creating a Document Template” on page 478 in the Application Guide
• “Document Management” on page 201 in the Integration Guide
See also
• “Policy Form Pattern Administration” on page 779 in the Application Guide for information about defining
form patterns associated with policy lines.
PolicyLine Objects
The PolicyLine entity has multiple subtypes. When PolicyCenter creates policy line from a policy line pattern,
PolicyCenter needs to know which subtype within the PolicyLine entity to use for the new policy line instance.
Therefore, PolicyCenter always ties a policy line pattern to one of the policy line subtypes. In the base configura-
tion, the policy line subtypes are:
A PolicyLine object in Gosu is aware of the product model configuration of its pattern. For example, the cover-
ages defined within the policy line pattern can be referenced from an instance of the PolicyLine object. There-
fore, the following expression is valid:
var x = WCLine.WCEmpLiabCov
However, the following expression causes a type error because the businessowners policy (BOP) line does not
include workers’ compensation coverages:
var x = BOPLine.WCEmpLiabCov
As another example, consider the WorkersCompLine pattern, whose policy line subtype is WorkersCompLine. (It
is possible—but not required—for a policy line pattern to have the same code as the subtype it creates.) The
following definition occurs in WorkersCompLine.eti:
<subtype entity="WorkersCompLine" displayName="Workers’ Comp"
desc="Workers’ Comp" supertype="PolicyLine" generateCode="true">
...
<typekey name="OtherStatesOpt" typelist="OtherStates" desc="Other states option for the coverage"/>
...
</subtype>
The Gosu compiler merges the type information from the subtype definition and the product configuration to
form the final type of the WorkersComp PolicyLine.
Note: No product model configuration type information is available in Java, only the information provided
by the configuration dm files. Therefore, Guidewire recommends that you exercise extra care with Policy
objects in Java.
Coverable
A coverable is an exposure to risk that can be protected by the policy. A coverable may be a tangible property
item, a location, a jurisdiction, or the policy itself. Within PolicyCenter, Guidewire makes the policy line a cover-
able to represent the named insureds. Coverages attach only to coverables. You can further subdivide coverables
into property coverables and liability coverables.
• Property coverables are things with physical attributes (height, weight, value, construction type, and age, for
example).
• Liability coverables are operations that you typically represent with class codes (coal mining or personal auto
operation, for example).
Coverage
A coverage is protection from a specific risk. A coverage must be attached to a coverable. Coverages, like cover-
ables, also are divided into two types: property and liability. For example, on an auto policy, a collision property
coverage protects the insured’s vehicle and a liability coverage protects the driver for damage done to someone
else’s vehicle. Automobile liability coverage does not insure the vehicle. Rather, it insures its operation.
Using a car as an example to illustrate the different types of coverage:
Theft Property The coverable is the car and the type of loss is theft.
Collision Property The coverable is the car and the type of loss is damage from collision to the vehicle owned by
the insured.
Liability The coverable is the policy. Liability coverages covers damage to other vehicles and their
occupants.
Each PolicyLine contains one or more coverable entities and one or more coverages.
Covered Objects
Coverables have the following characteristics:
• All covered objects are coverables.
• Some policy entities are not coverables.
• A coverable entity implements the CoverableDelegate interface.
• A Coverable delegate encapsulates coverage behavior.
The term coverable refers to any covered object. For example, insurance terminology refers to a covered object,
such as a house, as a coverable.
• For liability, the insured is the coverable.
• For liability coverages, PolicyCenter designates the policy line as the coverable to represent the insured.
• For coverages that attach at a location, the location is a coverable. Do not use PolicyLocation as the cover-
able, but instead, create a separate coverable entity.
See also
• “Delegate Data Objects” on page 174 in the Configuration Guide
CoveragePattern Objects
A CoveragePattern object describes how to create coverages for a given policy line. During policy creation, the
coverage patterns determine which coverages must be created, which coverages are optional, and which cover-
ages must not be created.
Much like PolicyLinePattern objects and PolicyLine objects, the configuration of a coverage pattern affects
the Gosu type information of the Coverage objects that the pattern creates. The following Gosu is valid, because
the BOP PolicyLinePattern object has a BOPAcctRecvCov coverage pattern configured for it.
BOPLine.BOPAcctRecvCov
Coverage Objects
A Coverage object describes the actual coverage instances for each and every policy. PolicyCenter stores infor-
mation from this object in the coverage table. During policy creation, the coverage table stores the actual
coverage instances created from the coverage pattern. PolicyCenter creates one row for every instance of a
coverage for a policy.
In the base configuration, Product Designer has the following behavior:
• The optional Blanket Group Type field appears only for coverages in the commercial property policy line.
• The optional Coverage Symbol Group page appears only in the commercial auto policy line.
• The optional Official IDs page appears only for the workers’ compensation policy line.
• The optional Split Rating Period appears only for modifiers on the workers’ compensation policy line.
See also
• “Step 6: Add Optional Features to a Policy Line” on page 158 for an example of adding the optional Blanket
Group Type field to a new policy line pattern.
Grandfathering enables you to continue to offer a coverage to existing customers, even though the coverage is
not otherwise available. Under Grandfather States, you can specify a jurisdiction, underwriting company, and end
effective date.
Availability pages are provided for products, coverages, coverage terms, options, packages, conditions, exclusions,
modifiers, and question sets.
See also
• “Configuring Availability” on page 73
See also
• “Generic Schedules” on page 365 in the Application Guide
• “Configuring Generic Schedules” on page 117
3. On the Coverages page, click Add to display the Add Coverage dialog box.
4. Fill in the required fields. If you need help understanding the fields in the Add Coverage dialog box, cancel the
operation and click Help .
After creating a new coverage, Product Designer displays the Coverage home page where you can define addi-
tional coverage details, including:
• Existence
• Coverage Symbol Group
• Reference Date By
• Integration parameters
• Scripts
• Terms
• Reinsurance
• Availability
• Offerings
3. Within the coverage category iterator, PolicyCenter uses an InputSetRef to render the resulting coverages in
PolicyCenter. For example, BOPPropertyRequiredCatIterator contains an InputSetRef with the iterator
CoverageInputSet() that iterates across each resulting coverage category and renders its coverages on the
page.
You define this behavior in Studio in BOPScreen.pcf. To view this file, press CTRL+N and type the file name.
You define this behavior in Studio in BOPLinePropertyDV.pcf. In the Variables tab of the Properties for the
BOPLinePropertyDV.pcf, the bopPropertyRequiredCatCov variable selects the coverages to include.
As PolicyCenter builds the interface, it passes the categories for the common categories as a
CoverageInputSet() parameter (coveragePattern) to the BOPLinePropertyDV Detail View panel.
PolicyCenter renders a coverage on the screen only if you set the Exists bit on the Coverable. The allowToggle
setting in the CoverageInputSet.BOPBuildingCov PCF file governs this bit. The allowToggle property sets
whether the coverage pattern exists on this particular LOB. If you select a coverage (check the check box), then
this value toggles on.
For example:
Note: To change which additional coverages PolicyCenter renders on the screen, modify the list of returned
coverages in BOPLineEnhancement.getAdditionalCoverageCategories().
In Studio, BOPScreen.pcf provides an example of configuring additional coverages:
coverage election Does Boiler and Machinery coverage include coverage for air conditioning failure?
coverage scope How many licensed beauticians are covered by this liability coverage?
A coverage term pattern holds all configuration information for the terms of a coverage. Each coverage pattern
has an associated coverage term pattern. PolicyCenter uses the coverage term pattern to create coverage term
instances for coverage instances.
A coverage can have zero, one, or many coverage terms:
• Loss of Use coverage in the base commercial auto line is an example of a coverage pattern with no coverage
term patterns. After you add the coverage, the extent of the coverage is the same for all policies.
• Hired Auto Collision coverage in the base commercial auto line is an example of a coverage pattern with one
term pattern. It has a deductible term, but no other terms, such as a limit.
• The Employee Dishonesty coverage in the base businessowners line is an example of a coverage pattern with
multiple coverage term patterns. It has terms for limit, number of covered employees, and number of covered
locations.
When you add a coverage term pattern, you specify, among other parameters, its term type and its model type.
Term type Convention for selecting the value of the coverage term within PolicyCenter. For example, do you choose from
a drop-down list, enter a numeric value, or select from a predefined set of packaged values, such as 100/200/
300?
Model type What the value measures. For example, is the value a limit or a deductible? This information can be used
when integrating PolicyCenter with other systems to correctly interpret the coverage term pattern information.
Direct Numeric value entered directly by the PolicyCenter user, subject to “Direct Coverage Term Type” on page 33
the bounds specified in the CoverageTermPattern.
Option Numeric value selected from a predefined range of coverage term “Option Coverage Term Type” on page 34
options. Define the list of options in the Coverage Term Options page
in Product Designer.
Package Compound collection of limits or deductibles selected as a group “Package Coverage Term Type” on
from a list of predefined choices. page 34
Typekey Value selected from a typelist of predefined choice, optionally fil- “Typekey Coverage Term Type” on
tered through use of a type filter. page 35
Generic Custom value, for example, a date or Boolean value. “Generic Coverage Term Type” on page 35
You can assign a value to this term and compare it directly to a numerical value. For example:
BOPLine.NewCov.DirectTerm = 100 //Assign a value of 100 to the term
BOPLine.NewCov.DirectTerm > 10 //true
BOPLine.NewCov.DirectTerm < 10 //false
BOPLine.NewCov.DirectTerm == 100 //true
Thus, you can treat a Direct coverage term as a number and use natural syntax in any Gosu code.
You can assign Package coverage terms to, and compare them with, string literals that are the PackageCode
objects of the coverage term packages from their patterns. For example:
BOPLine.NewCov.PackageTerm = "10/50/100" //Assign the value with the code "10/50/100"
BOPLine.NewCov.PackageTerm == "10/50/100" //true
BOPLine.NewCov.PackageTerm == "20/60/200" //false
Field Description
Code Coverage term code, which must begin with a letter and be composed only of letters, numbers, and
underscores. Established when you add a new term and thereafter cannot be changed.
Name Name of the coverage term as it appears in PolicyCenter.
Type Type of coverage term, one of Direct, Option, Package, Typekey, or Generic. See “Coverage Term
Types” on page 33 for descriptions of each type.
Typelist Appears only if the Type is Typekey.
Typelist from in which the term type is defined.
Required Whether the coverage requires this coverage term. If selected, PolicyCenter displays an error if you
do you supply a value for the coverage term.
Column Database table column to use for the coverage term.
IMPORTANT Guidewire provides availability logic and validation for Money value types in Direct,
Option, and Package term types, and therefore recommends that you use these term times for monetary
values. If you instead choose to use a Typelist to hold monetary values, you must provide all needed
implementation and validation required to handle multiple currencies.
See also
• “Generic Schedules” on page 365 in the Application Guide
• “Configuring Generic Schedules” on page 117
Specify optional conditions in the Conditions page of Product Designer. Do not configure standard conditions
that apply to all policies such as, “You will pay your bill,” in Product Designer. Instead, configure these as text
directly on the standard policy forms.
Adding conditions to a policy line is similar to adding coverages. However, in most cases, conditions are not
rated, so they do not have associated cost subtypes. To add conditions to a line of business, follow the same steps
that you would follow for a coverage but omit costs. For instructions, see “Adding Coverages to a Policy Line”
on page 24.
See also
• “Generic Schedules” on page 365 in the Application Guide
• “Configuring Generic Schedules” on page 117
Defining Categories
PolicyCenter groups coverages, exclusions, and policy conditions into categories. Categories are only a grouping
mechanism.
You define categories for each product line in Product Designer in the Categories page for the selected policy
line. You assign a category to a coverage, exclusion, or condition in the corresponding Coverage, Exclusion, or
Condition home page.
2. Set the line.usesCoverageSymbolGroups property to true to add the tab, or false to remove the tab.
See also
• “Step 6: Add Optional Features to a Policy Line” on page 158 for more information about adding the optional
Coverage Symbol Groups tab to a new policy line pattern.
Symbols
Symbols are specific to the line of business. The insurance industry sets the definition of symbols. For copyright
reasons, PolicyCenter does not include the industry standard symbols, but you can add them in. In the base
configuration, the CoverageSymbolType typelist defines the following symbols:
Code Meaning
PolicyCenter includes an extra coverage symbol designated as a custom symbol (CUS). It is only available to
someone with the Edit covered auto symbols permission (editautosysmbol). If you select this coverage symbol, you
can enter a free-form text description.
PolicyCenter Usage
Within PolicyCenter, you create coverage symbol groups and specify coverage symbols within the policy line.
You then can specify the coverage symbol group to which each coverage pattern belongs.
Configure coverage symbols in the Gosu enhancement gw.lob.ba.BusinessAutoLineEnhancement, which
enhances business auto line objects. The enhancement method setCoveredAutoSymbols configures which
coverage auto symbols to select by default in PolicyCenter.
You set the any official ID values in Product Designer using the Official IDs page in the workers’ compensation
policy line. The Official IDs link appears under Go to only in the workers’ compensation line of business.
When defining an official ID, the Scope attribute has the following meanings:
• An Insured and State official ID applies to additional named insureds. The base configuration of workers’
compensation captures the tax ID of each additional named insured as an official ID on the policy.
• A State official ID applies to the primary named insured only. Generally, you must specify a different ID for
each state in which this ID applies. The Bureau ID in workers’ compensation is an example of an ID that
varies by state. The system uses the bureau ID to track statistics reporting between NCCI and non-NCCI
states.
In the base configuration, the Official IDs page in Product Designer appears only for the workers’ compensation
policy line pattern.
To add or remove the optional Official Ids tab on a policy line pattern
1. In Studio, open the property file for the policy line pattern by navigating to configuration → config and opening:
resources/productmodel/policylinepatterns/codeLine/codeLine.properties
The properties file is named code.properties where code is the code of the policy line. For example, the
workers’ compensation properties file is WorkersCompLine.properties.
2. Set the line.usesOfficialIDs property to true to add the tab, or false to remove the tab.
See also
• “Step 6: Add Optional Features to a Policy Line” on page 158 for more information about adding the optional
Official IDs tab to a new policy line pattern.
Quote Modifiers
Modifiers are factors that are applied as part of the rating algorithm. They frequently result in an increase or
decrease in the premium for a policy. There are multiple types of modifiers, with most being jurisdiction specific.
Modifiers can be added to the product or policy line. Modifiers added to the product affect rating for all lines in
that product. Modifiers added to a policy line affect only that line.
This topic includes:
• “Terms Associated with Modifiers” on page 41
• “Configuring Modifiers in Product Designer” on page 42
See also
• “Modifiers Page” on page 17
• “Adding Quote Modifiers to a Policy Line” on page 40
Term Description
Modifier The most general term used to encompass the superset of premium-bearing factors including, but
not limited to, the following:
• Experience modifier (exp mods)
• Schedule rates (credits and debits)
• Individual Risk Premium Modification (IRPM)
• Package modifiers
• Multi-location dispersion credit
Quote Modifiers 41
PolicyCenter 9.0.0 Product Model Guide
Term Description
Schedule Rate A specific type of modifier that provides credits or debits within established value ranges. Use them
for factors such as management, property, and other intangibles that you cannot quantify as part of
the submission.
IRPM Individual Risk Premium Modification is a specific example of a schedule rate modifier. Used pri-
marily in property and liability polices, the rating and quoting engine takes the following factors,
among others, into account in determining the premium:
• Size of premium
• Spread of risk
• Superior building construction
• Quality of management
Rate Modifiers
When adding a modifier, if you set the modifier Data Type to Rate, the Add Modifier dialog box displays a Schedule Rate
check box. Select this check box to create a schedule rate modifier.
If you did not select Schedule Rate, the Modifier home page displays a Rate is Relative field:
• 0 – Modify rate as an offset relative to 0. For example, 0.10 represents a 10% increase in the rate, -0.15 repre-
sents a 15% reduction. Sets renderRateAsMultiplier to false on the modifier pattern object,
(ModifierPattern).
• 1 – Default. Modify rate as a multiplier. For example, 1.1 represents a 10% increase on the rate, 0.85 repre-
sents a 15% reduction. Sets renderRateAsMultiplier to true on the modifier pattern object
(ModifierPattern). If you do not specify the renderRateAsMultiplier attribute in the XML definition of
ModifierPattern, 1 is the default value.
For rate modifiers, the Product or Policy Line Modifier home page displays an additional State Min/Max link under
Go to. For each state, you can define minimum and maximum rate modifiers.
If a split rating period applies, regulatory authorities for the jurisdiction notify the insurer. PolicyCenter stores
this information as part of the policy information for that jurisdiction.
Using the ExpMod modifier as an example, assume that Split Rating Period is selected. For this modifier, the user can
specify separate experience modifier values for each rating period. The following example illustrates this use of
experience modifiers.
Sample Policy
Policy Rating
To add or remove the optional Split Rating Period check box in modifier patterns for a line of business
1. In Studio, open the properties file for the policy line pattern by navigating to configuration → config and opening:
resources/productmodel/policylinepatterns/XXLine/XXLine.properties
The properties file is named code.properties where code is the code of the policy line. For example, the
workers’ compensation properties file is WorkersCompLine.properties.
2. Change the line.usesSplitRatingPeriod property to true to add the check box, or false to remove the
check box.
See also
• “Step 6: Add Optional Features to a Policy Line” on page 158 for more information about adding the optional
Split Rating Period check box to a new policy line pattern.
• “Multiple Rating Periods” on page 296 in the Application Guide
• “Rating Periods” on page 303 in the Application Guide
Display Section
Expand the Display section of the Product or Policy Line Modifiers page to configure various display parameters for
the modifier, including:
Note: The default minimum and maximum values set the overall possible range for this modifier if no juris-
diction-specific minimum and maximum values are defined. If the Schedule Rate field is set to Yes and rate
factors are entered, each rate factor must have a value within its own minimum and maximum. In addition,
the sum of all rate factors must be within the overall modifier minimum and maximum values.
You use this page to add one or more rate factors that combine to give the value of the schedule credit.
You set the Default Minimum and Default Maximum values for this individual rate factor in Display section of this page.
These minimum and maximum values constrain the amount of the credit you can enter in PolicyCenter for that
rate factor, absent any state-specific minimum and maximum values.
On the modifier rate factors State Min/Max page, use the links under Go to to configure the following behaviors for
individual rate factors:
• State Min/Max to configure jurisdiction-specific minimum and maximum rate factor values.
• Availability to configure availability for individual rate factors.
• Offerings to add or remove individual rate factors from offerings.
Note: The values available in the Rate Factors page are restricted to the overall range of values specified in
the Display section of the Product or Policy Line home page. The sum of all rate factor values must be within
the overall minimum and maximum for the schedule rate modifier. The values are also subject to the overall
jurisdiction-specific minimum and maximum values for the modifier.
You access these values in PolicyCenter through the General Liability Modifiers screen.
Notice that in the PolicyCenter screen, the bold Overall row displays the minimum and maximum allowable
values for the individual columns. These values in bold are configured in Product Designer in the Display section
of the Product or Policy Line Modifier home page. The values correspond to the Default Minimum and Default
Maximum fields if no jurisdiction-specific minimum and maximum have been specified.
Availability Page
You use the Product or Policy Line modifier Availability page to set availability for the modifier pattern. Avail-
ability functionality for modifier patterns is similar to that of the other patterns, and is explained in “Defining
Availability” on page 75.
Offerings Page
You use the Product or Policy Line modifier Offerings page to set which offerings have this modifier enabled. You
can also specify whether newly created offerings have this modifier enabled by default. See “Offerings Page” on
page 17 and “Configuring Offerings” on page 89 for more information.
Question Sets
A question set is a collection of questions presented within PolicyCenter that gathers information about an appli-
cant. You use the answers to these questions to evaluate the risk associated with a policy applicant. PolicyCenter
has a number of predefined question set types. You can also add your own question set types.
This topic includes:
• “Question Set Basics” on page 47
• “Configuring Question Sets in Product Designer” on page 51
• “Question Set Object Model” on page 57
• “Defining Answer Containers and Question Sets for Other Entities” on page 59
• “Triggering Actions when Incorrect Answers are Changed” on page 62
Question Sets 47
PolicyCenter 9.0.0 Product Model Guide
The Qualification screen for Personal Auto displays questions that you can ask to qualify or reject a policy appli-
cant.
PolicyCenter:
• Automatically renders a question set in a list view with an optional default answer specified in Product
Designer.
• Stores logic to hide or display a question with the question itself.
• References a question set as a single element in its PCF page.
Incorrect Answers
When defining a question, you can define a correct answer. You then can configure the question set such that if
the applicant answers one or more questions incorrectly, PolicyCenter can take various actions. A sufficient num-
ber of incorrect answers can result in:
• An underwriting issue – PolicyCenter can raise an underwriting issue to block quote or bind. For example,
you cannot quote the policy until the underwriting issue is approved by an underwriter with sufficient
authority.
• A number of risk points – Risk points can be used in many ways. In the base configuration, if the sum of risk
points from the pre-qualification question set is 200 or more, PolicyCenter raises an underwriting issue that
blocks quote. The medium risk point threshold of 200 points is set in Studio by segmentation. For more infor-
mation, see “Selecting the Underwriting Company through Segmentation” on page 673 in the Configuration
Guide.
• A blocking action – You can specify whether the incorrect answer blocks you from advancing or just displays
a warning before advancing to the next page.
You can mix and match these incorrect answer consequences. For example, you can specify that an incorrect
answer to a question does all of the following:
• Displays a warning.
• Raises an underwriting issue.
• Contributes a specified number of risk points needed to raise a different type of underwriting issue.
For example, in the base configuration, the applicant is asked:
“Has any policy or coverage been declined, canceled, or non-renewed during the prior 3 years?”
If the answer is Yes (the incorrect answer), the question creates an underwriting issue of type Question blocking
bind. The incorrect answer also adds 50 risk points. If another 150 risk points have been added by incorrect
answers to other questions, then the threshold of 200 causes PolicyCenter to create an underwriting issue that
blocks bind. This underwriting issue prevents you from binding the policy.
In another example using a Personal Auto policy submission, the applicant admits to having a suspended license
in the pre-qualification questions. PolicyCenter raises an underwriting issue when you try to quote the policy,
because the correct answer for the suspended license question is No. The incorrect answer blocks quoting.
PolicyCenter displays a message when you click Quote. The policy cannot be quoted until the issue is approved
by a user with sufficient authority to approve issues of this type. At this point, you have the following options:
• Save the submission as a draft.
• Close the submission as withdrawn, declined, or not taken.
• Change the answer to the suspended license question.
You can also configure a question to block the progress or display a warning message in response to an incorrect
answer. In some cases, you want the message to be explicit so that users understand the eligibility requirements
for the product. This type of warning message helps to prevent users from continually initiating applications that
do not meet the criteria. In other cases, you want the warning message to be less explicit so that users do not
understand the eligibility requirements. This type of warning message helps to prevent users from learning how
to pre-qualify undesirable candidates by knowing all the correct answers.
See also
• “The Answer Container Delegate” on page 58
• “Defining Answer Containers and Question Sets for Other Entities” on page 59
2. At the top of the Question Sets page, click Add to open the Add Question Set dialog box.
3. Enter the code, name, question set type, and the answer container type for the new question set, then click OK.
PolicyCenter adds the new question set to the navigation panel.
At this point, the question set exists, but contains no questions and does not link to a product.
3. At the top of the Question Sets page, click Add and select the question set from the list of choices. The list shows
only question sets that have not already been added to the product.
See also
• “Offerings Page for Coverages” on page 28 for instructions on how to use this tab
• “Offerings and Question Sets” on page 92
Choice Radio buttons display horizontally on one line. For more than several buttons, use Choice Select. If you
have many choices, they can scroll off the screen, and you have to expand the window to view the choices.
3. Clicking a question set type icon opens the Add Question dialog box. Specify the following properties:
Property Value
4. Click OK to add the new question to the list of questions for this question set.
5. Arrange the order of questions in the Questions page by dragging them up or down. The order of questions in
the Questions page determines the order of questions in PolicyCenter.
Question Pages
After you add a question, you can select it in the navigation panel and then use the links under Go to to visit any of
the following related pages:
• Dependent On – Create dependencies that determine whether specific questions are visible in PolicyCenter, as
explained in “Configuring Question Dependencies” on page 54.
• Incorrect Answer – Specify a correct answer, failure message, blocking action, underwriting issue type, and risk
points to add, as explained in “Configuring Incorrect Answer Behavior” on page 55.
• Availability – Define the conditions that control whether an individual question is available. Availability func-
tionality for questions is similar to that of the other patterns, and is explained in “Defining Availability” on
page 75.
• Choices – Appears for Choice type questions only. Define the choices available for answering the question, as
explained in “Configuring Question Choices” on page 56.
2. From the Question list, select the question whose answer is to control the visibility of the question you are
configuring, then click OK. The question is added to the Dependent On page.
3. Enter the answer to this question that is to cause the question you are configuring to appear.
4. Repeat steps 1–3 to add more dependent questions. The question you are configuring appears only if the
answers the user enters for all questions match exactly the answers you supply on the Dependent On page.
Example
Personal auto provides an example of a dependent questions. In Product Designer, navigate to Questions Sets → PA
Pre-Qualification → Questions → Please provide the driver name and explain the conviction. Click Dependent On.
On the Dependent On page, view the question and answer that determine whether the dependent question appears
in PolicyCenter. In this example, it is a Boolean type, and its answer is set to Yes. Therefore, in a Personal Auto
pre-qualification, if the dependent-on question is answered Yes, the dependent question appears prompting for
additional details about the conviction.
2. Specify the Correct Answer. Guidewire recommends that you configure incorrect answers only for questions
that have a restricted set of answers, such as Boolean, Choice, or Date. A special type of underwriting issue,
Question with number, can handle incorrect answers for Integer types by creating appropriate underwriting
issues. This type of underwriting issue is described in the following table. Attempting to exactly match a
String question type typically is unreliable.
3. Configure any combination of the following options:
• Failure message – Enter a message that appears in PolicyCenter when the answer does not match the Correct
Answer. If needed, click Translate to enter the message in other languages.
• Blocking Action – Select whether to block or warn the user, or leave blank to do nothing when the answer
does not match the Correct Answer.
• Risk Points – Specify the number of risk points to add when the answer does not match the Correct Answer.
• Create UW Issue Type – Select the type of underwriting issue to raise, or leave blank to do nothing when the
answer does not match the Correct Answer. The following table explains the available options.
Question blocking bind An incorrect answer allows quoting the policy but generates an underwriting
issue that does not allow binding it unless an underwriter approves the issue.
Question blocking quote An incorrect answer generates an underwriting issue and blocks quoting the
policy unless an underwriter approves the issue.
Question non-blocking An incorrect answer generates an underwriting issue but does not block quoting
or binding.
Question with number blocking bind An answer to an Integer type question with a number not equal to the specified
Correct Answer generates an underwriting issue that blocks binding unless an
underwriter approves the issue.
Question with number blocking quote An answer to an Integer type question with a number not equal to the specified
Correct Answer generates an underwriting issue that blocks quoting unless an
underwriter approves the issue.
Question with number non-blocking An answer to an Integer type question with a number not equal to the specified
Correct Answer generates an underwriting issue but does not block quoting or
binding.
Example
Personal auto provides an example of a dependent questions. In Product Designer, navigate to Questions Sets → PA
Pre-Qualification → Questions → Has any policy or coverage been declined, canceled, or non-renewed during the prior 3 years?. Click
Incorrect Answer.
The question has all possible Incorrect Answer parameters enabled. The Correct Answer to the Boolean question is No.
Any other answer triggers the incorrect answer behavior, which includes:
• Displaying the Failure Message.
• Warning the user, but allowing them to proceed to the next wizard step.
• Creating a non-blocking underwriting issue, which notifies underwriting, but does not block quoting or
binding the policy.
• Adding 50 risk points. In the base configuration, if this brings the total risk points to a value of 200 or greater,
PolicyCenter raises an underwriting issue and blocks quote, regardless other settings.
Property Value
4. Arrange the choices as you want them to appear in PolicyCenter. To arrange the choices, you can:
• Drag and drop each choice to a new row, but only if the list of choices is sorted by Sequence. Click the
Sequence column heading to sort by that column.
• Change the Sequence number to indicate a new order. Product Designer automatically renumbers other
rows to accommodate the number you specify.
Example
Personal auto provides an example of question choices. In Product Designer, navigate to Questions Sets → PA
Pre-Qualification → Questions → Is the applicant currently insured?. Click Choices.
The question has four possible answer choices, arranged in the order in which they appear in PolicyCenter.
A Choice type question can appear either as a drop-down list or as a set of option buttons by setting the Format to
Choice Select or Choice Radio. However, after you add the question to the question set, you cannot change its format.
5. Drag and drop lines of help text in the Question Editor to change their order.
For example, suppose that you have a pre-qualification question on a Personal Auto policy submission that asks
if the applicant meets certain conditions.
Boolean Question: Does the applicant meet the criteria for a Good Driver?
Help text line 1: The applicant must have a clean violation record for the last three years.
Help text line 2: The applicant must have a clean accident record for the last five years.
The following illustration shows some of the key entities associated with question sets.
4XHVWLRQ6HW(QWLWLHV
$QVZHU&RQWDLQHU
/HJHQG
$KDVDRQHWRRQH
$ %
UHODWLRQVKLSWR%
$ % $LVDVXEW\SHRI%
$ % $GHOHJDWHVWR%
3HULRG$QVZHUV 3ROLF\/LQH$QVZHUV /RFDWLRQ$QVZHUV
$ % $KDVDIRUHLJQNH\WR%
3&$QVZHU'HOHJDWH
The Answer Container Type of the question set specifies the entity that delegates to AnswerContainer. In Product
Designer, for example, use the navigation pane to go to Question Sets → PA Pre-Qualification. In the question set’s
home page, you can see that the Question Set Type is PreQual and that the PolicyPeriod entity delegates to
AnswerContainer.
3. Define an answer container adapter in the gw.question package that implements the
AnswerContainerAdapter interface.
For example, to define an answer container adapter for an account-level question set, create a new class file:
gw.question.AccountAnswerContainerAdapter.gs that implements
gw.api.domain.AnswerContainerAdapter and overrides appropriate methods and properties. The following
code demonstrates a way to define an answer container for account-level question sets:
package gw.question
uses gw.api.domain.AnswerContainerAdapter
uses java.util.Date
uses gw.api.productmodel.QuestionSet
@Export
class AccountAnswerContainerAdapter implements AnswerContainerAdapter {
Note: As shown in the last override of the preceding example, when getting question sets associated with an
answer container, filter on AnswerContainerType rather than QuestionSetType. This technique is preferred
because there can be multiple question set types associated with any one answer container type.
For more guidance, examine one of the three base product entities that implements answer containers, such as
PolicyLocationAnswerContainerAdapter.gs.
4. Update the definition of your entity to implement the answer container using the answer container adapter
class you just defined.
For example, if you are defining an account-level question set and your answer container class is named
AccountAnswerContainerAdapter:
<implementsEntity name="AnswerContainer" adapter="gw.question.AccountAnswerContainerAdapter"/>
name="AnswerContainer" />
2. Right-click anywhere in the typelist in the left panel of the editor, and then select Add new → typecode to add a
new row.
3. With the new typekey row selected in the left panel of the editor, fill in the new typelist values as appropriate
in the right panel of the editor.
For example, for an account-level question set type, add a typekey with a code of account, a name of
Account, and a description of Account-level question set.
2. Add two new LookupTable elements in the Question/QuestionSet Lookup Tables section of the file, one
for question sets and one for questions.
For example, if you are configuring account-level questions, add <AccountQuestionSetLookup ... /> and
<AccountQuestionLookup... /> elements. Set the root element to "Account" and add the appropriate
Dimension element attributes.
<LookupTable code="AccountQuestionSetLookup" entityName="QuestionSetLookup" root="Account">
<Dimension field="State" valuePath="Account.AccountHolderContact.PrimaryAddress.State"
precedence="0"/>
<Dimension field="IndustryCode" valuePath="Account.IndustryCode" precedence="1"/>
<DistinguishingField field="QuestionSetCode"/>
</LookupTable>
2. At the top of the Question Sets page, click Add to open the Add Question Set dialog box.
3. Add a new question set, following the detailed instructions in “Adding a New Question Set” on page 51.
For example, if you are defining a new account-level question set, select an answer container type of Account.
4. Continue following the detailed instructions in “Configuring Question Sets in Product Designer” on page 51
to define individual questions and configure all other aspects of your new question set.
2. Add a variable to the PCF page to reference the question set to display.
For example, to display an account-level question set named accountQuestionSet, add a variable named
accountQuestionSets with an initial value of account.getQuestionSets().
4. Add a PanelRef on the PCF page that points to the QuestionSetsDV detail view.
For example, to display an account-level question set, add a PanelRef that points to
QuestionSetsDV(accountQuestionsSets, account, null)
If the new question set is only for information-gathering purposes, you are finished. If you want the new question
set to trigger underwriting issues, follow the instructions in “Step 6: Configuring an Answer Container to Trigger
Underwriting Issues” on page 62.
For guidance, examine the functions for handling period, line, and location questions sets in
QuestionIssueAutoRaiser.gs. For more information about how to configure answers to raise underwriting
issues, see “Incorrect Answers” on page 49.
To enable other wizard steps to trigger an action when incorrect answers are changed
1. Define a variable in the wizard PCF file to store a map of incorrect answers.
For example
<Variable
initialValue="new java.util.HashMap<gw.api.productmodel.Question, String>()"
name="incorrectAnswerMap"
type="java.util.Map<gw.api.productmodel.Question, String>"/>
2. Call the incorrect answer processor in the beforeSave attribute of the wizard screen. Be sure to call this func-
tion before the changed answer's bundle is committed to the database. The function compares the answers
with their original values. If the answer is now correct, the function calls the
IncorrectAnswerChangedAction class to perform the action you specified.
For example, to check for changes in answers associated with the questions stored in incorrectAnswerMap.
<JobWizardStep
beforeSave="gw.question.IncorrectAnswerProcessor.processIncorrectAnswers(policyPeriod,
incorrectAnswerMap);
gw.policy.PolicyPeriodValidation.validatePreQualAnswers(policyPeriod)"
... >
</JobWizardStep>
System Tables
This topic covers the use and configuration of system tables, which are tables that you use to support your busi-
ness logic.
This topic includes:
• “What Are System Tables?” on page 65
• “Configuring System Tables” on page 66
• “Class Codes with Multiple Descriptions” on page 69
• “Notification Config System Table” on page 69
System Tables 65
PolicyCenter 9.0.0 Product Model Guide
b. Right click the Entity node, and then select New → Entity from the menu.
c. Enter the name of the entity, and select Extendable, Exportable, and Final.
d. Add columns, typekeys, or other fields. For example, add a Jurisdiction typekey with the following val-
ues:
Name Value
name Jurisdiction
typelist Jurisdiction
nullok true
Examine an entity definition for an existing system table in the configuration → config → Metadata → Entity folder
for an example of how to define your system table entity.
2. In Studio, create a file named entity.xml.
b. Right click the systables node, and then select New → File from menu.
d. Add the following elements to your new XML file, including elements for the table columns you defined
in the entity. The following example includes a column for Jurisdiction:
<?xml version="1.0"?>
<import xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.guidewire.com/cc/import/cc_import.xsd">
<Jurisdiction/>
</import>
3. In Studio, add a new FileDefinition element for your new system table to systables.xml:
a. In the Project window, navigate to configuration → config → resources and open systables.xml.
b. Add a FileDefinition element that provides a link between the system table XML file and the system
table entity file. For example:
<FileDefinition Name="my_class_codes.xml" Priority="0">
<Entity Type="MyClassCodes"/>
</FileDefinition>
c. If needed, add parameters to specify a verifier class and whether to manage the system table externally.
a. Log into Product Designer. If you are already logged in, log out and log in again to reload the
PolicyCenter configuration values.
b. Navigate to System Tables, and then locate and open your new system table XML file.
See also
• For complete information on data entities and how to create them, see “The PolicyCenter Data Model” on
page 163 in the Configuration Guide.
• For information on adding localized columns to data entities, including system tables, see “Localizing
Administration Data” on page 63 in the Globalization Guide.
Setting ExternallyManaged to true affects only the ability of Product Designer to load the system table for
viewing and editing. It does not affect the way in which PolicyCenter loads the system table during system
startup.
PolicyCenter can be configured to verify other system table data consistency rules. You can do this configuration
by using the Verifier parameter to add a verifier class to the system table definition in systables.xml. For
example:
<FileDefinition Name="cancelrefund.xml" Priority="0">
<Entity Type="CancelRefund" Verifier="gw.systable.verifier.CancelRefundVerifier"/>
You then must write a Verifier class that implements the Verifier interface. Include a single method named
verify() in the class. In the base configuration, verifiers are defined for many common data consistency checks
in the system tables, such as:
• All PublicID values are valid.
• The end effective date is later than the start effective date for each row.
• Effective dates on multiple rows do not overlap in system class code and industry code system tables.
• Unique indexes defined for the system table entity are unique.
Note: In very large system tables, such as territory codes, complex data verifications can take a long time to
execute, which can have a significant impact on server startup time.
PolicyCenter supports multiple descriptions by including a sequence value in the ClassIndicator column of the
system table. You can see an example of the sequence value in the workers’ compensation line by using Product
Designer to open the wc_class_codes.xml system table and locating code 8742 for California.
See also
• “Changing the Cancellation Effective Date on an Open Cancellation” on page 117 in the Application Guide
• “Configuring Batch Process Renewals” on page 688 in the Configuration Guide
Column Description
EffectiveDate Required. Date the row becomes effective. The row is effective on or after this date.
ExpirationDate Date the row expires. The row is effective until the end of the day prior to this date. If omit-
ted, the row is effective indefinitely.
LeadTime Required. Lead time in days.
ActionType
Type of action to which this row applies. Click Search to display the ActionType
(NotificationActionType) dialog box where you can select a value from the
NotificationActionType typelist.
Wildcards that match any value are supported for ActionType, Category, Jurisdiction, and LineOfBusiness.
If the value is null, a row matches all inputs for the column. Because this situation can lead to multiple matches
for any particular combination of criteria, an order of precedence determines which row is returned.
The order of precedence for determining rows that match is as follows (listing highest precedence first). The
priority of the columns is Jurisdiction, LineOfBusiness, and Category. The ActionType column is not used.
However, if the Category column is null, the plugin checks the value of NotificationCategory on the
ActionType column.
For more information on the Notification plugin, see “Notification Plugin” on page 177 in the Integration Guide.
Precedence Example
This example shows precedence during a renewal job. The same precedence rules apply to cancellation.
Consider the following hypothetical rows from the NotificationConfig table. The rows are sorted from highest
to lowest priority. An asterisk (*) indicates a wildcard that matches any value.
Line of
Lead time Jurisdiction business Action type Category
Line of
Lead time Jurisdiction business Action type Category
8 CA * * *
9 * BOP Material Change Renewal Renewal
10 * BOP Other Renewal *
11 * BOP * Renewal
12 * BOP * *
13 * * Material Change Renewal Renewal
14 * * Other Renewal *
15 * * * Renewal
16 * * * *
The PolicyRenewalPlugin plugin calls the getMaximumLeadTime method that takes a NotificationCategory.
The input parameters are:
Parameter Value
LineOfBusiness WorkersCompLine
The ActionType column is ignored. The filter matches eight different rows: the ones with lead times 5 through 8
and 13 through 16. Of these values, two rows tie for most specific: 5 and 7. Because the PolicyRenewalPlugin
plugin requested the maximum lead time, the plugin method returns 7.
Parameter Value
LineOfBusiness WorkersCompLine
The row with lead time 2 matches because the NotificationCategory is renewal. The row with lead time 1 is
not a match because the NotificationCategory is cancel.
Line of
Lead time Jurisdiction business Action type Category
1 CA * Other Cancellation *
NotificationCategory=cancel
2 CA * Other Renewal *
NotificationCategory=renewal
Configuring Availability
This topic discusses how you can configure PolicyCenter to control the availability of an entity through the use
lookup tables, availability scripts, grandfathering, and offerings. Availability is determined by start and end
effective dates. The reference date is compared against the start and end effective dates for a pattern.
This topic includes:
• “What is Availability?” on page 73
• “Defining Availability” on page 75
• “Setting the Reference Date” on page 78
• “Extending an Availability Lookup Table” on page 81
• “Reloading Availability Data” on page 83
• “Reloading Availability Example” on page 85
What is Availability?
If a pattern is unavailable, PolicyCenter does not expose that pattern and does not permit you to create instances
from the pattern. In some cases, for example in the Submission Manager, PolicyCenter applies other criteria as well.
All of the product model patterns except policy line patterns have a configurable availability framework,
including all of the core coverage patterns (CoveragePattern, CovTermPattern, CovTermOpt, and
CovTermPack), exclusions, and conditions. However, PolicyCenter does not apply availability to policy line
patterns, but instead controls policy line availability at the product level. There is never a need for a product
pattern to be available and one of its underlying policy line patterns to be unavailable. Define other product
patterns to make different policy line patterns available.
Configuring Availability 73
PolicyCenter 9.0.0 Product Model Guide
The availability calculation is a multiple step process as shown in the following illustration.
ĞƚĞƌŵŝŶŝŶŐƚŚĞǀĂŝůĂďŝůŝƚLJŽĨĂWĂƚƚĞƌŶ
/ƐƉĂƚƚĞƌŶ /ƐƉĂƚƚĞƌŶ
/ƐƉĂƚƚĞƌŶĂǀĂŝůĂďůĞďLJ WĂƚƚĞƌŶŝƐ
zĞƐ ĂǀĂŝůĂďůĞďLJ zĞƐ ĞŶĂďůĞĚďLJ zĞƐ
>ŽŽŬƵƉdĂďůĞƐ͍ ĂǀĂŝůĂďůĞ
ƐĐƌŝƉƚ͍ KĨĨĞƌŝŶŐ͍
EŽ
EŽ zĞƐ
WĂƚƚĞƌŶŝƐ /ƐƉĂƚƚĞƌŶĞŶĂďůĞĚďLJ
EŽ
ŶŽƚĂǀĂŝůĂďůĞ 'ƌĂŶĚĨĂƚŚĞƌŝŶŐ͍
EŽ
• Coverages • Exclusions
• Coverage term options • Conditions
• Coverage term packages • Modifiers
• Offerings • Modifier rate factors
Offerings can be used to tailor a product for a particular use case, such as a business-specific product or tiers of
coverage. PolicyCenter applies offering logic after grandfathering logic, which means that offerings can make a
pattern unavailable even if grandfathering makes it available. Offerings can control the availability of:
• Products • Exclusions
• Policy lines, in package policies only • Conditions
• Policy terms • Modifiers
• Coverages • Question sets
• Coverage terms • Individual questions within a question set
• Coverage term options and packages
See also
• “Grandfathering Overview” on page 494 in the Application Guide
• “Defining Grandfathering” on page 77
• “Understanding Offerings” on page 495 in the Application Guide
• “Configuring Offerings” on page 89
Defining Availability
Typically, some patterns in PolicyCenter are available only:
• As of, or until, a given date
• Within (or never within) a given jurisdiction
• When certain underwriting companies are used to write the policy
• Other, more complex conditions that must be expressed in Gosu code.
Availability is the product model mechanism that captures this logic.
Defining Availability 75
PolicyCenter 9.0.0 Product Model Guide
Availability in all of these patterns can be based on date and jurisdiction. Product availability can also be based
on industry code. Availability for all patterns except products can based on underwriting company and job type.
You can extend availability tables with additional columns to handle other availability criteria.
Availability lookup tables have columns that apply to the product. For example, navigate to Products → Business-
owners → Availability. The lookup table for the businessowners product has the following columns:
• StartEffectiveDate
• EndEffectiveDate
• Availability
• State
• JobType
• IndustryCode
While the lookup table for collision coverage on the commercial auto line has different columns. Navigate to
Policy Lines → Commercial Auto Line → Coverages → Collision → Availability. This lookup table has the same columns as the
previous table with a few differences. The collision coverage lookup table omits the IndustryCode column, and
includes the following columns:
• UWCompanyCode
• PolicyType
• VehicleType
The columns in an availability table, such as start effective date, end effective date, and job type, are called
dimensions. In addition, a column called Availability designates whether a pattern that matches the row is Available
or Unavailable. When evaluating a pattern, PolicyCenter finds the row in the availability table that matches best,
and then uses the state of the Availability cell in that row. The best matching row is the row that matches the most
dimensions. If multiple rows match the same number of dimensions, the precedence of the dimensions deter-
mines the row that determines availability.
Omitted dimensions are wildcards that match any value. If no rows match any defined dimension, the pattern is
made unavailable.
IMPORTANT Every availability lookup table must contain at least one row. Product Designer displays
validation errors and refuses to commit your changes if it detects any availability tables that do not
have at least one row. If you define an availability table without at least one row by, for example, using
Studio to edit the XML file, the PolicyCenter server refuses to start.
IMPORTANT Extensive use of availability scripts or the use of complicated scripts can have a detri-
mental effect on the system performance as PolicyCenter recalculates availability.
PolicyCenter evaluates an availability script only when the availability table determines that a pattern is avail-
able. Therefore, an availability script can only reduce the number of available patterns.
For an example of an availability script in the base configuration, navigate to Policy Lines → Commercial Auto Line →
Coverages → PIP - Arkansas → Availability. The availability script is:
return BAJurisdiction.BusinessAutoLine.GaragingJurisdictions.contains(BAJurisdiction)
Note: Because the line was previously known as business auto, some of is artifacts continue to use the
abbreviation BA, while others have been updated to CA.
Although Product Designer enables you to write availability scripts, it does not validate or compile the scripts
that you write. Therefore, Guidewire recommends that you use Product Designer only to examine scripts, and
use the Studio XML editor to write, verify, and compile scripts.
5. Define your script as XML CDATA. Notice that as you type, Studio provides auto-completion and validates
your code.
The objects available as symbols in the availability script vary according to the context of the script. For cover-
ages and coverage terms, the script gets a reference to the coverable object. For a coverage term option, the script
gets one reference to the parent coverage term and another reference to the specific option value selected by the
user. For a modifier, the script gets a reference to a modifiable object.
Defining Grandfathering
Grandfathering enables you to continue to offer a coverage or other pattern to existing customers, even if the
pattern is not otherwise available. The pattern is unavailable when writing new business and cannot be added to
the policy of an existing customer. However, with grandfathering enabled, the pattern is not removed from
existing customers. Grandfathering can be used with the patterns listed in “Grandfathering and Offerings” on
page 74.
You configure grandfathering in Product Designer by expanding the Grandfathering States section of the Availability
page for a pattern that supports grandfathering. For an example that supports grandfathering, navigate to Policy
Lines → Commercial Auto Line → Coverages → Collision → Availability. Click to view Grandfather States.
Defining Availability 77
PolicyCenter 9.0.0 Product Model Guide
Field Description
All fields in the Grandfather States table can be blank, indicating that grandfathering is allowed, regardless of the
values found in the policy for jurisdiction, date, or underwriting company. Therefore, you could add the pattern
to the policy even though availability indicates that the pattern is not available, but only if the coverage previ-
ously existed on the policy.
See also
• “Grandfathering Overview” on page 494 in the Application Guide
Availability Example
For each pattern that supports availability, PolicyCenter creates one condition by default. This condition is avail-
able based upon the start effective date set in Product Designer. For an example, navigate to Products → Personal
Auto → Availability and view the first condition.
Availability is evaluated by finding the row in the table with the most matching columns and then checking
whether the pattern is available or unavailable for that row. In this example, the product is available:
• To all non-iron ore (NAICS code 212210) companies as of June 1, 2014.
• To all Colorado companies as of January 1, 2015, even if they are classified as iron-ore.
In this example, an iron ore company in Colorado qualifies for the product beginning on January 1, 2015, as
determined by the intersection of the last two availability rows. Because both rows match on the same number of
dimensions (columns), the row that decides whether the pattern is available is determined by the precedence
attribute on each availability dimension. The precedence attribute ensures that one of the dimensions supersedes
other dimensions in the case of a tie. In this example, the State column has a lower precedence value (corre-
sponding to higher precedence) than the Industry Code column. Therefore the product is available after January 1,
2015 without restriction.
To set the precedence attribute, use the Project window in Studio to navigate to configuration → config → lookuptables
and open lookuptables.xml. You can examine the contents of this file to determine how the precedence attri-
bute is configured by default. For example, for product lookup, you can examine the following elements:
<LookupTable code="ProductLookup" entityName="ProductLookup" root="PolicyProductRoot">
<Dimension field="State" valuePath="PolicyProductRoot.State" precedence="0"/>
<Dimension field="JobType" valuePath="PolicyProductRoot.JobType" precedence="1"/>
<Dimension field="IndustryCode" valuePath="PolicyProductRoot.Account.IndustryCode" precedence="2"/>
<DistinguishingField field="ProductCode"/>
</LookupTable>
Notice that the LookupTable element defines a field for every dimension in the availability table together with an
associated precedence for that dimension. As PolicyCenter calculates availability, availability dimensions with
lower precedence numbers override availability dimensions with higher precedence numbers.
The reference date that is compared against the effective and expiration dates of an availability or rating table is
not always the same. It might be the start date of the policy period, the current date, or another date. PolicyCenter
has a framework that determines the appropriate reference date before determining the availability of patterns in
the product model.
See also
• “Determining the Reference Date” on page 493 in the Application Guide
Ref date Eff date Ref date Eff date Ref date Eff date
See also
• “Reference Date Plugin” on page 178 in the Integration Guide
2. Right-click CovTermOptLookup.eti and select New → Entity Extension to display the Entity Extension dialog box.
Accept the default file name extension by clicking OK.
Studio opens a new extension file named CovTermOptLookup.etx.
3. In the Entity editor for CovTermOptLookup.etx, select the root element. In the element drop-down list adja-
cent to the Add button, select column to add a new column to the lookup table.
4. Add the following values to new column define the new ProductCode:
Property Value
name ProductCode
type varchar
5. With your new column selected in the Entity editor, select params from the element drop-down list to a a
columnParam element.
6. Add the following values to the new columnParam:
Property Value
name size
value 50
2. Search for CPBuildingCovOpt and add the <Dimension> element, as shown in the following code fragment.
<LookupTable code="CPBuildingCovOpt"
entityName="CovTermOptLookup"
root="covTerm"
appliesTo="CPBuilding">
<Filter field="CovTermPatternCode" valuePath="covTerm.PatternCode"/>
<Dimension field="State" valuePath="covTerm.Clause.OwningCoverable.CoverableState" precedence="0"/>
<Dimension field="UWCompanyCode" valuePath="covTerm.Clause.PolicyLine.PolicyPeriod.UWCompany.Code"
precedence="1"/>
<Dimension field="JobType" valuePath="covTerm.Clause.PolicyLine.PolicyPeriod.Job.Subtype"
precedence="2"/>
<Dimension field="ProductCode" valuePath="covTerm.Clause.PolicyLine.PolicyPeriod.Policy.ProductCode"
precedence="3"/>
<DistinguishingField field="CovTermOptCode"/>
</LookupTable>
The highlighted <Dimension> element is the new element. This element provides information for the
ProductCode field defined on the lookup entity in “Step 1: Extend an Availability Lookup Entity” on page 81.
PolicyCenter decides whether a coverage term is available by comparing the ProductCode in use on the pol-
icy with the ProductCode specified by the row in the lookup table. The valuePath attribute designates how
PolicyCenter finds the ProductCode for comparison. The valuePath starts with the entity designated in the
root attribute. When an availability lookup table has multiple matching rows, the precedence attribute deter-
mines that rows matching just the ProductCode column have lower precedence than rows matching other col-
umns.
In the Commercial Property policy line, the table on the Availability page for commercial property deductible term
options now has a ProductCode column.
For example, if you want to extend the lookup table with a BodyType column for personal vehicle coverage
terms, you must create a new subtype. Create a new PAVehicleCovTermLookup entity extension subtype and add
the BodyType column. Do not add the BodyType column to the CovTermLookup entity extension, because it does
not apply to all coverage terms.
Therefore, define a new entity in configuration → config → extensions → entity as follows:
Property Value
Entity PAVehicleCovTermLookup
Supertype CovTermLookup
Add a typekey element to the new entity with the following parameters:
Property Value
name BodyType
typelist BodyType
IMPORTANT Changes in Studio other than availability changes are not uploaded to PolicyCenter. For
example, if you change availability references, PolicyCenter cannot reload availability.
To reload availability, you must copy the product model files to an external directory that is accessible to the
application server. Then in PolicyCenter, use the Server Tools → Product Model Info screen to access the Reload Avail-
ability command. Alternatively, you can restart the PolicyCenter server to read the new availability data from the
external directory.
PolicyCenter loads availability data from the directory specified by the ExternalProductModelDirectory
parameter in config.xml at both server startup time and when a reload is requested. However, it does so only if
all of the following are true:
• The parameter specifies a directory accessible to the application server.
• The directory is not in the deployment directory tree.
• The directory contains a complete product model definition that only defines existing patterns.
• The directory contains at least one lookup XML file ending in -lookups.xml.
• The files in the directory are valid.
Otherwise, PolicyCenter loads availability data from the standard configuration directory at server startup time,
and any attempt to reload fails.
The external directory you specify must contain a complete copy of the product model resources directory.
Before reloading, PolicyCenter performs validations on the product model definitions in the external directory.
These validations are the same validations that PolicyCenter performs on the product model at startup. The
server loads only availability information from the external directory. The rest of the product model definition is
taken from the modules/configuration/config directory of your PolicyCenter installation directory. Therefore,
you cannot, for example, add a new coverage pattern to the product model on a running server.
All servers in the cluster must have access to the external product model directory. If the batch server cannot
access the external directory, PolicyCenter displays an error message after clicking Reload Availability. However, if
other servers in the cluster cannot access the external directory, PolicyCenter sends an error message to the log
file. If a server in the cluster cannot access the external product model directory, it can have different availability
data than the batch server. Therefore, you must take care in making sure the external product model directory is
available to all servers in a cluster.
2. In Studio, use the Project window to navigate to configuration → config and open config.xml.
4. Enter the fully qualified path to the reload directory in the value attribute. For example, you can define
ExternalProductModelDirectory as follows:
<param name="ExternalProductModelDirectory" value="c:\PC_Reload_Availability\productmodel"/>
5. If the server is in development mode, find the EnableInternalDebugTools parameter and set its value to
true. To view the Reload Availability screen when the server is in development mode, this parameter must be
true. For more information, see “The Reload Availability Screen” on page 84.
6. Start or restart PolicyCenter to pick up the changes to config.xml.
Property Value
State Colorado
2. In the navigation panel, expand the nodes to open Coverages → Comprehensive → Terms → Comprehensive Deductible
→ Options → 1000.
4. On the Availability page, click to expand the Availability Script section. Add the following code to remove the value
1000 in California:
if (State == "CA") {return false}
3. Paste the productmodel directory to the ExternalProductModelDirectory you defined in “Step 1: Enable
the Configuration Parameter” on page 85.
Configuring Offerings
Some insurers offer variations of their policies depending on customer type or sales channel. Offerings enable
you to define different product types for different situations. If a product provides offerings, you can choose an
offering in the submission, issuance, policy change, renewal, or rewrite transaction.
After you define a set of offerings, you then can enable or disable any of the following product model patterns in
any combination of offerings:
• Policy lines, in a package policy
• Policy terms
• Coverages
• Coverage terms
• Coverage term options and packages
• Exclusions
• Conditions
• Modifiers
• Question sets
Enabling (including) a product model pattern in an offering causes the pattern to appear when the user has
selected the corresponding offering. Conversely, disabling (excluding) a product model pattern in an offering
removes the pattern from the available options when the user has selected the corresponding offering. For
example, if you include a $100 deductible coverage term option only in an offering named Premium, the $100
deductible option appears only if the user selects the Premium offering.
This topic includes:
• “Working with Offerings in the Product Model” on page 90
• “Offerings and Question Sets” on page 92
See also
• “Understanding Offerings” on page 495 in the Application Guide
Configuring Offerings 89
PolicyCenter 9.0.0 Product Model Guide
In each offering, you can enable or disable any of these items. The Modified column on the Selections page uses
icons to help you find items whose enabled or disabled status is different in the selected offering than in the base
product:
blank (no icon) This item and all of its descendants are the same as in the base product.
This enabled/disabled status of this item is different from the base product.
For an example, the Gold offering in the Businessowners product provides examples of Modified icons. Navigate
to Products → Businessowners → Offerings → Gold → Selections. To see the icon, select Coverages → AK - Attorney Fees -
GL. In the popup dialog, change Existence to Electable.
See also
• “Configuring Offerings for Question Sets” on page 52
Answers to questions is the last check to determine if an offering is available. The offering is available only if the
user provides correct answers for all questions.
See also
• “Product Offerings Availability Page” on page 92
This topic discusses how PolicyCenter handles missing and unavailable items on a policy transaction.
This topic includes:
• “What Is Product Model Availability?” on page 95
• “Types of Availability Issues” on page 96
• “Product Model Issue Matrix” on page 96
• “Configuring Product Model Availability Checks” on page 98
• “Important Classes and Methods Related to Availability Checking” on page 99
• Display a message, either blocking or non-blocking, that alerts the user to the problem. The user then can
resolve the issue. Blocking messages, such as warnings, prevent the user from continuing to the next wizard
step until the problem is corrected.
The actions PolicyCenter takes for the various types availability issues is defined in the base configuration, but
can be changed. For information on configuring the default behavior, see “Configuring Product Model Avail-
ability Checks” on page 98.
Missing Required Coverage A coverage that is available and required is not present on the appropriate Coverable
entity. Fixing this issue adds the coverage.
Missing Suggested Coverage A coverage that is available and suggested is not present on the appropriate Coverable
entity. Fixing this issue adds the coverage. The default behavior is to neither fix nor dis-
play this issue. However, you can configure PolicyCenter to provide user notification for
this issue.
Unavailable Coverage A coverage is present that is currently unavailable. Fixing this issue removes the cover-
age.
Missing Coverage Term A CovTerm on a coverage is available but not present. Fixing this issue adds the term.
Unavailable Coverage Term A CovTerm is present on a coverage but is currently unavailable. Fixing this issue
removes the term.
Unavailable Option Value An option is selected for an OptionCovTerm that is currently unavailable. Fixing this issue
resets the term to its default value, or to null if no default has been specified.
Unavailable Package Value A package is selected for a PackageCovTerm that is currently unavailable. Fixing this
issue resets the term to its default value, or to null if no default has been specified.
Missing Modifier A modifier is available but not present. Fixing this issue adds the modifier.
Unavailable Modifier A modifier is present that is currently unavailable. Fixing this issue removes the modifier.
Missing RateFactor A rate factor is available but not present. Fixing this issue adds the rate factor.
Unavailable RateFactor A rate factor is present that is currently unavailable. Fixing this issue removes the rate
factor.
Missing Question A question that is currently available does not have an associated answer. Fixing the
issue adds an answer object for that question.
Unavailable Question An answer is present for a question that is currently unavailable. Fixing this issue
removes the answer object for that question.
Note: In cases where an coverage pattern contains other coverage patterns, an issue with a parent does not
cause PolicyCenter to report potential issues with a descendent. For example, if a required Coverage is
missing, PolicyCenter does not report any issues with the coverage’s CovTerm entities.
Fix Step Fix during wizard step sync. Gen- PolicyCenter determines product model availability for the listed item
erally called as part of entering a each time you move between wizard steps. If this setting is true,
page or after making certain types PolicyCenter attempts to correct the problem before moving to the
of changes. next wizard step.
ShouldFixDuringNormalSync
Fix Quote Fix during quote PolicyCenter determines product model availability for the listed item
after you click Quote. If this setting is true, PolicyCenter attempts to
ShouldFixDuringQuote
correct the problem before quoting the policy.
Display Step Display during wizard step sync If this setting is true, PolicyCenter displays information about a prob-
lem it discovered as you move between wizard steps.
ShouldDisplayDuringNormalSync
Display Display during quote If this setting is true, PolicyCenter displays information about a prob-
Quote lem it discovered as you attempt to quote a policy.
ShouldDisplayDuringQuote
Severity Step Severity during wizard step sync If Display Step is true, this value sets the severity level of the mes-
sage. There are three severity levels:
Severity
• Info - Provides details of the issue only and any possible steps that
PolicyCenter took to correct the issue.
• Warning - Provides details of the issue in the worksheet at the bot-
tom of the screen. You must explicitly cancel the warning message
before continuing, but you need not correct the problem at this
point.
• Error - Provides details of the issue in the worksheet (at the bottom
of the screen). You must explicitly correct the error condition and
cancel the error message before continuing. You cannot continue
until you correct the problem.
Severity Severity during quote If Display Quote is true, this value sets the severity level of the mes-
Quote ShouldBlockQuote
sage. It uses the same severity levels as Severity Step.
Display
Issue Fix Step Fix Quote Display Step Quote Severity Step Severity Quote
To illustrate, if the missing item is a coverage term, in the base configuration the issue matrix shows the
following values:
• Fix Wizard Step – true
• Fix Quote – false
• Display Wizard Step – true
• Display Quote – true
• Severity Wizard Step – Info
• Severity Quote – Error
Therefore, if a coverage term does not exist on a coverage that has been selected, PolicyCenter has the following
behavior:
• If you move from a wizard step to the wizard step that displays the coverage, PolicyCenter corrects the
problem and displays a corresponding information message.
• If you attempt to quote the policy with the required coverage term missing, PolicyCenter opens a worksheet
at the bottom of the screen and indicates which coverage term is missing. It does not complete the quote until
you add the required coverage term.
You can call the ProductModelSynchIssuesHandler class from any Gosu code. Comments in the class provide
details on how to use the various class methods. However, you typically call it from a PCF page. For example,
you can instruct PolicyCenter to perform a product model availability check before entering the Vehicles screen of
the Personal Auto line. To trigger a product model availably check in this way, enter the following code on the
onEnter attribute on the LineWizardStepSet.PersonalAuto PCF page.
if (rev.OpenForEdit) {
gw.web.productmodel.ProductModelSyncIssuesHandler.syncModifiers(rev.PersonalAutoLine.AllModifiables,
jobWizardHelper)
}
The following illustration shows how this availability check is configured in the base configuration.
The ProductModelSynchIssuesHandler class is a utility class whose purpose is to call other, more specific,
classes to handle details of product model availability checking. For example, the call to
ProductModelSyncIssuesHandler.syncModifiers() in turn calls class MissingModifierIssueWrapper, which
defines the following behavior:
override property get ShouldFixDuringNormalSync() : boolean { return true }
override property get ShouldDisplayDuringNormalSync() : boolean { return false }
override property get ShouldFixDuringQuote() : boolean { return true }
override property get ShouldDisplayDuringQuote() : boolean { return false }
To change the default behavior, modify the appropriate value accordingly. For example, if PolicyCenter encoun-
ters a missing modifier during availability checking, the default behavior requires that PolicyCenter must correct
the issue as it moves between wizard steps. The following code ensures that missing modifiers must be fixed:
override property get ShouldFixDuringNormalSync() : boolean { return true }
To change this behavior so that the issue need not be corrected at that point in the wizard, set the return value to
false.
Gosu Classes
• availabilityissueIssueWrapper
Set of Gosu classes in gw.web.productmodel that provide the initial entry point to product model availability
checking.
• ProductModelSyncIssuesHandler
Gosu class in gw.web.productmodel that contains helper methods for synchronizing coverages, modifiers,
and questions, and for displaying the results in PolicyCenter.
This topic discusses how PolicyCenter verifies that an updated product model does not make illegal changes to
the existing product model that is already present on a production server.
This topic includes:
• “PolicyCenter Product Model Verification” on page 101
• “Product Model Immutable Field Verification” on page 102
• “Product Model Modification Checks” on page 103
1. XML verification Verifies the XML used product model definition files is both well-formed and valid as
defined by the PolicyCenter XML schema.
2. Product model verification Verifies that no changes in the product model being loaded violate the product
model currently in place on the production server. PolicyCenter also performs these
checks during product model synchronization with a linked, running development
server.
See “Verifying the Product Model” on page 107 for more information on verification
checking.
3. Illegal product model modification Verifies that the product model does not contain an illegal modification. For example,
it verifies that a required coverage pattern has not been deleted.
See “Product Model Immutable Field Verification” on page 102 for details.
If any of these verifications fails, PolicyCenter adds a message to the server log and fails to start.
To illustrate with a more concrete example, some of the locked fields on this Personal Auto Collision Coverage
are:
CoveragePattern
CodeIdentifier: PersonalAutoCollisionCoverage
CoverageCategory: PAPPhysDamGrp
CoverageSubtype: PersonalVehicleCov
OwningEntityType: PersonalVehicle
PublicID: 32342123342
...
In this coverage, the locked fields are CoverageCategory, CoverageSubtype, and OwningEnityType, which
specifies that this is a vehicle-level coverage. The CodeIdentifier and PublicID are locked by the deleted
pattern check. See “Deleted Pattern Checks” on page 104.
This group of locking table entries indicates that there must be an entity of type CovSymbs and that the field
covsymbgrp must have the value of its parent, CovSymbGrp. If CovSymbs is deleted, PolicyCenter immediately
identifies the deletion.
Disallowed Deletions
Deleting instances of the following product model patterns is not allowed. If it detects deletions of any of these
patterns, PolicyCenter adds a message to the server log and fails to start.
CovTermPattern PolicyLinePattern
Allowed Deletions
Instances of the following product model patterns can be deleted without interfering with production server
startup.
CoveragePattern • OwningEntityType
• CoverageSymbolGroupPattern
• CoverageSubtype
CoverageSymbolGroupPattern • PolicyLinePattern
CoverageSymbolPattern • CoverageSymbolGroupPattern
• CoverageSymbolType
CovTermOpt • CovTermPattern
• Value
• OptionCode
CovTermPack • CovTermPattern
• PackageCode
DirectCovTermPattern • CoveragePattern
• CoverageColumn
• ValueType
GenericCovTermPattern • CoveragePattern
• CoverageColumn
ModifierPattern • TypeList
• ModifierSubtype
• ModifierDataType
• SplitOnAnniversary
• PolicyLinePattern
• ScheduleRate
OfficialIdPattern • PolicyLinePattern
• Interstate
• OfficialIDType
• Scope
OptionCovTermPattern • ValueType
• CoverageColumn
• CoveragePattern
PackageCovTermPattern • CoverageColumn
• CoveragePattern
PolicyLinePattern • PolicyLineSubtype
Product • Abbreviation
• ProductAccountType
Question • QuestionSet
• QuestionType
• CorrectAnswer
QuestionChoice • Question
• ChoiceCode
QuestionSet • QuestionSetType
RateFactorPattern • ModifierPattern
• RateFactorType
TypekeyCovTermPattern • CoverageColumn
• CoveragePattern
• Typefilter
• Typelist
Additional Checks
During production server startup, PolicyCenter performs the following checks in addition to all of the checks
previously described:
• Each product definition contains:
This topic discusses how PolicyCenter verifies that you have correctly implemented the product model.
This topic includes:
• “What Is Product Model Verification?” on page 107
• “Product Model Error Messages” on page 108
• “Product Model Verification Checks” on page 109
• During a compile operation from Studio – PolicyCenter performs verification if you compile one or more
product model files in Studio. PolicyCenter displays any errors in the Log window at the bottom of Studio.
Note: Policy validation checks are different from product model verification checks. For information on
policy validation, see “Class-based Validation” on page 477 in the Configuration Guide and “Rule-based
Validation” on page 69 in the Rules Guide.
See also
• “Preventing Illegal Product Model Changes” on page 101
• “Checking Product Model Availability” on page 95
3. Right-click the Entity node and select Compile 'metadata.entity' from the pop-up menu.
4. Wait for the operation to finish, then check for errors in the Log window at the bottom of the Studio window.
Note: Rather than verifying the entire product model, you can verify individual product model files by
selecting and compiling a single file. In this case, Studio limits verification to the scope of the selected file.
Alternatively, you can rebuild the entire project by selecting Build → Rebuild Project. In this case, Studio veri-
fies the entire product model as well as the integrity of all other files in PolicyCenter.
Category Description
Product Model Constraints on product model entities only, independent of any policies that may use them.
Policy Constraints on policy entities only, independent of the product model.
Syntactic Low-level dependencies between policies and the product model that must be enforced for all policies.
Semantic Business-level constraints between policies and the product model.
Note: The verification checks are built into PolicyCenter. You cannot change or modify them.
Coverage Verification
During production product model verification, PolicyCenter runs the following checks on each Coverage in the
current product model definition:
Syntactic All Coverage entities on a policy line map to CoveragePattern entities associated with the line's
PolicyLinePattern.
Syntactic Each Coverable has no two Coverage entities with the same CoveragePattern.
Product model The CoveragePattern.Subtype field must name a coverage of the appropriate subtype for its
owning entity.
CoverageTerm Verification
During production product model verification, PolicyCenter runs the following checks on each CoverageTerm in
the current product model definition:
Modifier Verification
During production product model verification, PolicyCenter runs the following checks on each Modifier in the
current product model definition:
Syntactic All Modifier entities on a line are associated to a ModifierPattern in the line's
PolicyLinePattern.
Semantic RateModifier entities have a rate value at least that of the ModifierPattern entity’s specified
lower bound, if any.
Semantic RateModifier entities have a rate value at most that of the ModifierPattern entity's specified
upper bound, if any.
Product Model Only rate modifiers can be schedule rates.
Product Model Only schedule rate modifier patterns have rate factor patterns.
Syntactic Only schedule rates have rate factors.
Product Model The RateFactorPattern entities for any given ModifierPattern all have distinct types.
Syntactic All RateFactor entities on a schedule rate are instantiated from a RateFactorPattern associ-
ated with the ModifierPattern.
Semantic RateFactor entities have a rate value at least that of the RateFactorPattern entity’s specified
lower bound.
Semantic RateFactor entities have a rate value at most that of the RateFactorPattern entity's specified
upper bound.
Product Model The ModifierPattern entities within any PolicyLinePattern all have unique RefCode values.
Syntactic No PolicyLine contains two Modifier entities of the same type in the same jurisdiction with
overlapping effective dates.
Product Model Each RateFactorPattern contains at most one RateFactorMinMaxLookup for each jurisdiction.
Product Model Every ModifierPattern entity's default minimum/maximum interval is non-empty
Product Model Every ModifierMinMaxLookup entity's minimum/maximum interval is non-empty.
Product Model Every RateFactorPattern entity's default minimum/maximum interval is non-empty.
Product Model Every RateFactorMinMaxLookup entity's minimum/maximum interval is non-empty.
CoverageSymbol Verification
During production product model verification, PolicyCenter runs the following checks on each CoverageSymbol
in the current product model definition:
Syntactic No two CoverageSymbolGroup entities in a given line are instantiated from the same pattern.
Syntactic All CoverageSymbol entities in a given CoverageSymbolGroup are instantiated from
CoverageSymbolPattern entities in the group's CoverageSymbolGroupPattern.
Syntactic No two CoverageSymbol entities in a given CoverageSymbolGroup are instantiated from the
same pattern.
Syntactic The Coverage.CoverageSymbolGroup field is non-null if and only if the CoveragePattern has
an associated CoverageSymbolGroupPattern.
Syntactic The CoverageSymbolGroup referenced by a Coverage must be instantiated from the
CoverageSymbolGroupPattern referenced by the Coverage entity's pattern.
Policy All Coverage entities of the same type in the same PolicyLine must reference the same
CoverageSymbolGroup.
The Product Model Loader extracts product model data from the running PolicyCenter server, and stores the
information in tables in the PolicyCenter database. Policy data combined with the Product Model Loader data
can be extracted, transformed, and loaded (ETL) into a data warehouse or data store for analysis or reporting.
If you add policy lines or add clauses and coverage terms to existing policy lines, the Product Model Loader
creates ETL product model tables for these additions. You can also extend the Product Model Loader to access
other product model data, including product offerings or questions in question sets. These changes may require
modifying the ETL entities.
The Product Model Loader is implemented as a plugin that runs when PolicyCenter starts. To disable this plugin,
see “Non-operational Plugin Implementation” on page 189 in the Integration Guide.
See also
• “ETL Product Model Loader Plugin” on page 188 in the Integration Guide
• Coverage pattern
• Exclusion pattern
• Condition pattern
Coverage term pattern ETLCoverageTermPattern pc_etlcovtermpattern
ETL Entities
The following illustration shows the ETL entities that the Product Model Loader creates. See the Data
Dictionary for complete information. You may need to use these entities if you modify the Product Model
Loader plugin.
džƚƌĂĐƚŝŽŶŶƚŝƚŝĞƐ
d>ůĂƵƐĞWĂƚƚĞƌŶ d>DŽĚŝĨŝĞƌWĂƚƚĞƌŶ
Ύ Ύ
d>ŽǀĞƌĂŐĞdĞƌŵWĂƚƚĞƌŶ d>ZĂƚĞ&ĂĐƚŽƌWĂƚƚĞƌŶ
d>ŝƌĞĐƚŽǀdĞƌŵWĂƚƚĞƌŶ
d>'ĞŶĞƌŝĐŽǀdĞƌŵWĂƚƚĞƌŶ
d>KƉƚŝŽŶŽǀdĞƌŵWĂƚƚĞƌŶ d>ŽǀdĞƌŵKƉƚ
Ύ
d>dLJƉĞŬĞLJŽǀdĞƌŵWĂƚƚĞƌŶ >ĞŐĞŶĚ
ŚĂƐϬŽƌŵŽƌĞƐ
ŝƐĂƐƵďƚLJƉĞŽĨ
See also
• “Coverage Pattern Overview” on page 490 in the Application Guide
• “Coverage Term Pattern Overview” on page 492 in the Application Guide
The following SQL statement gets the identifier, pattern code, and choice term from all Collision coverages in
the database:
SELECT
ID, PatternCode, ChoiceTerm1
FROM pc_personalvehiclecov t4
WHERE t4.PatternCode = 'PACollisionCov';
ID PatternCode ChoiceTerm1
The PACollisionCov pattern code does not convey the name of the coverage. The opt_319 choice term does not
provide name or type of the selected coverage term option.
The Product Model Loader creates database tables that provide access to names of coverages, coverage term
names and types, coverage term option names and values, and other product model objects. The tables are in the
PolicyCenter database, making the information available to database queries in an ETL process. You can write a
query joining the policy data with this product model data. You can store the results of this query in a data ware-
house or data store.
The following SQL statement joins the ETL data with the policy data to get the value of the coverage term
options. The statement selects all instances of Collision coverage and joins with ETL product model tables. You
now have the currency and option values selected for the Collision deductible.
SELECT
t4.ID, t4.PatternCode, t3.PatternID, t2.PatternID, t1.Value, t1.Currency
FROM pc_personalvehiclecov t4
JOIN pc_etlclausepattern t3 on t4.PatternCode = t3.PatternID
JOIN pc_etlcovtermpattern t2 on t2.ClausePatternID = t3.ID
JOIN pc_etlcovtermoption t1 on t1.CoverageTermPatternID = t2.ID
AND t1.PatternID = t4.ChoiceTerm1
WHERE t4.PatternCode = 'PACollisionCov';
Schedules are lists that contain detailed information about an insured’s coverables. PolicyCenter implements the
following types of schedules:
• Schedules – Capture information per scheduled item. In general, schedules of this type are not used directly
for rating, but are often taken into consideration during underwriting and usually are included in forms.
• Schedules with coverage terms – Capture information per scheduled item. Each scheduled item includes one
or more coverages that can affect rating. Each coverage includes one or more coverage terms. In schedules of
this type, each scheduled item’s coverage terms are passed to the rating engine and potentially affect the cost
of the policy.
Generic schedules are instances of schedules that are implemented by using the generic schedule data model in
PolicyCenter. The data model for generic schedules enables you to configure schedules using a common set of
Gosu classes, PCF pages, and entity interfaces.
Generic schedules provide a template that enables you to quickly configure new schedules. Generic schedules
avoid the need to define a new data model, new user interface, and new configuration elements each time you
want to add a new schedule. Using generic schedule, you can quickly adapt the generic structure to represent
many different schedules.
This topic includes:
• “Generic Schedule Data Model” on page 118
• “Configuring the Generic Schedule User Interface” on page 123
• “Implementing Schedules in Lines That Do Not Have Schedules” on page 124
See also
• “Generic Schedules” on page 365 in the Application Guide
See the Data Dictionary for a complete list of entities and properties. The entities in the object model are not a
complete list.
'ĞŶĞƌŝĐ^ĐŚĞĚƵůĞKďũĞĐƚDŽĚĞů
6FKHGXOH&RYHUDJH >ĞŐĞŶĚ
ŚĂƐϬŽƌŵŽƌĞƐ
Ύ
ͨŝŶƚĞƌĨĂĐĞͩ ŽǀĞƌĂďůĞ ŚĂƐϬŽƌϭƐ
^ĐŚĞĚƵůĞ Ϭ͘͘ϭ
ŝƐĂƐƵďƚLJƉĞŽĨ
^ĐŚĞĚƵůĞEĂŵĞ
^ĐŚĞĚƵůĞĚ/ƚĞŵƐDƵůƚŝWĂƚƚĞƌŶƐ ŚĂƐĂŶ
^ĐŚĞĚƵůĞĚ/ƚĞŵƐ ŶƚŝƚLJ
WƌŽƉĞƌƚLJ/ŶĨŽƐ
DŽƐƚĞƐĐƌŝƉƚŝǀĞWƌŽƉĞƌƚLJ/ŶĨŽ ŶƚŝƚLJƚŽďĞĚĞĨŝŶĞĚ
'ŽƐƵŝŵƉůĞŵĞŶƚĂƚŝŽŶĐůĂƐƐ
Ϭ͘͘ϭ
yyŽǀĞƌĂďůĞ^ĐŚĞĚƵůĞ
ŽǀĞƌĂŐĞWĂƚƚĞƌŶ
Žǀ
Ύ
ŽǀĞƌĂŐĞdĞƌŵ
6FKHGXOHG,WHPV
ͨĚĞůĞŐĂƚĞͩ ͨĚĞůĞŐĂƚĞͩ
^ĐŚĞĚƵůĞĚ/ƚĞŵ yy^ĐŚĞĚƵůĞĚ/ƚĞŵ
^ƚƌŝŶŐŽůϭ ͘͘͘
/ŶƚŽůϭ
ŽŽůŽůϭ
ĂƚĞŽůϭ Ύ
dLJƉĞ<ĞLJŽůϭ yyŽǀĞƌĂďůĞ^ĐŚĞĚƵůĞ
EĂŵĞĚ/ŶƐƵƌĞĚ Žǀ/ƚĞŵ
͘͘͘
Ϭ͘͘ϭ
yyŽǀĞƌĂďůĞ^ĐŚĞĚƵůĞ
ŽǀĞƌĂŐĞWĂƚƚĞƌŶ
Žǀ/ƚĞŵŽǀ
Ύ
ŽǀĞƌĂŐĞdĞƌŵ
In the illustration above, XX is an abbreviation for the policy line. Coverable is a placeholder for the name of the
coverable. Replace Cov with the clause type: Cov for coverage, Cond for condition, and Excl for exclusion.
All generic schedules include:
1. Coverable – A policy line or coverage part.
The following data model displays some General Liability entities related to schedules. See the Data Dictionary
for a complete list of entities and properties. The entities in the object model are not a complete list.
'>^ĐŚĞĚƵůĞKďũĞĐƚƐ
6FKHGXOH&RYHUDJH >ĞŐĞŶĚ
ŚĂƐϬŽƌŵŽƌĞƐ
ͨŝŶƚĞƌĨĂĐĞͩ
Ύ
ŽǀĞƌĂďůĞ ŚĂƐϬŽƌϭƐ
^ĐŚĞĚƵůĞ Ϭ͘͘ϭ
'>>ŝŶĞ^ĐŚĞĚƵůĞŽǀ ŽǀĞƌĂŐĞWĂƚƚĞƌŶ
6FKHGXOH,WHPV
ͨĚĞůĞŐĂƚĞͩ ͨĚĞůĞŐĂƚĞͩ
^ĐŚĞĚƵůĞĚ/ƚĞŵ '>^ĐŚĞĚƵůĞĚ/ƚĞŵ
^ƚƌŝŶŐŽůϭ WŽůŝĐLJ>ŽĐĂƚŝŽŶ
/ŶƚŽůϭ
ŽŽůŽůϭ
ĂƚĞŽůϭ
dLJƉĞ<ĞLJŽůϭ
Ύ
EĂŵĞĚ/ŶƐƵƌĞĚ '>>ŝŶĞ^ĐŚĞĚƵůĞŽǀ/ƚĞŵ
͘͘͘
'>>ŝŶĞ^ĐŚŽǀ/ƚĞŵŽǀ ŽǀĞƌĂŐĞWĂƚƚĞƌŶ
Schedule Coverage
The Schedule Coverage portion of the data model defines the Schedule interface that describes the properties of
the schedule.
'ĞŶĞƌŝĐ^ĐŚĞĚƵůĞŽǀĞƌĂŐĞKďũĞĐƚƐ
6FKHGXOH&RYHUDJH >ĞŐĞŶĚ
ŚĂƐϬŽƌŵŽƌĞƐ
ͨŝŶƚĞƌĨĂĐĞͩ ŽǀĞƌĂďůĞ Ύ
^ĐŚĞĚƵůĞ
Ϭ͘͘ϭ
ŚĂƐϬŽƌϭƐ
^ĐŚĞĚƵůĞEĂŵĞ ŝƐĂƐƵďƚLJƉĞŽĨ
^ĐŚĞĚƵůĞĚ/ƚĞŵƐDƵůƚŝWĂƚƚĞƌŶƐ
^ĐŚĞĚƵůĞĚ/ƚĞŵƐ ŚĂƐĂŶ
WƌŽƉĞƌƚLJ/ŶĨŽƐ ŶƚŝƚLJ
DŽƐƚĞƐĐƌŝƉƚŝǀĞWƌŽƉĞƌƚLJ/ŶĨŽ
ŶƚŝƚLJƚŽďĞĚĞĨŝŶĞĚ
'ŽƐƵŝŵƉůĞŵĞŶƚĂƚŝŽŶĐůĂƐƐ
Ϭ͘͘ϭ
yyŽǀĞƌĂďůĞ^ĐŚĞĚƵůĞ
ŽǀĞƌĂŐĞWĂƚƚĞƌŶ
Žǀ
Ύ
ŽǀĞƌĂŐĞdĞƌŵ
In the illustration above, XX is an abbreviation for the policy line. Coverable is a placeholder for the name of the
coverable. Replace Cov with the clause type: Cov for coverage, Cond for condition, and Excl for exclusion.
1. Coverable – A policy line or coverage part.
The Schedule interface is implemented by AbstractScheduleImpl.gs. You extend this implementation class for
each schedule you define. For an example of a schedule implementation, see the
gw.lob.gl.schedule.GLLineScheduleExclImpl class.
Scheduled Items
Scheduled items are the individual rows of a schedule, one row per item to be captured by the schedule. The data
captured for each scheduled item is defined in columns that appear in the schedule user interface. The Scheduled
Items portion of the data model defines the ScheduledItem delegate that describes the columns of the schedule.
For schedules with coverages, the data model defines columns for coverages on each scheduled item.
^ĐŚĞĚƵůĞĚ/ƚĞŵKďũĞĐƚDŽĚĞů
6FKHGXOHG,WHPV >ĞŐĞŶĚ
ŚĂƐϬŽƌŵŽƌĞƐ
ͨĚĞůĞŐĂƚĞͩ ͨĚĞůĞŐĂƚĞͩ Ύ
^ĐŚĞĚƵůĞĚ/ƚĞŵ yy^ĐŚĞĚƵůĞĚ/ƚĞŵ ŚĂƐϬŽƌϭƐ
Ϭ͘͘ϭ
^ƚƌŝŶŐŽůϭ ͘͘͘ ŝƐĂƐƵďƚLJƉĞŽĨ
/ŶƚŽůϭ
ŽŽůŽůϭ ŚĂƐĂŶ
ĂƚĞŽůϭ
yyŽǀĞƌĂďůĞ^ĐŚĞĚƵůĞ ŶƚŝƚLJ
dLJƉĞ<ĞLJŽůϭ
EĂŵĞĚ/ŶƐƵƌĞĚ Žǀ/ƚĞŵ ŶƚŝƚLJƚŽďĞĚĞĨŝŶĞĚ
͘͘͘
'ŽƐƵŝŵƉůĞŵĞŶƚĂƚŝŽŶĐůĂƐƐ
ϭ
Ϭ͘͘ϭ
yyŽǀĞƌĂďůĞ^ĐŚĞĚƵůĞ ŽǀĞƌĂŐĞWĂƚƚĞƌŶ
Žǀ/ƚĞŵŽǀ
Ύ
ŽǀĞƌĂŐĞdĞƌŵ
In the illustration above, XX is an abbreviation for the policy line. Coverable is a placeholder for the name of the
coverable. Replace Cov with the clause type: Cov for coverage, Cond for condition, and Excl for exclusion.
All generic schedules include:
1. XXCoverableScheduleCovItem – A scheduled item to be defined.
Scheduled items are the individual rows of a schedule, one row per item to be captured by the schedule. The data
captured for each scheduled item is defined in columns that appear in the schedule user interface. The Scheduled
Items portion of the data model defines the ScheduledItem delegate, which defines the following set of column
types that are common to most schedules:
Column Description
ScheduleNumber Column of type integer that automatically numbers the items in a schedule.
StringCol1 Two instances of a shorttext type column.
StringCol2
IntCol1 Column of type integer.
PosIntCol1 Column of type positiveinteger.
BoolCol1 Two instances of a bit type column.
BoolCol2
DateCol1 Column of type dateonly.
Column Description
TypeKeyCol1 Two instances of a patterncode type column.
TypeKeyCol2
NamedInsured Foreign key to a named insured.
If any schedules within a coverage, condition, or exclusion requires other column types, you must create a new
scheduled item delegate that defines those column types. To see an example of extending the column type defini-
tions, in Studio navigate to configuration → config → Metadata → Entity and open GLScheduledItem.eti. This example
shows how General Liability defines a PolicyLocation foreign key that can be used as a column in a schedule.
For each coverage, condition, or exclusion in which you want to define one or more schedules, you must define
new entities that implement the patterns in the delegates. To see an example of implementing the delegates for
General Liability, in the Studio Project window, navigate to configuration → config → metadata → entity and then open
GLLineScheduleCovItem.eti.
See also
• “Generic Schedule Data Model” on page 118
• “Modifying the Base Data Model” on page 223 in the Configuration Guide
• “Extending a Base Configuration Entity” on page 227 in the Configuration Guide
For example, in the schedule Exclude Y2K Computer Related And Other Electronic Problems schedule, one of the columns
is labeled Description and another is labeled Type. Column labels and types are mapped in Gosu schedule adapter
classes. The mapping process varies depending on whether the column is a coverage term. The PCF uses the
column mapping information to determine the correct type of cell and creates a modal cell input. For example, a
Description column requires a text cell and a Type column requires a range input that lists the values in a typekey.
ŶƚŝƚŝĞƐZĞůĂƚŝŶŐƚŽKW^ĐŚĞĚƵůĞƐ
6FKHGXOH&RYHUDJH >ĞŐĞŶĚ
ŚĂƐϬŽƌŵŽƌĞƐ
ͨŝŶƚĞƌĨĂĐĞͩ
Ύ
ŽǀĞƌĂďůĞ ŚĂƐϬŽƌϭƐ
^ĐŚĞĚƵůĞ Ϭ͘͘ϭ
^ĐŚĞĚƵůĞEĂŵĞ ŝƐĂƐƵďƚLJƉĞŽĨ
^ĐŚĞĚƵůĞĚ/ƚĞŵDƵůƚŝWĂƚƚĞƌŶ ŚĂƐĂŶ
^ĐŚĞĚƵůĞĚ/ƚĞŵƐ
WƌŽƉĞƌƚLJ/ŶĨŽƐ ŶƚŝƚLJƚŽďĞĚĞĨŝŶĞĚ
DŽƐƚĞƐĐƌŝƉƚŝǀĞWƌŽƉĞƌƚLJ/ŶĨŽ 'ŽƐƵŝŵƉůĞŵĞŶƚĂƚŝŽŶĐůĂƐƐ
Ϭ͘͘ϭ
KW>ŝŶĞ^ĐŚĞĚƵůĞŽǀ ŽǀĞƌĂŐĞWĂƚƚĞƌŶ
6FKHGXOH,WHPV
ͨĚĞůĞŐĂƚĞͩ ͨĚĞůĞŐĂƚĞͩ
^ĐŚĞĚƵůĞĚ/ƚĞŵ KW^ĐŚĞĚƵůĞĚ/ƚĞŵ
^ƚƌŝŶŐŽůϭ WŽůŝĐLJ>ŽĐĂƚŝŽŶ
/ŶƚŽůϭ
ŽŽůŽůϭ
ĂƚĞŽůϭ
dLJƉĞ<ĞLJŽůϭ
Ύ
EĂŵĞĚ/ŶƐƵƌĞĚ KW>ŝŶĞ^ĐŚĞĚƵůĞŽǀ/ƚĞŵ KW>ŝŶĞ^ĐŚŽǀ/ƚĞŵŽǀ ŽǀĞƌĂŐĞWĂƚƚĞƌŶ
͘͘͘
Ϭ͘͘ϭ
• BOPLineScheduleCovItem – The scheduled item entity is the concrete implementation of the scheduled items
for a particular clause (coverage, condition, or exclusion). It defines the database columns where scheduled
items are actually stored. The scheduled item entity must implement the Coverable entity as well as the
ScheduledItem entity and in each case specify the line-specific adapter class that you define. If your schedule
requires additional columns that have been defined in the LOBScheduledItem delegate entity, the scheduled
item entity also must implement that delegate. In addition, the scheduled item entity must have a foreign key
that links to the Schedule delegate. As with the other entities, all scheduled items for a given clause type
(coverage, condition, or exclusion) are defined by a single entity.
• BOPLineSchCovItemCov – This entity represents the coverage schedule item with coverage terms.
• BOPScheduledItem – If any schedules in the line require columns that are not defined in the Schedule inter-
face, create an LOBScheduledItem delegate that defines the additional column types. In the Surveillance Equip-
ment Schedule example, the Location column needs to reference a policy location. Policy location is not defined
in the Schedule interface.
This topic describes how to add a new line of business to PolicyCenter. The base configuration of PolicyCenter
includes several reference implementations for lines of business, including personal auto, general liability, and
workers’ compensation, among others. These lines of business are configurable. If your line of business is not
included in the base configuration, this topic describes how to add it to PolicyCenter.
This topic provides general instructions on how to add a new line of business, using homeowners as an example
line of business. In general, use the lines of business provided in the base configuration as a guide for developing
a new line.
Detailed instructions are provided for creating the HomeownersLine entity, its coverage, modifier, and rate
factors. Use the HomeownersLine entity as an example for creating other coverable entities.
Note: A reference implementation of the homeowners line of business is available as an extension pack.
Contact Guidewire support for more information.
This topic includes:
• “Step 1: Define the Data Model for the New Line of Business” on page 130
• “Step 2: Register the New Line of Business” on page 132
• “Step 3: Add a Policy Line Package and Configuration Class” on page 133
• “Step 4: Add Coverages to the New Line of Business” on page 134
• “Step 5: Add Rate Modifiers to the New Line of Business” on page 149
• “Step 6: Add Optional Features to a Policy Line” on page 158
• “Step 7: Build the Product Model for the New Line of Business” on page 158
• “Step 8: Define the Data Model for Rating in the New Line of Business” on page 162
• “Step 9: Design the User Interface for the New Line of Business” on page 173
• “Step 10: Set ClaimCenter Typelist Generator Options (Optional)” on page 177
• “Lines of Business – Advanced Topics” on page 177
See also
• “Lines of Business” on page 177 in the Application Guide
Step 1: Define the Data Model for the New Line of Business
The first step in creating a new line of business is to define the data model. Creating a new line of business is
complex, and it needs a well-defined starting point.
Start by designing the data model. In designing the data model, determine which coverages are for property,
which are for liability, and which are for both. Also determine the coverables—the property or persons who are
being insured. Creating a data model for a liability-only line is relatively easy, because the only insured object is
the line itself. Creating the data model for a new type of property insurance, such as an auto policy, is more
complex.
While designing that data model, consider the hierarchy of the data objects. The hierarchy shows relationships
between entities including foreign keys, subtypes, and array access to other entities.
%DVLF3ROLF\/LQH2EMHFWV
3ROLF\/LQH 3ROLF\/LQH 3ROLF\/LQH /HJHQG
$KDVDRQHWRRQH
$ %
UHODWLRQVKLSWR%
$KDVDRQHWRPDQ\
$ %
UHODWLRQVKLSWR%
$ % $LVDVXEW\SHRI%
1HZ/LDELOLW\/LQH 1HZ3URSHUW\/LQH +RPHRZQHUV/LQH
$ % $GHOHJDWHVWR%
$ % $KDVDIRUHLJQNH\WR%
$ $LVDQHZHQWLW\
&RYHUHG2EMHFW +2'ZHOOLQJ
1. A liability line with no insured objects. The entity for the new liability line is a subtype of PolicyLine.
2. A simple property line with one or more covered objects that attach directly to the new property line entity,
which is a subtype of PolicyLine.
3. A specific implementation of case 2, where the new HomeownersLine entity is a subtype of PolicyLine. The
HODwelling entity represents an insured object and is directly accessible from the new policy line.
Attaching Coverages
After you define the basic policy line objects, you must determine where to attach coverages. PolicyCenter
defines a coverage as a protection from a specific risk. Coverage entities implement the Coverage interface. A
coverage always attaches to a Coverable. A coverable is the covered object, such as a building or a car. For
liability coverages, the coverable is the insured. As you create the model for liability coverages, the policy line
usually is designated as the coverable that represents the insured. In some cases, coverages attach to jurisdictions.
Property coverages attach to a specific coverable object, such as a vehicle, building, or dwelling.
The following illustration shows a liability line with one covered object. Line coverages, usually liability cover-
ages, attach directly to the line. Object, or property, coverages attach to the covered object.
3ROLF\/LQHZLWK&RYHUDJHV
3ROLF\/LQH /HJHQG
$KDVDRQHWRRQH
$ %
UHODWLRQVKLSWR%
$KDVDRQHWRPDQ\
$ %
UHODWLRQVKLSWR%
$ % $LVDVXEW\SHRI%
&RYHUDJH /LQH&RYHUDJHV 1HZ/LDELOLW\/LQH &RYHUDEOH
$ % $GHOHJDWHVWR%
$ % $KDVDIRUHLJQNH\WR%
$ $LVDQHZHQWLW\
2EMHFW&RYHUDJHV &RYHUHG2EMHFW
Some coverages are location based. That is, they apply to all the buildings or vehicles at a specific location. In
that case, one approach is to create a new location entity as a coverable. In this example, the new location entity
is a subtype of PolicyLocation. The PolicyLocation entity is not a coverable.
3ROLF\/LQHZLWK/RFDWLRQDQG&RYHUDJHV
3ROLF\/LQH
%XLOGLQJV /HJHQG
$KDVDRQHWRRQH
$ %
2EMHFW&RYHUDJHV &RYHUHG2EMHFW UHODWLRQVKLSWR%
&RYHUDJHV $KDVDRQHWRPDQ\
$ %
UHODWLRQVKLSWR%
$ % $LVDVXEW\SHRI%
$ % $GHOHJDWHVWR%
$ % $KDVDIRUHLJQNH\WR%
$ $LVDQHZHQWLW\
Step 1: Define the Data Model for the New Line of Business 131
PolicyCenter 9.0.0 Product Model Guide
The following illustration shows the basic model for the homeowners line use in this example.
+RPHRZQHUV/LQHZLWK&RYHUDJH(QWLWLHV
/HJHQG
3ROLF\/LQH
$KDVDRQHWRRQH
$ %
UHODWLRQVKLSWR%
$KDVDRQHWRPDQ\
$ %
UHODWLRQVKLSWR%
$ % $LVDVXEW\SHRI%
$ % $KDVDIRUHLJQNH\WR%
$ $LVDQHZHQWLW\
+2'ZHOOLQJ&RY 'ZHOOLQJ
&RYHUDJHV
&RYHUDJH
Prerequisite
1. Enable Filename Suffix in Studio by navigating to File → Settings → Guidewire Studio → Metadata Editor. Select Show
filename suffix on new extension dialog.
Property Value
Typelist InstalledPolicyLine
Filename Suffix HO
3. Add a new typecode element to the typelist extension. Specify the following properties:
Property Value
code For the typecode, enter the package name in uppercase, for example, HO. This parameter
corresponds to the package name that you specify later (in lower case), as explained in
“Step 3: Add a Policy Line Package and Configuration Class” on page 133.
name For the typecode name, enter the code identifier of the policy line pattern, for example,
HomeownersLine. The code identifier corresponds to the Code of the policy line that you
specify later in Product Designer, as explained in “Creating the Policy Line” on page 159.
This value cannot contain blanks or special characters and must be unique within a
PolicyCenter instance.
desc Policy line subtype. For example, HomeownersLine. This parameter corresponds to the
Entity parameter you specify later, as explained in “Creating the New Coverable Entities” on
page 135.
Note: The PolicyCenter server checks its policy line entities against the parameters in the
InstalledPolicyLine typelist and refuses to start if it finds a policy line without a corresponding type-
code.
2. Right-click lob and select New → Package. In the New Package dialog box, enter the package name. The package
name must be a lower-case duplicate of the code specified in “Step 2: Register the New Line of Business” on
page 132. For the homeowners example, enter ho.
Studio creates a new package named gw.lob.ho.
2. Right-click the Configuration class file. For example, right-click GLConfiguration. Then select Copy.
3. Navigate back to your new policy line package. For homeowners, navigate in configuration → gsrc to the gw.lob
package, and then right-click ho. Then select Paste.
4. In the New Name field of the Copy Class dialog box, change the name of the class. Remove the upper-case
package name from the source line of business and replace it with the upper-case package name of the new
line of business. For example, if you copied the GLConfiguration class, for homeowners, change the name to
HOConfiguration.
5. Verify that the Destination package is correct. For homeowners, the destination package is gw.lob.ho. When you
click OK, Studio creates and opens the new class file.
6. Within the HOConfiguration class, make any needed changes to the RateRoutineConfig property as
follows:
• If you are using Guidewire Rating Management, change the RateRoutineConfig property to return an
appropriate RateRoutineConfig class. Examine another line for guidance on implementing the class. For
example, examine PAConfiguration and PARateRoutingConfig and define similar code to implement
rating in your new line.
• If you are using the system table rating plugin, gw.plugin.policyperiod.impl.SysTableRatingPlugin
or a third- party rating solution, set the property to return null.
7. Also within the HOConfiguration class, null and change the AllowedCurrencies property to specify the
correct unlocalized typecode for the policy line. For homeowners, change it to:
override property get AllowedCurrencies(): List<Currency> {
var pattern = PolicyLinePattern.getByCode(InstalledPolicyLine.TC_HO.UnlocalizedName)
return pattern.AvailableCurrenciesByPriority
Note: The PolicyCenter server refuses to start if it finds a policy line without a corresponding
lineConfiguration class within the policy line package.
The following illustration shows the basic objects for the homeowners line of business.
%DVLF2EMHFWVIRUWKH+RPHRZQHUV3ROLF\/LQH
/HJHQG
$ % $LVDVXEW\SHRI%
5HIHUHQFH'DWH,QWHUQDO $ % $KDVDIRUHLJQNH\WR%
%LVD*RVXFODVVZKLFK
$ %
LPSOHPHQWVPHWKRGVIRU$
3ROLF\/RFDWLRQ $ $LVDQHZHQWLW\
+2'ZHOOLQJ
5HIHUHQFH'DWH,QWHUQDO
Property Value
Entity This parameter corresponds to the desc parameter you specified in “Step 2: Register the
New Line of Business” on page 132 when you added a new typelist extension named
InstalledPolicyLine.HO.ttx. For the homeowners example, enter HomeownersLine.
Supertype PolicyLine
a. If the line is a coverable object, add a ReferenceDateInternal field as a column element. Add the field
by adding a new column element with the following properties:
Property Value
name ReferenceDateInternal
type datetime
desc Internal field stores the reference date of this entity on bound policy periods.
Property Value
iface gw.api.policy.PolicyLineMethods
impl gw.lob.ho.HOPolicyLineMethods
For more information, see “<implementsInterface>” on page 207 in the Configuration Guide.
c. Optional. Add additional columns or other elements as needed. For example, as you define the
HODwelling entity, add a foreignkey element that points back to the HomeownerLine entity. On the
HomeownersLine entity, define a onetoone element that provides access to the HODwelling entity.
If you switch to the Xml tab of the Entity editor, the code in the HomeownersLine.eti file appears similar to
the following:
<?xml version="1.0"?>
<subtype
xmlns="http://guidewire.com/datamodel"
desc="Homeowners line of business"
entity="HomeownersLine"
supertype="PolicyLine">
<column
desc="Internal field for storing the reference date of this entity on bound policy periods"
name="ReferenceDateInternal"
nullok="false"
type="datetime"/>
<implementsInterface
iface="gw.api.policy.PolicyLineMethods"
impl="gw.lob.ho.HOPolicyLineMethods"/>
</subtype>
3. Add the other entities needed for the homeowners line, as shown in the preceding object model diagram.
Note: Unlike HomeownersLine, HODwelling is not an entity subtype of another entity. Define HODwelling
as an entity rather than as a subtype.
2. Restart Studio to pick up your data model changes. Check for errors in the Studio console.
Adding the policy line methods is a reasonably simple task. In part, it is simple because the same methods exist
for all other lines, including the policy lines included in the base configuration. As you write the code for your
policy line, use the code for the existing lines as an example. You can view the existing policy line methods in
Studio by navigating to configuration → gsrc → gw → lob → xx where xx is the line abbreviation. For example, the
policy line methods for commercial auto are in gw.lob.ba.BAPolicyLineMethods.gs located in configuration →
gsrc.
4. Modify the base construct using an existing policy line as an example. For homeowners, modify the base
construct as follows:
class HOPolicyLineMethods extends AbstractPolicyLineMethodsImpl {
var _line : entity.HomeownersLine
construct(line : entity.HomeownersLine) {
_line = line
}
5. Define the CoveredStates property, if necessary. For homeowners, define CoveredStates as follows:
uses java.util.HashSet
override property get CoveredStates() : Jurisdiction[] {
var covStates : Set<Jurisdiction> = {}
if (_line.BaseState != null) {
covStates.add(_line.BaseState)
}
return covStates.toTypedArray()
}
Note: You can revise these properties as needed as you add coverages and other covered objects to the line.
The following is a typical example of a homeowners gw.lob.ho.HOPolicyLineMethods class:
package gw.lob.ho
uses gw.api.policy.AbstractPolicyLineMethodsImpl
uses java.util.HashSet
construct(line : entity.HomeownersLine) {
_line = line
}
Because you have not defined other entities in the line, there are very few methods that you can create at this
point.
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
The CoveragePattern of a Coverage returns the set of coverage terms used by a particular coverage. Each
coverage term of each type added to a coverage requires a dedicated column in the database. As you define the
coverage, add as many columns as needed for any coverage term that you foresee being used with the coverable.
You define the coverage patterns for a coverage in Product Designer. Most coverages need coverage terms, such
as limits, deductibles, retroactive dates, and so forth. You can examine the coverages and coverage terms in the
general liability line by navigating to Policy Lines → General Liability Line → Coverages → Condominiums → Terms. The
Condominiums coverage has no coverage terms. Next, select the Employee Benefits Liability → Terms. The Employee
Benefits Liability coverage has several coverage terms. While viewing any term, click Add to add more coverage
terms. The Add Term dialog box enables you to choose from among the coverage term types defined in the table. If
the coverage already contains the maximum number of terms of a particular type, the Column list is empty and you
cannot add a new term of the selected type.
IMPORTANT As you define a Coverage entity, provide enough columns of each coverage term type to
handle any expected coverage pattern that your coverables require. If a coverable requires a coverage
pattern that exceeds these limits, you must add additional columns, and then you must deploy these
data model changes to the application server.
The number of coverage term columns you define for each coverage term type applies to a single coverage. If
needed, you can define a second coverage entity. Normally, however, you define one coverage entity per cover-
able.
The following illustration shows the coverages on the homeowners line. There are two coverable objects,
HomeownersLine and HODwelling. Each coverable object has an array of coverages attached to the
HomeownersLineCov and HODwellingCov coverage entities, respectively.
+RPHRZQHUV/LQHZLWK&RYHUDJHV
/HJHQG
3ROLF\/LQH0HWKRGV 3ROLF\/LQH
$KDVDRQHWRRQH
$ %
UHODWLRQVKLSWR%
$KDVDRQHWRPDQ\
$ %
UHODWLRQVKLSWR%
$ % $LVDVXEW\SHRI%
+23ROLF\/LQH0HWKRGV +RPHRZQHUV/LQH &RYHUDEOH
$ % $GHOHJDWHVWR%
5HIHUHQFH'DWH,QWHUQDO
$ % $KDVDIRUHLJQNH\WR%
%LVD*RVXFODVVZKLFK
$ %
LPSOHPHQWVPHWKRGVIRU$
+RPHRZQHUV/LQH&RY +2/LQH
+2/LQH&RYHUDJHV $ $LVDQHZHQWLW\
+2'ZHOOLQJ&RY &RYHUDJHV
+2'ZHOOLQJ 3ROLF\/RFDWLRQ
5HIHUHQFH'DWH,QWHUQDO
You define coverage terms directly in the coverage entity. The coverage term definition consists of two column
elements, one that defines the coverage term type and one that stores whether the term was available last time
PolicyCenter checked availability. The availability column has the same name of the type definition column,
followed by Avl. You can define any or all of the following coverage term types in each of your coverage enti-
ties:
Property Value
table homeownerslinecov
type effdated
effDatedBranchType PolicyPeriod
2. Add a foreign key to the coverable. For homeowners, add a foreignkey element to HomeownersLine.
Property Value
name HOLine
fkentity HomeownersLine
nullok false
3. Add coverage terms as columns in the coverage entity. (The previous topic explained how to specify the
number and types of coverage terms required.) Add a coverage term for each type that can be used in this
coverage. Add the maximum number coverage terms for each coverage term type. The name for each
coverage term must be unique among coverage terms. For example, you can set the name of the first direct
coverage term to DirectTerm1, and the name of the second to DirectTerm2.
For the homeowners line, add the following to the coverage term table:
• Two direct coverage terms
• One choice coverage term
• One Boolean coverage term
The following XML code represents a typical, complete coverage entity definition for HomeownersLineCov:
<?xml version="1.0"?>
<!--Homeowners Line Coverage-->
<entity
xmlns="http://guidewire.com/datamodel"
desc="A line-level coverage for Homeowners Line"
effDatedBranchType="PolicyPeriod"
entity="HomeownersLineCov"
exportable="true"
final="false"
platform="false"
table="homeownerslinecov"
type="effdated">
<foreignkey fkentity="HomeownersLine" name="HOLine" nullok="false"/>
<column name="DirectTerm1" type="decimal" desc="direct covterm field"
getterScriptability="doesNotExist" setterScriptability="doesNotExist">
<columnParam name="scale" value="4"/>
<columnParam name="precision" value="20"/>
</column>
<column name="DirectTerm1Avl" type="bit" getterScriptability="doesNotExist"
setterScriptability="doesNotExist"
desc="whether or not the DirectTerm1 field was available the last time
availability was checked"/>
<column name="DirectTerm2" type="decimal" desc="direct covterm field"
getterScriptability="doesNotExist" setterScriptability="doesNotExist">
<columnParam name="scale" value="4"/>
<columnParam name="precision" value="20"/>
</column>
<column name="DirectTerm1Av2" type="bit" getterScriptability="doesNotExist"
setterScriptability="doesNotExist"
desc="whether or not the DirectTerm1 field was available the last time
availability was checked"/>
<column name="ChoiceTerm1" type="patterncode" desc="choice covterm field"
getterScriptability="doesNotExist"
setterScriptability="doesNotExist"/>
<column name="ChoiceTerm1Avl" type="bit"
desc="whether or not the ChoiceTerm1 field was available the last time
availability was checked"
getterScriptability="doesNotExist" setterScriptability="doesNotExist"/>
<column name="BooleanTerm1" type="bit" desc="boolean covterm field"
getterScriptability="doesNotExist" setterScriptability="doesNotExist" />
<column name="BooleanTerm1Avl" type="bit" getterScriptability="doesNotExist"
setterScriptability="doesNotExist"
desc="whether or not the BooleanTerm1 field was available the last time
availability was checked"/>
</entity>
2. Add the Coverage as an array on the Coverable. For the homeowners line, add an array element to the
HomeownersLine entity with the following properties:
Property Value
name HOLineCoverages
arrayentity HomeownersLineCov
cascadeDelete true
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
The following illustration shows the coverable and coverage adapters for the homeowners line.
+RPHRZQHUV/LQHZLWK&RYHUDJHDQG&RYHUDEOH$GDSWHUV
/HJHQG
$KDVDRQHWRRQH
$ %
UHODWLRQVKLSWR%
$KDVDRQHWRPDQ\
$ %
UHODWLRQVKLSWR%
3ROLF\/LQH0HWKRGV $ % $LVDVXEW\SHRI%
$ % $GHOHJDWHVWR%
$ % $KDVDIRUHLJQNH\WR%
%LVD*RVXFODVVZKLFK
3ROLF\/LQH +23ROLF\/LQH0HWKRGV &RYHUDEOH $ %
LPSOHPHQWVPHWKRGVIRU$
$ $LVDQHZHQWLW\
+RPHRZQHUV/LQH +2'ZHOOLQJ
5HIHUHQFH'DWH,QWHUQDO 5HIHUHQFH'DWH,QWHUQDO
The following illustration shows a coverable adapter in the homeowners line. The
HomeownersLineCoverableAdapter adapter establishes the interface between the HomeownersLine coverable
and HomeownersLineCov coverage.
+RPHRZQHUV/LQHZLWK&RYHUDEOH$GDSWHU
3ROLF\/LQH0HWKRGV /HJHQG
$KDVDRQHWRRQH
$ %
UHODWLRQVKLSWR%
$KDVDRQHWRPDQ\
$ %
UHODWLRQVKLSWR%
$ % $LVDVXEW\SHRI%
3ROLF\/LQH +23ROLF\/LQH0HWKRGV
$ % $GHOHJDWHVWR%
$ % $KDVDIRUHLJQNH\WR%
%LVD*RVXFODVVZKLFK
$ %
LPSOHPHQWVPHWKRGVIRU$
+RPHRZQHUV/LQH &RYHUDEOH
$ $LVDQHZHQWLW\
5HIHUHQFH'DWH,QWHUQDO
+RPHRZQHUV/LQH&RYHUDEOH$GDSWHU &RYHUDEOH$GDSWHU
+RPHRZQHUV/LQH&RY &RYHUDJH
LPSOHPHQWV(QWLW\
Property Value
name Coverable
adapter gw.lob.ho.HomeownersLineCoverableAdapter
This statement references the Gosu class that defines the adapter methods and properties.
3. Enter the name of the adapter. You specified the name of the adapter in the implementsEntity element. For
the HomeownersLine entity, the name of the coverable adapter is HomeownersLineCoverableAdapter.
4. In the new Gosu class, write a constructor similar to the following for the
HomeownersLineCoverableAdapter:
package gw.lob.ho
uses gw.api.domain.CoverableAdapter
uses entity.HomeownersLine
class HomeownersLineCoverableAdapter implements CoverableAdapter
{
var _owner : entity.HomeownersLine
construct(owner : entity.HomeownersLine)
{
_owner = owner
}
}
This code produces a Gosu error in the class statement that you fix in the next step.
5. Place the insertion point at the error (after CoverableAdapter) and press Alt-Enter. Click the Implement-
Methods command that pops up to open the Select Methods to Implement dialog box. With all listed methods
selected, click OK to insert the empty methods into your code. For homeowners,
HomeownersLineCoverableAdapter looks similar to the following:
package gw.lob.ho
uses gw.api.domain.CoverableAdapter
uses entity.HomeownersLine
uses java.util.Date
6. Write code for the new methods and properties. In most cases, the code for each method is a single line.
Examine the coverable adapters for other lines of business as an example.
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
+RPHRZQHUV/LQHZLWK&RYHUDJHDQG&RYHUDEOH$GDSWHUV
5HIHUHQFH'DWH,QWHUQDO
/HJHQG
$KDVDRQHWRRQH
$ %
&RYHUDJH +RPHRZQHUV/LQH&RY &RYHUDEOH$GDSWHU UHODWLRQVKLSWR%
LPSOHPHQWV(QWLW\
$KDVDRQHWRPDQ\
$ %
UHODWLRQVKLSWR%
$ % $LVDVXEW\SHRI%
$ % $GHOHJDWHVWR%
&RYHUDJH$GDSWHU +RPHRZQHUV/LQH&RY&RYHUDJH$GDSWHU
$ % $KDVDIRUHLJQNH\WR%
%LVD*RVXFODVVZKLFK
$ %
LPSOHPHQWVPHWKRGVIRU$
$ $LVDQHZHQWLW\
Property Value
name Coverage
adapter gw.lob.ho.HomeownersLineCovCoverageAdapter
This statement references the Gosu class that defines the adapter methods and properties.
3. Enter the name of the adapter. You specified the name of the adapter in the implementsEntity element. For
the HomeownersLineCov entity, the name of the coverable adapter is HomeownersLineCovCoverageAdapter.
4. In the new Gosu class, write a constructor similar to the following for the
HomeownersLineCovCoverageAdapter. The constructor extends rather than implements the class because it is
a subclass of CoverageAdapterBase, which add methods to CoverageAdapter.
package gw.lob.ho
uses gw.coverage.CoverageAdapterBase
construct(owner : entity.HomeownersLineCov)
{
super(owner)
_owner = owner
}
}
This code produces a Gosu error in the class statement that you fix in the next step.
5. Place the insertion point at the error (after CoverageAdapterBase) and press Alt-Enter. Click the Implement-
Methods command that pops up to open the Select Methods to Implement dialog box. With all listed methods
selected, click OK to insert the empty methods into your code. For homeowners,
HomeownersLineCovCoverageAdapter looks similar to the following:
package gw.lob.ho
uses gw.coverage.CoverageAdapterBase
6. Write code for the new methods and properties. In most cases, the code for each method is a single line.
Examine the coverage adapters for other lines of business, such as businessowners, as an example.
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
Note: This code adds the line and dwelling coverages together by converting them to a linked list, because
it is easier to add linked lists than to add arrays.
3. Define other properties and methods as needed.
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
2. Add lookup table information for the new coverage. The following information is for the homeowners line.
<!-- ======================================================================================= -->
<!-- Homeowners Lookup Tables -->
<!-- ======================================================================================= -->
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
3. Click Add to add a new category. In the Add Category dialog box, enter a code and name, and then click OK.
5. Click Add to add a new coverage. Fill in the Add Coverage dialog box with appropriate values, and then click OK.
6. Expand the Changes page, and the click Commit All to save your changes to the PolicyCenter configuration.
The following illustration shows the homeowners line with two modifiable objects: HomeownersLine and
HODwelling. Each modifiable object has a modifier, HOModifier and HODwellingModifier, respectively. Each
modifier has modifier methods. Each modifiable object has a modifiable adapter that connects the modifiable
object to its modifier.
+RPHRZQHUV/LQHZLWK5DWH0RGLILHUV
+23ROLF\/LQH0HWKRGV +20RGLILHU0DWFKHU
LPSOHPHQWV0DWFKDEOH(II'DWHG
/HJHQG
$KDVDRQHWRRQH +2'ZHOOLQJ0RGLILHU0DWFKHU
$ %
UHODWLRQVKLSWR%
$KDVDRQHWRPDQ\ LPSOHPHQWV0DWFKDEOH(II'DWHG
$ %
UHODWLRQVKLSWR%
$ % $LVDVXEW\SHRI%
$ % $GHOHJDWHVWR%
$ % $KDVDIRUHLJQNH\WR%
%LVD*RVXFODVVZKLFK
$ %
LPSOHPHQWVPHWKRGVIRU$
$ $LVDQHZHQWLW\
Defining modifiers is similar to defining coverages, with a few differences. Instead of defining a
CoverableAdapter, you define a ModifiableAdapter for each modifiable object. Instead of defining a
CoverageAdapter, you define a ModifierAdapter for each modifier. In addition, you must define a
MatchableEffDated delegate on the modifier. This delegate handles out-of-sequence events and preemption.
Property Value
table homodifier
type effdated
effDatedBranchType PolicyPeriod
2. Add a foreign key to the modifiable object. For homeowners, add a foreignkey element to HomeownersLine.
Property Value
name HOLine
fkentity HomeownersLine
nullok false
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
IMPORTANT To create the modifier adapter that connects the modifier to the modifiable object, see
“Creating the Modifier Adapter” on page 152.
2. Define the modifier subtype as an array from the modified object with the following properties:
Property Value
name HOModifiers
arrayEntity HOModifier
3. Declare a modifiable delegate. The modifiable delegate connects the modifiable object with the modifier.
For the homeowners line, use the Studio Entity editor to add an implementsEntity element to the entity def-
inition in HomeownersLine.eti in configuration → config → extensions → entity:
Property Value
name Modifiable
adapter gw.lob.ho.HOLineModifiableAdapter
3. Enter the name of the adapter. You specified the name of the adapter in the implementsEntity element in the
preceding procedure. For the HomeownersLine entity, the name of the modifiable adapter is
HOLineModifiableAdapter.
Note: Modifier instantiation is usually handled in the same manner as coverages using the
gw.web.productmodel.ProductModelSyncIssuesHandler methods.
4. In the new Gosu class, write a constructor similar to the following for HOLineModifiableAdapter.
package gw.lob.ho
uses gw.api.domain.ModifiableAdapter
uses java.util.Date
construct(owner : HomeownersLine) {
_owner = owner
}
}
This code produces a Gosu error in the class statement that you fix in the next step.
5. Place the insertion point at the error (after ModifiableAdapter) and press Alt-Enter. Click the Implement-
Methods command that pops up to open the Select Methods to Implement dialog box. With all listed methods
selected, click OK to insert the empty methods into your code.
6. Write code for the new methods and properties. In most cases, the code for each method is a single line.
Examine the modifier adapters for other lines of business as an example.
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
IMPORTANT To create the modifiable adapter that connects the modifiable object to the modifier, see
“Creating the Modifiable Adapter” on page 151.
Property Value
name Modifier
adapter gw.lob.ho.HOModifierAdapter
This statement references the Gosu class that defines the adapter methods and properties.
3. Enter the name of the adapter. You specified the name of the adapter in the implementsEntity element of the
modifier. For homeowners, enter HOModifier.
4. In the new Gosu class, write a constructor similar to the following for the HOModifierAdapter. The class
implements ModifierAdapter:
package gw.lob.ho
uses gw.api.domain.ModifierAdapter
construct(modifier : HOModifier) {
_owner = modifier
}
}
This code produces a Gosu error in the class statement that you fix in the next step.
5. Place the insertion point at the error (after ModifierAdapter) and press Alt-Enter. Click the ImplementMethods
command that pops up to open the Select Methods to Implement dialog box. With all listed methods selected, click
OK to insert the empty methods into your code.
6. Write code for the new methods and properties. In most cases, the code for each method is a single line.
Examine the modifier adapters for other lines of business as an example.
Note: Some of these methods apply to rate factors. Add the code for these methods after you define rate
factors in “Creating Rate Factors” on page 155.
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
2. Declare the modifier matcher delegate. For homeowners, add the following implementsInterface element
to the entity:
Property Value
iface gw.api.logicalmatch.EffDatedLogicalMatcher
impl gw.lob.ho.HOModifierMatcher
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
2. Add a LookupTable element for each modifier. Following is an example of code for the HOModifier entity in
the homeowners line:
<!-- Modifiers -->
<LookupTable code="HOModifier" entityName="ModifierLookup" root="HomeownersLine">
<Filter field="PolicyLinePatternCode" valuePath="HomeownersLine.PatternCode"/>
<Dimension field="State" valuePath="HomeownersLine.BaseState" precedence="0"/>
<Dimension field="UWCompanyCode" valuePath="HomeownersLine.Branch.UWCompany.Code" precedence="1"/>
<DistinguishingField field="ModifierPatternCode"/>
</LookupTable>
For more information about availability lookup tables, see “Configuring Availability” on page 73.
3. Click Add to add a new modifier. In the Add Modifier dialog box, enter a code and name, select a modifier type
and data type, and then click OK.
4. Expand the Changes page, and the click Commit All to save your changes to the PolicyCenter configuration.
See also
• “Rate Modifiers” on page 42
+RPHRZQHUV/LQHZLWK5DWH)DFWRU0RGLILHUV
+23ROLF\/LQH0HWKRGV +25DWH)DFWRU0DWFKHU
LPSOHPHQWV0DWFKDEOH(II'DWHG
5HIHUHQFH'DWH,QWHUQDO LPSOHPHQWV5DWH)DFWRU
5HIHUHQFH'DWH,QWHUQDO LPSOHPHQWV5DWH)DFWRU
/HJHQG
+2'ZHOOLQJ5DWH)DFWRU0DWFKHU $KDVDRQHWRRQH
$ %
UHODWLRQVKLSWR%
LPSOHPHQWV0DWFKDEOH(II'DWHG
$KDVDRQHWRPDQ\
$ %
UHODWLRQVKLSWR%
$ % $LVDVXEW\SHRI%
$ % $GHOHJDWHVWR%
$ % $KDVDIRUHLJQNH\WR%
%LVD*RVXFODVVZKLFK
$ %
LPSOHPHQWVPHWKRGVIRU$
$ $LVDQHZHQWLW\
For an example of rate factors in the base configuration, see BOPRateFactor.eti in configuration → config → meta-
data → entity.
Property Value
entity HORateFactor
table horatefactor
type effdated
desc A rate factor is a risk characteristic and its associated numeric value.
autoSplit false
effDatedBranchType PolicyPeriod
exportable true
extendable true
2. Add a required foreignkey to the owning modifier. The owning modifier must implement the Modifiable
delegate. For homeowners, the owning modifiable is HOModifier.eti. Configure the foreign key as follows:
Property Value
name HOModifier
fkentity HOModifier
nullok false
2. Add an array of rate factors. For homeowners, configure the array as follows:
Property Value
name HORateFactors
arrayentity HORateFactor
cascadeDelete true
owner false
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
Property Value
name RateFactor
adapter gw.lob.ho.HORateFactorAdapter
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
Property Value
iface gw.api.logicalmatch.EffDatedLogicalMatcher
impl gw.lob.ho.HORateFactorMatcher
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
2. Add a LookupTable element for each rate factor. Following is an example of code for the HORateFactor
entity in the homeowners line:
<!-- Rate Factors -->
<LookupTable code="HORateFactor" entityName="RateFactorLookup" root="HomeownersLine">
<Filter field="PolicyLinePatternCode" valuePath="HomeownersLine.PatternCode"/>
<Dimension field="State" valuePath="HomeownersLine.BaseState" precedence="0"/>
<Dimension field="UWCompanyCode" valuePath="HomeownersLine.Branch.UWCompany.Code" precedence="1"/>
<Dimension field="JobType" valuePath="HomeownersLine.Branch.Job.Subtype" precedence="2"/>
<DistinguishingField field="RateFactorPatternCode"/>
</LookupTable>
For more information about availability lookup tables, see “Configuring Availability” on page 73.
3. Click Add to add a new modifier. In the Add Modifier dialog box, enter a code and name, and select a modifier
type. Set the Data Type to rate and select the Schedule Rate check box, and then click OK.
4. On the new modifier’s home page, under Go to, click the Rate Factors link.
4. Edit the properties file for the new line of business. Set the values for each optional item as needed. For
example, to display the Official IDs tab in PolicyCenter for this product line, set:
# Indicates whether this policy line uses Coverage Symbol Groups
line.usesCoverageSymbolGroups=false
# Indicates whether this policy line's modifiers use the Split Rating Period field
line.usesSplitRatingPeriod=false
Note: PolicyCenter includes any omitted properties by default. Likewise, if you do not create a properties
file for the line, PolicyCenter includes all properties.
Step 7: Build the Product Model for the New Line of Business
After you have completed the data model, you can build the product model in Product Designer. The product
model contains the policy line. The product model also defines the pattern that you use to create policies for the
new line. In this step, you create patterns for the policy line and the product.
The steps to build the product model are:
• “Creating the Policy Line” on page 159
• “Creating the Product” on page 159
• “Adding Icons for the Product and Policy Line” on page 161
• “Adding Product and Policy Line Icons to Product Designer” on page 161
Note: Be sure to create or select a change list related to a workspace that references the PolicyCenter
instance where you have defined your new line of business.
You specify a workspace when you create a change list in Product Designer. A workspace is a named refer-
ence to a specific PolicyCenter root folder. Workspaces are defined by Product Designer administrators. A
change list is a named set of changes related to a workspace. Change lists are defined by Product Designer
users. All work you do in Product Designer takes place in change lists of your choice.
3. Navigate to Policy Lines. The Policy Lines page lists all of the lines that are currently defined in your
PolicyCenter configuration. Click Add to open the Add Policy Line dialog box.
4. In the Add Policy Line dialog box, supply the following values:
Property Value
Code Enter the value you specified as the name parameter in “Step 2: Register the New Line of
Business” on page 132 when you added InstalledPolicyLine.HO.ttx. For the homeown-
ers example, enter HomeownersLine.
Name The name that appears on the Policy Line page. For homeowners, enter Homeowners Line.
Policy Line Type Select the policy line subtype that you created in the data model. For homeowners, select
HomeownersLine.
Available Coverage Currency Every policy line must specify at least one coverage currency. Select one coverage cur-
rency from this list. For example, select USD to specify United States Dollars. Coverage cur-
rencies specify the currencies users can select when entering monetary values in
PolicyCenter. You can add more coverage currencies after defining the line.
5. Click OK to create the Homeowners line and open its home page.
On this page, you can change the name or description, and you can supply translated names for these fields.
You also can add coverage currencies, specify an integration reference code, and configure advanced proper-
ties. Using the links under Go to, you can navigate to pages that enable you to configure all other aspects of the
policy line.
To create a product
1. In Product Designer, navigate to the Products page. Click Add to add a new product.
Step 7: Build the Product Model for the New Line of Business 159
PolicyCenter 9.0.0 Product Model Guide
Property Value
Code This is the code identifier. For the homeowners example, enter Homeowners.
Name The name that appears on the Products page. For homeowners, enter Homeowners.
Default Policy Term Select a default policy term.
Policy Line Homeowners Line
Product Type Personal. This value enables PolicyCenter to show or hide portions of certain built-in user
interface objects that are designed either for personal or commercial contexts.
Account Type Select the types of accounts that can have a product of this type: Person, Company, or Any.
For homeowners, select Any.
3. Click OK to open the Product home page for the Homeowners product.
On this page, you can change the name or description, and you can supply translated names for these fields.
You also can change the settings you specified in the Add Product dialog box, and specify whether or not the
product requires an offering.
4. In the Abbreviation field, enter an abbreviation for the product. For homeowners, enter HO.
8. Navigate to the Changes page and click Commit to commit your changes to the PolicyCenter configuration.
You have completed the product model definition. If you start PolicyCenter and create a new submission, your
new line appears under Product Name on the New Submissions screen.
2. Load the sample data, and then return to PolicyCenter. For more information, see “Installing Sample Data” on
page 60 in the Installation Guide.
3. Create a new submission. PolicyCenter displays your new line of business as a choice on the New Submissions
screen.
b. In the Company Name field, type Wright Construction, and then click Search.
c. Select the Wright Construction account by clicking the Account Number link. PolicyCenter opens the Account
File Summary.
3. Right-click the app node, and select Show in Explorer. Windows Explorer opens to the directory that contains the
icons: PolicyCenter_installation/modules/configuration/webresources/themes/Titanium/
resources/images/app
4. Create a GIF or PNG icon. The recommended maximum size is 32 pixels wide by 24 pixels wide. Most icons
in the base configuration are 24 x 24 pixels.
5. Save your product icon to the location in Step 3 and name it infobar_<abbreviation>.gif or
infobar_<abbreviation>.png. For homeowners, save the icon as infobar_HO.png.
Note: PolicyCenter is supplied with a default infobar_HO.png icon. If you prefer, use the supplied icon.
Otherwise, you can overwrite the existing icon with your new icon.
Note: PolicyCenter is supplied with a default infobar_HomeownersLine.png icon. If you prefer, use the
supplied icon. Otherwise, you can overwrite the existing icon with your new icon. Also note that in most
cases, the product and policy line icons are identical, except in package products.
Step 7: Build the Product Model for the New Line of Business 161
PolicyCenter 9.0.0 Product Model Guide
2. Copy the icons to this folder using the following naming convention:
2. Copy the icons to this folder using the following naming convention:
Step 8: Define the Data Model for Rating in the New Line of Business
In previous steps, you designed and extended the basic data model and created the product model for your new
line of business. In this step, you define and extend the cost and transaction objects for rating. To extend the data
model, you must perform the following steps:
• “Defining the Data Model for Rating” on page 163
• “Creating the Abstract Cost Entity” on page 164
• “Creating the Transaction Entity” on page 165
• “Creating Cost and Transaction Adapters” on page 166
• “Creating Cost Subtypes” on page 168
• “Creating Cost Methods” on page 170
• “Reflection in the Policy Period Plugin” on page 172
See also
• “Quoting and Rating” on page 429 in the Application Guide
• “Rating Integration” on page 383 in the Integration Guide
+RPHRZQHUV/LQH%DVLF5DWLQJ2EMHFWV
/HJHQG
$KDVDRQHWRRQH
$ %
UHODWLRQVKLSWR%
$KDVDRQHWRPDQ\
$ %
UHODWLRQVKLSWR%
$ % $LVDVXEW\SHRI%
$ % $KDVDIRUHLJQNH\WR%
%LVD*RVXFODVVZKLFK
$ %
LPSOHPHQWVPHWKRGVIRU$
+2&RVW0HWKRGV $ $LVDQHZHQWLW\
%UDQFK
5HIHUHQFH'DWH,QWHUQDO
5HIHUHQFH'DWH,QWHUQDO
Cost Entities
The Cost entities contain premium values. Guidewire recommends that you record each premium entry at the
smallest available level. For each cost subtype, attach each cost to the object that generates the cost and attach
each cost for the shortest-priced period of time.
Create an abstract Cost delegate for the new line of business. In the preceding illustration, the HOCost entity
represents the Cost delegate. For all objects that have costs, create Cost subtypes of this delegate. The cost
subtypes are arrays off of coverages on the policy line and other coverages and objects that affect the premium
value. The preceding illustration shows cost subtypes as HOLineCovCost and HODwellingCovCost. In most cases,
Cost subtype entities attach to Coverage entities, because coverages have associated premiums. Always attach
Cost subtypes to the most discrete items to be rated. For example, because auto liability coverage has rates for
each vehicle, personal and business auto lines have Cost subtypes as arrays both on the coverages and on the
rated vehicles.
Transaction Entities
The Transaction entities record the individual premium debits and credits for the current policy period. Trans-
actions relate to costs in the same manner that journal entries relate to the general ledger. Model transactions in
your line of business as an array on the PolicyPeriod.
Costs are subtyped and associated with a particular entity, however transactions are not subtyped. Each policy
line has a single transaction type. Each transaction is associated with a particular cost item.
Step 8: Define the Data Model for Rating in the New Line of Business 163
PolicyCenter 9.0.0 Product Model Guide
Property Value
Entity HOCost
Desc A Homeowners unit of cost for a period of time, not to be further broken up.
Table hocost
Extendable true
Exportable true
Final false
2. After you add the HOCost entity, add the following parameters to the entity to make it effective-dated and an
abstract cost:
t
Property Value
type effdated
effDatedBranchType PolicyPeriod
abstract true
Note: The cost is an abstract entity, which means that it is accessed within the application only through its
subtypes.
3. Add a foreignkey element to the policy line. The policy line for homeowners is HomeownersLine. Set the
foreign key properties as follows:
Property Value
name HomeownersLine
fkentity HomeownersLine
nullok false
4. Add an array element to the transaction entity. For homeowners, create an array to HOTransaction with the
following properties:
Property Value
name Transactions
arrayentity HOTransaction
cascadeDelete true
Property Value
name HOCosts
arrayentity HOCost
cascadeDelete true
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
Property Value
Entity HOTransaction
Extendable true
Exportable true
2. After you add the HOTransaction entity, add the following parameters to the entity to make it effective-dated
off the policy period:
Property Value
type effdated
effDatedBranchType PolicyPeriod
Step 8: Define the Data Model for Rating in the New Line of Business 165
PolicyCenter 9.0.0 Product Model Guide
3. Add a foreignkey element to the abstract cost entity. The abstract cost entity for homeowners is HOCost. Set
the foreign key properties as follows:
Property Value
name HOCost
fkentity HOCost
nonEffDated true
nullok false
2. Add an array of the new transaction entity to this extension. For homeowners, add HOTransaction with the
following properties:
Property Value
name HOTransactions
arrayentity HOTransaction
cascadeDelete true
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
The transaction adapter defines how to access the cost from the transaction.
+RPHRZQHUV/LQH&RVWDQG7UDQVDFWLRQ$GDSWHUV
+27UDQVDFWLRQ$GDSWHU +27UDQVDFWLRQ
+2&RVW /HJHQG
$KDVDRQHWRRQH
$ %
UHODWLRQVKLSWR%
+2&RVW$GDSWHU
$KDVDRQHWRPDQ\
$ %
UHODWLRQVKLSWR%
$ % $LVDVXEW\SHRI%
+2&RY&RVW
$ % $GHOHJDWHVWR%
$ % $KDVDIRUHLJQNH\WR%
%LVD*RVXFODVVZKLFK
$ %
+2'ZHOOLQJ&RY&RVW LPSOHPHQWVPHWKRGVIRU$
$ $LVDQHZHQWLW\
Property Value
name Cost
adapter gw.log.ho.financials.HOCostAdapter
This element references the Gosu class that defines the adapter methods and properties.
2. Right-click the line node, and then select New → Package. In the New Package dialog box, enter a new package
name of financials.
3. Right-click the new financials package, and then select New → Gosu Class. In the New Gosu Class dialog box,
enter the name of the adapter. You specified the name of the adapter in the implementsEntity element of the
abstract cost entity. For homeowners, enter HOCostAdapter.
4. In the new Gosu class, write a constructor similar to the following for the gw.lob.ho.HOCostAdapter:
package gw.lob.ho.financials
uses gw.api.domain.financials.CostAdapter
Step 8: Define the Data Model for Rating in the New Line of Business 167
PolicyCenter 9.0.0 Product Model Guide
This code produces a Gosu error in the class statement that you fix in the next step.
5. Place the insertion point at the error (after CostAdapter) and press Alt-Enter. Click the ImplementMethods
command that pops up to open the Select Methods to Implement dialog box. With all listed methods selected, click
OK to insert the empty methods into your code.
6. Write code for the new methods and properties. In most cases, the code for each method is a single line.
Examine the cost adapters for other lines of business as an example.
Property Value
name Transaction
adapter gw.log.ho.financials.HOTransactionAdapter
This element references the Gosu class that defines the adapter methods and properties.
construct(owner : HOTransaction) {
_owner = owner
}
}
This code produces a Gosu error in the class statement that you fix in the next step.
4. Place the insertion point at the error (after TransactionAdapter) and press Alt-Enter. Click the Implement-
Methods command that pops up to open the Select Methods to Implement dialog box. With all listed methods
selected, click OK to insert the empty methods into your code.
5. Write code for the new methods and properties. In most cases, the code for each method is a single line.
Examine the transaction adapters for other lines of business as an example.
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
+RPHRZQHUV/LQH&RVW6XEW\SHV
/HJHQG
$ % $LVDVXEW\SHRI%
$ % $KDVDIRUHLJQNH\WR%
%LVD*RVXFODVVZKLFK
$ %
LPSOHPHQWVPHWKRGVIRU$
+2'ZHOOLQJ&RY&RVW +2'ZHOOLQJ&RY
$ $LVDQHZHQWLW\
Property Value
Entity HOCovCost
Desc A taxable unit of cost for a period of time, for a Homeowners coverage
Supertype HOCost
2. Add a foreignkey element to the coverage entity. The coverage entity for homeowners is
HomeownersLineCov. Set the foreign key properties as follows:
Property Value
name HomeownersLineCov
fkentity HomeownersLineCov
nullok false
Step 8: Define the Data Model for Rating in the New Line of Business 169
PolicyCenter 9.0.0 Product Model Guide
Property Value
name Costs
arrayentity HOCovCost
cascadeDelete true
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
Each cost subtype has a cost method implementation class that extends the generic class. For homeowners, you
define the cost method implementation classes as HoCovCostMethodsImpl and HODwellingCovCostMethodImpl.
+RPHRZQHUV/LQH&RVW0HWKRGV
+27UDQVDFWLRQ$GDSWHU /HJHQG
$KDVDRQHWRRQH
$ %
UHODWLRQVKLSWR%
$KDVDRQHWRPDQ\
$ %
UHODWLRQVKLSWR%
$ % $LVDVXEW\SHRI%
+27UDQVDFWLRQ
$ % $GHOHJDWHVWR%
$ % $KDVDIRUHLJQNH\WR%
%LVD*RVXFODVVZKLFK
*HQHULF+2&RVW0HWKRGV,PSO $ %
LPSOHPHQWVPHWKRGVIRU$
H[WHQGV
$ $LVDQHZHQWLW\
LPSOHPHQWV
H[WHQGV
Create the line level interface first, then create the generic cost method implementation. Finally, create the cost
specific extensions.
Cost Methods
2. Declare the interface. For homeowners, add the HOCostMethods interface by adding an
implementsInterface element to HOCost with the following properties:
Property Value
iface gw.lob.ho.financials.HOCostMethods
impl gw.lob.ho.financials.GenericHOCostMethodsImpl
interface HOCostMethods {
property get Coverage() : Coverage
property get State() : Jurisdiction
}
5. Write code for the new methods and properties. In most cases, the code for each method is a single line.
Examine the transaction adapters for other lines of business as an example.
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
Step 8: Define the Data Model for Rating in the New Line of Business 171
PolicyCenter 9.0.0 Product Model Guide
2. Declare the interface for the cost method implementation. For homeowners, add the HOCostMethods imple-
mentation by adding an implementsInterface element to HOCovCost with the following properties:
Property Value
iface gw.lob.ho.financials.HOCostMethods
impl gw.lob.ho.financials.HOCovCostMethodsImpl
construct(owner : HOCovCost) {
super( owner )
}
...
}
construct(owner : HOCovCost) {
super( owner )
}
Note: At this point, you can verify your work. For instructions, see “Verifying Your Work” on page 136.
Step 9: Design the User Interface for the New Line of Business
In previous topics, you designed the data model, product model, and rating for a new line of business. The
remaining step is to use Studio to design the user interface for your new line. As you design the user interface,
use the lines of business provided in the PolicyCenter base configuration as a guide.
See also
• “Using the PCF Editor” on page 311 in the Configuration Guide
• “Introduction to Page Configuration” on page 325 in the Configuration Guide
Step 9: Design the User Interface for the New Line of Business 173
PolicyCenter 9.0.0 Product Model Guide
The following illustration shows the Drivers screen in the policy file. The policy file uses the menu item set in the
policyfile folder. The menu items appear in the red box along the left side of the screen. The Drivers screen for both
the policy file and the job display the same Driver Details panel set.
The following illustration shows the similar file organization for both the wizard and the policy file. The Driver
Details panel set is shared by both the wizard and the policy file.
3&))LOHVDQG)ROGHUVIRUWKH'ULYHUV6FUHHQ
7RROEDU 0HQX,WHP
-RE:L]DUG6WHS
3DQOH5HI 0HQX,WHP'ULYHUV
-RE:L]DUG6WHS3$'ULYHUV
GHI 226(3DQHO6HW $FWLRQ
3ROLF\)LOHB3HUVRQDO$XWRB'ULYHUV
6FUHHQ 3$'ULYHUV6FUHHQ
3DQHO5HI
-RE:L]DUG6WHS 0HQX,WHP
GHI
3$'ULYHUV3DQHO6HW
-RE:L]DUG6WHS W
H 3DJH
3ROLF\)LOHB3HUVRQDO$XWRB'ULYHUV
[W
W
H 7DE%DU
3$'ULYHUV3DQHO6HW [
W
'ULYHU'HWDLOV 3ROLF\ 6FUHHQ
)LOH
1DPH/LFHQVH6WDWH 0HQX 3DQHO5HI
$FWLRQV
GHI
3$'ULYHUV3DQHO6HW
In this illustration, the numbered circles correspond to the following items in the job wizard and policy file:
Ref.
No. Job wizard (yellow reference numbers) Policy file (green reference numbers)
1 In the job wizard, JobWizardStep points to a screen, In the menu item set, a MenuItem points to a page,
PADriversScreen. PolicyFile_PersonalAuto_Drivers.
2 In the PADrivers screen, a PanelRef displays In the PolicyFile_PersonalAuto_Drivers page, a
PADriversPanelSet. PanelRef displays PADriversPanelSet.
3 PADriversPanelSet displays Driver Details such as PADriversPanelSet displays Driver Details such as
Name, License, and State. Name, License, and State.
To create the line wizard step set for your new product
1. In Studio, navigate to configuration → config → Page Configuration → pcf. Right-click the line node, and then select
New → PCF folder. In the New Package dialog box, enter the abbreviation for the line. For homeowners, enter ho.
2. Right-click the new ho folder, and then select New → PCF folder. In the New Package dialog box, enter job.
3. Right-click the new job folder and select New → PCF file. In the PCF File dialog box, specify the following proper-
ties:
Property Value
Mode Homeowners
Studio creates the line wizard step set. For homeowners, it creates LineWizardStepSet.Homeowners. Because
the PCF file has missing information, it appears red in Studio.
4. In the Studio PCF editor, select the line wizard step set.
5. In the Required Variables tab, add the required variables. Examine another product, such as personal auto, as an
example.
After you add the required variables, the line wizard step set changes from red to white indicating that there
are no errors.
2. In the WizardStepSetRef next to JobWizardStep: PolicyInfo, view the Shared section mode drop-down list.
Verify that your new product appears in this list. For homeowners, verify that Homeowners appears in the list.
Step 9: Design the User Interface for the New Line of Business 175
PolicyCenter 9.0.0 Product Model Guide
Completing the Line Wizard Step Set for Your Line of Business
Complete the line wizard step set by adding wizard steps for the line of business. Use personal auto as an
example. Notice that the wizard has JobWizardStep elements for common steps such as the Risk Analysis and
Policy Review screens. These steps are common to all lines of business. The line wizard step set includes only those
wizard steps specific to the line of business.
Topic See...
Extending the data model • “The PolicyCenter Data Model” on page 163 in the Configuration Guide
• “Modifying the Base Data Model” on page 223 in the Configuration Guide
Multi-line product • “Creating a Multi-line Product” on page 179
Premium audit • “Adding Premium Audit to a Line of Business” on page 189
Copying data • “Configuring Copy Data in a Line of Business” on page 197
Locations • “Adding Locations to a Line of Business” on page 207
Policy differences “Customizing Differences for New Lines of Business” on page 482 in the Integration Guide
For an example, see “Guidelines for Modularizing Line-of-business Code” on page 471 in the Configuration
Guide.
In Product Designer screens, the Code field displays the CodeIdentifier property for product model patterns.
CodeIdentifier is the identifier of product model patterns in the Product Designer user interface. In Studio, the
generated type is the CodeIdentifier. For example, PALiabilityCov and PAMedPayCov are the CodeIdentifier
values on product model coverage objects:
// Create line-level coverages
_liabilityCov = paLine.PALiabilityCov
_medPaymentCov = paLine.PAMedPayCov
Some code, such as getters for product model pattern lookup which evaluate each pattern in turn, must access the
patterns explicitly by CodeIdentifier or PublicID. When accessing these identifiers, always use the
getByCodeIdentifier or getByPublicId methods.
Because CodeIdentifier and PublicID have the same value in upgraded patterns, test your code with at least
one product model pattern where the values are different. Do not use Policy or PolicyLine patterns because the
CodeIdentifier and PublicID have the same values even in new patterns.
This topic describes how to create a product that includes more than one line of business. In the base configura-
tion, the commercial package policy is a multi-line product that includes commercial property, general liability,
and inland marine lines. You can examine commercial package as an example when you develop your own
multi-line product.
This topic provides step-by-step instructions to create a personal multi-line product that includes personal auto
and general liability lines. The product is called Personal Package.
This topic includes:
• “Step 1: Define the Multi-line Product” on page 179
• “Step 2: Design the Wizard for Your Multi-line Product” on page 180
• “Step 3: Create the Policy Screens” on page 183
• “Step 4: Create the Policy File Screens” on page 187
Property Value
Code PersonalPackage
Note: While you are adding a new product, you can select only one policy line and one default policy term.
After you complete the initial product definition, you can add additional product lines and policy terms,
along with other product details.
Product Designer displays the new product in the Product home page titled Personal Package [PersonalPackage].
4. In the upper portion of the Product home page, enter the following details:
Property Value
Description Personal Package Policy including Personal Auto and General Liability lines.
Abbreviation ppp
5. Under Policy Lines, click Add. In the pop-up list that appears, select General Liability Line [GLLine]. Your package
now contains the two needed lines of business.
6. Under Policy Terms, add the other terms that the product allows. For personal package, add Annual. Your
package now allows the two needed term types. In the upper portion of the page, be sure that the Default Policy
Term is set to 6 months.
0HQX,WHP6HWIRUD0XOWLOLQH3URGXFW
0HQX,WHP6HW 6FUHHQ
3ROLF\0HQX,WHP6HW&RPPHUFLDO3DFNDJH 3ROLF\)LOHB&RYHUDJHB*/6FUHHQ
0HQX,WHP
0HQX,WHP*HQHUDO/LDELOLW\
$FWLRQ *HQHUDO/LDELOLW\/LQNV
0HQX,WHP
W
H /RFDWLRQ*URXS/LQNV
[W *HQHUDO/LDELOLW\/LQNV
/RFDWLRQ5HI
GHI
*HQHUDO/LDELOLW\B&RYHUDJHVB*/
/RFDWLRQ5HI
3DJH
*HQHUDO/LDELOLW\B&RYHUDJHVB*/
7DE%DU
3ROLF\ 6FUHHQ
)LOH
0HQX GHI
$FWLRQV 3ROLF\)LOHB&RYHUDJH
B*/6FUHHQ
1. In the menu item set, a menu item points to a location group links file. The links file contains a series of
LocationRef widgets.
2. A LocationRef points to a page in the policy file.
See also
• “PCF Files and Folders for a Line of Business” on page 173
Adding the Line Wizard Step Set for Your Multi-line Product
The submission, issuance, policy change, renewal, and rewrite jobs have a WizardStepSetRef that displays the
modal container for each product. You must define the modal container for your new product. For example,
modal container for personal auto is LineWizardStepSet.PersonalAuto. Each LineWizardStepSet contains
wizard steps specific to the product line.
For instructions, see “Creating the Wizard for Your Line of Business” on page 175. For personal package, name
the file LineWizardStepSet.PersonalPackage.
Completing the Line Wizard Step Set for Your Multi-line Product
For each line, add wizard steps to your wizard step set. Use commercial package as an example. You can use
wizard step groups to group steps for each line of business.
In the following illustration of a commercial property submission, the area highlighted in yellow shows that
General Liability, Commercial Property, and Inland Marine are wizard step group elements. Each wizard step group
expands to reveal its wizard steps as you navigate into them. In the illustration, General Liability expands to reveal
several indented wizard steps.
Property Value
3. Add JobWizardStep widgets. In many cases, you can copy the widgets directly from the line wizard step set for
the line. Using personal auto as an example:
a. Navigate to configuration → config → Page Configuration → pcf → line → pa → job and open
LineWizardStepSet.PersonalAuto.
2. Right-click the folder for your new multi-line product and select New → PCF folder. For personal package,
right-click the ppp folder, and then select New → PCF folder. In the New Package dialog box, enter policy.
Note: The Studio Project window displays only the last folder in the path unless you disable the Compact
Empty Middle Packages feature in the title bar context menu. This menu appears when you right click the Project
window title bar.
3. Right-click the new policy folder, and then select New → PCF File. In the PCF File dialog box, specify the
following properties:
Property Value
Mode (blank)
6. Copy and paste the DetailViewPanel from commercial package. After copying, change the id property
under Basic properties on the Properties tab. Remove the widgets labeled Coverage Part Selection and Package Risk
Type.
Property Value
Mode (blank)
Property Value
Mode (blank)
8. Under Basic properties on the Properties tab, with the PanelRef widget selected, set the def field to the line
review summary detail view that you created in the previous procedure. For personal package, set the def
field to PPPLineReviewSummaryDV(line).
9. Copy and paste the DetailViewPanel from CPPLineReviewScreen.pcf. Under Basic Properties on the Properties
tab, change the id. After copying, change the id property under Basic properties on the Properties tab. Remove
the widgets labeled Coverage Part Selection and Package Risk Type.
10. Customize this screen to meet your requirements.
2. Add a JobWizardStep widget as the last step in the WizardStepGroup for each policy line. Using personal
package as an example, drag a JobWizardStep widget and drip it as the last step in PAWizardStepGroup.
3. Using the JobWizardStep widgets in LineWizardStepSet.CommercialPackage as an example, set the prop-
erties for the new JobWizardStep.
Property Value
Property Value
Mode (blank)
Mode drilldown
Mode scroll
2. Create a new PCF file in the policy folder with the following properties:
Property Value
3. Using RatingPanelSet.CommercialPackage as an example, set the Properties, Code, Variables, and Required Vari-
ables for the new rating panel set.
4. In the Copy dialog box, replace CommercialPackage in the New name field with the name of your package. For
personal package in the submission wizard, the new name is
SubmissionWizard_MultiLine_QuoteScreen.PersonalPackage.
PolicyCenter provides premium audit for several lines of business in the base configuration. You can add the
premium audit job to other lines of business. In the base configuration, the premium audit job includes final audit
and premium report schedule types. Final audit is provided in workers’ compensation and general liability.
Premium reports are provided in workers’ compensation.
Besides final audit and premium reports, you can also define other configurable audit types. The steps describe
how to add final audit and premium reports to a line of business. You can use these steps as a guide to add your
own audit types to a line of business.
This topic describes how to add premium audit to a line of business, using final audit in general liability as an
example.
• “Step 1: Add Audited Basis to the Data Model” on page 190
• “Step 2: Add the Line of Business to the Audit Wizard” on page 190
• “Step 3: Add Gosu Code for Final Audit” on page 192
• “Step 4: Select the Audit Schedule for Final Audit” on page 194
• “Step 5: Enable Premium Reports” on page 194
• “Step 6: Add Premium Audit to a Multi-line Product” on page 195
See also
• “Premium Audit Policy Transaction” on page 147 in the Application Guide
• “Configuring Premium Audit” on page 713 in the Configuration Guide
2. Right-click the audit folder, and then select New → PCF File. In the PCF File dialog box, specify the following
properties:
Property Value
Studio creates and opens, for example, AuditDetailsPanelSet.Homeowners.pcf and automatically adds the
panel set to the Shared section mode PanelRef in the AuditWizard_DetailsScreen.pcf.
3. Add one or more Panel Iterator widgets and other widgets as needed to display the auditable items.
4. Add one or more widgets to enable users to enter the audited amounts. Define the value of the widget as the
additional basis field. You added the additional basis field to the data model in “Step 1: Add Audited Basis to
the Data Model” on page 190.
2. Create a new PCF file in the audit folder with the following properties:
Property Value
3. Define the allAuditAmountsShouldBeFilledIn method. For example, in the general liability line, this
method checks that all glExposure.AuditedBasis fields have a value:
function allAuditAmountsShouldBeFilledIn() {
if (glLine.Branch.Job typeis Audit) {
glLine.VersionList.Exposures.flatMap(\ g -> g.AllVersions).each(\ glExposure -> {
if (glExposure.AuditedBasis == null) {
Result.addError(glLine,
"quotable",
displaykey.Web.AuditWizard.Details.NullAmountsError,
displaykey.Web.AuditWizardMenu.Details)
}}
)
}
}
2. In the PanelSet, configure the row iterator to display the auditable items that have an effective date that falls
within the audit period. For example, the auditable items in general liability are exposures.
Examine the wcCovEmp row iterator in AuditDetailsPanelSet.WorkersComp. The value of the iterator is set
to wcCoveredEmpInLocation(ratingPeriod). Ctrl-click wcCoveredEmpInLocation to view this method in
the Code tab.
3. For premium reports, display a prorated amount for the value of the Estimated Payroll cell in the row iterator.
For an example in workers’ compensation, examine the EstPayroll cell. The value is set to
basisForRating(wcCovEmp). Ctrl-click basisForRating to view this method in the Code tab. The prorated
amount is calculated according to this formula:
BasisAmount * Days of Overlap with Audit Period / Total Days in Effective Period for the row
After you make this change, the Payment screen in PolicyCenter displays the Audits section if the policy includes a
line that is auditable.
This topic describes how to configure copy data in a new line of business. In the base configuration, copy data
functionality is available only in the personal auto line of business.
This topic includes:
• “Overview of Configuring Copy Data” on page 197
• “Configuring Copy Data Screens” on page 199
• “Understanding Copiers” on page 201
• “Copier API Classes” on page 203
See also
• “Overview of Copying Data Between Policies” on page 319 in the Application Guide
The copier for each policy line creates copiers for the top-level entity or types that can be copied.
1. The Card Iterator tab has a Shared section mode drop-down list for each policy line. Create a modal
DetailViewPanel for each line of business in the product. The Personal Auto Line card corresponds to the
PAPolicyLineCopier.
2. For personal auto, the CopyPolicyDV.PersonalAutoLine PCF file has sections to display copy data for
Drivers, Vehicles, PA Coverages, Exclusions, and Conditions. This PCF file defines variables that create copiers for
policy drivers, vehicles, personal auto coverages, exclusions, and conditions.
The Copier class provides ShouldCopy and ShouldCopyAll Boolean properties. On the PCF file, check boxes
and radio buttons set the values of these properties for coverages and other data that can be copied. For exam-
ple, if you select the Include All Coverages check box, PolicyCenter sets the ShouldCopyAll property to true.
3. On the Notes tab, the CopyNotesDV PCF file has a variable that creates a notes copier.
4. The PCF file can include an input iterator that displays high level coverables such as vehicles or buildings on
the source policy. The iterator enables you to select one or more of these coverables for copying. When you
select a coverable, child elements such as the coverages and additional interests appear and can be selected
for copying.
For personal auto, the input iterator displays all vehicles on the source policy. In the illustration, the 2001 Mazda
MPV is selected and displays the child elements:
• Include All Coverages
• Individual Coverages
• Additional Interests
These child elements do not appear for the 2002 Buick LeSabre because it is not selected.
5. The Include All Coverages option ties to a composite copier. The value of this check box is set to the
ShouldCopyAll Boolean property.
6. The PCF file can include a list view with rows that represent the available copiers. Each row has a check box
for selecting the entity or group of entities for copying.
7. When you click Merge to Transaction, PolicyCenter calls the copyInto method in all selected copiers.
PolicyCenter displays any warning messages in Validation Results at the bottom of the screen. For example,
PolicyCenter displays a warning if you try to copy John Smith, who already exists as a driver on the target
policy.
• If you ignore the warning, make no further changes, and click Merge to Transaction again, PolicyCenter over-
writes the data.
• If ignore the warning, make additional changes that do not fix the condition, and then click Merge to Transac-
tion, PolicyCenter displays warning messages again.
Understanding Copiers
The gw.api.copy.Copier abstract class provides base functionality for copying data from a source to a target. In
the same package, the CompositeCopier abstract class extends Copier. The CompositeCopier wraps a collection
of copiers of one or more types, creating a tree of copiers that reflects the structure of the data to be copied.
You can create concrete implementations of these abstract copier classes. The concrete implementation of the
Copier class is responsible for copying the data on an entity. The concrete implementation of the
CompositeCopier class is responsible for copying data on an entity and its child entities.
In your concrete subclass of the Copier class, define the copyInto method to perform the following actions:
1. Check for an existing matching entity – Check for a matching entity in the destination period, such as a
vehicle with the same VIN. If a matching entity already exists in the destination period, you can configure
your code to throw an exception or you can copy source fields over the existing entity.
2. Create a new entity – Create a new entity if a matching entity does not exist. To create a new entity, examine
existing domain methods, such as PersonalAutoLine.createAndAddVehicle to create personal vehicles. If
possible, reuse these existing methods. Doing so ensures that the code performs additional logic, such as
auto-numbering objects.
3. Create additional entities – When you create a new entity, also create any additional entities needed for the
copy data operation. For example, if you copy a PolicyDriver who is not a contact on the target account,
your code must create both an account Driver and an AccountContact.
4. Copy entity fields – Copy all relevant fields and child elements. The simplest implementation uses a sequence
of assignment statements. To automate copying, use utilities such as the copy and KeyableBean.shallowCopy
methods of GWKeyableBeanEnhancement, or use code from side-by-side quoting that copies entities. If you
use one of these utilities, the copyInto method must remove the fields that are not part of the copied data.
5. Copy child entities – Copy child entities where the ShouldCopy and ShouldCopyAll Boolean properties are
true. You can provide this functionality in your Copier subclass or in a helper class. Control over whether
these children are copied can be delegated to child copier classes by overriding the CollectCopiersWhere
method in gw.api.copy.CompositeCopier. For example, you can configure the PersonalVehicle copier to
automatically copy all of its coverages or just selected coverages.
construct() {
3. In gw.lob.cp.CPPolicyLineMethods, override the get Copier property to return your new line copier class.
override property get Copier() : CompositeCopier<PolicyPeriod, CommercialPropertyLine> {
return new CPPolicyLineCopier(_line)
}
4. In configuration → config → Page Configuration → pcf → job → common → copydata, create a CopyPolicyDV.CPLine PCF
file. Using CopyPolicyDV.PersonalAutoLine as an example, design the user interface for copying data.
5. Create copiers and composite copiers for the entities and other data that you want to copy.
Decide which coverables to copy, such as locations and buildings for commercial property. Create copiers for
these coverables.
For example, the personal auto line has the following copiers in the gw.lob.pa package:
• AddlInterestDetailsCopier extends Copier
• AllAddlInterestDetailsCopier extends GroupingCompositeCopier
• ModifierCopier extends Copier
• PAPolicyLineCopier extends CompositeCopier
• PersonalVehicleCopier extends CompositeCopier
• PolicyDriverCopier extends Copier
6. Optional – In the line Copier class, add methods to retrieve the child copiers of the line. In
gw.lob.pa.PAPolicyLineCopier, personal auto has an example that gets the personal vehicle copier:
property get PersonalVehicleCopiers() {...}
Copier API
The Copier abstract class provides the following functionality:
• Access to the source entity
• Control of whether to copy the source entity
• Optional matching method
• Base method copy that copies the source into the target.
The type of the target parameter varies by copier. The following table shows the types of the target parameter for
certain copiers.
See also
• “All Note Copier: A Simple Grouping Composite Copier” on page 205
Copier Description
AddressCopier extends Copier
AllConditionCopier extends GroupingCompositeCopier
AllCoverageCopier extends GroupingCompositeCopier
AllExclusionCopier extends GroupingCompositeCopier
AllExistingCoverageCopier extends GroupingCompositeCopier
AllExposureCopier extends GroupingCompositeCopier
AllRemovingCoverageCopier extends GroupingCompositeCopier
ClausePatternCopier extends Copier, and can be used on most policy lines for copying line level
coverages
RemovingClausePatternCopier extends Copier
If you are configuring or adding a new line of business with locations, the policy line methods file contains
methods for handling locations. This topic describes some of those methods. For an example, see the
gw.lob.cp.CPPolicyLineMethods class which contains the policy line methods for the commercial property line
of business.
This topic includes:
• “Methods to Remove a Location from a Policy Line” on page 207
See also
• “Location Plugin” on page 166 in the Integration Guide
Method Description
canSafelyDeleteLocation Determines whether the location can be safely deleted. Use this method with line-specific
location screens. For example, the location screen can call this method to determine
whether to enable the Remove button. In the base configuration, this method applies to
line-specific locations but not the corresponding PolicyLocation in a multi-line package
product. The Remove button on the Locations screen deletes a line-specific location, such
as BALocation or BOPLocation.
checkLocationInUse Determines which locations can be removed during quote. Quoting removes any
PolicyLocation objects that this method reports as not in use. In the base configuration,
PolicyCenter removes PolicyLocation objects but not line-specific locations. The imple-
mentation assumes that the line-specific locations have been removed through the
canSafelyDeleteLocation method on the Locations screen user interface. The
checkLocationInUse method removes obsolete locations created:
• In products without a Locations screen.
• In package products with separate screens for policy-wide PolicyLocation objects and
line-specific locations.
preLocationDelete PolicyCenter calls this method before a location is deleted. Use this method to cleanup the
policy location or update the data model.
canSafelyDeleteBuilding Determines whether a building can be safely deleted.
Use the checkLocationInUse and canSafelyDeleteLocation methods to determine whether a location can be
deleted from a policy line. In the NoOpPolicyLineMethodsImpl class, these methods check to make sure that the
primary location is not deleted. Each line of business overrides these methods in its linePolicyLineMethods.gs
implementation.
While the checkLocationInUse and canSafelyDeleteLocation methods are similar, there is an important
difference in how they are intended to be used. In some lines of business, the canSafelyDeleteLocation and
checkLocationInUse methods are the same. For example, the methods can check whether there are coverages
attached or coverables located at the location. However, in some lines of business the methods must perform
different operations. Therefore, two methods are provided.