ICS calendar import in ZCS 10: Getting appointments from shared calendar into personal calendar

Discuss your pilot or production implementation with other Zimbra admins or our engineers.
Post Reply
leading zero
Posts: 35
Joined: Fri Apr 21, 2023 9:37 am
Location: Germany
ZCS/ZD Version: 10.0.3

ICS calendar import in ZCS 10: Getting appointments from shared calendar into personal calendar

Post by leading zero »

Hi everyone,
we are currently preparing our calendar migration from Confluence Team Calendars to ZCS 10 NE and are using ICS export/import to accomplish this. Confluence Team Calendars has no concept of invitations or accepting/declining an appointment. Every appointment that is not strictly private is located in one big shared calendar with its sub-calendars.
Now for ZCS: All the existing shared appointments, including attendee information, are to be imported into a shared calendar for company-wide visibility (to replicate Confluence's default behavior).
This works in principle; however, these appointments don't show up in the individual attendees' personal calendars in ZCS.

For example:
An ICS file contains an appointment with attendees "Alice" and "Bob". Both their participation statuses are set to "Accepted" in the ICS file. The file is imported into a shared calendar that is visible to both Alice and Bob.
They can see the appointment in the shared calendar, but the appointment does not show up in their personal calendars (like it normally would, had they received an invitation).

Is there an elegant way to remedy this?
The only options I can think of right now are:
a) Create additional, personalized ICS files for Alice and Bob and import them into their respective personal calendars. The appointments in these personalized ICS files are basically clones of the appointments from the shared calendar. I'd have to do some more R&D to see if this is a viable solution.
b) Use the SOAP API to send invitations for all existing future (or recurring) appointments after the shared calendar import is complete. I'm not sure if this could even work without side effects though, and it would create a lot of invitation/notification emails, is that correct?

Any other ideas? :)

BTW the migration of appointments from Confluence to ZCS should be easy at first glance, but we had to overcome a few hurdles. I'll mention them here in case someone finds this via Google:
1) For recurring events, Zimbra expects an instance organizer to be identical with the series' organizer, whereas Confluence happily assigns a different organizer to a single event instance (log message from mailbox.log after importing the ICS file: "instance ORGANIZER 'person_a@domain.org' should be same as main rule ORGANIZER 'person_b@domain.org'"). This prevented a few appointment instances from being imported into ZCS.
2) Confluence doesn't include the participation status ("PARTSTAT") field in the ICS file since it has no concept of invitations. However, Zimbra's Modern Web App crashes with an unhandled exception when it encounters an event for the currently logged-in user that doesn't have a participation status.

I had to write a small Python script that modifies the exported ICS file to work around both of these issues.
Zimbra's "icalmig" command-line tool doesn't seem to cover this, according to its help message.
Post Reply