offdataai
Insurance · data model template

Insurance EDW data model

Data Vault 2.0 raw vault for insurance: hubs (party/policy/claim/coverage/agent), links among them, and satellites for party, policy, claim, coverage, and agent history plus a policy-party effectivity satellite for role-over-time. A shared party hub unifies policyholder, insured, payer, and claimant.

Insurance enterprise data warehouse as a Data Vault 2.0 raw vault: party, policy, claim, coverage, and agent hubs; policy-party, policy-coverage, claim-policy, and policy-agent links; and descriptive plus effectivity satellites — designed to integrate many policy-admin and claims source systems with the historization and auditability required for NAIC, Solvency II, and IFRS 17. It is a Data Vault 2.0 raw vault: hubs for business keys, links for relationships and satellites for descriptive history, with hash keys and hash diffs generated in the DDL.

Data Vault 2.0InsuranceNAICSolvency-IIIFRS-17GDPR
16
tables
88
columns
14
relationships
5
PII columns

Opening the template creates a project with the ERD, platform-native DDL, a dbt project and documentation already generated (recommended platform: Snowflake). Edit it in plain English or on the canvas, then ship it to any supported warehouse.

Subject areas

hubslinkssatellitesreference

Design decisions

  • Single party hub for all roles

    The same person can be policyholder on one policy, claimant on another, and a payer; one party hub with role captured on links/effectivity satellites avoids duplicating the party across systems.

  • Claim and policy as separate hubs joined by a link

    Claims arrive from a different system than policies and have their own business key; a claim-policy link integrates them without coupling the two source loads.

  • Effectivity satellite for policy-party role

    Roles (insured/owner/payer/beneficiary) change over a policy's life; an effectivity satellite records the valid period of each role for as-of reporting.

Tables in the Insurance EDW model

Every table with its grain, columns, types and keys. PK marks a primary key, BK a business key and PII a column classified as personal data, which gets a masking strategy by default.

Hubs (5)

hub_party

Grain: one row per unique hub_party business key

A person or organization — policyholder, insured, payer, or claimant.

ColumnTypeKeys
party_idvarcharBK
load_datetimestamp
record_sourcevarchar

hub_policy

Grain: one row per unique hub_policy business key

ColumnTypeKeys
policy_numbervarcharBK
load_datetimestamp
record_sourcevarchar

hub_claim

Grain: one row per unique hub_claim business key

ColumnTypeKeys
claim_numbervarcharBK
load_datetimestamp
record_sourcevarchar

hub_coverage

Grain: one row per unique hub_coverage business key

ColumnTypeKeys
coverage_codevarcharBK
load_datetimestamp
record_sourcevarchar

hub_agent

Grain: one row per unique hub_agent business key

ColumnTypeKeys
agent_idvarcharBK
load_datetimestamp
record_sourcevarchar

Links (4)

lnk_policy_party

Grain: one row per lnk_policy_party relationship

Parties associated with a policy (role tracked in effectivity sat).

ColumnTypeKeys
policy_hkbinary
party_hkbinary
load_datetimestamp
record_sourcevarchar

lnk_policy_coverage

Grain: one row per lnk_policy_coverage relationship

Coverages attached to a policy.

ColumnTypeKeys
policy_hkbinary
coverage_hkbinary
load_datetimestamp
record_sourcevarchar

lnk_claim_policy

Grain: one row per lnk_claim_policy relationship

Which policy a claim is filed against.

ColumnTypeKeys
claim_hkbinary
policy_hkbinary
load_datetimestamp
record_sourcevarchar

lnk_policy_agent

Grain: one row per lnk_policy_agent relationship

Which agent wrote the policy.

ColumnTypeKeys
policy_hkbinary
agent_hkbinary
load_datetimestamp
record_sourcevarchar

Satellites (6)

sat_party_details

Grain: one row per party_hk per change

Party descriptive history.

ColumnTypeKeys
party_hkbinaryPK
load_datetimestampPK
party_typevarchar
full_namevarcharPII
date_of_birthdatePII
tax_idvarcharPII
emailvarcharPII
statevarchar
load_end_datetimestamp
record_sourcevarchar

sat_policy_details

Grain: one row per policy_hk per change

Policy descriptive history.

ColumnTypeKeys
policy_hkbinaryPK
load_datetimestampPK
line_of_businessvarchar
product_namevarchar
effective_datedate
expiration_datedate
policy_statusvarchar
annual_premiumdecimal
load_end_datetimestamp
record_sourcevarchar

sat_claim_details

Grain: one row per claim_hk per change

Claim descriptive history.

ColumnTypeKeys
claim_hkbinaryPK
load_datetimestampPK
loss_datedate
report_datedate
peril_codevarchar
claim_amountdecimal
paid_amountdecimal
reserve_amountdecimal
is_catastropheboolean
load_end_datetimestamp
record_sourcevarchar

sat_coverage_details

Grain: one row per coverage_hk per change

Coverage descriptive history.

ColumnTypeKeys
coverage_hkbinaryPK
load_datetimestampPK
coverage_namevarchar
limit_amountdecimal
deductible_amountdecimal
load_end_datetimestamp
record_sourcevarchar

sat_agent_details

Grain: one row per agent_hk per change

Agent descriptive history.

ColumnTypeKeys
agent_hkbinaryPK
load_datetimestampPK
agent_namevarcharPII
agency_namevarchar
license_numbervarchar
regionvarchar
load_end_datetimestamp
record_sourcevarchar

sat_policy_party_role

Grain: one row per policy-party relationship per effectivity change

Effectivity satellite on the policy-party link.

ColumnTypeKeys
policy_party_hkbinaryPK
load_datetimestampPK
party_rolevarchar
effective_fromdate
effective_todate
is_activeboolean
load_end_datetimestamp
record_sourcevarchar

Lookup tables (1)

ref_peril

Grain: one row per peril

ColumnTypeKeys
peril_codevarcharBK
peril_namevarchar
peril_categoryvarchar

Relationships

Each relationship is a foreign key on the first table referencing the second.

  • lnk_policy_party.policy_hk → hub_policy (many-to-one)
  • lnk_policy_party.party_hk → hub_party (many-to-one)
  • lnk_policy_coverage.policy_hk → hub_policy (many-to-one)
  • lnk_policy_coverage.coverage_hk → hub_coverage (many-to-one)
  • lnk_claim_policy.claim_hk → hub_claim (many-to-one)
  • lnk_claim_policy.policy_hk → hub_policy (many-to-one)
  • lnk_policy_agent.policy_hk → hub_policy (many-to-one)
  • lnk_policy_agent.agent_hk → hub_agent (many-to-one)
  • sat_party_details.party_hk → hub_party (many-to-one)
  • sat_policy_details.policy_hk → hub_policy (many-to-one)
  • sat_claim_details.claim_hk → hub_claim (many-to-one)
  • sat_coverage_details.coverage_hk → hub_coverage (many-to-one)
  • sat_agent_details.agent_hk → hub_agent (many-to-one)
  • sat_policy_party_role.policy_party_hk → lnk_policy_party (many-to-one)

Related templates

All templates →
Start for $1

From requirements to AI-ready context, in one platform.

Describe your business in a conversation, start from a template or connect your own database. Your first model is ready in minutes.

Get startedBook a demo

Plans from $1/month · cancel any time