Policy hold job evaluation plugin

PolicyCenter uses the IPolicyHoldJobEvalPlugin plugin to configure policy holds in the policy hold batch process. A batch process called Policy Hold Job Evaluation runs nightly to reevaluate the policy holds that changed and no longer apply to the job. You can also run this batch process manually. Refer to the Batch Process Info menu item in the Server Tools page.

By default, this batch process performs the following operations.

  1. Checks if the policy hold was modified and no longer applies to the job.
  2. If so, sends activity reminders to producers to retry quote or bind of the job.

To support this behavior, a policy hold (PolicyHold) contains an array of PolicyHoldJob entity instances. They keep track of jobs that are currently held by a policy hold and the last time the job evaluated against the policy hold.

A PolicyHoldJob consists of the following fields.

  • PolicyHold – A foreign key to the policy hold
  • Job – A foreign key to the job
  • LastEvalTime – The last time this job was evaluated against this policy hold

A PolicyHoldJob is created when PolicyCenter evaluates the Policy Holds Type Filter checking set and determines that an underwriting issue needs to be raised. In the base configuration, PolicyCenter evaluates the checking set in the DefaultUnderwriterEvaluator class.

PolicyCenter updates LastEvalTime when the batch process reevaluates a job against a policy hold. The PolicyHoldJob row for that policy hold and job is deleted if the hold no longer applies to the job and an activity reminder is sent to the producer.

IPolicyHoldJobEvalPlugin exposes the methods that this batch process uses to find jobs that need to be reevaluated and how to evaluate it. This plugin interface has two methods.

To find jobs that need to be evaluated against the policy holds blocking them, implement the following method.

public IQueryBeanResult<PolicyHoldJob> findJobsToEvaluate();

In the base configuration, this plugin is implemented by PolicyHoldJobEvalPlugin and finds jobs that have any of the following qualities.

  • Open jobs
  • Jobs with policy periods with a active blocking policy hold
  • Jobs not evaluated since the last time the policy hold changed

To evaluate a job against a policy hold, implement the following method.

public void evaluate(PolicyHoldJob policyHoldJob)

In the built-in plugin implementation, the evaluate method checks if the policy hold has been deleted or the hold changed to cause the job to no longer match. If so, the method creates an activity and assigns to the producer.