Reinsurance configuration plugin methods and properties
The main purpose of IReinsuranceConfigPlugin is to
centralize configurable behavior of our reinsurance implementation.
In the base configuration, PolicyCenter calculates the values for Gross Retention, Ceded Risk, Target Max Retention, and Inclusion that appear on the Per Risk tab in the policy file. Depending upon the characteristics of an individual risk, the insurer may want to override the default behavior. You can override the default behavior in the reinsurance configuration plugin. In the plugin, you can also specify the time component of the effective date for a new reinsurance agreement or program.
If you are integrating your own reinsurance system, you must create your own implementation of the methods and
properties in the IReinsuranceConfigPlugin interface.
Getting default gross retention amounts for reinsurable risks
PolicyCenter calls the getDefaultGrossRetention method
on IReinsuranceConfigPlugin
to calculate the default value for the gross retention of a given RIRisk. PolicyCenter calls this
method when a program is set on a RIRisk.
function getDefaultGrossRetention(ririsk : RIRisk) : MonetaryAmountThe method returns a MonetaryAmount with the calculated
gross retention amount.
Getting inclusion types for risks and related reinsurance agreements
PolicyCenter calls the getInclusionType method on IReinsuranceConfigPlugin to obtain
the default inclusion type for a given reinsurance agreement and RIRisk. PolicyCenter stores the
inclusion type of an RIAgreement
and RIRisk pair only if
the inclusion type differs from the default value this method returns.
function getInclusionType(ririsk : RIRisk, agreement : RIAgreement) : RIAttachmentInclusionTypeThe method returns the default
inclusion type for the given reinsurance agreement and RIRisk.
If you change this method to return different default values, this default value is changed, all policy periods that use earlier default values must change. The impact is large. It includes draft and bound branches, which in turn requires recalculating ceded premium amounts on affected policy periods.
Getting override ceded amounts for surplus reinsurance treaties
PolicyCenter calls the getOverrideCededAmountForSurplusRITreaty
method on IReinsuranceConfigPlugin
to set the ceded amount for a surplus treaty to an amount less than the
maximum allowed by lines multiplied by gross retention. If the return
value is not null, the PolicyCenter overrides the ceded amount. If the
return value is greater than the maximum allowed amount, PolicyCenter
uses the maximum allowed amount.
function getOverrideCededAmountForSurplusRITreaty(ririsk : RIRisk, agreement : SurplusRITreaty) :
MonetaryAmount
The method returns the override amount to cede as
a MonetaryAmount. If the
method calculates no amount, it returns null.
The default implementation of the getOverrideCededAmountForSurplusRITreaty
method does not calculate an override amount for how much to ceded on
a surplus reinsurance treaty. It always returns null instead of a BigDecimal.
Effective time for new reinsurance programs and agreements
PolicyCenter gets the ReinsuranceEffectiveTime property
to set the time component of the effective dates for a new reinsurance
agreement or program.
property get ReinsuranceEffectiveTime() : DateThe method returns a Date with the time portion specified.
Use the value returned as the time portion of reinsurance effective dates
and intervals.
The base implementation of the ReinsuranceEffectiveTime property
provides a constant Date
value, 12:01 am.
return "12:01 am" as DateYou might change this implementation if you want reinsurance effective time to begin at noon instead of at midnight.
Generating risk numbers for new reinsurable risks
PolicyCenter calls the generateRiskNumber method on IReinsuranceConfigPlugin to generate
the unique identifier for a new reinsurable risk. The following reinsurance
entities related to the reinsurable risk receive the same risk number
that your plugin implementation returns.
Reinsurable– A descendant type, such as aPolicyRisk, that represents the reinsurable riskRiskVersionList– List ofRIRiskinstances for the reinsurable riskRIRisk– Details of a reinsurable risk for a specific effective interval during a specific policy period
function generateRiskNumber() : java.lang.String
The method returns a java.lang.String with the unique
number of a reinsurable risk.
The base implementation of the generateRiskNumber method uses the gw.api.database.SequenceUtil class to obtain a unique risk number, with the following, single Gosu statement.
return SequenceUtil.next(1, "RI_RISK_NUMBER") as StringYou might replace the preceding statement with a call to your own reinsurance system to obtain risk numbers for new reinsurable risks stored in PolicyCenter.
Getting the targeted maximum retention for a reinsurable risk
PolicyCenter calls the getTargetMaxRetention method on
IReinsuranceConfigPlugin
to obtain the target net retention for a given RIRisk.
function getTargetMaxRetention(ririsk : RIRisk) : MonetaryAmountThis method returns a MonetaryAmount with the target
net retention for a given RIRisk.
The default implementation of this method
determines the targeted maximum retentions based on the reinsurance program
associated with the RIRisk.
Whether to generate reinsurable risks on policy periods
PolicyCenter calls the shouldPolicyTermGenerateReinsurables
method on IReinsuranceConfigPlugin
to determine if reinsurable risks on a policy need to be generated for
a new policy period.
function shouldPolicyTermGenerateReinsurables(period : PolicyPeriod) : booleanThe default implementation
of the shouldPolicyTermGenerateReinsurables
method always returns true.
So by default, PolicyCenter always creates reinsurable risks on policy
terms. If you are phasing in support of reinsurance, you might return
true for policy periods after a specific date.
Whether a program covers a reinsurable
PolicyCenter calls the programCanCoverReinsurable plugin
method on IReinsuranceConfigPlugin
to determine if a program covers a given reinsurable. You can assume
that the program is already the correct RICoverageGroup type.
override function programCanCoverReinsurable(program : RIProgram, reinsurable : Reinsurable) : booleanYou can use this method to specify additional risk criteria for the program. For example, you can specify whether programs cover particular regions.
The default implementation does not examine the reinsurable. It considers all programs applicable.
The program
parameter is the program in that the method evaluates. The method attempts
to apply the program to the reinsurable passed in the reinsurable parameter. This method
returns true if the program
can cover the reinsurable.
Choosing reinsurance programs for new reinsurable risks
PolicyCenter calls the chooseReinsuranceProgram method
on IReinsuranceConfigPlugin
to filter a list of reinsurance programs that might be applicable to
a specific reinsurance coverage group on a specific effective date. PolicyCenter
calls this method to choose the correct program from among the candidates.
If necessary, PolicyCenter attempts to assign the best program by first considering active programs, then draft programs, and finally programs from prior years. To search for the best program for the reinsurable risk, PolicyCenter calls this method up to three times, once for each search type. In the base configuration, the following method matches the currency of the reinsurable with the currency of the reinsurance program.
function chooseReinsuranceProgram(candidates : RIProgram[], reinsurable : Reinsurable,
date : Date, searchType : SearchType) : RIProgram
- candidates
- A list of candidate reinsurance programs with the correct
RICoverageGrouptype. - reinsurable
- The reinsurable risk.
- date
- The effective date for which an applicable program is to be chosen.
- searchType
- The stage of the search by PolicyCenter for the best program for the reinsurable. The
supported values are listed below.
ACTIVE_PROGRAMSDRAFT_PROGRAMSPRIOR_YEAR_PROGRAMS
The method returns an RIProgram instance that represents a chosen reinsurance
program.
