Skip to content

Commit aaf88fd

Browse files
committed
docs: Sprint 42 INT-12 CHANGELOG v1.38.0 + TODO INT-12 marked done
1 parent 77f9274 commit aaf88fd

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

CHANGELOG.md

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,29 @@ This project adheres to [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
99
## [Unreleased]
1010

1111
### Planned — Next Up
12-
- Business workflow integrations (SuiteCRM↔Odoo, Zabbix↔Mattermost, etc.)
12+
- Business workflow integrations (SuiteCRM↔Nextcloud, Zabbix↔Mattermost, etc.)
13+
14+
---
15+
16+
## [1.38.0] — 2026-03-04
17+
18+
### Added — Sprint 42: INT-12 SuiteCRM ↔ Odoo (bidirectional customer/partner data sync)
19+
20+
**Ansible (`it-stack-ansible`) — already in place from scaffolding:**
21+
- `roles/suitecrm/tasks/odoo-sync.yml` — INT-12 idempotent 6-step playbook: assert Odoo JSONRPC + `/web/session/authenticate`, set_fact, ensure custom module dir, deploy `suitecrm-odoo-sync.py.j2`, install nightly cron job, flush + stat assert
22+
- `roles/suitecrm/templates/suitecrm-odoo-sync.py.j2` — Python sync: authenticates via Odoo JSONRPC, reads `res.partner` records, upserts SuiteCRM Accounts via SOAP/REST API
23+
- `roles/suitecrm/tasks/main.yml``odoo-sync.yml` import guarded by `suitecrm_enable_odoo_sync | default(true)`
24+
- `roles/odoo/tasks/suitecrm-sync.yml` — INT-12 idempotent Odoo-side playbook: assert SuiteCRM JSONRPC, set_fact, deploy `odoo-suitecrm-sync.py.j2`, install nightly cron, flush + stat assert
25+
- `roles/odoo/templates/odoo-suitecrm-sync.py.j2` — Python sync: reads SuiteCRM `get_entry_list` Contacts, upserts Odoo `res.partner` via JSON-RPC `call_kw`
26+
- `roles/odoo/tasks/main.yml``suitecrm-sync.yml` import already in place
27+
28+
**SuiteCRM integration test (`it-stack-suitecrm`):**
29+
- `tests/labs/test-lab-12-05.sh` — added Phase 3e: `res.partner` search_read WireMock stub (`/web/dataset/call_kw`), partner search response verify, `ODOO_DB/ODOO_USER/ODOO_API_KEY/ODOO_JSONRPC_ENDPOINT` env var checks, SuiteCRM→WireMock Odoo reach; updated results footer to INT-04 + INT-09 + INT-12
30+
- `.github/workflows/ci.yml` — lab-05-smoke name updated to include INT-12
31+
32+
**Odoo integration test (`it-stack-odoo`):**
33+
- `tests/labs/test-lab-13-05.sh` — added Phase 7: SuiteCRM JSONRPC `/jsonrpc` contact list WireMock stub, stub response verify, `SUITECRM_URL/SUITECRM_JSONRPC_ENDPOINT` env var checks, Odoo→WireMock SuiteCRM reach; updated header + results footer to INT-05 + INT-12
34+
- `.github/workflows/ci.yml` — lab-05-smoke name updated to include INT-12
1335

1436
---
1537

docs/IT-STACK-TODO.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ All 5 repos have:
400400
- [x] FreePBX ↔ SuiteCRM (click-to-call, call logging) ← **INT-09 DONE** (Sprint 39: suitecrm-cti.yml + freepbx-cti.yml + AGI script + CTI WireMock stubs + integration test)
401401
- [x] FreePBX ↔ Zammad (automatic phone tickets) ← **INT-10 DONE** (Sprint 40: zammad-webhook.yml + freepbx-cti.yml + AGI script + WireMock + Zammad CTI channel API)
402402
- [x] FreePBX ↔ FreeIPA (extension provisioning from directory) ← **INT-11 DONE** (Sprint 41: freeipa-sync.yml + freeipa-sync.py + freepbx-service-account.yml + ldif.j2 + compose env vars + test Phase 9)
403-
- [ ] SuiteCRM ↔ Odoo (customer data sync)
403+
- [x] SuiteCRM ↔ Odoo (customer data sync) ← **INT-12 DONE** (Sprint 42: Ansible odoo-sync.yml + suitecrm-sync.yml + both Python templates + WireMock partner/contact stubs + integration tests)
404404
- [ ] SuiteCRM ↔ Nextcloud (calendar sync)
405405
- [ ] SuiteCRM ↔ OpenKM (document linking)
406406
- [ ] Odoo ↔ FreeIPA (employee sync)

0 commit comments

Comments
 (0)