Effective time plugin

Certain PolicyPeriod properties that denote effective dates and expiration dates are treated as datetime properties with millisecond resolution. You can set the effective time (the clock time on that day) along with the effective date. You can choose to have all effective dates always be the same time on any day, such as midnight or 12:01 AM on that day. However, you can also choose to use more complex rules, and even vary the rules based on the type of job or the jurisdiction if rules vary by state. PolicyCenter provides a plugin interface that lets you set the effective time of day for various jobs. Modify the built-in version or implement your own implementation of the IEffectiveTimePlugin plugin.

After a job starts, PolicyCenter calls this plugin to set the default effective and expiration times on the job’s associated PolicyPeriod entity. The return value from each of this interface’s methods is a Date object with its time component (HH:mm:ss) set to the desired time. The day component of the Date is ignored. As a convenience, you can return null to set the time component to midnight.

The plugin is called at varying points during job setup, according to the type of job. The main reason for this difference is to allow you to customize the user interface to allow effective/expiration time settings to be manually overridden. The following table compares the types of jobs, at what time the application calls the plugin, and why.

What time PolicyCenter calls the Effective Time plugin

For which job types

Description

Before job is created

Policy Change, Cancellation. These are jobs that mainly affect a period’s EditEffectiveDate property.

The only place where EditEffectiveDate can be edited is on the StartPolicyChange or StartCancellation page, so the plugin must be called within the PCF file before the job is started.

After job is created

Submission, Reinstatement, Rewrite, and Renewal. These are jobs that mainly affect a period’s PeriodStart and PeriodEnd properties.

The effective/expiration time settings on PeriodStart and PeriodEnd can be made editable by simply customizing the PolicyInfo page, which is not shown until after the job is started.

Never

Issuance, Audit

This plugin is not called for the Issuance job because it is logically seen as a continuation/completion of a Submission job. Consequently, its PolicyPeriod simply inherits the dates set by the Submission job. Similarly, there are no hooks for the Audit job, since it simply uses the dates of the PolicyPeriod being audited.

Each method is responsible for determining either an effective time or expiration time for a date given the date and the job type. The methods for determining expiration time also take an effectiveDateTime parameter, for cases in which the expiration time depends on the period’s PeriodStart. Each method takes a PolicyPeriod entity parameter. Use this parameter to access other information, such as state, line of business, or detecting other contractual periods on this policy. Finally, each method has a strongly-typed job parameter, which can be used to access information specific to the associated job type.

The following table lists the required methods and their purpose. Each method returns a java.util.Date object.

Method

Description

getCancellationEffectiveTime

Gets effective time for a cancellation job.

getConversionRenewalEffectiveTime Gets a renewal policy period's effective date for an imported legacy policy.
getConversionRenewalExpirationTime Gets a renewal policy period's expiration date for an imported legacy policy. Includes an argument for the renewal policy period's effective date, as returned by getConversionRenewalEffectiveDate.

getPolicyChangeEffectiveTime

Gets effective time for a policy change job.

getReinstatementEffectiveTime

Gets effective time for a reinstatement job.

getReinstatementExpirationTime

Gets expiration time for a reinstatement job. Includes an argument for the reinstated policy period's effective date, as returned by getReinstatementEffectiveTime.

getRenewalEffectiveTime

Gets effective time for a renewal job.

getRenewalExpirationTime

Gets expiration time for a renewal job. Includes an argument the renewal policy period's effective date, as returned by getRenewalEffectiveTime.

getRewriteEffectiveTime

Gets effective time for a rewrite job.

getRewriteExpirationTime

Gets expiration time for a rewrite job. Includes an argument for the rewritten policy period's effective date, as returned by getRewriteEffectiveTime.

getRewriteNewAccountEffectiveTime Gets a policy period's effective date for a policy that was rewritten to a new account.
getRewriteNewAccountExpirationTime Gets a policy period's expiration date for a policy that was rewritten to a new account. Includes an argument for the policy period's effective date, as returned by getRewriteNewAccountEffectiveTime.

getSubmissionEffectiveTime

Gets effective time for a submission job.

getSubmissionExpirationTime

Gets expiration time for a submission job. Includes an argument for the policy period's effective date, as returned by getSubmissionEffectiveTime.

PolicyCenter includes a built-in implementation of this interface with default behavior. The following table lists effective times for a new job and the key values on the PolicyPeriod entity for that job after PolicyCenter calls this plugin. The shaded cells are the effective times set explicitly by this plugin and the other cells indicate unchanged values or dependence on other properties.

Job

Value of PeriodStart

Value of PeriodEnd

Value of

EditEffectiveDate

Value of

CancellationDate

Submission

12:01 AM (changed by plugin)

12:01 AM (changed by plugin)

Same as this period's PeriodStart

null

Policy Change

Unchanged

Unchanged

12:01 AM

Unchanged

Cancellation

Unchanged

Unchanged

If canceled flat, same as canceled period's PeriodStart. Otherwise, 12:01 AM (changed by plugin).

Same as this period's EditEffectiveDate

Reinstatement

Unchanged

Same as based-on period's PeriodEnd (changed by plugin).

Same as based-on period's CancellationDate (changed by plugin)

null

Rewrite

Same as based-on period's CancellationDate (changed by plugin).

If new-term rewrite, 12:01 AM. Otherwise, such as full-term or remainder-of-term rewrite, same as based-on period's PeriodEnd (changed by plugin).

Same as this period's PeriodStart

null

Renewal

Same as previous period's PeriodEnd (changed by plugin).

12:01 AM (changed by plugin)

Same as this period's PeriodStart

null