Quick Launch Checklist
System of Record (SoR)
Define SoR per master object; restrict creation to controlled roles
Golden Records
Implement match/merge and survivorship rules with versioning for auditable changes
Stewardship RACI
Stand up RACI matrix and Data Change Request (DCR) workflow with approvals + logs
Data Quality Controls
Enforce DQ controls at create/update (validations) and run daily DQ monitors
Access Controls
Lock cross-company visibility with record rules; use analytic dimensions for NGO grants/donors
Retention Policy
Set retention (finance 10 yrs, HR 7 yrs, KB 3 yrs) and safe archival procedures
A. Master Data Governance Table
Legend: SoR = System of Record, GR = Golden Record
| Master Data Object | SoR (Odoo Model) | Primary Owner | Stewards | Key Identifiers | GR Rules (Match/Merge + Survivorship) |
|---|---|---|---|---|---|
| Companies/Branches | res.company |
Group CFO | Finance Controllers (by company) | Company Code (HQ/RAM/JRS/AMM/EGY), VAT/Reg.No. | No merge. Changes via DCR; legal fields versioned; approval: CFO + Audit. |
| Chart of Accounts | account.account |
Group Finance Controller | Company Finance Managers | Account Code + Company | No merge. Codes immutable post go-live; map deprecated→new; elimination accounts reserved. |
| Taxes/Tax Groups | account.tax |
Country Finance Lead | Tax Stewards (per country) | Tax Name+Rate+Country | No merge. New tax via DCR; effective dates; close/open tax periods controlled. |
| Partners (Vendors/Customers/Donors/NGOs) | res.partner |
Data Gov Lead (central) | AP/AR Stewards | VAT/Tax ID, Country, Email/Phone, IBAN | Match: VAT+Country OR email+phone. Merge: weaker→stronger profile. Survive: non-empty official name, VAT, banking; newest address unless flagged "verified". |
| Banks & Bank Accounts | res.partner.bank |
Group Treasury | Company Finance | IBAN/SWIFT + Company | No merge. Changes require 2-step approval (Treasury + Controller). |
| Products/Services (Fee Items) | product.template |
Services Director | Practice Leads | Product Code, Category | Match: Code. Merge: manual only. Survive: most recent cost/price if approved; income/expense accounts locked after first posting. |
| Employees | hr.employee |
HR Director | HR Managers | National ID/Passport, Work Email | Match: Nat.ID+Country OR Work Email. Merge: HR only. Survive: HR-verified fields win; contracts/history never merged—retained by employee ID. |
| Projects/Grants | project.project + Analytic |
PMO Director | Project Accountants | Project Code, Donor, Country, FY | Match: Code. Merge: prohibited. Survive: N/A; use Closure + Successor links for reorgs. |
| Analytic Accounts/Tags | account.analytic.account / account.analytic.tag |
Group Finance Controller | NGO Accounting Unit | Code, Donor, Validity | Match: Code+Donor. Merge: prohibited; end-date + replace via mapping table. |
| Price Lists/Contracts | product.pricelist, contract.* |
Services Director | Sales Ops | Contract No., Client | Match: Contract No. Merge: manual; keep signed version as source of truth. |
| Intercompany Mappings | custom (alp_ic_*) |
IC Controller | Finance Controllers | Pair (FromCo→ToCo) + Accounts | No merge. Any change requires CFO approval; audit log mandatory. |
| Helpdesk KB Articles | knowledge.article |
AI/Helpdesk Lead (Egypt) | KB Curators | Article ID + Version | Match: Title+Category. Merge: new version only; old versions retained; only Approved/Published indexed for AI. |
| Vendor Tax Withholding Profiles | custom (extension on res.partner) |
Country Finance Lead | AP Stewards | Vendor + Country + Regime | No merge. Effective-dated; change requires document proof and approval. |
B. Stewardship RACI (Roles × Objects)
Legend: R=Responsible, A=Accountable, C=Consulted, I=Informed
| Role / Object | Companies | COA/Taxes | Partners | Banks | Products | Employees | Projects/Grants | Analytic | IC Maps | KB Articles |
|---|---|---|---|---|---|---|---|---|---|---|
| Group CFO | A | A | I | A | I | I | I | A | A | I |
| Group Finance Controller | C | R | C | C | C | I | C | R | R | I |
| Country Finance Lead | C | R | C | R | I | I | C | C | C | I |
| IC Controller | I | C | I | I | I | I | I | C | R | I |
| Data Governance Lead | C | C | A | C | C | C | C | C | C | C |
| HR Director / Managers | I | I | I | I | I | A/R | C | I | I | I |
| PMO Director / Project Acct. | I | I | I | I | I | I | A/R | R | I | I |
| Services Director / Practice Leads | I | I | I | I | A/R | I | C | I | I | I |
| Treasury | I | I | I | A/R | I | I | I | I | I | I |
| Helpdesk/AI Lead (Egypt) | I | I | I | I | I | I | I | I | I | A/R |
| Internal Audit | C | C | C | C | C | C | C | C | C | C |
| IT/Ops Lead | I | I | I | I | I | I | I | I | I | I |
C. Data Change Request (DCR) Workflow
Submit
Steward raises DCR (object, fields, justification, evidence) → routed to Owner
Validate
Owner checks duplicates (search/match rules) + SOD; attaches proof
Approve
Accountable role e-signs; high-risk objects (Banks, IC Maps) require dual approval
Apply
Change applied in STAGE, sync to PROD via release; automatic versioning + chatter log
Notify
Stakeholders notified; DQ monitors re-run; AI index re-built for KB objects
D. Golden Record Rules (Detailed Mechanics)
1. Partners (Donors/Vendors/Customers/NGOs)
Match Keys (Priority):
- VAT/Tax ID + Country
- IBAN/SWIFT + Name
- Email + Phone (normalized)
Merge Policy:
- Preserve verified legal name, VAT/Tax ID, banking from most trusted source (status="Verified")
- Keep all historical addresses as child contacts; mark one Primary (effective-dated)
- Preserve partner's company_ids assignments; never lose child company links
2. Employees
Matching:
- Block duplicates by National ID + Country
- If missing, use Work Email
Merge Policy:
- Never merge contract history
- If duplicate found, retire weaker record (redirect references)
- Keep employment history intact
3. Banks
- Creation only by Treasury
- Changes require dual approval and effective date
- IBAN checksum validation mandatory
- Auto-verify SWIFT against registry (if connector available)
4. Projects/Grants & Analytic
- Codes immutable
- Closure via end date
- Replacement via successor mapping
- Analytics mapping table for reporting continuity
5. KB Articles
- Only Approved/Published versions enter AI index
- Every update creates new version
- AI connector indexes: Title, Body, Tags, Article ID, Version, Approval Timestamp, Owner
E. Data Quality Controls – Deployment Checklist
Create/Update Validations (Prevent Bad Data)
Partners
- Name (required)
- Country (required)
- Type (required)
- VAT/ID (if legal entity)
- Email/Phone (required)
- Banking proof for payouts
Employees
- Name (required)
- National ID/Passport (required)
- Date of Birth (required)
- Company (required)
- Work Email (required)
Banks
- IBAN/SWIFT (required)
- Beneficiary = verified partner
- Effective Date (required)
- IBAN checksum validation
Projects/Grants
- Code (required)
- Donor (required)
- Country (required)
- Start/End dates (required)
- Currency (required)
Analytic Accounts
- Code (required)
- Parent (if any)
- Valid From/To (required)
- Donor linkage (if applicable)
Field Formats
- IBAN checksum validation
- VAT patterns per country
- Email/phone normalization
- Currency codes (ISO-4217)
Ongoing Monitoring (Daily/Weekly Jobs)
| Monitor | Metric | Threshold | Action |
|---|---|---|---|
| Duplicates | Potential duplicates list by object (threshold score) | Alert if >5 high-confidence matches | Steward queue for review |
| Completeness | % records missing mandatory fields | Alert if >1% for critical objects | Daily report to stewards |
| Validity | VAT/IBAN invalid count | SLA fix ≤ 2 business days | Auto-create DCR |
| Consistency | Cross-company mismatch (same VAT, different names) | 0 tolerance | Immediate escalation |
| Timeliness | Stale analytic (expired but used on transactions) | Flag all | Weekly report to PMO |
| AI KB Integrity | Non-approved articles in index | Must be 0 | Nightly reconciliation + alert |
Issue Management
- All DQ issues create Helpdesk tickets tagged "DQ"
- Root cause analysis (RCA) required for repeat offenders
- Monthly DQ Scorecard: Duplicates rate, Invalid rate, On-time fix %, Steward backlog
Controls & Audit
- SOD checks on DCR approvals
- Audit sample (10%) reviewed monthly by Internal Audit
- Immutable logs of field-level changes (before/after, who/when/why)
- Close period locks regenerate DQ snapshots for audit packages
F. Access & Visibility Controls
Multi-Company Controls
- Partners, Banks, Accounting objects: company_id record rules
- Shared where "shared partner" flag is true
- Cross-company posting restricted to IC Controller role
NGO Donor/Grant Data
- Restrict to NGO Accounting Unit + relevant project teams
- Report exports watermarked with user/date
- Audit trail for all grant data access
Employee PII
- HR group only for full access
- Anonymized in analytics/BI except for authorized roles
- Self-service portal for employee-owned data
G. Retention & Archival Policy
| Data Category | Retention Period | Archival Location | Retrieval SLA |
|---|---|---|---|
| Finance (journals, partners, invoices) | 10 years minimum | /Archive/Finance/{Year} | Within 48 hours |
| HR (employee files) | 7 years post-termination | /Archive/HR/{Year} | Within 48 hours |
| Projects/Grants | 7 years after grant closure | /Archive/Projects/{Year} | Within 48 hours |
| KB Articles | All versions 3 years; latest always available | /Archive/Knowledge/{Year} | Immediate (latest), 24h (historical) |
H. Data Model Essentials (Field Standards)
Codes
Uppercase, hyphenated
Examples:
PRJ-UNICEF-PS-25-001ANL-EDU-OPS-001HQ-INV-2025-00123
Country & Currency
- Country: ISO-3166 alpha-2 (PS, JO, EG)
- Currency: ISO-4217 (ILS, JOD, EGP, USD)
Phone & Date
- Phone: E.164 format (+970...)
- Dates: ISO-8601 (YYYY-MM-DD)
- Timezone: Asia/Hebron (default)
Internal Naming
Companies/Partners:
ALP-<CITY> (Internal)
Examples:
- ALP-AMM (Internal)
- ALP-EGY (Internal)
I. Go/No-Go Readiness for Master Data
SoR & RACI approved; DCR workflow live (STAGE)
Validations and DQ monitors deployed; dashboards visible to Owners/Stewards
Initial dedup pass completed on Partners and Employees; banks verified
KB governance enforced; AI index restricted to Approved content only