none
[E2013][EWS-XML][EWSTOOL] Calendar item body not visible in outlook

    Question

  • Hi, after upgrading to Exchange 2013 SP1 we experience the issue that appointments created using EWS by our ERP application don't show the body in Outlook 2010/2013. The appointment body is only visible in OWA or on Active Sync devices. Outlook just shows an empty body text. When openening the appointment in OWA and editting the body text, by placing a '.' at the end for example, then the body text is visible in outlook again. This worked fine in CU3 and earlier.

    I created a repro scenario using the EWSEditor tool:

    https://ewseditor.codeplex.com/

    Create an appointment using EWS. Below the request I've sent to Exchange EWS. It creates an appointment on Saturday, March 8th from 22:00 to 23:00 with the following text in the body: ‘Plan the agenda for next week's meeting.’. The request is successful and the appointment is being created. However, the body text is only visible in Outlook Web App, not in Outlook. 

    I reproduced this issue in our lab also, so it’s not specific to our production Exchange server, but seems to be a general SP1 issue.

    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
      <soap:Body>
        <CreateItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"
                    xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
                    SendMeetingInvitations="SendToAllAndSaveCopy" >
          <SavedItemFolderId>
            <t:DistinguishedFolderId Id="calendar"/>
          </SavedItemFolderId>
          <Items>
            <t:CalendarItem xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
              <Subject>Planning Meeting</Subject>
              <Body BodyType="Text">Plan the agenda for next week's meeting.</Body>
              <ReminderIsSet>true</ReminderIsSet>
              <ReminderMinutesBeforeStart>15</ReminderMinutesBeforeStart>
              <Start>2014-03-08T22:00:00</Start>
              <End>2014-03-08T23:00:00</End>
              <IsAllDayEvent>false</IsAllDayEvent>
              <LegacyFreeBusyStatus>Busy</LegacyFreeBusyStatus>
              <Location>Conference Room 721</Location>
            </t:CalendarItem>
          </Items>
        </CreateItem>
      </soap:Body>
    </soap:Envelope>

    Frank.

    Saturday, March 8, 2014 8:40 PM

Answers

  • Exchange 2013 CU6 just has been released. I installed it in my lab and guess what... the issue in this thread is resolved now!

    So it's not an Outlook issue after all, I already mentioned that in this thread earlier and it was confirmed by the MS Engineer I was working with on this support case.

    So in contradiction to what Gabriel states, you don't need an Office update to fix this issue. CU6 for Exchange 2013 solves it. However, due to the track record of CU's I would advice to hold back taking it into production for several days.

    Frank.

    • Marked as answer by FrankWater Tuesday, August 26, 2014 8:43 PM
    • Unmarked as answer by FrankWater Tuesday, August 26, 2014 8:44 PM
    • Proposed as answer by Daniel Be Thursday, September 4, 2014 10:12 AM
    • Marked as answer by FrankWater Thursday, September 4, 2014 10:42 AM
    Tuesday, August 26, 2014 8:43 PM

All replies

  • Hi,

    have you tried setting the body as "Html". In your request, you have set BodyType to "Text".

    Regards,


    Désiré GOVIN Refresh IT Solutions

    Monday, March 10, 2014 10:27 AM
  • Setting the body text to HTML indeed works. But that doesn't explain why OWA and the mobile devices do show the text when it was created as 'Text'. Also, pre-SP1 this worked fine and I can't alter our ERP application that it should use HTML instead of Text now.

    Frank.


    • Edited by FrankWater Monday, March 10, 2014 3:25 PM
    Monday, March 10, 2014 3:23 PM
  • Hello,

    I'm also facing a similar issue. 

    Thanks,
    Sony


    SONY ABRAHAM

    Thursday, May 8, 2014 7:56 AM
  • I openend a support case for this. It was confirmed to be a bug in SP1. Still waiting for a fix. Frank
    Thursday, May 8, 2014 8:00 AM
  • Thanks for the update Frank.

    Regards,
    Sony Abraham


    SONY ABRAHAM

    Thursday, May 8, 2014 9:08 AM
  • I'm also experiencing the same issue in our environment.  The CRM Application works by creating the appointment.  However, the body is only visible from OWA or via an ActiveSync Device.  Appending a . (dot) to the end in either OWA or ActiveSync makes it visible in Outlook. I'd be curious about a fix, hopefully before CU5's release ... whenever that is.

    Thank your for the update Frank.

    Ken Critser

    Monday, May 12, 2014 11:19 PM
  • I am experiencing the same problem. Any news on a fix?
    Monday, May 26, 2014 11:40 AM
  • CU5 is out. Tested it in our lab, but the issue isn't fixed :-(
    Thursday, May 29, 2014 2:03 PM
  • Still working with MS support on this. Findings so far: With CU3 everything is fine. With SP1 and CU5 it only works when outlook is in cached exchange mode. The body text is visible then. When switching to online mode, the body text is not shown.
    Friday, June 6, 2014 8:35 AM
  • Same problem here: Notes in appointments synced per ActiveSync / CU5 are not visible in online mode Outlook but always in OWA / cached mode Outlook.

    So http://support.microsoft.com/kb/2862739 seems not to be the only bug of this kind (Missing Notes, Outlook receives text NDRs in online mode but the correct HTML format in cached mode, ...)

    Tuesday, June 17, 2014 8:22 PM
  • Hi there Frank, I was just looking for the ID of the support case you referenced.  Would you be able to share out the last 5 digits so I can find it?

    Thanks

    JJ Streicher-Bremer

    Wednesday, June 25, 2014 8:48 PM
  • Hi,

    Full description for the case is: [REG:114030711243824]XCSI|PRO|E2K13|Appointment details don't show up in Outlook

    During the case, it was confirmed to be a problem with SP1 (CU4) and CU5. In CU3 it works fine. According to the engineer it should be fixed in CU6, since Office365 doesn't exhibit this behaviour at the moment.

    He stated that the build of Office365 he tested it against (and where it was working fine), is the build that's being used for CU6.

    However, CU6 is due out in september/october, until then there's no fix for it.

    Frank.

    Wednesday, June 25, 2014 8:56 PM
  • I got our developers change the body type to HTML. Still it doesn't work.

    Our code is java

    @@ -238,21 +238,21 @@ public class WebServiceExchInteractor extends ExchangeInteractor
                    logger.debug("Sending new meeting request using exchange web services. Meeting Item = " + item.toString());
                    
                    boolean errorOccurred = false;
                    try
             {
                    CalendarItemType calendarItemObj = CalendarItemType.Factory.newInstance();
                        
                        //Setting subject and body of the meeting
                    calendarItemObj.setSubject(item.getSubject());
                        BodyType bodyObj = BodyType.Factory.newInstance();
    +                   bodyObj.setBodyType(BodyTypeType.HTML);
                        bodyObj.setStringValue(item.getBody());
                        calendarItemObj.setBody(bodyObj);
                        
                        //setting the attendees
                        calendarItemObj.setRequiredAttendees(constructArrayOfAttendeesType(item.getAttendees()));
                        
                        //Setting the Meeting time and reminder properties
                        calendarItemObj.setReminderIsSet(item.isReminder());
                        calendarItemObj.setReminderMinutesBeforeStart(ExchangeConstants.DEFAULT_FREE_BUSY_INTERVAL);
                        
    @@ -439,21 +439,21 @@ public class WebServiceExchInteractor extends ExchangeInteractor
                            
                            itemFieldChangesArray[3] = SetItemFieldType.Factory.newInstance();
                            itemFieldChangesArray[3].setItem(calendarItemObj);
                            PathToUnindexedFieldType pathToSubjectObj = PathToUnindexedFieldType.Factory.newInstance();
                            pathToSubjectObj.setFieldURI(UnindexedFieldURIType.ITEM_SUBJECT);
                            itemFieldChangesArray[3].setPath(pathToSubjectObj);                     
                            
                            //Setting the path to body
                            calendarItemObj = CalendarItemType.Factory.newInstance();
                            BodyType bodyObj = BodyType.Factory.newInstance();
    +                       bodyObj.setBodyType(BodyTypeType.HTML);
                            bodyObj.setStringValue(item.getBody());
                            calendarItemObj.setBody(bodyObj);
                            
                            itemFieldChangesArray[4] = SetItemFieldType.Factory.newInstance();
                            itemFieldChangesArray[4].setCalendarItem(calendarItemObj);
                            PathToUnindexedFieldType pathToBodyObj = PathToUnindexedFieldType.Factory.newInstance();
                            pathToBodyObj.setFieldURI(UnindexedFieldURIType.ITEM_BODY);
                            itemFieldChangesArray[4].setPath(pathToBodyObj);
                            
                            //Setting the path to attendees
    @@ -642,21 +642,21 @@ public class WebServiceExchInteractor extends ExchangeInteractor
             ItemIdType[] itemIdDetails = new ItemIdType[1];
             itemIdDetails[0] = ItemIdType.Factory.newInstance(); 
             itemIdDetails[0].setId(itemId);
             
             NonEmptyArrayOfBaseItemIdsType itemIdObj = NonEmptyArrayOfBaseItemIdsType.Factory.newInstance();
             itemIdObj.setItemIdArray(itemIdDetails);
             getCalendaritem.setItemIds(itemIdObj);
             
             //Setting the response properties required from server
             ItemResponseShapeType responseDetails = ItemResponseShapeType.Factory.newInstance();
    +        responseDetails.setBodyType(BodyTypeResponseType.HTML);
             responseDetails.setBaseShape(DefaultShapeNamesType.ALL_PROPERTIES);
             
             PathToUnindexedFieldType uidView = PathToUnindexedFieldType.Factory.newInstance();
             uidView.setFieldURI(UnindexedFieldURIType.CALENDAR_UID);
             BasePathToElementType[] pathArray = new BasePathToElementType[1];
             pathArray[0] = uidView;
             NonEmptyArrayOfPathsToElementType additionalProperties = NonEmptyArrayOfPathsToElementType.Factory.newInstance();
             additionalProperties.setPathArray(pathArray);
             responseDetails.setAdditionalProperties(additionalProperties);
             getCalendaritem.setItemShape(responseDetails);
    @@ -710,21 +710,21 @@ public class WebServiceExchInteractor extends ExchangeInteractor
                itemIdDetails[0] = ItemIdType.Factory.newInstance(); 
                itemIdDetails[0].setId(itemId);
                itemIdDetails[0].setChangeKey(changeKey);
                
                NonEmptyArrayOfBaseItemIdsType itemIdObj = NonEmptyArrayOfBaseItemIdsType.Factory.newInstance();
                itemIdObj.setItemIdArray(itemIdDetails);
                getCalendaritem.setItemIds(itemIdObj);
                
                //Setting the response properties required from server
                ItemResponseShapeType responseDetails = ItemResponseShapeType.Factory.newInstance();
    +           responseDetails.setBodyType(BodyTypeResponseType.HTML);
                responseDetails.setBaseShape(DefaultShapeNamesType.ALL_PROPERTIES);
             
             PathToUnindexedFieldType uidView = PathToUnindexedFieldType.Factory.newInstance();
             uidView.setFieldURI(UnindexedFieldURIType.CALENDAR_UID);
             BasePathToElementType[] pathArray = new BasePathToElementType[1];
             pathArray[0] = uidView;
             NonEmptyArrayOfPathsToElementType additionalProperties = NonEmptyArrayOfPathsToElementType.Factory.newInstance();
             additionalProperties.setPathArray(pathArray);
             responseDetails.setAdditionalProperties(additionalProperties);
                getCalendaritem.setItemShape(responseDetails);


    SONY ABRAHAM

    Friday, June 27, 2014 8:57 AM
  • If MS is only planning to fix this in CU6. Its a big minus for me. I was planning to deploy Exchange 2013 in the next 1-2 months.

    I guess I'll also open a case with MS. To report the issue and tell how this affecting our migration plans.


    SONY ABRAHAM

    Friday, June 27, 2014 9:00 AM
  • Just to provide an update, the Outlook Team has the fix for this issue scheduled for the September 9th Public Update. 
    Tuesday, July 22, 2014 9:05 PM
  • So it's confirmed to be an Outlook issue instead of an Exchange issue? if it's an Outlook issue will there be a fix for Outlook 2010 as wel as Outlook 2013?



    • Edited by FrankWater Tuesday, July 22, 2014 9:18 PM
    Tuesday, July 22, 2014 9:11 PM
  • Sorry, I should have been more specific.  The issue is being fixed by the Outlook Team and both the Outlook 2010 and Outlook 2013 fixes are planned for the September 9th Public Update. 
    Tuesday, July 22, 2014 9:20 PM
  • Thanks for the update. Is there an interim fix avalaible that we can use until that time? Since we are dealing with this issue for several months now and still have 2 months to go for the public fix.
    Tuesday, July 22, 2014 9:23 PM
  • Office does not have interim fixes so unfortunately we have to wait for September 9th.
    Tuesday, July 22, 2014 9:49 PM
  • Exchange 2013 CU6 just has been released. I installed it in my lab and guess what... the issue in this thread is resolved now!

    So it's not an Outlook issue after all, I already mentioned that in this thread earlier and it was confirmed by the MS Engineer I was working with on this support case.

    So in contradiction to what Gabriel states, you don't need an Office update to fix this issue. CU6 for Exchange 2013 solves it. However, due to the track record of CU's I would advice to hold back taking it into production for several days.

    Frank.

    • Marked as answer by FrankWater Tuesday, August 26, 2014 8:43 PM
    • Unmarked as answer by FrankWater Tuesday, August 26, 2014 8:44 PM
    • Proposed as answer by Daniel Be Thursday, September 4, 2014 10:12 AM
    • Marked as answer by FrankWater Thursday, September 4, 2014 10:42 AM
    Tuesday, August 26, 2014 8:43 PM
  • Thanks for the confirmation Frank.  There are bugs fixed in both the client and server so please make sure to keep both up to date. 
    Tuesday, August 26, 2014 8:59 PM
  • Hi Gabriel,

    I always do, but it's not quite clear to me why you mentioned that a fix for Outlook solves the issue where it's now confirmed that it's a server-side issue. Can you clarify?

    Frank.


    • Edited by FrankWater Tuesday, August 26, 2014 9:06 PM
    Tuesday, August 26, 2014 9:04 PM
  • Frank,

    Outlook has a hotfix escalation with the same issue (message body empty).  That fix has not shipped yet so there are possibly scenarios where not every case is addressed.  The Outlook fix schedule has changed so I will need to update later when I find out it will go out. 

    Tuesday, August 26, 2014 9:28 PM
  • Yup. This works for me too.  CU6 fixes it.

    Thanks,
    Sony



    SONY ABRAHAM

    Thursday, September 4, 2014 10:26 AM
  • During researching a missing display of Cc receivers in a sent mail (Outlook 2010 / CU6, preview + printing are missing the line, open message does display the Cc receivers) I realized one more difference in online vs. cached mode. After switching to cached mode the Ccs are displayed in all views.

    So to be safe, Outlook should be used in cached mode.

    Daniel

    Monday, September 22, 2014 5:52 PM