ODI: ODI
An OFWAT Outcome Delivery Incentive (ODI) linked to a performance commitment. Tracks targets, financial incentive rates, deadbands, caps/collars, and current performance baseline for the PR24 period (2025-2030).
ODI definition shipped with DemandFlow. Administrators can add, remove, rename, or re-type fields, change which ones are required, and alter the layout from the Definitions screen in Settings. Your tenant's current schema may differ from what is shown here. To read the current definition at any time, GET the DEFINITION object whose id matches ODI.Entity properties
| Property | Value |
|---|---|
| Entity code | ODI |
| Display name | ODI |
| Plural | ODIs |
| Level | 70000 |
Use cases
Regulatory entity for OFWAT water industry reporting. Six panels: General (three columns - PC identification with reference/description/outcome area/type; measurement & targets with unit/period/baseline/annual PCLs 2025-2030; financial incentives with ODI type/rates/deadband/caps/collars/enhanced thresholds), Performance (relatedlist to ODIYR for annual actuals), Notes (timeline), Documents (file attachments), Tasks (relatedlist to ACTION). Uses level 70000 for regulatory domain.
Fields
Performance Commitment
| Field | Type | Required | Notes |
|---|---|---|---|
pcRef | text | Yes | PC reference |
status | enum | Yes | Status Valid ids: active (Active), draft (Draft), superseded (Superseded), closed (Closed). |
name | text | Yes | Commitment name |
description | text (multi-line) | Description | |
outcome | enum | Outcome area Valid ids: water_quality (Water quality), water_supply (Reliable water supply), environment (Environmental protection), customer (Customer experience), sewerage (Sewerage & drainage), resilience (Asset resilience), biodiversity (Biodiversity & rivers). | |
pcType | enum | PC type Valid ids: common (Common), bespoke (Bespoke). | |
priceReview | enum | Price review Valid ids: PR24 (PR24 (2025-2030)), PR19 (PR19 (2020-2025)). | |
assigned_to | reference → user | Owner |
Measurement
| Field | Type | Required | Notes |
|---|---|---|---|
unit | text | Unit of measure | |
measurementPeriod | enum | Measurement period Valid ids: annual (Annual (Apr-Mar)), calendar (Calendar year), 3yr_avg (3-year rolling average), cumulative (Cumulative (AMP)). | |
performanceBaseline | number | Performance level at the start of the period | |
baselineYear | text | Baseline year | |
direction | enum | Does a lower or higher number represent better performance? Valid ids: lower (Lower is better), higher (Higher is better). |
Annual Targets (PCL)
| Field | Type | Required | Notes |
|---|---|---|---|
target2025 | number | 2025-26 | |
target2026 | number | 2026-27 | |
target2027 | number | 2027-28 | |
target2028 | number | 2028-29 | |
target2029 | number | 2029-30 |
Financial Incentives
| Field | Type | Required | Notes |
|---|---|---|---|
odiType | enum | ODI type Valid ids: financial_both (Financial (both)), financial_under (Underperformance only), financial_over (Outperformance only), reputational (Reputational), nfi (Non-financial incentive). | |
underperformanceRate | number | Penalty rate per unit of underperformance | |
outperformanceRate | number | Payment rate per unit of outperformance |
Deadbands
| Field | Type | Required | Notes |
|---|---|---|---|
deadbandUnder | number | Threshold before underperformance penalties apply | |
deadbandOver | number | Threshold before outperformance payments apply |
Caps & Collars
| Field | Type | Required | Notes |
|---|---|---|---|
collar | number | Performance level at which underperformance penalty is capped | |
cap | number | Performance level at which outperformance payment is capped | |
enhancedThreshold | number | Level at which enhanced outperformance rates apply | |
enhancedRate | number | Higher rate for performance beyond the enhanced threshold |
Documents
| Field | Type | Required | Notes |
|---|---|---|---|
attachments | file |
Activity. Activity timeline panel attached.
Relationships
- Related lists:
ODIYR(formatSUB|ODI),ACTION(formatSUB|ODI).
Creating a ODI via the API
POST /v1/objects
Authorization: Bearer <your-pat>
Content-Type: application/json
{
"entity": "ODI",
"level": 70000,
"comboKey": "SUB:<your-sub-id>|ENT:",
"pcRef": "Example",
"status": "active",
"name": "Example"
}
Listing ODIs records
# All odis in your tenant
GET /v1/entities/ODI/SUB