Form patterns
For the insured, the physical representation of an insurance policy is a collection of policy forms. Policy forms define aspects of the policy such as coverages, exposures, exclusions, and government regulations. The forms themselves are not stored in PolicyCenter; they’re stored in an external documentation management system and are typically accessed through integration with an external forms printing service. PolicyCenter stores form patterns, a set of information used to identify each form.
For detailed information on forms, see the Application Guide.
For more information on external forms printing service integration, see Plugins, Prebuilt Integrations, and SOAP APIs.
Form patterns information
Cloud API uses the /admin/v1/form-patterns
endpoint to work
with all aspects of a form pattern. With this endpoint and its child endpoints you can
retrieve and update form pattern basic information, products, transaction types,
jurisdiction availability and replacements, and policy change behavior.
Retrieving form patterns
Use the following endpoints to retrieve form patterns:
- GET
/admin/v1/form-patterns
- GET
/admin/v1/form-patterns/{policyFormPatternId}
The information retrieved by these endpoints includes everything located on all tabs of the Form Pattern screen in the user interface except jurisdiction availability. See “Form patterns lookups” below for information on retrieving jurisdiction availability. See Application Guide for user interface information.
The following retrieves all available form patterns:
Command
GET /admin/v1/form-patterns
Response
{
"data": [
{
"attributes": {
"code": "DecSheet",
"customFormInference": true,
"edition": "0100",
"endorsementNumbered": false,
"formNumber": "PA 00DS",
"id": "pc:101",
"inferenceTime": {
"code": "bind",
"name": "Bind Time"
},
"jobTypes": [
{
"code": "PolicyChange",
"name": "Policy Change"
},
{
"code": "Renewal",
"name": "Renewal"
},
{
"code": "Rewrite",
"name": "Rewrite"
},
{
"code": "Submission",
"name": "Submission"
}
],
"name": "Dec Sheet",
"policyLine": {
"displayName": "Personal Auto Line",
"id": "PersonalAutoLine"
},
"priority": 0,
"products": [
{
"displayName": "Personal Auto",
"id": "PersonalAuto"
}
],
"reissueOnChange": true,
"removalEndorsement": false
},
…
},
{
"attributes": {
"code": "FormCPP01",
"edition": "00 00",
"endorsementNumbered": true,
"formNumber": "CPP 01",
"genericFormInference": {
"code": "GenericAlwaysAddedForm",
"displayName": "No additional criteria"
},
"id": "pc:102",
"inferenceTime": {
"code": "quote",
"name": "Quote Time"
},
"jobTypes": [
{
"code": "PolicyChange",
"name": "Policy Change"
},
{
"code": "Renewal",
"name": "Renewal"
},
{
"code": "Rewrite",
"name": "Rewrite"
},
{
"code": "Submission",
"name": "Submission"
}
],
"name": "Commercial Package Policy Definition",
"priority": 1,
"products": [],
"reissueOnChange": false,
"removalEndorsement": false
},
…
Creating form patterns
You can create a new form pattern with the following endpoint:
- POST
/admin/v1/form-patterns
The following properties are required in the request:
Parameter |
Type |
Description |
---|---|---|
code |
string |
The form pattern code. This value must be globally unique. PolicyCenter uses this value to link the form to a form pattern. This value cannot contain spaces. |
edition |
string |
The form edition. PolicyCenter uses this value, in conjunction
with the Note: If you add a new edition, you must also update
the availability dates of the old and new patterns. Merely setting the
edition is not sufficient.
|
endorsementNumbered |
Boolean |
True if this form must have an endorsement number assigned to it at inference time. The endorsement number indicates the order in which the form is added to the policy. The insurer decides whether the form requires an endorsement number. Some insurers require an endorsement number for forms added after issuing the policy. For example, a form added in a policy change could require an endorsement number. |
formNumber |
string |
The form number. This is an arbitrary string, but it typically is the form number used by the issuance system. This field is the form label that shows in the PolicyCenter user interface. |
genericFormInference |
string |
The string must be the name of a class that implements the
Note: This property is not required if
you’re using a custom inference class. See Form inference below
for details.
|
inferenceTime |
|
Forms cannot be assigned directly to policies. They are applied automatically at a specified stage of the policy creation process, such as when the policy is quoted or bound. This field specifies the stage at which the form is applied to the policy. |
jobTypes |
Typekey from the |
An array of job types that use this form pattern. |
name |
string |
A human-readable description of the form pattern. |
products |
array of Product code ids |
The products to which this form pattern applies. |
The following example creates a new form pattern for the PersonalAuto product that gets applied to a policy when a submission or policy change is quoted:
Command
POST /admin/v1/form-patterns
Request
{
"data": {
"attributes": {
"code": "Code001",
"edition": "0001",
"endorsementNumbered": true,
"formNumber": "Test001",
"genericFormInference": {
"code": "GenericRemovalAndReplacementEndorsementForm"
},
"inferenceTime": {
"code": "quote"
},
"jobTypes": [
{
"code": "PolicyChange"
},
{
"code": "Submission"
}
],
"name": "Test Form 001",
"products": [
{
"id": "PersonalAuto"
}
]
}
}
}
Updating form patterns
You can use the following endpoints to update and delete form patterns:
- PATCH
/admin/v1/form-patterns/{policyFormPatternId}
- DELETE
/admin/v1/form-patterns/{policyFormPatternId}
The following example changes the job type to Renewal on form pattern pc:910:
Command
PATCH /admin/v1/form-patterns/pc:910
Request
{
"data": {
"attributes": {
"jobTypes": [
{
"code": "Renewal"
}
]
}
}
}
Note that in this example the Renewal job type is not added to existing job types for this form; all existing job types on form pattern pc:910 are replaced with the value specified in the PATCH request. This is due to the fact that PATCH on an array in Cloud API is destructive, not additive. When you PATCH an array, the new content replaces the previous content. If you want to add to an array, the PATCH request must contain all current members of the array as well as the member being added.
To delete the form pattern in the preceding example, use the following command:
DELETE /admin/v1/form-patterns/pc:910
Form inference
When you create a new form pattern, you can use custom form inference or generic form inference. This section describes using generic form inference. To use custom form inference, see "Adding a custom inference class for form patterns" in the Application Guide and "Configuring custom form inference" in the Application Guide for more information.
If you use generic form inference, you must include a value for the
genericFormInference
property. The code
is a
string that contains the name of a class that implements the
gw.forms.GenericFormInference
interface.
Depending on the value of the genericFormInference
property, there could be properties required for form pattern creation in addition
to those specified in the table above. The following table lists the additional
required properties for each base configuration generic form inference
condition.
|
Additional required properties |
---|---|
GenericAdditionalInsuredForm |
policyLine |
GenericAdditionalInterestForm |
policyLine |
GenericAlwaysAddedEveryJobForm |
none |
GenericAlwaysAddedForm |
none |
GenericClauseNonExistenceForm |
|
GenericClauseSelectionForm |
|
GenericCovTermSelectionForm |
|
GenericCoverableTypeKeyForm |
|
GenericRemovalAndReplacementEndorsementForm |
none |
GenericRemovalEndorsementForm |
none |
You might have a form that requires inference logic beyond what you can specify with the base configuration classes. In this case, you can either configure a new generic forms inference class or specify a custom form inference class. The custom form inference class overrides the base configuration settings.
Form patterns lookups
PolicyCenter automatically generates the list of forms for a policy by using forms inference logic and configuration settings. For example, if a user submits a new auto policy, the forms to print when issuing the policy can be inferred by the coverages, vehicles, and other fields. Included in this logic is a lookup of the jurisdiction and availability.
Forms can be designated as being explicitly available or unavailable in certain
jurisdictions. With Cloud API, you can retrieve, add, and update jurisdiction
availability information through the form patterns lookups
endpoints.
Retrieving jurisdiction availability
The list of jurisdiction availability for each form pattern is accessed
through the form pattern lookups
endpoints:
- GET
/admin/v1/form-patterns/{policyFormPatternId}/lookups
- GET
/admin/v1/form-patterns/{policyFormPatternId}/lookups/{lookupId}
Here is an example of retrieving the jurisdiction availability for form pattern pc:102:
Command
GET /admin/v1/form-patterns/pc:102/lookups
Response
{
"data": [
{
"attributes": {
"availability": {
"code": "Unavailable",
"name": "Unavailable"
},
"id": "pc:909",
"jurisdiction": {
"code": "OK",
"name": "Oklahoma"
},
"startEffectiveDate": "1989-12-01T08:00:00.000Z"
},
…
},
{
"attributes": {
"availability": {
"code": "Available",
"name": "Available"
},
"id": "pc:910",
"jurisdiction": {
"code": "MT",
"name": "Montana"
},
"startEffectiveDate": "1989-12-01T08:00:00.000Z"
},
…
}
Adding jurisdiction availability
You can add jurisdiction availability information to a form pattern with the following endpoint:
- POST
/admin/v1/policy-form-patterns/{policyFormPatternId}/lookups
The following example makes form pc:910 unavailable in the Florida jurisdiction as of July 26, 2024:
Command
POST /admin/v1/form-patterns/pc:910/lookups
Request
{
"data": {
"attributes": {
"availability": {
"code": "Unavailable"
},
"startEffectiveDate": "20240726",
"jurisdiction": {
"code": "FL"
}
}
}
}
Updating jurisdiction availability
You can update and delete a form pattern jurisdiction availability with the following endpoints:
- PATCH
/admin/v1/form-patterns/{policyFormPatternId}/lookups/{lookupId}
- DELETE
/admin/v1/form-patterns/{policyFormPatternId}/lookups/{lookupId}
The following example changes the availability of the jurisdiction with ID
pc:90001 on form pattern pc:910 to Available
:
Command
PATCH /admin/v1/form-patterns/pc:910/lookups/pc:90001
Request
{
"data": {
"attributes": {
"availability": {
"code": "Available"
}
}
}
}
The following command deletes jurisdiction availability pc:90001 from form pattern pc:910:
DELETE /admin/v1/form-patterns/pc:910/lookups/pc:90001
Form patterns with lookups
You can use request inclusion to create a form pattern with lookups. Here is an example:
Command
POST /admin/v1/form-patterns
Request
{
"data": {
"attributes": {
"code": "Code002",
"edition": "0001",
"endorsementNumbered": true,
"formNumber": "Test002",
"genericFormInference": {
"code": "GenericAlwaysAddedForm"
},
"inferenceTime": {
"code": "quote"
},
"jobTypes": [
{
"code": "PolicyChange"
},
{
"code": "Submission"
}
],
"name": "Test Form 002",
"products": [
{
"id": "PersonalAuto"
}
]
}
},
"included": {
"FormPatternLookup": [
{
"attributes": {
"availability": {
"code": "Available"
},
"endEffectiveDate": "2024-01-01",
"jurisdiction": {
"code": "CA"
},
"startEffectiveDate": "2022-01-01"
},
"method": "post",
"uri": "/admin/v1/form-patterns/this/lookups"
}
]
}
}
Policy and job forms
You can retrieve a list of all the forms associated with a particular job or policy. Because forms are inferred, you can’t directly add a form to a job or a policy, nor can you update it or delete it from the policy.
Use the following endpoints to retrieve a list of forms for a job or a policy:
- GET
/job/v1/jobs/{jobId}/forms
- GET
/policy/v1/policies/{policyId}/forms
These endpoints do not return an actual representation of the forms. Instead they return identifying information that indicates the physical forms that the issuance system creates.