Structure of revisioning across effective time

Every policy revision (a PolicyPeriod entity instance) is the root of a complex graph of subobjects such as policy lines, vehicles, coverages, and many other objects. If one object such as a vehicle does not change across effective time, the database contains only one row for that object at that model time. However, if the object changes across effective time, the object is cloned into a new row in the database, differing in effective time begin and end dates. The insurance industry calls these begin and end dates the effective date and expiration date.

For example, suppose on March 1 a customer requests an auto policy for a red car, effective from March 1 through the end of the year. On August 1, the customer calls and says the car was painted today and is now blue.

PolicyCenter represents these changes across effective time for the vehicle as two rows:

  • A red car with effective date March 1 and expiration date August 1 (typically at 12:00am)
  • A blue car with effective date August 1 and expiration January 1 of the next year

Note that the expiration date of the first row is the same as the effective date of the second row. This means the first row is effective up until the exact date and time of expiration, but not including that exact date and time. A row is effective at date specified_date if the following equation is true:

effective_date <= specified_date < expiration_date

Effective dates are stored in the EffectiveDate property of each PolicyPeriod subobject. If the EffectiveDate property is null, implicitly the effective date of the subobject is the effective date of the PolicyPeriod that contains the object. The effective date of the PolicyPeriod object is in the PolicyPeriod.PeriodStart property.

Expiration dates are stored in the ExpirationDate property of each PolicyPeriod subobject. If the ExpirationDate property is null, implicitly the expiration date of the subobject is the expiration date of the PolicyPeriod that contains the object. The expiration date of the PolicyPeriod object is in the PolicyPeriod.PeriodEnd property.

The following diagram represents the structure of revisioning across effective time, showing a single vehicle subobject in an auto policy. Notice that a policy change of an existing object can sometimes split an object into two objects. Each object has different effective time ranges. These objects have the same FixedID values since they represent the same object. However, when adding an entirely new object such as a vehicle, the new entity instance has a different FixedID value. The new fixed ID shows that it represents a new vehicle, not a change to an existing vehicle.