Home / Intercompany

Intercompany Controls & Automation

Automated Reconciliation and Cross-Entity Transactions

Objective

Establish a transparent, automated, and auditable intercompany framework that enforces IFRS compliance, segregation of duties (SoD), and real-time reconciliation across Bethlehem HQ, Ramallah, Jerusalem, Amman (Jordan), and Cairo (Egypt).

Quick Launch Checklist

1

Automated IC Transactions

Configure automated intercompany SO/PO, invoices, and journals with mirrored entries

2

Control Matrix

Implement centralized control matrix and cross-company reconciliation reports

3

Approval Workflow

Define approval workflow & SoD controls for IC creation, posting, and settlement

4

Exception Dashboards

Build exception dashboards for out-of-balance, missing mirror, or currency mismatch

5

Monthly IC Close

Establish monthly IC close checklist and audit trail logging

6

Continuous Monitoring

Integrate internal audit sampling & continuous control monitoring (CCM)

A. Intercompany Transaction Flow

Swimlane diagram showing automated SO/PO/Invoice mirroring between branches

ALP-HQ (Parent)
1. Creates IC Sales SO
4. Auto IC Invoice Out
7. IC Journal Posted
(1399 Asset)
ALP-AMM (Child)
2. Auto-generate PO
5. Mirror Vendor Bill
7. IC Journal Posted
(2399 Liability)
Finance Controller
3. PO approved, invoice
6. Post & reconcile
8. Validates IC report
(Net = 0)

Legend:

  • All flows use IC accounts (1399–Assets / 2399–Liabilities)
  • Currency translation at posting using FX rate from Odoo daily rate table
  • Audit trail captured at each step; no manual adjustments allowed outside Controller role
  • Automated by alp_ic_auto_sync custom module

B. Controls Matrix (Key Financial & Operational Controls)

# Control Area Control Objective Control Description / Mechanism (Odoo) Frequency Control Owner
1 IC Creation Authorization Ensure only valid IC transactions created Restrict IC SO/PO creation to IC Controller; require cross-company approval workflow (alp_ic_auto_sync) Continuous IC Controller
2 Mirror Document Integrity Guarantee one-to-one mirror between companies Automated mirror PO/Bill creation; validation rule: count(SO)=count(PO) per pair Daily Finance Controller
3 Posting Approval SoD Prevent same user from creating and posting Rule: Creator ≠ Poster; enforced via access group & automated check Continuous Internal Audit
4 Account Mapping Accuracy Ensure correct account codes used IC journal uses pre-mapped 1399/2399 based on company pair; mapping locked Continuous CFO
5 FX Translation Ensure consistent FX rate usage System pulls daily rate; freeze rate at posting; log rate in journal ref Daily Treasury
6 Reconciliation Completeness Ensure IC balances net to 0 across entities Automated SQL/domain check; report differences > 0.01; auto-ticket to Helpdesk Weekly Group Finance
7 Period Close Controls Prevent postings after close Fiscal period lock at T+5; unlock via CFO + Audit approval only Monthly CFO
8 Change Management Track config or mapping edits All IC config objects tracked in audit log model; diff exported weekly Weekly Internal Audit
9 Data Quality Prevent orphaned IC records Scheduled job checks orphan records (missing mirror ID) Daily Data Gov Lead
10 Exception Escalation Ensure timely correction of breaks IC variance > threshold auto-creates "IC-Exception" Helpdesk ticket Daily IC Controller
11 Consolidation Integrity Verify elimination correctness Consolidation run compares elimination company vs. sum; report ≤ tolerance Monthly Group Finance
12 Documentation Retention Ensure audit evidence retained All IC docs auto-saved to /Finance/Intercompany/<period> Monthly Audit Team

C. Sample Queries / Automated Checks

1. Out-of-Balance Intercompany Pairs

SELECT c1.name AS company_from, c2.name AS company_to,
       SUM(a1.balance) AS from_balance, SUM(a2.balance) AS to_balance,
       (SUM(a1.balance) + SUM(a2.balance)) AS net_diff
FROM account_move_line a1
JOIN account_move_line a2
     ON a1.ref = a2.ref AND a1.company_id <> a2.company_id
JOIN res_company c1 ON a1.company_id = c1.id
JOIN res_company c2 ON a2.company_id = c2.id
WHERE a1.account_id IN (SELECT id FROM account_account WHERE code LIKE '1399%')
   OR a1.account_id IN (SELECT id FROM account_account WHERE code LIKE '2399%')
GROUP BY c1.name, c2.name
HAVING ABS(SUM(a1.balance) + SUM(a2.balance)) > 0.01;

2. Missing Mirror Transactions

SELECT so.name AS ic_sale, so.company_id
FROM sale_order so
WHERE so.is_ic = TRUE
AND so.id NOT IN (
    SELECT ic_source_id FROM purchase_order WHERE is_ic = TRUE
);

3. Post-Close Adjustments (Control Breach Detection)

SELECT move.name, move.company_id, move.date, move.write_uid
FROM account_move move
WHERE move.date < (SELECT lock_date FROM account_fiscalyear WHERE is_locked = TRUE)
AND move.create_date > move.date;

D. Intercompany Reconciliation Dashboard

Summary KPIs

10
Total IC Pairs
$0.00
Net IC Balance (Target: 0)
2
Open Exceptions
2.5 days
Avg. Resolution Time

Aging View

Outstanding IC receivables/payables > 30 days

Company Pair Outstanding Age (Days)
HQ → AMM $12,500 45
HQ → EGY $8,300 32

Break Analysis

By company pair, currency, document type

  • HQ-AMM: Currency mismatch (ILS vs JOD) - $250 variance
  • HQ-EGY: Missing mirror invoice - 1 document

Exception Tracker

Auto-populated from Helpdesk tickets tagged "IC-Exception"

Ticket # Pair Issue Status
#IC-2025-045 HQ-AMM FX rate mismatch In Progress
#IC-2025-046 HQ-EGY Missing PO mirror In Progress
Data Sources: SQL views above + alp_ic_auto_sync logs

E. Segregation of Duties (SoD) – Intercompany Layer

Role Can Create SO/PO Can Post Journal Can Approve FX Rate Can Approve Period Close Comment
IC Controller 🚫 🚫 🚫 Creates & reviews mirror docs
Finance Controller 🚫 🚫 Posts & reconciles
Treasury 🚫 🚫 🚫 Owns FX & payment execution
CFO 🚫 🚫 Signs off rates & close
Internal Audit 🚫 🚫 🚫 🚫 Monitors logs; independent sample

F. Intercompany Close & Audit Checklist (Monthly)

Step Activity Owner Due (T+days)
1 Freeze FX rates for month Treasury T+1
2 Run IC balance report & validate mirror pairs IC Controller T+2
3 Post accruals (if needed) Finance Controller T+3
4 Run reconciliation query; review exceptions Finance Controller T+3
5 Correct exceptions & post eliminations IC Controller T+4
6 Lock IC journals CFO T+5
7 Export reconciliation & audit logs (PDF/CSV) Audit Team T+5
8 Archive docs to /Finance/Intercompany/<Month> Finance Ops T+6

G. Exception Management Workflow (Odoo Helpdesk Integration)

1

Detection

Automated job or reconciliation script flags variance

2

Ticket Creation

System opens Helpdesk ticket (Team = Finance → Category = IC Exception)

3

Assignment

IC Controller reviews → tags company pair → assigns to Finance Controller

4

Correction

Journal adjustments via DCR workflow only

5

Closure

Controller validates; CFO approves closure; log retained

6

AI Helpdesk Learning

Root cause tagged; summary article generated for future prevention

H. Continuous Control Monitoring (CCM)

  • Schedule daily IC variance job and weekly SoD violation report
  • Use alp_audit_controls module to feed anomalies into Internal Audit Dashboard
  • Internal Audit reviews top 10 exceptions monthly, ensuring remediation logged within SLA (≤ 5 days)
  • Automated alerts for control breaches sent to CFO + Internal Audit
  • Monthly CCM scorecard presented to Audit Committee

I. Sample Intercompany Accounts (COA Segment Summary)

Account Code Description Type Company Usage
1399-AMM IC Receivable – Amman Asset HQ
2399-HQ IC Payable – Bethlehem HQ Liability AMM
1399-EGY IC Receivable – Egypt Asset HQ
2399-HQ-EGY IC Payable – HQ Liability EGY
1399-JRS IC Receivable – Jerusalem Asset HQ
2399-JRS-HQ IC Payable – HQ Liability JRS
Important: Accounts mirror across entities; no manual entries permitted. All IC postings via alp_ic_auto_sync module only.

J. Audit Evidence Package Contents

Storage Location: /Audit/IC/<YYYY-MM>/

Retention: 10 years

Package Contents:

  1. Signed IC Reconciliation Report (PDF)
  2. Exception Log (CSV export from Helpdesk)
  3. IC Mapping Configuration (YAML snapshot)
  4. System Audit Log extract (CSV)
  5. CFO & Controller sign-off email (PDF)
  6. SQL checksum file confirming 0 net balance per pair

K. Control Validation – Go/No-Go Criteria

Automated mirror posting tested between ≥ 2 branches

IC balance variance ≤ 0.01 after reconciliation

All IC accounts locked post-close

SoD violations = 0 (unapproved cross-role actions)

Audit evidence generated & archived successfully