Ok, I think I've beat my head against this long enough now, maybe someone here can shed some improved light on this issue.

We just migrated to Zimbra, and I asked most users to re-enter their Scheduling info manually to make sure that everything gets set up properly, but this wasn't feasible for our CEO (who has a VERY dense schedule). He did have his calendar already on his mobile device, and it happily injected all of his appointments into Zimbra when it synchronized.

The problems are:
1) Shared events are now only on his calendar and no longer exist on any of the other attendees calendars.
2) When he deletes one of these local copies of an event (because it's been duplicated by the original meeting originator re-scheduling it), it sends email to all the former attendees telling them the meeting was cancelled.

I've been trying to come up with a script to help repair these issues using REST, but am having some difficulty, probably due to an incomplete understanding of iCal format. (I've been rewriting the dumped .ics and re-submitting it).

I do appear to be able to remove the attendees from an event by deleting them from the ics file and POSTing it, which prevents the subsequent onslaught of email, but I have not been able to figure out how to manually delete an event.

I've also tried adding the attendees to an event by submitting the event to their calendars, but the resulting entry doesn't come out quite right... they can still accept/decline the meeting as expected, but they also have the option to delete the meeting and it doesn't appear to be properly "hooked up" to the original. What's the secret to add attendees (through REST) such that they actually end up invited?

Tip: It appears that you need to omit the ORGANIZER: line from your ical file when updating an event in order to prevent an error like this one:
javax.servlet.ServletException: invalid request: Changing organizer of an appointment/task to another user is not allowed: old=bob@example.com, new=bob@example.com