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) : MonetaryAmount

The 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) : RIAttachmentInclusionType

The 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() : Date

The 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 Date

You 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 a PolicyRisk, that represents the reinsurable risk
  • RiskVersionList – List of RIRisk instances for the reinsurable risk
  • RIRisk – 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 String

You 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) : MonetaryAmount

This 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) : boolean

The 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) : boolean

You 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
The parameters are described below.
candidates
A list of candidate reinsurance programs with the correct RICoverageGroup type.
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_PROGRAMS
  • DRAFT_PROGRAMS
  • PRIOR_YEAR_PROGRAMS

The method returns an RIProgram instance that represents a chosen reinsurance program.