{
  "entities": [
    {
      "columns": [
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "Customer number",
          "name": "customer_id",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "PII",
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(64)",
          "description": "Given name",
          "name": "given_name",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "PII",
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(64)",
          "description": "Family name",
          "name": "family_name",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "PII",
            "QUASI_IDENTIFIER"
          ],
          "data_type": "DATE",
          "description": "Date of birth",
          "name": "birth_date",
          "nullable": true,
          "sensitive": true
        },
        {
          "classes": [
            "PII",
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(16)",
          "description": "National identifier (synthetic NID-ZZ-...)",
          "name": "national_id",
          "nullable": true,
          "sensitive": true
        },
        {
          "classes": [
            "PII",
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(128)",
          "description": "Contact e-mail",
          "name": "email",
          "nullable": true,
          "sensitive": true
        },
        {
          "classes": [
            "PII",
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(32)",
          "description": "Contact phone",
          "name": "phone",
          "nullable": true,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "BOOLEAN",
          "description": "Registered for priority services",
          "name": "priority_service_flag",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "PHI",
            "SENSITIVE"
          ],
          "data_type": "VARCHAR(32)",
          "description": "Priority-service reason (may reveal health information)",
          "name": "vulnerability_reason",
          "nullable": true,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "DATE",
          "description": "Relationship start date",
          "name": "customer_since",
          "nullable": false,
          "sensitive": false
        }
      ],
      "description": "A household or small-business customer.",
      "name": "UtilityCustomer",
      "primary_key": [
        "customer_id"
      ],
      "system": "customer",
      "table": "utility_customers"
    },
    {
      "columns": [
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "Premise (service point) id",
          "name": "premise_id",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "PII",
            "QUASI_IDENTIFIER"
          ],
          "data_type": "VARCHAR(128)",
          "description": "Street line",
          "name": "street_address",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "QUASI_IDENTIFIER"
          ],
          "data_type": "VARCHAR(64)",
          "description": "City",
          "name": "city",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "PII",
            "QUASI_IDENTIFIER"
          ],
          "data_type": "VARCHAR(10)",
          "description": "Postal code",
          "name": "postal_code",
          "nullable": true,
          "sensitive": true
        },
        {
          "classes": [
            "QUASI_IDENTIFIER"
          ],
          "data_type": "VARCHAR(16)",
          "description": "Synthetic grid reference (ZZ-GR-...)",
          "name": "grid_ref",
          "nullable": true,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "VARCHAR(16)",
          "description": "HOUSE / APARTMENT / COMMERCIAL_UNIT / FARM",
          "name": "property_type",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(2)",
          "description": "Country (synthetic 'ZZ')",
          "name": "country_code",
          "nullable": false,
          "sensitive": false
        }
      ],
      "description": "A supplied property / service point (the demo subset root: its accounts, holders, meters, reads, bills and field visits travel with it).",
      "name": "Premise",
      "primary_key": [
        "premise_id"
      ],
      "system": "customer",
      "table": "premises"
    },
    {
      "columns": [
        {
          "classes": [
            "FINANCIAL",
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "Supply account number",
          "name": "account_number",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "Account holder",
          "name": "customer_id",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "Supplied premise",
          "name": "premise_id",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "VARCHAR(12)",
          "description": "ELECTRICITY / GAS / WATER",
          "name": "fuel",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(8)",
          "description": "Synthetic tariff code (TRF-Znn)",
          "name": "tariff_code",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(14)",
          "description": "ACTIVE / FINAL_BILLED / CLOSED",
          "name": "status",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(16)",
          "description": "DIRECT_DEBIT / CARD / BANK_TRANSFER / PREPAYMENT",
          "name": "payment_method",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "DATE",
          "description": "Supply start",
          "name": "opened_on",
          "nullable": false,
          "sensitive": false
        }
      ],
      "description": "A supply account (one fuel) of a customer at a premise.",
      "name": "Account",
      "primary_key": [
        "account_number"
      ],
      "system": "customer",
      "table": "accounts"
    },
    {
      "columns": [
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Meter record id",
          "name": "meter_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(14)",
          "description": "Meter serial number (MTR-ZZ-...)",
          "name": "meter_serial",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "Customer-system premise (cross-system)",
          "name": "premise_ref",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "VARCHAR(12)",
          "description": "ELECTRICITY / GAS / WATER",
          "name": "fuel",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(12)",
          "description": "SMART / CREDIT / PREPAYMENT",
          "name": "meter_type",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(10)",
          "description": "INSTALLED / REMOVED",
          "name": "status",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "DATE",
          "description": "Installation date",
          "name": "installed_on",
          "nullable": false,
          "sensitive": false
        }
      ],
      "description": "A meter installed (or formerly installed) at a premise.",
      "name": "Meter",
      "primary_key": [
        "meter_id"
      ],
      "system": "metering",
      "table": "meters"
    },
    {
      "columns": [
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Read id",
          "name": "read_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Meter",
          "name": "meter_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "QUASI_IDENTIFIER"
          ],
          "data_type": "TIMESTAMP",
          "description": "Read time (reveals routines at high frequency)",
          "name": "read_at",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "QUASI_IDENTIFIER"
          ],
          "data_type": "DECIMAL(12,3)",
          "description": "Register value",
          "name": "read_value",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "QUASI_IDENTIFIER"
          ],
          "data_type": "DECIMAL(12,3)",
          "description": "Consumption since the previous read",
          "name": "consumption",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "VARCHAR(10)",
          "description": "ACTUAL / ESTIMATED / CUSTOMER",
          "name": "read_type",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(12)",
          "description": "VALID / SUSPECT / CORRECTION",
          "name": "quality_flag",
          "nullable": false,
          "sensitive": false
        }
      ],
      "description": "A register read of a meter; consumption is the difference to the previous read.",
      "name": "MeterRead",
      "primary_key": [
        "read_id"
      ],
      "system": "metering",
      "table": "meter_reads"
    },
    {
      "columns": [
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Exchange id",
          "name": "exchange_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Removed meter",
          "name": "old_meter_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(14)",
          "description": "Serial of the meter installed instead",
          "name": "new_meter_serial",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "Customer-system premise (cross-system)",
          "name": "premise_ref",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "DATE",
          "description": "Exchange date",
          "name": "exchanged_on",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(20)",
          "description": "FAULTY / SMART_UPGRADE / TAMPER_SUSPECTED / END_OF_LIFE",
          "name": "reason",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "QUASI_IDENTIFIER"
          ],
          "data_type": "DECIMAL(12,3)",
          "description": "Final register value of the old meter",
          "name": "final_read_value",
          "nullable": false,
          "sensitive": true
        }
      ],
      "description": "Replacement of a meter at a premise by a new one (identified by its serial).",
      "name": "MeterExchange",
      "primary_key": [
        "exchange_id"
      ],
      "system": "metering",
      "table": "meter_exchanges"
    },
    {
      "columns": [
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Bill id",
          "name": "bill_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "FINANCIAL",
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "Customer-system account (cross-system)",
          "name": "account_ref",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "Customer-system premise (cross-system)",
          "name": "premise_ref",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "DATE",
          "description": "Billing period start",
          "name": "period_start",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "DATE",
          "description": "Billing period end",
          "name": "period_end",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "QUASI_IDENTIFIER"
          ],
          "data_type": "DECIMAL(12,3)",
          "description": "Billed consumption",
          "name": "consumption",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "FINANCIAL"
          ],
          "data_type": "DECIMAL(12,2)",
          "description": "Amount due",
          "name": "amount_due",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "VARCHAR(10)",
          "description": "REGULAR / ESTIMATED / BACK_BILL / FINAL",
          "name": "bill_type",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(16)",
          "description": "PAID / OPEN / OVERDUE / IN_ARRANGEMENT",
          "name": "status",
          "nullable": false,
          "sensitive": false
        }
      ],
      "description": "A bill for one account and billing period.",
      "name": "UtilityBill",
      "primary_key": [
        "bill_id"
      ],
      "system": "billing",
      "table": "utility_bills"
    },
    {
      "columns": [
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Payment id",
          "name": "payment_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Bill",
          "name": "bill_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "FINANCIAL"
          ],
          "data_type": "DECIMAL(12,2)",
          "description": "Amount",
          "name": "amount",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "TIMESTAMP",
          "description": "Payment time",
          "name": "paid_at",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(16)",
          "description": "DIRECT_DEBIT / CARD / BANK_TRANSFER",
          "name": "method",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "FINANCIAL",
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(34)",
          "description": "Payer IBAN-shaped number (country ZZ)",
          "name": "payer_iban",
          "nullable": true,
          "sensitive": true
        },
        {
          "classes": [
            "FINANCIAL",
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(20)",
          "description": "Direct-debit mandate reference (MNDT-ZZ-...)",
          "name": "mandate_reference",
          "nullable": true,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "VARCHAR(10)",
          "description": "SETTLED / FAILED / RETURNED",
          "name": "status",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(24)",
          "description": "Why a collection failed",
          "name": "failure_reason",
          "nullable": true,
          "sensitive": false
        }
      ],
      "description": "A payment or collection attempt against a bill.",
      "name": "BillPayment",
      "primary_key": [
        "payment_id"
      ],
      "system": "billing",
      "table": "bill_payments"
    },
    {
      "columns": [
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Arrangement id",
          "name": "arrangement_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "FINANCIAL",
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "Customer-system account (cross-system)",
          "name": "account_ref",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "FINANCIAL"
          ],
          "data_type": "DECIMAL(12,2)",
          "description": "Debt at the start of the plan",
          "name": "arrears_balance",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "FINANCIAL"
          ],
          "data_type": "DECIMAL(12,2)",
          "description": "Agreed instalment",
          "name": "instalment_amount",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "INT",
          "description": "Days the oldest debt is overdue",
          "name": "days_in_arrears",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "DATE",
          "description": "Plan start",
          "name": "start_date",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(10)",
          "description": "ACTIVE / COMPLETED / BROKEN",
          "name": "status",
          "nullable": false,
          "sensitive": false
        }
      ],
      "description": "An instalment plan agreed for an account in arrears.",
      "name": "PaymentArrangement",
      "primary_key": [
        "arrangement_id"
      ],
      "system": "billing",
      "table": "payment_arrangements"
    },
    {
      "columns": [
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Order id",
          "name": "order_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "Customer-system premise (cross-system)",
          "name": "premise_ref",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Metering-system meter at that premise (cross-system)",
          "name": "meter_ref",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(16)",
          "description": "METER_EXCHANGE / FAULT / ... / SAFETY_CHECK",
          "name": "order_type",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "PII",
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(96)",
          "description": "Technician's full name",
          "name": "technician_name",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "DATE",
          "description": "Planned visit date",
          "name": "scheduled_for",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "TIMESTAMP",
          "description": "Completion time (NULL while open)",
          "name": "completed_at",
          "nullable": true,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(10)",
          "description": "SCHEDULED / COMPLETED / CANCELLED / NO_ACCESS",
          "name": "status",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(12)",
          "description": "Network outage event (OUT-Z...)",
          "name": "outage_ref",
          "nullable": true,
          "sensitive": false
        },
        {
          "classes": [
            "SENSITIVE"
          ],
          "data_type": "VARCHAR(400)",
          "description": "Technician free text",
          "name": "technician_notes",
          "nullable": true,
          "sensitive": true
        }
      ],
      "description": "A field visit to a premise and one of its meters.",
      "name": "ServiceOrder",
      "primary_key": [
        "order_id"
      ],
      "system": "field",
      "table": "service_orders"
    }
  ],
  "relationships": [
    {
      "child": "Account",
      "child_columns": [
        "customer_id"
      ],
      "code": "FK_ACCOUNTS_CUSTOMER_ID",
      "cross_system": false,
      "description": "Account references UtilityCustomer",
      "kind": "FOREIGN_KEY",
      "parent": "UtilityCustomer",
      "parent_columns": [
        "customer_id"
      ]
    },
    {
      "child": "Account",
      "child_columns": [
        "premise_id"
      ],
      "code": "FK_ACCOUNTS_PREMISE_ID",
      "cross_system": false,
      "description": "Account references Premise",
      "kind": "FOREIGN_KEY",
      "parent": "Premise",
      "parent_columns": [
        "premise_id"
      ]
    },
    {
      "child": "MeterRead",
      "child_columns": [
        "meter_id"
      ],
      "code": "FK_METER_READS_METER_ID",
      "cross_system": false,
      "description": "MeterRead references Meter",
      "kind": "FOREIGN_KEY",
      "parent": "Meter",
      "parent_columns": [
        "meter_id"
      ]
    },
    {
      "child": "MeterExchange",
      "child_columns": [
        "old_meter_id"
      ],
      "code": "FK_METER_EXCHANGES_OLD_METER_ID",
      "cross_system": false,
      "description": "MeterExchange references Meter",
      "kind": "FOREIGN_KEY",
      "parent": "Meter",
      "parent_columns": [
        "meter_id"
      ]
    },
    {
      "child": "BillPayment",
      "child_columns": [
        "bill_id"
      ],
      "code": "FK_BILL_PAYMENTS_BILL_ID",
      "cross_system": false,
      "description": "BillPayment references UtilityBill",
      "kind": "FOREIGN_KEY",
      "parent": "UtilityBill",
      "parent_columns": [
        "bill_id"
      ]
    },
    {
      "child": "Meter",
      "child_columns": [
        "premise_ref"
      ],
      "code": "UTL_METER_PREMISE",
      "cross_system": true,
      "description": "Meters are installed at customer-system premises",
      "kind": "RELATIONSHIP_TEMPLATE",
      "parent": "Premise",
      "parent_columns": [
        "premise_id"
      ]
    },
    {
      "child": "MeterExchange",
      "child_columns": [
        "premise_ref"
      ],
      "code": "UTL_EXCHANGE_PREMISE",
      "cross_system": true,
      "description": "A meter exchange happens at a customer-system premise",
      "kind": "RELATIONSHIP_TEMPLATE",
      "parent": "Premise",
      "parent_columns": [
        "premise_id"
      ]
    },
    {
      "child": "UtilityBill",
      "child_columns": [
        "account_ref"
      ],
      "code": "UTL_BILL_ACCOUNT",
      "cross_system": true,
      "description": "Bills are raised on customer-system supply accounts",
      "kind": "RELATIONSHIP_TEMPLATE",
      "parent": "Account",
      "parent_columns": [
        "account_number"
      ]
    },
    {
      "child": "UtilityBill",
      "child_columns": [
        "premise_ref"
      ],
      "code": "UTL_BILL_PREMISE",
      "cross_system": true,
      "description": "Bills name the supplied premise",
      "kind": "RELATIONSHIP_TEMPLATE",
      "parent": "Premise",
      "parent_columns": [
        "premise_id"
      ]
    },
    {
      "child": "PaymentArrangement",
      "child_columns": [
        "account_ref"
      ],
      "code": "UTL_ARRANGEMENT_ACCOUNT",
      "cross_system": true,
      "description": "Payment arrangements are agreed for customer-system accounts",
      "kind": "RELATIONSHIP_TEMPLATE",
      "parent": "Account",
      "parent_columns": [
        "account_number"
      ]
    },
    {
      "child": "ServiceOrder",
      "child_columns": [
        "premise_ref"
      ],
      "code": "UTL_ORDER_PREMISE",
      "cross_system": true,
      "description": "Field visits go to customer-system premises",
      "kind": "RELATIONSHIP_TEMPLATE",
      "parent": "Premise",
      "parent_columns": [
        "premise_id"
      ]
    },
    {
      "child": "ServiceOrder",
      "child_columns": [
        "meter_ref"
      ],
      "code": "UTL_ORDER_METER",
      "cross_system": true,
      "description": "Field visits concern one metering-system meter",
      "kind": "RELATIONSHIP_TEMPLATE",
      "parent": "Meter",
      "parent_columns": [
        "meter_id"
      ]
    }
  ]
}
