I am sync my outlook calender with my application through ews and also other appointments that are not created by me.
The issue is , I am updating outlook calendar from my application. When I try to update other appointments that are not created by me are throwing error.
Is there way in ews to update those appointments? Since outlook have an option to update(save & close ) the appointments ?
Please advice on this
No as that breaks the business logic eg an attendee can't update a Meeting organised by somebody else. You need to create a Meeting update from the Organiser copy of the appointment and then accept that on the user behalf https://msdn.microsoft.com/en-us/library/office/dd633648(v=exchg.80).aspx if you want to maintain the attendees Calendars integrity.
Related
While creating an event in the outlook calendar, I want to add multiple calendars of the same mailbox in the event. I am not able to find any way of doing this.
I am using MS Graph for creating events on the calendar.
Please help me with this. Thanks in advance.
You can use Create event API to create a new event in a calendar. But you need to note that the calendar can be one for a user, or the default calendar of a Microsoft 365 group; it's not for the calendar group - so you can't add multiple calendars. Here's the doc.
I'm trying to cancel a meeting I created by using an EWS XML CreateItem request (against a 2013 server):
<ns2:CreateItem MessageDisposition="SendAndSaveCopy"><ns2:Items>
<ns1:CancelCalendarItem>
<ns1:ReferenceItemId Id="AAMkA...." ChangeKey="DwAAA..."/>
</ns1:CancelCalendarItem>
</ns2:Items></ns2:CreateItem>
So far so good, however Outlook denies me access with the ResponseCode "ErrorCalendarIsNotOrganizer" / "User must be an organizer for CancelCalendarItem action".
A look in the event detail by using GetItem with BaseShape=ALL_PROPERTIES reveals that the account I use is set as Organizer, however at the same time:
the IsOrganizer field is set to false
in EffectiveRights the fields Read, Modify and Delete are true.
I can delete the appointment lateron using a DeleteItem request and it works, however it only removes the appointment from the room's calendar but not from the mailboxes of the attendees.
What causes this? There is no impersonation in use, only the service account I use has delegation access to every room mailbox (to be able to see all appointments).
I can delete the appointment lateron using a DeleteItem request and it works, however it only removes the appointment from the room's calendar but not from the mailboxes of the attendees.
It sounds like your accessing the appointment in the Room Mailboxes calendar ? this is why even if your using the account that is the organizer of that appointment the isOrganizer will return as false because this property is only true on the copy of the Appointment in the Organizers calendar. To correctly cancel the meeting you need to do that on the calendar of the Organizer (not the rooms or any attendee instance of the meeting). This will still only delete the appointment in the organizer calendar and send cancellation messages to the attendees.
An important point is that all instances of the meeting stored in the Attendees and Meeting Room calendars are separate Exchange Store items with no direct link. So deleting the organizer instance (or any attendee instance) has no affect on the other attendees instances these must be processed separately by the attendees themselves based on the cancellation message that is received.
I want to allow users of my site to schedule an appointment with other users. Once both users agree on the date and time it will update both their calendars to show this (assuming they are authenticated).
Is this possible or is the Calendar api simply for updating one calendar as an authorized user?
Thanks in advance!
As long as the user / users you are updating calendars for have both authenticated your application yes you can add events to their calendars.
A few things to note I the beginning. There is a difference between a calendar list and a calendar. Calendar list is the list on the left hand side of all of the calendars a user has. A user can have more then one calendar so be sure to ask the users which calendar they will want to add the event to.
The problem that I face: I currently use a product that displays calendar items on an iPad outside of conference rooms. I have all the room resources set up and everything works brilliantly except if I try to end the event early from this display.
The reason it doesn't end: When User A schedules a meeting and adds the room Conference Room as a resource, and Conference Room accepts, the meeting is still owned by the organizer, or in this case User A. Because of this, the room itself can not edit times on an event, only the organizer can.
The question: Is there any way, to have the Room auto accept the meeting, and also be able to edit the event?
Please note, I have tried this with Exchange 2007, Exchange 2010, Exchange 2013, and Office 365. The servers have been both on-premises and hosted.
No the only valid editor of a Meeting is the organizer for the reason that each copy of the meeting stored in the Attendees mailboxes is a separate item in the Exchange Mailstore. Eg Even if the Organizer modifies the appointment and doesn't send out Meeting updates the changes they make won't show on the attendees (or Room Mailbox) calendar until the updates are sent and accepted. This is fundamental to the way in which Appointments work if you need to change a meeting for some reason you may want to look at impersonating the Owner of the Appointment in EWS. The one thing the Room mailbox (or any attendee) could do is propose a new meeting time which would be a separate message that would sent back to the Organizer who then once they accepted would send out a normal Meeting update to all attendees.
Cheers
Glen
I have a web application which has a calendar, and I want to allow that calendar to be sync'd with an Exchange server.
I've written code to create appointments on an Exchange server directly in a user's calendar using webDAV. I save the appointment locations (URLs) so I can update the appointments in outlook if something changes in my application.
I'm trying to write an add-in for Outlook that lets a user send their appointment to my web application. In order to save it though (and allow updates in my application to propagate back to Exchange) I need to figure out what the appointment location (URL) is in WebDAV.
Is there any way to get the WebDAV URL of the appointment from within Outlook? I'm using VSTO for my outlook add-in.
Thanks for the help guys!
This question helped considerably:
How to use WebDav to match dav:href to Outolook Interop href value
And this website was interesting too:
http://www.infinitec.de/post/2007/03/Constructing-OWA-2007-item-ids-from-WebDAV-items.aspx