Skip to content

Commit bf53d92

Browse files
committed
docs: Sprint 43 INT-13 CHANGELOG v1.39.0 + TODO INT-13 done
1 parent aaf88fd commit bf53d92

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↔Nextcloud, Zabbix↔Mattermost, etc.)
12+
- Business workflow integrations (SuiteCRM↔OpenKM, Zabbix↔Mattermost, etc.)
13+
14+
---
15+
16+
## [1.39.0] — 2026-03-04
17+
18+
### Added — Sprint 43: INT-13 SuiteCRM ↔ Nextcloud (CalDAV calendar sync)
19+
20+
**Ansible (`it-stack-ansible`):**
21+
- `roles/suitecrm/tasks/nextcloud-caldav.yml` — INT-13 idempotent 7-step playbook: assert Nextcloud CalDAV PROPFIND + status.php, set_fact, ensure custom module dir, deploy `suitecrm-nextcloud-caldav.py.j2`, install nightly cron (03:00 www-data), flush + stat assert
22+
- `roles/suitecrm/templates/suitecrm-nextcloud-caldav.py.j2` — Python: requests session with HTTP basic-auth, `meeting_to_ical()` builds iCalendar VEVENT, `caldav_propfind()` lists .ics hrefs (PROPFIND Depth:1), `caldav_put()` PUTs VEVENT to CalDAV endpoint, `suitecrm_get_meetings()` calls SuiteCRM REST v8; bidirectional sync with dry-run + verbose flags
23+
- `roles/suitecrm/tasks/main.yml` — added `nextcloud-caldav.yml` import guarded by `suitecrm_enable_nextcloud_caldav | default(true)`
24+
- `roles/nextcloud/tasks/suitecrm-share.yml` — INT-13 idempotent 7-step playbook: assert Nextcloud status.php + CalDAV PROPFIND, set_fact, create `suitecrm-sync` service account via `occ user:add` (idempotent: already-exists guard), create SuiteCRM calendar via `occ dav:create-calendar` (idempotent), write status marker, flush + stat assert
25+
- `roles/nextcloud/tasks/main.yml` — added `suitecrm-share.yml` import guarded by `nextcloud_enable_suitecrm_share | default(true)`
26+
27+
**Nextcloud integration test (`it-stack-nextcloud`):**
28+
- `docker/docker-compose.integration.yml` — added `SUITECRM_URL/SUITECRM_CALDAV_USER/SUITECRM_CALDAV_PATH` to `x-nc-int-env` anchor; added `nc-int-mock` WireMock 3.5.2 service on port 8105; header updated with INT-13 + port 8105
29+
- `tests/labs/test-lab-06-05.sh` — added Section 13 (INT-13): WireMock health on 8105, CalDAV PUT stub registration, Nextcloud CalDAV PROPFIND 207, SUITECRM_URL env check, nc-int-app→nc-int-mock reachability
30+
- `.github/workflows/ci.yml` — lab-05-smoke name updated to include INT-13
31+
32+
**SuiteCRM integration test (`it-stack-suitecrm`):**
33+
- `tests/labs/test-lab-12-05.sh` — added Phase 3f (INT-13): NEXTCLOUD_USER + NEXTCLOUD_CALDAV_PATH env var checks, CalDAV PROPFIND WireMock stub registration, stub 207 response verify, SuiteCRM→WireMock CalDAV endpoint reachability; updated results footer to INT-04 + INT-09 + INT-12 + INT-13
34+
- `.github/workflows/ci.yml` — lab-05-smoke name updated to include INT-13
1335

1436
---
1537

docs/IT-STACK-TODO.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ All 5 repos have:
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)
403403
- [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)
404-
- [ ] SuiteCRM ↔ Nextcloud (calendar sync)
404+
- [x] SuiteCRM ↔ Nextcloud (calendar sync) ← **INT-13 DONE** (Sprint 43: nextcloud-caldav.yml + suitecrm-nextcloud-caldav.py.j2 + suitecrm-share.yml + compose WireMock nc-int-mock:8105 + SuiteCRM Phase 3f + Nextcloud Section 13)
405405
- [ ] SuiteCRM ↔ OpenKM (document linking)
406406
- [ ] Odoo ↔ FreeIPA (employee sync)
407407
- [ ] Odoo ↔ Taiga (time tracking export)

0 commit comments

Comments
 (0)