{
  "entities": [
    {
      "columns": [
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "Subscriber number",
          "name": "subscriber_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": "Alternative contact phone",
          "name": "phone",
          "nullable": true,
          "sensitive": true
        },
        {
          "classes": [
            "PII",
            "QUASI_IDENTIFIER"
          ],
          "data_type": "VARCHAR(128)",
          "description": "Street line",
          "name": "street_address",
          "nullable": true,
          "sensitive": true
        },
        {
          "classes": [
            "QUASI_IDENTIFIER"
          ],
          "data_type": "VARCHAR(64)",
          "description": "City",
          "name": "city",
          "nullable": true,
          "sensitive": true
        },
        {
          "classes": [
            "PII",
            "QUASI_IDENTIFIER"
          ],
          "data_type": "VARCHAR(10)",
          "description": "Postal code",
          "name": "postal_code",
          "nullable": true,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "VARCHAR(2)",
          "description": "Country (synthetic 'ZZ')",
          "name": "country_code",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(16)",
          "description": "CONSUMER / SMALL_BUSINESS",
          "name": "segment",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "DATE",
          "description": "Relationship start date",
          "name": "customer_since",
          "nullable": false,
          "sensitive": false
        }
      ],
      "description": "A person or small business with one or more service lines (the natural subset root).",
      "name": "Subscriber",
      "primary_key": [
        "subscriber_id"
      ],
      "system": "crm",
      "table": "subscribers"
    },
    {
      "columns": [
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "Billing account number",
          "name": "billing_account_id",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "Owning subscriber",
          "name": "subscriber_id",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "INT",
          "description": "Day of month the bill is cut",
          "name": "bill_cycle_day",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(16)",
          "description": "DIRECT_DEBIT / CARD / BANK_TRANSFER",
          "name": "payment_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 (TMND-ZZ-...)",
          "name": "mandate_reference",
          "nullable": true,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "VARCHAR(2)",
          "description": "Internal credit class A / B / C",
          "name": "credit_class",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(12)",
          "description": "ACTIVE / SUSPENDED / CLOSED",
          "name": "status",
          "nullable": false,
          "sensitive": false
        }
      ],
      "description": "The account a subscriber's lines are billed to.",
      "name": "BillingAccount",
      "primary_key": [
        "billing_account_id"
      ],
      "system": "crm",
      "table": "billing_accounts"
    },
    {
      "columns": [
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Line id",
          "name": "line_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "PII",
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(16)",
          "description": "Subscriber number (synthetic 99955...)",
          "name": "msisdn",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "CRM subscriber (cross-system)",
          "name": "subscriber_ref",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "CRM billing account (cross-system)",
          "name": "billing_account_ref",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "VARCHAR(16)",
          "description": "Tariff plan (invented ZP-... codes)",
          "name": "plan_code",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(12)",
          "description": "ACTIVE / SUSPENDED / PORTED_OUT / TERMINATED",
          "name": "status",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "DATE",
          "description": "Activation date",
          "name": "activated_on",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "BOOLEAN",
          "description": "Roaming allowed",
          "name": "roaming_enabled",
          "nullable": false,
          "sensitive": false
        }
      ],
      "description": "A subscription with a phone number (MSISDN), billed to one of the subscriber's accounts.",
      "name": "ServiceLine",
      "primary_key": [
        "line_id"
      ],
      "system": "provisioning",
      "table": "service_lines"
    },
    {
      "columns": [
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(20)",
          "description": "SIM serial number (synthetic 899990...)",
          "name": "iccid",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Line",
          "name": "line_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "PII",
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(15)",
          "description": "Subscriber identity (synthetic MCC 999)",
          "name": "imsi",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "VARCHAR(10)",
          "description": "ACTIVE / REPLACED / BLOCKED",
          "name": "status",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "DATE",
          "description": "Issue date",
          "name": "issued_on",
          "nullable": false,
          "sensitive": false
        }
      ],
      "description": "A SIM card issued for a line (a line can have a replaced SIM in its history).",
      "name": "Sim",
      "primary_key": [
        "iccid"
      ],
      "system": "provisioning",
      "table": "sims"
    },
    {
      "columns": [
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Handset record id",
          "name": "handset_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Line",
          "name": "line_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(15)",
          "description": "Handset identity (synthetic 99...)",
          "name": "imei",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "VARCHAR(32)",
          "description": "Invented make and model",
          "name": "make_model",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(12)",
          "description": "IN_USE / SWAPPED_OUT / LOST",
          "name": "status",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "DATE",
          "description": "First seen on the line",
          "name": "first_seen",
          "nullable": false,
          "sensitive": false
        }
      ],
      "description": "A handset observed on a line (swaps leave the old handset as SWAPPED_OUT).",
      "name": "Device",
      "primary_key": [
        "handset_id"
      ],
      "system": "provisioning",
      "table": "devices"
    },
    {
      "columns": [
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Port request id",
          "name": "port_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Line whose number moves",
          "name": "line_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(8)",
          "description": "PORT_IN / PORT_OUT",
          "name": "direction",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(12)",
          "description": "Donor or recipient operator (invented)",
          "name": "other_operator",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "CREDENTIAL"
          ],
          "data_type": "VARCHAR(10)",
          "description": "Porting authorisation code (a secret)",
          "name": "port_auth_code",
          "nullable": true,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "VARCHAR(10)",
          "description": "COMPLETED / PENDING / REJECTED",
          "name": "status",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "TIMESTAMP",
          "description": "Request time",
          "name": "requested_at",
          "nullable": false,
          "sensitive": false
        }
      ],
      "description": "A number-porting request moving a number into or out of the operator.",
      "name": "PortRequest",
      "primary_key": [
        "port_id"
      ],
      "system": "provisioning",
      "table": "port_requests"
    },
    {
      "columns": [
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Record id",
          "name": "record_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "PII",
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(16)",
          "description": "Line number (cross-system)",
          "name": "msisdn_ref",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "VARCHAR(8)",
          "description": "VOICE / SMS / DATA",
          "name": "record_type",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "PII",
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(16)",
          "description": "Other party's number (voice/SMS)",
          "name": "counterparty_number",
          "nullable": true,
          "sensitive": true
        },
        {
          "classes": [
            "QUASI_IDENTIFIER"
          ],
          "data_type": "TIMESTAMP",
          "description": "Start of the event (traffic data)",
          "name": "event_start",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "INT",
          "description": "Voice duration",
          "name": "duration_seconds",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Data volume in kilobytes",
          "name": "data_kb",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "QUASI_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "Serving cell (location-like, synthetic ZZC-...)",
          "name": "cell_id",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "BOOLEAN",
          "description": "Used while roaming",
          "name": "roaming",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(12)",
          "description": "Visited network when roaming",
          "name": "visited_network",
          "nullable": true,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "DECIMAL(10,2)",
          "description": "Rated charge",
          "name": "charge_amount",
          "nullable": false,
          "sensitive": false
        }
      ],
      "description": "A call detail record: one voice call, SMS or data session of a line.",
      "name": "UsageRecord",
      "primary_key": [
        "record_id"
      ],
      "system": "network",
      "table": "usage_records"
    },
    {
      "columns": [
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Bill id",
          "name": "bill_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "CRM billing account (cross-system)",
          "name": "billing_account_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": "Due date",
          "name": "due_date",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "FINANCIAL"
          ],
          "data_type": "DECIMAL(12,2)",
          "description": "Amount due",
          "name": "amount_due",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "VARCHAR(10)",
          "description": "PAID / OPEN / OVERDUE / DISPUTED / ADJUSTED",
          "name": "status",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(20)",
          "description": "Why the bill is disputed",
          "name": "dispute_reason",
          "nullable": true,
          "sensitive": false
        }
      ],
      "description": "A monthly bill of a billing account.",
      "name": "Bill",
      "primary_key": [
        "bill_id"
      ],
      "system": "billing",
      "table": "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": "Remittance reference (TPAY-ZZ-...)",
          "name": "payment_reference",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "VARCHAR(10)",
          "description": "SETTLED / FAILED / RETURNED",
          "name": "status",
          "nullable": false,
          "sensitive": false
        }
      ],
      "description": "A payment (or failed collection) against a bill.",
      "name": "BillPayment",
      "primary_key": [
        "payment_id"
      ],
      "system": "billing",
      "table": "bill_payments"
    },
    {
      "columns": [
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Ticket id",
          "name": "ticket_id",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "DIRECT_IDENTIFIER"
          ],
          "data_type": "VARCHAR(12)",
          "description": "CRM subscriber (cross-system)",
          "name": "subscriber_ref",
          "nullable": false,
          "sensitive": true
        },
        {
          "classes": [],
          "data_type": "BIGINT",
          "description": "Provisioning line concerned (cross-system)",
          "name": "line_ref",
          "nullable": true,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(12)",
          "description": "NO_SERVICE / BILLING / DEVICE / PORTING / COVERAGE",
          "name": "category",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "VARCHAR(10)",
          "description": "OPEN / RESOLVED / ESCALATED",
          "name": "status",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [],
          "data_type": "TIMESTAMP",
          "description": "Opened",
          "name": "opened_at",
          "nullable": false,
          "sensitive": false
        },
        {
          "classes": [
            "SENSITIVE"
          ],
          "data_type": "VARCHAR(400)",
          "description": "Agent free text",
          "name": "description",
          "nullable": true,
          "sensitive": true
        }
      ],
      "description": "A customer-care ticket about service, billing, a device or porting.",
      "name": "TroubleTicket",
      "primary_key": [
        "ticket_id"
      ],
      "system": "care",
      "table": "trouble_tickets"
    }
  ],
  "relationships": [
    {
      "child": "BillingAccount",
      "child_columns": [
        "subscriber_id"
      ],
      "code": "FK_BILLING_ACCOUNTS_SUBSCRIBER_ID",
      "cross_system": false,
      "description": "BillingAccount references Subscriber",
      "kind": "FOREIGN_KEY",
      "parent": "Subscriber",
      "parent_columns": [
        "subscriber_id"
      ]
    },
    {
      "child": "Sim",
      "child_columns": [
        "line_id"
      ],
      "code": "FK_SIMS_LINE_ID",
      "cross_system": false,
      "description": "Sim references ServiceLine",
      "kind": "FOREIGN_KEY",
      "parent": "ServiceLine",
      "parent_columns": [
        "line_id"
      ]
    },
    {
      "child": "Device",
      "child_columns": [
        "line_id"
      ],
      "code": "FK_DEVICES_LINE_ID",
      "cross_system": false,
      "description": "Device references ServiceLine",
      "kind": "FOREIGN_KEY",
      "parent": "ServiceLine",
      "parent_columns": [
        "line_id"
      ]
    },
    {
      "child": "PortRequest",
      "child_columns": [
        "line_id"
      ],
      "code": "FK_PORT_REQUESTS_LINE_ID",
      "cross_system": false,
      "description": "PortRequest references ServiceLine",
      "kind": "FOREIGN_KEY",
      "parent": "ServiceLine",
      "parent_columns": [
        "line_id"
      ]
    },
    {
      "child": "BillPayment",
      "child_columns": [
        "bill_id"
      ],
      "code": "FK_BILL_PAYMENTS_BILL_ID",
      "cross_system": false,
      "description": "BillPayment references Bill",
      "kind": "FOREIGN_KEY",
      "parent": "Bill",
      "parent_columns": [
        "bill_id"
      ]
    },
    {
      "child": "ServiceLine",
      "child_columns": [
        "subscriber_ref"
      ],
      "code": "TEL_LINE_SUBSCRIBER",
      "cross_system": true,
      "description": "Service lines belong to CRM subscribers",
      "kind": "RELATIONSHIP_TEMPLATE",
      "parent": "Subscriber",
      "parent_columns": [
        "subscriber_id"
      ]
    },
    {
      "child": "ServiceLine",
      "child_columns": [
        "billing_account_ref"
      ],
      "code": "TEL_LINE_BILLING_ACCOUNT",
      "cross_system": true,
      "description": "Service lines are billed to a CRM billing account",
      "kind": "RELATIONSHIP_TEMPLATE",
      "parent": "BillingAccount",
      "parent_columns": [
        "billing_account_id"
      ]
    },
    {
      "child": "UsageRecord",
      "child_columns": [
        "msisdn_ref"
      ],
      "code": "TEL_USAGE_LINE",
      "cross_system": true,
      "description": "Usage records reference the line by its number",
      "kind": "RELATIONSHIP_TEMPLATE",
      "parent": "ServiceLine",
      "parent_columns": [
        "msisdn"
      ]
    },
    {
      "child": "Bill",
      "child_columns": [
        "billing_account_ref"
      ],
      "code": "TEL_BILL_ACCOUNT",
      "cross_system": true,
      "description": "Bills are raised on CRM billing accounts",
      "kind": "RELATIONSHIP_TEMPLATE",
      "parent": "BillingAccount",
      "parent_columns": [
        "billing_account_id"
      ]
    },
    {
      "child": "TroubleTicket",
      "child_columns": [
        "subscriber_ref"
      ],
      "code": "TEL_TICKET_SUBSCRIBER",
      "cross_system": true,
      "description": "Care tickets are raised for CRM subscribers",
      "kind": "RELATIONSHIP_TEMPLATE",
      "parent": "Subscriber",
      "parent_columns": [
        "subscriber_id"
      ]
    },
    {
      "child": "TroubleTicket",
      "child_columns": [
        "line_ref"
      ],
      "code": "TEL_TICKET_LINE",
      "cross_system": true,
      "description": "Care tickets may concern one service line",
      "kind": "RELATIONSHIP_TEMPLATE",
      "parent": "ServiceLine",
      "parent_columns": [
        "line_id"
      ]
    }
  ]
}
