Question

I use the IndependentSoft Component and was wondering in what way (with this component or any other API) I could mimic what I can also do manually:

After creating a meeting request and invite some Account B, I delete the meeting created by me, which leaves the appointments of the invited intact. I can now (given high enough access level to calendar of other account, I think it's level 6) delete this appointment manually, and that's what the customer wants.

Now, I can't seem to use IndependentSoft component for this, as I would need a mailbox for getting the appointment, but I lack the mailbox rights to do so, and I don't see any other way to get the address of the appointment (?).

Was it helpful?

Solution 2

I found the answer.. and it wasn't hard at all, I was just smitten with blindness.

So the IndependentSoft resource.GetAppointments has an overload which takes just an address, so you just take your mailbox.Calendar address (e.g. "http://sub.exchangedomain.com/emailalias/calendar"), switch out your emailalias with the one you want to access (e.g. "http://sub.exchangedomain.com/otheremailalias/calendar"), and that's it.. with standard security settings, you can now see calendar entries of this account on an exchange 2003 server. Now, if you want to delete an appointment, you just use resource.Delete(appointment) on any of the appointments you got. The account has to give you rights to do so, of course.

Sometimes it's that simple, you just don't see/ignore/misunderstand a simple signature.

OTHER TIPS

It is poor etiquette to cancel a meeting without notifying the users that were invited. You are better off following best practices and just sending a meeting cancellation notification.

View IndependentSoft documentation on how to cancel a meeting.


Since you do need to delete the appointment - you need an account that has been delegated to manipulate another users account to delete an appointment. I'd recommend you use the EWS Managed API and perform a delete appointment action.

Appointment appointment = Appointment.Bind(service, new ItemId("AAMkA="));
appointment.Delete(DeleteMode.MoveToDeletedItems);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top