The policy period and effective date fields

The PolicyPeriod entity is the root of the graph of revisioned objects. The PolicyPeriod is the branch that all EffDated objects in the graph point to. The PolicyPeriod defines the PeriodStart and PeriodEnd.

Although the PolicyPeriod entity is the root of the revisioned graph, it does not behave like other revisioned objects. The PolicyPeriod entity delegates to the EffDatedBranch interface, but not to EffDated. Because the PolicyPeriod is not EffDated, the PolicyPeriod is handled differently than everything else in the policy period graph and does not have behaviors like splitting on slice mode edit. Therefore, any property, such as one containing data, a typekey, or foreign key, placed directly on PolicyPeriod behaves differently than one placed on EffDated objects such as PolicyLine or PolicyLocation.

A property added directly to PolicyPeriod is for the full term. These properties always have the same value from PeriodStart to PeriodEnd. You can still edit a property value on PolicyPeriod in a policy change, but that value replaces the former full term value. The value is not effective as of the effective date of the policy change job.

For example, the PolicyPeriod has unrevisioned properties that apply to the full term. Some of these properties are:

  • TermNumber – An integer
  • CreateUser and UpdateUser – Foreign key to User
  • Job – Foreign key to Job

Revisioned properties related to the PolicyPeriod are off of the EffectiveDatedFields object. Some of these revisioned properties are:

  • OfferingCode – A patterncode
  • ProducerCode – Foreign key to ProducerCode
  • PrimaryLocation – Foreign key to PolicyLocation
  • PrimaryNamedInsured – Foreign key to PolicyPriNamedInsured
  • BillingContact – Foreign key to PolicyBillingContact
  • PolicyAddress – Foreign key to PolicyAddress

These properties are all items that are revisioned but not tied to a PolicyLine. For convenience, the PolicyPeriod object defines derived properties that enable you to access these revisioned properties. For example, you can access EffectiveDatedFields.BillingContact through the derived property PolicyPeriod.BillingContact.

The following diagram shows PolicyPeriod and EffectiveDatedFields entities.

Arrays and one-to-one relationships of EffDated objects behave the same whether placed on the PolicyPeriod or an EffDated object. All array or one-to-one relationships have a foreign key back to the object to which they are attached. Arrays of EffDated objects attached to a PolicyPeriod vary across effective time. For example, the PolicyPeriod has an array of PolicyContactRole objects that are EffDated. You can determine array membership by the EffectiveDate and ExpirationDate. For example, on 1/1/2019, the array contains one PolicyContactRole object. On 3/1/2019, a policy change adds two PolicyContactRole objects. On 5/1/2019, another policy change removes the first PolicyContactRole.

Deciding whether to add a property to policyperiod or effectivedatedfields

A property defined on the PolicyPeriod object behaves differently than a property defined on the EffectiveDatedFields object.

The PolicyPeriod has a ProducerCodeOfRecord foreign key which points to a ProducerCode. However, if you move the ProducerCodeOfRecord foreign key from PolicyPeriod to EffectiveDatedFields, there could be more than one ProducerCodeOfRecord for the period. The ProducerCodeOfRecord could vary over effective time.

Suppose you have a submission with the policy period extending from 1/1/2019 to 1/1/2020. The ProducerCodeOfRecord is Alpha:

  • Foreign key on PolicyPeriod – The producer code of record for the submission is Alpha.
  • Foreign key on EffectiveDatedFields – The producer code of record for the submission from 1/1/2019 to 1/1/2020 is Alpha.

On the submission, both ways of representing the producer code of record are effectively the same. Now you do a policy change effective 7/1/2019 and change the ProducerCodeOfRecord to Beta:

  • Foreign key on PolicyPeriod – The producer code of record for the policy change is Beta. The producer code of record is effective for the full policy period.
  • Foreign key on EffectiveDatedFields – The producer code of record is Alpha from 1/1/2019 to 7/1/2019, and then it is Beta from 7/1/2019 to 1/1/2020.

With the foreign key on an EffDated entity, you have a split in effective time when you change the policy period. The foreign key was one value, and at some date it changes to another value. When the foreign key is on the PolicyPeriod, any change is for the full period. For the policy change it is Beta for the full term—there is no concept that is was Alpha for some dates and then Beta for other dates. You can still go back in history and see that the submission had a different value. This is the key difference between the two models.