Cost Allocation & Showback Platform  ·  View 11 of 22  ·  4 · Data

Data Model

The spine is period → cost record → allocation run → allocated cost → statement. Every run carries all three input versions.

Editable source SVG draw.io All views
billing_period period_id PK provider start_date / end_date state open|closed|restated fx_rate_fixed_at raw_export export_id PK period_id FK provider_version landed_at sha256 cost_record cost_record_id PK export_id FK resource_id FK charge_period_start billed / effective / amortised revision_no resource resource_id PK provider_scope_id service / sku tags jsonb first_seen / last_seen ownership_assignment assignment_id PK resource_id FK team_id FK valid_from / valid_to rule_fired confidence team team_id PK cost_centre_id FK product_line_id FK valid_from / valid_to policy_version policy_version_id PK adopted_at apportionment_rules jsonb remainder_strategy savings_attribution shared_pool pool_id PK policy_version_id FK scope_selector basis usage|request|even|weighted idle_treatment allocation_run run_id PK period_id FK billing_snapshot_id ownership_snapshot_id policy_version_id FK started_at / digest allocated_cost allocated_id PK run_id FK cost_record_id FK team_id FK basis / share amount amortised commitment commitment_id PK purchased_at term / prepaid_amount covered_scope attribution_mode business_driver driver_id PK team_id FK definition_version reported_for_date value / cadence statement statement_id PK team_id FK period_id FK version_no run_id FK frozen_at / supersedes statement_line line_id PK statement_id FK category amount allocated_ref dispute dispute_id PK statement_id FK raised_by / raised_at state resolution correct|reject gl_posting posting_id PK statement_id FK cost_centre_id amount idempotency_key 1 : N 1 : N 1 : N 1 : N 1 : N 1 : N 1 : N 1 : N 1 : N 1 : N 1 : N 1 : N 1 : N 1 : N 1 : 1 Data Model — The Spine Is Period, Cost Record, Ownership, Run, Statement allocation_run carries all three input versions. Any allocated_cost row is therefore reproducible, and any statement is traceable to the exact inputs that made it. v 1.0 · owner Platform Architecture · date 2026-09

The load-bearing entities

  • allocation_run holds billing_snapshot_id, ownership_snapshot_id and policy_version_id — the reproducibility contract
  • ownership_assignment is effective-dated and records which rule fired and at what confidence
  • cost_record carries a revision number, so a restated amount is a new revision rather than an overwrite
  • statement carries version_no and supersedes, so publication is append-only

Deliberate omissions

  • Tag key/value detail lives in resource.tags as a document rather than a normalised table
  • Forecasts and anomaly detections are derived and are not modelled here

Stated assumptions

  • One accountable team per resource at any instant; shared responsibility is expressed by shared_pool, never by two owners