I'm having a problem with using the exchange provider with rad scheduler. The load time for data is excessive on calendars, esp when they have many recurring events. I think the reason boils down to 2 things (please let me know if there's more...):
1. the size of the XML returned by EWS
2. the fact that the exchange provider requests all recurring events, regardless if they will actually have an instance within the date range or not.
1. the size of the XML returned by EWS:
In the GetCalendarItems() method in ExchangeSchedulerProvider, I changed BaseShape from AllProperties to Default, and added the following additional properties:
UnindexedFieldURIType.itemBody
UnindexedFieldURIType.calendarTimeZone
UnindexedFieldURIType.calendarRecurrence
UnindexedFieldURIType.calendarFirstOccurrence
UnindexedFieldURIType.calendarLastOccurrence
this *seems* to give radscheduler all that it needs, and the returned xml doc from EWS shrank from 2.6MB (!) to about 200K, for 124 records. This actually still seems kind of big to me, and I'm worried about scalability.
2. Exchange Provider requests all recurring events
It also looks like in the GetAppointments() method, the provider gets all "regular" events within the given timespan, as well as all recurring events:
Thinking about it, this kind of makes sense. How would we know if any given recurring event has a recurrence within a given timespan if we don't get all recurring masters, and then parse their recurrence rule, checking to see if there's an actual instance in the time we're looking at. However, this is hugely inefficient, and there must be a better way. In that example above, I'm getting 124 event records. But in that same example, I'm actually only displaying 2 of them (!). All the rest are recurring events that were set up way in the past (years sometimes), and whose recurrence has completed. And we use outlook web access here at work, where my calendars display correctly, and don't take seconds (or minutes) to load.
Could anyone offer assistance about how to improve the responsiveness of radscheduler with EWS, esp in the case of a calendar with many recurring events.
Thanks in advance
Jonathan
1. the size of the XML returned by EWS
2. the fact that the exchange provider requests all recurring events, regardless if they will actually have an instance within the date range or not.
1. the size of the XML returned by EWS:
In the GetCalendarItems() method in ExchangeSchedulerProvider, I changed BaseShape from AllProperties to Default, and added the following additional properties:
UnindexedFieldURIType.itemBody
UnindexedFieldURIType.calendarTimeZone
UnindexedFieldURIType.calendarRecurrence
UnindexedFieldURIType.calendarFirstOccurrence
UnindexedFieldURIType.calendarLastOccurrence
this *seems* to give radscheduler all that it needs, and the returned xml doc from EWS shrank from 2.6MB (!) to about 200K, for 124 records. This actually still seems kind of big to me, and I'm worried about scalability.
2. Exchange Provider requests all recurring events
It also looks like in the GetAppointments() method, the provider gets all "regular" events within the given timespan, as well as all recurring events:
if
((item.Start < owner.VisibleRangeEnd && item.End > owner.VisibleRangeStart) ||
item.CalendarItemType1 == CalendarItemTypeType.RecurringMaster)
{
itemIds.Add(item.ItemId);
}
Thinking about it, this kind of makes sense. How would we know if any given recurring event has a recurrence within a given timespan if we don't get all recurring masters, and then parse their recurrence rule, checking to see if there's an actual instance in the time we're looking at. However, this is hugely inefficient, and there must be a better way. In that example above, I'm getting 124 event records. But in that same example, I'm actually only displaying 2 of them (!). All the rest are recurring events that were set up way in the past (years sometimes), and whose recurrence has completed. And we use outlook web access here at work, where my calendars display correctly, and don't take seconds (or minutes) to load.
Could anyone offer assistance about how to improve the responsiveness of radscheduler with EWS, esp in the case of a calendar with many recurring events.
Thanks in advance
Jonathan