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_dateEffective 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.
