Question

Code block 1 below creates a recurring event, recurring every day, start date 3. May 2014
Code block 2: response OK
Code block 3: ask for first occurrence with that ID (Exchange starts counting at 1, not 0)
Code block 4: response: 1st occurrence is on 4. May ????? What is happening here (and how to fix)?

Create event:

<soapenv:Envelope
  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:typ="http://schemas.microsoft.com/exchange/services/2006/types"
  xmlns:mes="http://schemas.microsoft.com/exchange/services/2006/messages">
<soapenv:Header>
  <typ:RequestServerVersion Version="Exchange2007_SP1"/>
  <typ:MailboxCulture>en-US</typ:MailboxCulture>
  <typ:TimeZoneContext>
     <typ:TimeZoneDefinition Id="W. Europe Standard Time"/>
  </typ:TimeZoneContext>
</soapenv:Header>
<soapenv:Body>
   <mes:CreateItem SendMeetingInvitations="SendToNone">
      <mes:Items>
         <typ:CalendarItem>
           <typ:Subject>Random master event 24 for emp id 20652</typ:Subject>
           <typ:Body BodyType="Text">TEST recurring event</typ:Body>
           <typ:Categories>
             <typ:String>TimeTell</typ:String>
           </typ:Categories>
           <typ:ReminderIsSet>false</typ:ReminderIsSet>
           <typ:Start>2014-05-03T13:24:00.000+01:00</typ:Start>
           <typ:End>2014-05-03T17:25:00.000+01:00</typ:End>
           <typ:IsAllDayEvent>false</typ:IsAllDayEvent>
           <typ:LegacyFreeBusyStatus>Busy</typ:LegacyFreeBusyStatus>
           <typ:Location>Here</typ:Location>
           <typ:Recurrence>
             <typ:DailyRecurrence>
               <typ:Interval>1</typ:Interval>
             </typ:DailyRecurrence>
             <typ:NumberedRecurrence>
               <typ:StartDate>2014-05-03Z</typ:StartDate>
               <typ:NumberOfOccurrences>27</typ:NumberOfOccurrences>
             </typ:NumberedRecurrence>
           </typ:Recurrence>
           <typ:MeetingTimeZone TimeZoneName="W. Europe Standard Time"/>
         </typ:CalendarItem>
      </mes:Items>
   </mes:CreateItem>
</soapenv:Body>
</soapenv:Envelope>

Response:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Header>
      <h:ServerVersionInfo MajorVersion="15" MinorVersion="0" MajorBuildNumber="516" MinorBuildNumber="29" Version="Exchange2013" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
   </s:Header>
   <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <m:CreateItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
         <m:ResponseMessages>
            <m:CreateItemResponseMessage ResponseClass="Success">
               <m:ResponseCode>NoError</m:ResponseCode>
               <m:Items>
                  <t:CalendarItem>
                     <t:ItemId Id="AAMkAG[snip]Kf/fBAAA=" ChangeKey="DwAAABYAAAC4CIO9P6hbQ7Rh7x62oA4/AACKhInU"/>
                  </t:CalendarItem>
               </m:Items>
            </m:CreateItemResponseMessage>
         </m:ResponseMessages>
      </m:CreateItemResponse>
   </s:Body>
</s:Envelope>

Find occurrence 1:

<soapenv:Envelope
  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:typ="http://schemas.microsoft.com/exchange/services/2006/types"
  xmlns:mes="http://schemas.microsoft.com/exchange/services/2006/messages">
<soapenv:Header>
  <typ:RequestServerVersion Version="Exchange2007_SP1"/>
  <typ:MailboxCulture>en-US</typ:MailboxCulture>
  <typ:TimeZoneContext>
     <typ:TimeZoneDefinition Id="W. Europe Standard Time"/>
  </typ:TimeZoneContext>
</soapenv:Header>
<soapenv:Body>
<mes:GetItem>
   <mes:ItemShape>
      <typ:BaseShape>IdOnly</typ:BaseShape>
      <typ:AdditionalProperties>
         <typ:FieldURI FieldURI="calendar:Start" />
      </typ:AdditionalProperties>
   </mes:ItemShape>
   <mes:ItemIds>
      <typ:OccurrenceItemId RecurringMasterId="AAMkAG[snip]Kf/fBAAA=" InstanceIndex="1"/>
   </mes:ItemIds>
</mes:GetItem>
</soapenv:Body>
</soapenv:Envelope>

Response:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Header>
      <h:ServerVersionInfo MajorVersion="15" MinorVersion="0" MajorBuildNumber="516" MinorBuildNumber="29" Version="Exchange2013" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
   </s:Header>
   <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <m:GetItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
         <m:ResponseMessages>
            <m:GetItemResponseMessage ResponseClass="Success">
               <m:ResponseCode>NoError</m:ResponseCode>
               <m:Items>
                  <t:CalendarItem>
                     <t:ItemId Id="AAMkAGFkYTBkM2UxLTkyYTctNDA1NC05MGY3LWJkMzQ4MWQwNjAyMQFRAAgI0TVC7TkAAEYAAAAAhhvKZmdnRkCUOsqdWWjc9wcAuAiDvT+oW0O0Ye8etqAOPwAAAAAADwAAuAiDvT+oW0O0Ye8etqAOPwAAin/3wQAAEA==" ChangeKey="DwAAABYAAAC4CIO9P6hbQ7Rh7x62oA4/AACKhInU"/>
                     <t:Start>2014-05-04T12:24:00Z</t:Start>
                  </t:CalendarItem>
               </m:Items>
            </m:GetItemResponseMessage>
         </m:ResponseMessages>
      </m:GetItemResponse>
   </s:Body>
</s:Envelope>

This is done with SOAPUI talking against Exchange 2013 or Exchange 2010

Here's an Outlook screen shot confirming the start at 4. May:

enter image description here

Additional tests: - Creating with a NoEndRecurrence or EndDateRecurrence also fails:

<typ:NoEndRecurrence>
  <typ:StartDate>2014-05-03Z</typ:StartDate>
</typ:NoEndRecurrence>

<typ:EndDateRecurrence>
  <typ:StartDate>2014-05-03Z</typ:StartDate>
  <typ:EndDate>2014-06-03Z</typ:EndDate>
</typ:EndDateRecurrence>
Was it helpful?

Solution

Your create call is creating the event in dd-mm-yyyZ, which is in Zulu time (a.k.a. UTC). If you're actually in a different timezone, that can skew your events by a day in either direction.

EWS and timezones (timezones in general) can be very confusing. When connecting to EWS using the Managed EWS library you can specify the Timezone you're in, that way, when you supply any dates, you don't have to constantly keep this in mind.

Also remember that certain timezones start/end their daylight savings time on different date (or don't have daylight savings at all (Arizona)). This can even move certain appointments by 1 hour in a short timewindow each year.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top