OpenDQV Cloud starter template (v0.1) — your tenant inherits this baseline. First customer edit creates v1.0 in your audit trail; pin by yaml_hash for replay. Telecoms Call Detail Record (CDR) validation aligned with Ofcom General Conditions of Entitlement (GC), GSMA PRD IR.21 roaming data standards, and 3GPP TS 32.297 CDR file format specifications. Enforces E.164 MSISDN format (ITU-T E.164), IMEI 15-digit format (GSMA IMEI specification), PLMN network code format (MCC + MNC per ITU-T E.212), call end >= call start monotonicity, rating status lifecycle, and roaming country ISO validation. Prevents billing disputes, revenue leakage, and Ofcom compliance failures caused by malformed CDRs entering mediation, rating, and NRTRDE (Near Real Time Roaming Data Exchange) pipelines.
| Rule | Field | Severity | What it enforces (the message your team sees) |
|---|---|---|---|
| record_id_required | record_id | error | record_id is required |
| msisdn_required | msisdn | error | msisdn is required |
| msisdn_e164_format | msisdn | error | msisdn must be in E.164 format (e.g. +447911123456) — malformed MSISDNs cause CDR mediation rejection and roaming settlement failure (ITU-T E.164, GSMA IR.21) |
| call_start_format | call_start | error | call_start must be a valid datetime (YYYY-MM-DDTHH:MM:SS) |
| call_end_format | call_end | error | call_end must be a valid datetime (YYYY-MM-DDTHH:MM:SS) |
| call_end_after_start | call_end | error | call_end must be on or after call_start — negative duration CDRs indicate NTP clock drift or timezone error and cause NRTRDE roaming exchange rejection (GSMA IR.21) |
| duration_seconds_min | duration_seconds | error | duration_seconds must be > 0 — a zero-duration CDR is a failed connection attempt that should not generate a billing record (signalling-only attempts belong in a separate failed-call-attempt feed, not the CDR stream) |
| imei_format | imei | warning | imei must be exactly 15 decimal digits (GSMA IMEI format, e.g. 490154203237518) — invalid IMEI bypasses Ofcom EIR blacklist checking |
| call_type_required | call_type | error | call_type is required |
| call_type_valid | call_type | error | call_type must be one of: voice, sms, mms, data, roaming_voice, roaming_sms, roaming_data, premium_rate, emergency, voip (3GPP TS 32.297 — roaming CDRs require NRTRDE within 4 hours per GSMA IR.21) |
| network_code_plmn_format | network_code | warning | network_code must be in PLMN format MCC-MNC (e.g. 234-30 for UK EE, 234-20 for UK Three) — invalid PLMN prevents roaming partner identification (GSMA IR.21) |
| roaming_country_format | roaming_country | warning | roaming_country must be a 2-letter ISO 3166-1 alpha-2 country code (e.g. DE, FR, ES) — required for GSMA IR.21 NRTRDE and EU Roaming Regulation RLAH enforcement |
| rating_status_values | rating_status | warning | rating_status must be one of: rated, unrated, error, disputed, fraud_suspect, suppressed, reprocessing (unrated = revenue leakage risk; fraud_suspect requires FMS referral within 24h per GSMA FS.11) |
| charge_amount_min | charge_amount | error | charge_amount must be >= 0 |
| data_volume_mb_min | data_volume_mb | error | data_volume_mb must be >= 0 |
Run your own data against this contract in the free trial — drop a CSV in the dashboard, no code, no credit card. Start free trial →