I am using the Microsoft EWS Java API to create and accept appointments on behalf of some users. The way I am doing this is by sending the meeting request and then setting up inbox watchers on the recipient's inbox and accepting the incoming MeetingRequest
item:
import microsoft.exchange.webservices.data.core.service.item.MeetingRequest;
void accept(MeetingRequest request) {
assert(!request.getIsOutOfDate());
request.accept(false);
}
However, I get this error when I try to accept the meeting request:
microsoft.exchange.webservices.data.core.exception.service.remote.ServiceResponseException: The meeting request is out of date. The calendar couldn't be updated.
at microsoft.exchange.webservices.data.core.response.ServiceResponse.internalThrowIfNecessary(ServiceResponse.java:278)
at microsoft.exchange.webservices.data.core.response.ServiceResponse.throwIfNecessary(ServiceResponse.java:267)
at microsoft.exchange.webservices.data.core.request.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:165)
at microsoft.exchange.webservices.data.core.ExchangeService.internalCreateResponseObject(ExchangeService.java:270)
at microsoft.exchange.webservices.data.core.service.response.ResponseObject.internalCreate(ResponseObject.java:120)
at microsoft.exchange.webservices.data.core.service.response.CalendarResponseMessageBase.calendarSave(CalendarResponseMessageBase.java:98)
at microsoft.exchange.webservices.data.core.service.item.MeetingRequest.internalAccept(MeetingRequest.java:218)
at microsoft.exchange.webservices.data.core.service.item.MeetingRequest.accept(MeetingRequest.java:184)
This corresponds to this error: ErrorMeetingRequestIsOutOfDate
. I looked at MSDN for this error and could not find why this error might be happening to me.
What am I doing wrong?
You can use the Microsoft Exchange Web Services (EWS) Managed API to update appointments and meeting requests. This topic covers the basic scenarios for updating appointments and meeting requests. Some advanced scenarios might require that you update the time zone of appointments and meeting requests.
The request and response XML in the following examples correspond to calls made by the EWS Managed API code in Create an appointment by using the EWS Managed API. The request and response XML that verifies that the appointment items are in the calendar folder are shown as well.
If the meeting organizer updates a meeting, changes to the meeting will be reflected on his or her calendar and an updated meeting request will be sent to attendees as specified by the Update method that is used to update the meeting.
A meeting request is just an appointment that has attendees. You can convert an appointment into a meeting request by adding required attendees, optional attendees, or resources to the appointment, as shown in the following example. Save the updated appointment or meeting request.
Speaking strictly from the Outlook client end of the question here is a list of (albeit outdated) potentially useful reasons why that error would be generated.
https://support.microsoft.com/en-us/kb/899704
Repeat events, where the initial event is in the past is a common scenario (most common to my experience) when the whole process is manual (i.e. a new attendee added after the first repeated event) though there are several more in the list that may apply here.
Edit - I mention the repeats here as a potential trip up for your code. Does the getIsOutOfDate() check the current event or the initial start of the pattern...
The MSKB is littered with this as an ongoing issue, both programmatically and scenarios simply from the Outlook client GUI.
Edit again - That is to say, you aren't doing anything wrong programmatically, there long and frustrating history from the front end as well. You may need to trap more than just ErrorCalendarMeetingRequestIsOutOfDate to avoid it.
http://www.experts-exchange.com/questions/24578557/This-Request-is-Out-of-Date.html
(sorry number of links limited by my profile)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With