1

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 (?).

John Saunders
  • 160,644
  • 26
  • 247
  • 397
hko
  • 923
  • 9
  • 17
  • Not sure that I understand the problem... to create a Meeting you already must have an Account... when you delete the Meeting from the same Account that created it (i.e. the "Owner" of the Meeting) you have the needed permissions ? – Yahia Dec 28 '11 at 15:13
  • nope.. I delete the meeting from the account, _but_ I also want to delete the appointment from the invited accounts - these appointments would say "meeting cancelled", but that's not visible in Outlook 2003 7days-weekview. The customer wants cleanup of all meetings, once a meeting is deleted, as everything is an automated process. – hko Dec 29 '11 at 08:37
  • Please don't add "(C#)" to your title. That's what the tags are for. – John Saunders Dec 29 '11 at 18:49
  • ok, thought about that, good to know – hko Dec 30 '11 at 08:18

2 Answers2

0

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);
SliverNinja - MSFT
  • 31,051
  • 11
  • 110
  • 173
  • I _do_ send meeting cancellation notification via IndependentSoft component. Unfortunately the customer doesn't care about poor etiquette, as it's his meeting invitations. ;) It is an automated process, and he wants consitent information in the weekly view: if some invitation doesn't exist on the "main" account, there shouldn't be other appointments lingering around. – hko Dec 29 '11 at 08:39
  • And btw: all arguments how something "should" behave are mood anyway: I should be able to do things with an API I can also do manually. And I _can_ delete the other appointments manually given the access rights to the other calenders (level6+) which would be feasible for one "master" account. And I _can_ do that with IndependentSoft component, but I need the Appointment addresses in other calenders to do this, without using other credentials. – hko Dec 29 '11 at 08:58
  • @hko - Thanks for the clarification regarding usage of this feature. See the updated answer. – SliverNinja - MSFT Dec 29 '11 at 18:34
  • Sorry, I know EWS and that doesn't work: EWS only supports Exchange 2007SP1 and up. Exchange 2003 only supports WebDav (definitely no webservice)., and that's what the IndependentSoft componenent is using. – hko Dec 30 '11 at 08:20
  • And even if it did work: I need the "ItemId" (in Webdav terms it would be the "address") of the appointment, that is my whole problem. It seems I only get that (via IndependentSoft component) when I have mailbox rights wo query all appointments; problem is: I don't (and I shouldn't have to, as manually I don't need to to see calender entries of others). – hko Dec 30 '11 at 08:31
  • @hko - sorry, I didn't realize EWS was 2007SP1+. I would contact *IndependentSoft* with a support case. Otherwise, look at upgrading your Exchange Server to something with more capabilities. – SliverNinja - MSFT Dec 30 '11 at 14:42
0

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.

hko
  • 923
  • 9
  • 17