Working with underwriting issues
The Job API provides endpoints that can be used to get, create, approve, reject, or reopen underwriting issues associated with a job. The Policy API provides endpoints that can be used to get underwriting issues associated with a policy.
Underwriting-related endpoints are typically available to callers whose roles pertain to an insurance underwriter or the producer associated with the target policy or job. The insurance underwriter roles includes such functions as underwriter, underwriter supervisor, and underwriter assistant.
For general guidance on underwriting processes and configuration in PolicyCenter, see Configuration Guide.
Underwriting issue resources
In the system APIs, a PolicyCenter underwriting issue is formatted as a UWIssue resource. This resource maps to the UWIssue entity.
An underwriting issue resource has the following basic properties:
active
: Is the underwriting issue active? (Boolean)hasApprovalOrRejection
: Has the issue been approved or rejected? (Boolean)id
: The resource ID, as a stringissueKey
: A synonym for resource ID, as a stringissueType.code
: The code for the underwriting issue type, from aUWIssue.IssueType.Code
propertyissueType.displayName
: The name of the underwriting issue type as it appears in PolicyCenter, from aUWIssueType.IssueType.Name
property
In PolicyCenter, users with administrator or superuser privileges can access underwriting
issue types and their associated data. From Underwriter Issue Types, and then click
Export. This action returns an XML file that contains an array of
<UWissueType>
elements, each of which has a child
<Code>
element that maps to an underwriting issue resource
issueType.code
property.
Issue value types
In PolicyCenter, an underwriting issue is often associated with an issue value type and an acceptable range, as defined by the backing UWIssue entity. For example, an underwriting issue could be triggered on a personal auto line when coverage is requested for a driver who is under the age of 25. In this case, the underwriting issue value type is an age (an integer-based value), and the triggering range is a value below 25.
An underwriting issue resource supports properties associated with issue value types. The value type property used with a particular resource is determined by the required value type of the associated UWIssue entity.
Possible issue value types are integer, decimal, monetary amount, or states set, which can be declared using the following resource properties:
integerValue
: An integer value, passed as a stringdecimalValue
: A decimal value, passed as a stringmoneyValue
: A MonetaryAmount resource, containingcurrency
andamount
properties that specify the appropriate currency and amountsetStateValue
: An ExclusiveStateSet resource, containing theinclusionType
andstates
properties
If the underlying UWIssue entity does not require an issue value type, then the resource will not have one either. In such cases, the issue value type is considered to be unformatted or none.
Underwriting issue resources can also contain the following properties:
valueType
: A read-only property indicating the issue value typecomparator
: A read-only property indicating the comparator type, if applicable, corresponding to a ValueComparator typecode. This property is present on issues that require a value to be within some range.
Blocking points
An underwriting issue can have blocking points, meaning the associated job can proceed beyond the specified blocking point only after the underwriting issue is approved.
Blocking points are set by UWIssueBlockingPoint typecode values, and these are applied to the following underwriting issue resource properties:
blockingPoint
: The default blocking point set for the underwriting issueapprovalBlockingPoint
: When approving an issue, the blocking point can be reset, such as in the case when additional approvals are required. When no more approvals are required, this value is set toNonBlocking
.currentBlockingPoint
: The current blocking point for the issue
Resolution properties
Underwriting issues can be resolved through either approval or rejection. Underwriting issue resources that have been resolved will display properties appropriate for the type of resolution.
For all resolved issues, the hasApprovalOrRejection
property will be set
to true
.
Approved issues have the following properties:
approvalDurationType
: A UWApprovalDurationType typecode value specifying the approval durationapprovingUser
: A SimpleReference for the user who approved the issueautoApprovable
: Is the issue auto-approvable? (Boolean)canEditApprovalBeforeBind
: Can the approval be edited before binding? (Boolean)currentBlockingPoint
: On approval, the current blocking point is set toNonBlocking
When an approval is submitted with a corresponding issue value type, that value can be added to the resource through one of the following properties:
integerApprovalValue
: The approved integer valuedecimalApprovalValue
: The approved decimal valuemoneyApprovalValue
: The approved monetary amountstateSetApprovalValue
: The approved states set
In such cases, the resource will subsequently contain a
displayApprovalValue
property, showing the approved value in string
format.
Rejected issues have the following properties:
rejected
: A Boolean set totrue
rejectingUser
: A SimpleReference for the user who rejected the issuecurrentBlockingPoint
: On rejection, the current blocking point is set toRejected
Getting underwriting issues
The Job and Policy APIs contain endpoints that can be used to retrieve underwriting issues. Authorized callers are those having an underwriter role with the insurer organization or a producer role associated with the specific job.
The Job API provides the following endpoints:
- GET
/job/v1/jobs/{jobId}/uw-issues
: Returns a collection of underwriting issues associated with the job - GET
/job/v1/jobs/{jobId}/uw-issues/{uwIssueId}
: Returns the specified underwriting issue - GET
/job/v1/jobs/{jobId}/uw-issues/{uwIssueId}/history
: Returns an array of resources that trace the state history of the specified underwriting issue
The Policy API provides the following endpoints:
- GET
/policy/v1/policies/{policyId}/uw-issues
: Returns a collection of underwriting issues associated with the policy - GET
/policy/v1/policies/{policyId}/uw-issues/{uwIssueId}
: Returns the specified underwriting issue - GET
/policy/v1/policies/{policyId}/uw-issues/{uwIssueId}/history
: Returns an array of resources that trace the state history of the specified underwriting issue
For details on underwriting resource content, see Underwriting issue resources.
Getting underwriting history
The Job and Policy APIs contain endpoints that can be used to retrieve the history of an underwriting issue associated with a job or policy, respectively. Authorized callers are those having an underwriter role with the insurer organization or a producer role associated with the specific job or policy.
Underwriting history resources can be retrieved through the following endpoints:
- GET
job/v1/jobs/{jobId}/uw-issues/{uwIssueId}/history
- GET
policy/v1/policies/{policyId}/uw-issues/{uwIssueId}/history
Calls to these endpoints return an array of UWIssueHistory resources that trace the state history of the specified underwriting issue. A UWIssueHistory resource contains many of the same properties as a UWIssue resource, along with the following additional properties:
createDate
: A date-time string for the creation dateeffectiveDate
: A date-time string for the effective datestatus
: A UWIssueHistoryStatus typecode value for issue history status
Creating underwriting issues
To create an underwriting issue on a job, a caller can submit a POST request to the
/job/v1/jobs/{jobId}/uw-issues
endpoint.
Authorized callers are those having an underwriter role with the insurer organization.
At minimum, the POST request must include the underwriting issue type
in the issueType.code
field. The request body can also include a value for the associated
underwriting issue value type.
For this latter value, the following properties are supported:
integerValue
: An integer value, passed as a stringdecimalValue
: A decimal value, passed as a stringmoneyValue
: A MonetaryAmount resource, containingcurrency
andamount
properties that specify the appropriate currency and amountsetStateValue
: An ExclusiveStateSet resource, containing theinclusionType
andstates
properties
The code block below shows a complete request body for creating an underwriting issue type of
TSTManualStateSet
that explicitly includes the state of California:
{
"data": {
"attributes": {
"issueType": {
"code": "TSTManualStateSet"
},
"stateSetValue": {
"inclusionType": "inclusive",
"states": [
"CA"
]
}
}
}
}
The response body contains the newly created UWIssue resource:
{
"data": {
"attributes": {
"active": true,
"autoApprovable": true,
"blockingPoint": {
"code": "BlocksQuote",
"name": "Blocks Quote"
},
"comparator": {
"code": "State_Set",
"name": "In set"
},
"currentBlockingPoint": {
"code": "BlocksQuote",
"name": "Blocks Quote"
},
"displayValue": "CA",
"hasApprovalOrRejection": false,
"id": "45",
"issueKey": "45",
"issueType": {
"code": "TSTManualStateSet",
"displayName": "TST issue with state set format"
},
"shortDescription": "Special Issue",
"stateSetValue": {
"inclusionType": "inclusive",
"states": [
"CA"
]
},
"valueType": "stateSet",
"valueVariesAcrossSlices": false
},
. . .
}
}
This resource represents an open (active
) underwriting issue that requires
the state value (valueType
) to be set to California (stateSetValue
).
This issue blocks on quote (blockingPoint
),
and at present the job associated with this issue cannot be quoted until the issue is
resolved (currentBlockingPoint
).
The issue has not yet been approved or rejected (hasApprovalOrRejection
).
For details on underwriting resource content, see Underwriting issue resources.
Approving underwriting issues
To approve an underwriting issue, authorized callers can submit a business action POST to the
/job/v1/jobs/{jobId}/uw-issues/{uwIssueId}/approve
endpoint.
Alternatively, authorized callers can apply special approval permission to an issue by
submitting a business action POST to the
/job/v1/jobs/{jobId}/uw-issues/{uwIssueId}/special-approve
endpoint.
By default, only the superuser role has authorization to execute the above actions.
Approval types
An approval can be classified into the following four types:
- Full approval: The underwriting issue has been reviewed and approved, and if necessary it contains a value that is within the expected value range.
- Partial approval: The underwriting issue has been reviewed and approved, but its value is outside of the expected value range. Typically, a partially approved issue will be forwarded to a higher authority for final approval.
- Automatic approval: The underwriting issue is configured to support
automatic approval when specified criteria are met. Such an issue has its
autoApprovable
resource property set totrue
. - Special approval: Permission is provided for approving an issue regardless of value, as an approval override. Guidewire recommends that you never use this permission unless there is a time-critical policy that cannot be advanced by any underwriter.
Submitting approval requests
When calling an approval endpoints, at minimum the request body must contain the following content:
{
"data": {
"attributes": {
}
}
}
If the underwriting issue expects a formatted value, then the request can include an issue value type of either integer, decimal, monetary amount, or states set through one of the following properties:
integerApprovalValue
: An integer value, passed as a stringdecimalApprovalValue
: A decimal value, passed as a stringmoneyApprovalValue
: A MonetaryAmount resource, containingcurrency
andamount
properties that specify the appropriate currency and amountstateSetApprovalValue
: An ExclusiveStateSet resource, containing theinclusionType
andstates
properties
Optionally, the caller can also set values for the following properties:
approvalBlockingPoint
: A UWIssueBlockingPoint typecode value. This can be applied to set a subsequent blocking pointapprovalDurationType
: A UWApprovalDurationType typecode value. This can be applied if the caller wishes to change the default duration type.canEditApprovalBeforebind
: Can the approval be edited before binding? (Boolean)
After a successful call to an approval endpoint, the resource's
hasApprovalOrRejection
property will be set to true
.
The following code block depicts an request for a PAHighValueAuto
underwriting issue that approves a monetary amount of USD$8.50, sets the next blocking point
on issuance, rescinds the approval duration, and enables editing of the underwriting issue
prior to binding:
{
"data": {
"attributes": {
"approvalBlockingPoint": {
"code": "BlocksIssuance"
},
"approvalDurationType": {
"code": "Rescinded"
},
"canEditApprovalBeforeBind": true,
"moneyApprovalValue": {
"amount": "8.5",
"currency": "usd"
}
}
}
}
However, the approved monetary amount (USD$8.50) is less than the default threshold for this issue type (USD$10.00), therefore the issue will be partially approved.
The response body appears as follows:
{
"data": {
"attributes": {
"active": true,
"approvalBlockingPoint": {
"code": "BlocksIssuance",
"name": "Blocks Issuance"
},
"approvalDurationType": {
"code": "Rescinded",
"name": "Rescinded"
},
"approvingUser": {
"displayName": "Super User",
"id": "default_data:1",
"type": "User",
"uri": "/admin/v1/users/default_data:1"
},
"autoApprovable": true,
"blockingPoint": {
"code": "BlocksQuote",
"name": "Blocks Quote"
},
"canEditApprovalBeforeBind": true,
"comparator": {
"code": "Monetary_LE",
"name": "At most (monetary)"
},
"currentBlockingPoint": {
"code": "BlocksQuote",
"name": "Blocks Quote"
},
"displayApprovalValue": "$8.50",
"displayValue": "$10.00",
"hasApprovalOrRejection": true,
"id": "407",
"issueKey": "407",
"issueType": {
"code": "PAHighValueAuto",
"displayName": "PA: High value vehicle"
},
"longDescription": "Test long description",
"moneyApprovalValue": {
"amount": "8.50",
"currency": "usd"
},
"moneyValue": {
"amount": "10.00",
"currency": "usd"
},
"shortDescription": "Test short description",
"valueType": "money",
"valueVariesAcrossSlices": false
},
. . .
}
}
A subsequent approval request is necessary in order to fully approve this issue. A caller with sufficiently elevated authority can approve this issue at the current value by submitting a call with the minimum request body described above. Alternatively, a caller can submit an approval request that contains a value within the expected range. In either case, the fully approved issue will return a response body showing that the blocking point has been removed.
Rejecting underwriting issues
To reject an underwriting issue, authorized callers can submit a business action POST
to the /job/v1/jobs/{jobId}/uw-issues/{uwIssueId}/reject
endpoint.
Calls to this endpoint do not take a request body. By default, only superuser and
underwriter roles are authorized to execute this request.
The reject action cannot be applied to underwriting issues that have been approved,
special approved, or rejected. In these cases, the underwriting issue resource property
hasApprovalOrRejection
reads true
.
To enable rejection of an approved issue, it must first be reopened.
Policy transaction jobs that have one or more rejected underwriting issues cannot be completed. A rejected underwriting issue permanently blocks the job.
A rejected underwriting issue resource contains the following properties:
{
"data": {
"attributes": {
. . .
"currentBlockingPoint": {
"code": "Rejected",
"name": "Rejected"
},
"hasApprovalOrRejection": true,
. . .
"rejected": true,
"rejectingUser": {
"displayName": "Super User",
"id": "default_data:1",
"type": "User",
"uri": "/admin/v1/users/default_data:1"
},
. . .
},
. . .
}
}
Reopening underwriting issues
To reopen an underwriting issue, a caller can submit a business action POST
to the /job/v1/jobs/{jobId}/uw-issues/{uwIssueId}/reopen
endpoint.
Calls to this endpoint do not take a request body. By default, only superuser and
underwriter roles are authorized to execute this request.
The reopen action can be applied to underwriting issues that have been approved,
special approved, or rejected. In these cases, the underwriting issue resource
property hasApprovalOrRejection
reads true
.
If the reopen call succeeds, then
the currentBlockingPoint
property will be reset to its default value and the
hasApprovalOrRejection
property will be set to false
.
Locking jobs for underwriting review
A job can be locked to prevent changes to it while any associated underwriting issues are being reviewed. A locked job cannot be edited by users without the underwriting role. Following review, the job can be unlocked to reenable editing.
To apply an editing lock, an authorized caller can submit a business action POST to the
/job/v1/jobs/{jobId}/edit-lock
endpoint.
Calls to this endpoint do not take a request body.
The resource of a locked job has the editLocked
property set to true
.
To release an editing lock on a job, an authorized caller can submit a business action POST to the
/job/v1/jobs/{jobId}/release-edit-lock
endpoint.
Calls to this endpoint do not take a request body.
By default, only superuser and underwriter roles are authorized to use these endpoints.
For details on edit locking, see the Configuration Guide.