What’s new for EWS in Exchange 2010 SP2?

The Exchange 2010 SP2 Web Services SDK was released in October but Exchange 2010 SP2 was only recently made available for download earlier this month. With the update to the SDK, there's the common section detailing What's New in the SDK. While this information is very helpful, I felt the need to aggregate and summarize what's there so that I could get a better understanding of the changes.

For the benefit of the rest of the world, I've shared my notes below...

New Exchange2010_SP2 RequestServerVersion value. Obviously, there's a new schema version value which must be requested to take advantage of the changes outlined below.

ConvertId, GetUserOofSettings, SetUserOofSettings, and GetUserAvailability now support impersonation.   GetUserOofSettings and SetUserOofSettings support for impersonation might have been added in a previous rollup update to Exchange 2010 SP1 but ConvertId and GetUserAvailability support for impersonation is new to SP2.

GetPasswordExpirationDate operation added.   Pass an email address and get back a date indicating when the user's current password will expire.

FindItem and GetItem get a new SOAP header, DateTimePrecision.   This allows you to request that you would like the millisecond values returned in DateTime property values. By default, EWS does not return milliseconds with DateTime values - it always returns zeroed out milliseconds. Unless you really need millisecond precision in some use case, I wouldn't recommend using this level of precision.

StoreEntryId element added to Item schema.   This new schema property maps to PidTagStoreEntryId and could be used for interoperability with MAPI code. It could also be used to determine which items came from the same mailbox.

New elements added to the contacts schema:

  • Alias - Contact's alias from AD
  • DirectoryId - This is the GUID or DN identifying the AD user object
  • DirectReports - An array of Mailbox elements for each direct report of the contact
  • ManagerMailbox - A Mailbox element for the contact's manager
  • MSExchangeCertificate - userCertificate attribute on AD user object
  • Notes - Returns the info attribute of the AD user object
  • PhoneticFullName - Returns the msDS-PhoneticDisplayName attribute of the AD user object which would be used to phonetic pronounce the contact's display name by a speech system. For example, my full name is "Matt Stehle" but by phonetic full name would be "Matt Steel" to make sure Lync or some other system doesn't butcher the pronunciation of my last name.
  • PhoneticFirstName - Returns the msDS-PhoneticFirstName attribute of the AD user object.
  • PhoneticLastName - Returns the msDS-PhonecticLastName attribute of the AD user object.
  • Photo - A byte array of the photo property of the AD user object.
  • UserSMIMECertificate - Returns the userSMIMECertificate attribute of the AD user object.
  • ProxyPartnerToken - This is only used internally right now.

IsArchive added to AlternateIdType.   Enables support for ConvertId with archive mailboxes.

NoForward added to DeliverMeetingRequestsType.   This means that meeting items will NOT be forwarded to the delegate.

ErrorAttachmentNestLevelLimitExceeded error code added.   Error thrown if an item has attachments nested one past the allowed max for EWS (currently this limit is 10).

ContactDataShape added to ResolveNames.   Same type as the shapes used in FindItem, GetItem, etc. - AllProperties, Default, IdOnly. Only affects the ContactData returned so if ReturnFullContactData is set to false then this element does nothing. IdOnly returns only the mailbox data and DirectoryId.

IsAssociated added to the UploadItemType.   Enables uploading streams to the associated contents of a folder.