A community-maintained library of DataVow contracts for common enterprise systems. Each contract defines the expected schema, quality rules, and SLA for a specific table or object — ready to validate your data warehouse extracts.
Use these contracts as-is or fork them as a starting point for your own.
| Object | Domain | Contract | Key Rules |
|---|---|---|---|
product.product |
products | odoo/product.yaml |
Positive prices, valid types, barcode uniqueness, weight checks |
res.partner |
contacts | odoo/res-partner.yaml |
Email format, VAT on companies, contact hierarchy |
sale.order |
sales | odoo/sale-order.yaml |
Amount consistency, state validation, partner required |
| Table | Domain | Contract | Key Rules |
|---|---|---|---|
KNA1 (Customers) |
master-data | sap-erp/kna1-customers.yaml |
KUNNR format, country codes, account group, deletion flags |
MARA (Materials) |
master-data | sap-erp/mara-materials.yaml |
Material number, UoM required, weight consistency |
VBAK (Sales Orders) |
sales | sap-erp/vbak-sales-orders.yaml |
VBELN format, customer not null, net value, currency |
| Object | Domain | Contract | Key Rules |
|---|---|---|---|
Account |
crm | salesforce/account.yaml |
ID format (18 char), owner required, revenue checks, modified > created |
Contact |
crm | salesforce/contact.yaml |
Account ID format, email format, last name required |
Lead |
crm | salesforce/lead.yaml |
Company required, conversion consistency, email format |
Opportunity |
crm | salesforce/opportunity.yaml |
Won deals have amount, probability range, stage/flag consistency |
# Install DataVow
pip install datavow
# Clone this repo
git clone https://github.com/ludovicschmetz-stack/datavow-contracts.git
cd datavow-contracts
# Validate your data against a contract
datavow validate salesforce/account.yaml data/salesforce_account.csv --verbose
# Generate a stakeholder report
datavow report odoo/sale-order.yaml data/odoo_sale_order.csvThe repo includes a Docker-based demo with PostgreSQL, intentionally dirty sample data, and a full dbt project.
# Start PostgreSQL + load sample data
docker compose up -d
# Validate all contracts
datavow validate odoo/product.yaml data/odoo_product_product.csv --verbose
datavow validate sap-erp/vbak-sales-orders.yaml data/sap_vbak.csv --verbose
datavow validate salesforce/account.yaml data/salesforce_account.csv --verbose
# Or use the demo script
./run-demo.shThe dbt/ directory contains a complete dbt project with staging models and DataVow-generated tests for all 10 contracts.
cd dbt
dbt deps
dbt run
dbt test # Runs all DataVow-generated testsdatavow-contracts/
├── odoo/ # Odoo ERP contracts
│ ├── product.yaml
│ ├── res-partner.yaml
│ └── sale-order.yaml
├── sap-erp/ # SAP ERP contracts
│ ├── kna1-customers.yaml
│ ├── mara-materials.yaml
│ └── vbak-sales-orders.yaml
├── salesforce/ # Salesforce CRM contracts
│ ├── account.yaml
│ ├── contact.yaml
│ ├── lead.yaml
│ └── opportunity.yaml
├── data/ # Sample CSVs (intentionally dirty)
├── dbt/ # dbt project with staging models + tests
├── docker/ # PostgreSQL init script
├── docker-compose.yml # Demo environment
├── reports/ # Sample HTML reports
└── run-demo.sh # One-command demo
These contracts cover standard fields. Your systems likely have custom fields — add them:
# Odoo custom field
- name: x_approval_workflow
type: string
required: false
# SAP Z-field
- name: ZZPROJECT_CODE
type: string
required: false
# Salesforce custom field
- name: Custom_Score__c
type: decimal
required: false
min: 0
max: 100Contributions welcome. To add contracts for a new system:
- Create a directory named after the system (lowercase)
- Add one
.yamlcontract per table/object - Include sample data in
data/if possible - Open a PR
See CONTRIBUTING.md for details.
- DataVow CLI — the validation engine
- DataVow GitHub Action — CI/CD integration
- DataVow dbt package — dbt on-run-end hook
- ODCS v3.1 — the standard behind DataVow
Apache 2.0 — see LICENSE.