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. FMCG (Fast-Moving Consumer Goods) product sales record validation. Enforces GS1 GTIN barcode format and check digit (8-, 12-, 13-, or 14-digit numeric product identifiers used across UK and global retail supply chains), ISO 3166-1 alpha-2 country of origin, ISO 4217 currency codes, and product category taxonomy aligned with GS1 Global Product Classification (GPC). Prevents invalid product codes, uncategorised products, and ambiguous pricing records from entering retailer EDI, POS, and category management systems. Pack unit standardisation prevents unit-of-measure mismatches in NPD and promotional analysis pipelines.
| Rule | Field | Severity | What it enforces (the message your team sees) |
|---|---|---|---|
| product_code_required | product_code | error | product_code is required |
| product_code_gtin_format | product_code | error | product_code must be a valid GS1 GTIN: 8, 12, 13, or 14 numeric digits (EAN-8, UPC-A, EAN-13, or ITF-14). e.g. 9521234567899 (GS1 demonstration prefix 952) |
| product_code_gtin_valid | product_code | error | product_code has an invalid GS1 check digit (e.g. valid: 9521234567899, GS1 demonstration prefix 952) — full check-digit verification (was: shape-only format check) |
| brand_required | brand | error | brand is required |
| brand_max_length | brand | warning | brand exceeds 70 characters — will be truncated in GS1 EDI and retailer catalogue systems |
| category_required | category | error | category is required |
| category_values | category | warning | category should be one of the defined FMCG category values for cross-retailer compatibility (map to GS1 GPC brick codes in your PIM/GDSN feed if you syndicate) |
| unit_price_min | unit_price | error | unit_price must be >= 0 |
| currency_format | currency | error | currency must be a valid ISO 4217 three-letter code (e.g. GBP, EUR, USD) |
| units_sold_min | units_sold | error | units_sold must be >= 0 |
| pack_unit_values | pack_unit | warning | pack_unit must be a standard unit: g, kg, ml, l, units, cl, oz, lb, sheets, pairs, tablets, capsules, sachets |
| store_id_required | store_id | error | store_id is required |
| sale_date_format | sale_date | error | sale_date must be a valid date (YYYY-MM-DD) |
| shelf_life_days_min | shelf_life_days | error | shelf_life_days must be >= 0 |
| country_of_origin_format | country_of_origin | warning | country_of_origin must be a 2-letter ISO 3166-1 alpha-2 country code (e.g. GB, DE, FR, US) — required for UK/EU food labelling regulations |
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 →