5.1 KiB
GovOPlaN Calendar Integration Concept
Module Boundary
govoplan-calendar owns calendar primitives:
- calendar collections
- VEVENT storage and iCalendar import/export
- event recurrence data, recurrence exceptions, and future recurrence expansion
- availability and free/busy semantics
- resources such as rooms, shared equipment, and service desks
- groupware calendar adapter boundaries, including CalDAV and Open-Xchange
Calendar does not own meeting-poll decisions, bookable service appointments, task lifecycle, mail transport, or document lifecycle. Those modules should reference calendar events through stable IDs, iCalendar UIDs, capabilities, or API contracts.
First Implementation
The first standalone module provides:
CalendarCollectionrecords for tenant calendarsCalendarEventrecords for VEVENT data- normalized query fields: start, end, summary, location, all-day flag, status, transparency, classification, calendar ID, UID, recurrence ID, sequence, source, and ETag
- iCalendar preservation: raw VEVENT properties, parameters, and generated
text/calendarexport - API endpoints for listing calendars, creating/updating/deleting events, importing iCalendar, and exporting event ICS
- free/busy API primitive with recurrence expansion for scheduling and appointment conflict checks
- calendar-owned CalDAV sync sources with credential references, scheduled due-sync metadata, full/incremental inbound sync, two-way PUT/DELETE writes, and ETag conflict handling
- WebUI views: month, week, workweek, day, and continuous week-row scrolling
The first implementation is not yet a full CalDAV network server. It is the internal calendar storage, sync, availability, and UI foundation on which Open-Xchange integration, richer recurrence editing, scheduling inbox/outbox behavior, and CalDAV server endpoints can be built.
Integration Points
Scheduling
govoplan-scheduling should use calendar for:
- organizer availability lookup
- candidate slot conflict checks
- final event creation after a poll decision
- participant invitation state as VEVENT attendees when a meeting becomes real
Scheduling remains owner of polls, candidate ranking, external participation links, and decision audit.
Appointments
govoplan-appointments should use calendar for:
- confirmed appointment placement
- staff/resource conflict checks
- room and desk calendars
- cancellation or rescheduling events
Appointments remains owner of public booking flows, service definitions, capacity rules, queues, and no-show handling.
Tasks And Workflow
govoplan-tasks and govoplan-workflow should use calendar for:
- due-date and reminder calendar overlays
- workflow deadlines
- escalation dates
- optional event creation for hearings, reviews, inspections, and internal meetings
Tasks/workflow remain owners of assignment, status, SLA logic, and completion semantics.
Mail And Notifications
govoplan-mail and govoplan-notifications should use calendar for:
- outbound iCalendar invites and updates
- inbound invite parsing from messages
- RSVP state changes
- reminders and digest notifications
Mail remains owner of SMTP/IMAP profiles and mailbox transport. Notifications remains owner of delivery channels and delivery policy.
Documents And DMS
govoplan-dms can link documents to events for:
- agendas
- minutes
- attachments
- legal deadlines
- retention and audit context
DMS remains owner of versions, locks, approvals, collaboration, legal hold, and document retention.
Cases, Campaigns, Forms, And Portal
Domain modules may attach calendar references to domain objects:
- cases: hearings, inspections, review meetings
- campaigns: send windows and review deadlines
- forms: submission windows and office-hour sessions
- portal: citizen-facing event or appointment visibility
Calendar should expose reusable event and availability APIs instead of importing those modules.
Connectors And Public-Sector Groupware
govoplan-connectors should own generic connector catalogue behavior, connection setup patterns, and external-system inventory. Calendar owns the actual calendar semantics for:
- CalDAV
- Open-Xchange calendar
- OpenDesk calendar stack integration
- resource-calendar mapping
- free/busy sync
- recurrence and exception mapping
- conflict handling
The connector boundary should hand calendar a configured profile and credentials reference, not a domain-specific event model.
Follow-Up Work
- Full recurrence expansion for RRULE, RDATE, EXDATE, RECURRENCE-ID, overridden instances, and detached instances.
- User-facing recurrence editing for RRULE, RDATE, EXDATE, RECURRENCE-ID, overridden instances, and detached instances.
- UI management for CalDAV credentials, sync status, sync direction, and conflict resolution.
- CalDAV server endpoints if GovOPlaN should expose calendars to external clients rather than only syncing remote collections.
- Open-Xchange adapter that maps OX calendars, attendees, resources, recurrence, and free/busy to the internal calendar model.
- Attendee RSVP workflow and mail/notification bridge.
- Resource calendars for rooms, equipment, counters, and service desks.
- Calendar ACLs beyond tenant-wide permissions.