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. HR employee record validation aligned with UK employment law, HMRC RTI (Real Time Information) payroll reporting requirements, and ICO guidance on employee data under UK GDPR. Enforces email format, UK National Insurance number format (HMRC prefix exclusion rules), contract type classification under the Employment Rights Act 1996, employment status values, right-to-work classification (Immigration Act 2014), salary currency, and salary anomaly detection. Prevents payroll submission failures, right-to-work compliance gaps, and HMRC RTI rejection at source.
| Rule | Field | Severity | What it enforces (the message your team sees) |
|---|---|---|---|
| employee_id_required | employee_id | error | employee_id is required |
| first_name_required | first_name | error | first_name is required |
| last_name_required | last_name | error | last_name is required |
| email_required | error | email is required | |
| email_format | error | email must be a valid email address | |
| ni_number_format | ni_number | error | ni_number must be a valid UK National Insurance number (e.g. AB123456C) — invalid NI numbers cause HMRC RTI payroll rejection |
| ni_number_not_reserved_prefix | ni_number | error | ni_number uses an HMRC-reserved prefix (BG, GB, NK, KN, TN, NT, or ZZ) — these are never issued to real taxpayers and will be rejected by HMRC RTI |
| department_required | department | error | department is required |
| job_title_required | job_title | error | job_title is required |
| start_date_format | start_date | error | start_date must be a valid date (YYYY-MM-DD) |
| salary_min | salary | error | salary must be >= 0 |
| salary_nmw_warning | salary | warning | salary is below £10,000 — verify this is not a full-time role that may be below National Living Wage (NLW) threshold (National Minimum Wage Act 1998) |
| salary_currency_format | salary_currency | warning | salary_currency must be a valid ISO 4217 three-letter code (e.g. GBP, EUR, USD) |
| contract_type_required | contract_type | error | contract_type is required |
| contract_type_valid | contract_type | error | contract_type must be one of: permanent, fixed_term, zero_hours, contractor, apprentice, intern, casual, agency |
| employment_status_values | employment_status | warning | employment_status must be one of: active, on_leave, maternity_leave, paternity_leave, sick_leave, gardening_leave, notice_period, suspended, terminated, retired |
| right_to_work_values | right_to_work_status | error | right_to_work_status must be one of: verified_british_irish, verified_eu_settled, verified_visa, verified_share_code, pending_verification, not_required, expired — unverified employees expose the employer to civil penalties up to £60,000 (Immigration Act 2014) |
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 →