Data model design "with damageable"

This section identifies the requirements for custom incidents and risk units that make use of a damageable. For example, an insurer could offer Personal Auto policies that cover "towables", such as trailers. These policies cover towables listed on the policy, and towables owned by third parties. Therefore, there is a need for a damageable entity.

The following sections discuss an example of TowableIncident_Ext, TowableRU_Ext, and Towable_Ext. The entities and required fields are summarized in the following diagram. Note the following text conventions:

  • Base configuration entities and fields are listed in blue.
  • Custom entities and fields are listed in orange.
  • Italics are used to denote fields that provide general information about the entities in question. They may be required from a business perspective, and they appear in the examples in later topics. But, they are not required from a data model design perspective.

Fields for risk units and incidents with damagable

The custom incident entity with damageable

A custom incident must be a subtype of the Incident entity (either directly or indirectly). Thus, it inherits the following fields: Description, LossParty, Severity.

If the data model design makes use of a damageable, there must be a foreign key pointing from the custom incident to the damageable.

For example, the following .eti file creates a custom incident named TowableIncident_Ext. It contains a general information column (DamageDescription) and the foreign key to the damageable (Towable_Ext). The Description, LossParty, and Severity fields are not specified as they are inherited from Incident.

TowableIncident_Ext.eti
<?xml version="1.0"?>
<subtype
  xmlns="http://guidewire.com/datamodel"
  entity="TowableIncident_Ext"
  supertype="MobilePropertyIncident">
  <column
    name="DamageDescription"
    nullok="true"
    type="varchar">
    <columnParam
      name="size"
      value="200"/>
  </column>
  <foreignkey
    fkentity="Towable_Ext"
    name="Towable"
    nullok="true"/>
</subtype>

The custom risk unit entity with damageable

A custom risk unit must be a subtype of the RiskUnit entity (either directly or indirectly). Thus, it inherits the following fields: Description, PolicySystemID, RUNumber.

If the data model design makes use of a damageable, there must be a foreign key pointing from the custom risk unit to the damageable.

For example, the following .eti file creates a custom risk unit named TowableRU_Ext. It contains a general information column (UsedInternationally) and a foreign key to the damageable (Towable_Ext). The Description, PolicySystemID, and RUNumber fields are not specified as they are inherited from RiskUnit.

TowableRU_Ext.eti
<?xml version="1.0"?>
<subtype
  xmlns="http://guidewire.com/datamodel"
  entity="TowableRU_Ext"
  supertype="RiskUnit">
  <foreignkey
    fkentity="Towable_Ext"
    name="Towable_Ext"/>
  <column
    name="UsedInternationally"
    nullok="true"
    type="bit">
  </column>	
</subtype>

The damageable entity

A damageable is typically not a subtype of any existing data model entity.

There are several fields needed to make the damageable fully functional:

  • PolicySystemId - This field stores the identifier for the damageable as used by the Policy Administration System. Its type must be policysystemid.
  • Policy<Damageable> - This field is used to identify whether the damageable is listed on the policy (typically a damageable owned by the insured) or belongs to a third party. For example, in the Vehicle entity, the PolicyVehicle field identifies whether the vehicle is listed on the policy.
    • This is typically implemented as a Boolean field. (In the data model, Boolean fields have a type of bit.)
    • However, this could also be implemented as a virtual field that checks if any risk unit points to the Damageable.

Although it is not technically required, it is easier to complete endpoint configuration is the damageable has a one-to-one field pointing to the risk unit.

For example, the following .eti file creates a custom damageable named Towable_Ext. It contains a general information column (LicensePlate), the required fields (PolicySystemId and PolicyTowable) and a one-to-one to the risk unit (TowableRU_Ext).

Towable_Ext.eti
<?xml version="1.0"?>
<entity
  xmlns="http://guidewire.com/datamodel"
  entity="Towable_Ext"
  table="towable_ext"
  type="retireable">
  <column
    name="LicensePlate"
    nullok="true"
    type="varchar">
    <columnParam
      name="size"
      value="40"/>
  </column>
  <column
    name="PolicySystemId"
    nullok="true"
    type="policysystemid"/>
  <column
    name="PolicyTowable"
    nullok="true"
    type="bit"/>
  <onetoone
    fkentity="TowableRU_Ext"
    name="TowableRU_Ext"
    nullok="true"/>
</entity>