EWS: RemoveExtendedProperty throws error when used on an occurrence of a recurring appointment

Posted by flyfishnjake on Stack Overflow See other posts from Stack Overflow or by flyfishnjake
Published on 2012-06-21T19:27:06Z Indexed on 2012/06/22 15:16 UTC
Read the original article Hit count: 645

I am developing an application that syncs an exchange calendar to another calendar. I put extended properties on the exchange appointments in order to preserve the mapping between appointments in the two calendars. Everything is working fine until I try to remove an extended property from an occurrence of a recurring appointment. When I try doing this, I get the error:

The delete action is not supported for this property.

Here is a code snippet that demonstrates the error:

public void ExchangeTest()
{
    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1)
    {
        Credentials = new NetworkCredential("username", "password", "domain")
    };
    service.AutodiscoverUrl("[email protected]");

    Appointment appt = new Appointment(service)
    {
        Recurrence = new Recurrence.DailyPattern(DateTime.Now, 2) { NumberOfOccurrences = 3},
        Start = DateTime.Now,
        End = DateTime.Now.AddHours(2),
        Subject = "Test Appointment"
    };
    NameResolutionCollection resolutionCollection = service.ResolveName("username", ResolveNameSearchLocation.DirectoryOnly, false);
    string mailboxAddress = resolutionCollection.First().Mailbox.Address;
    FolderId folderId = new FolderId(WellKnownFolderName.Calendar, mailboxAddress);
    appt.Save(folderId);
    PropertySet properties = new PropertySet(AppointmentSchema.ICalUid);
    appt.Load(properties);

    CalendarView view = new CalendarView(DateTime.Today, DateTime.Today.AddDays(8)){PropertySet = properties};

    IEnumerable<Appointment> occurrences = service.FindAppointments(folderId, view)
        .Where(a => a.ICalUid == appt.ICalUid);

    ExtendedPropertyDefinition definition = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "TestProperty", MapiPropertyType.String);
    Appointment firstOccurrence = occurrences.First();
    firstOccurrence.SetExtendedProperty(definition, "test");
    firstOccurrence.Update(ConflictResolutionMode.AutoResolve);

    //The error occurs on the next line.
    firstOccurrence.RemoveExtendedProperty(definition);
    firstOccurrence.Update(ConflictResolutionMode.AutoResolve);

    //clean up
    appt.Delete(DeleteMode.HardDelete);
}

It appears that the error is only thrown for an Exchange 2007 server (It works on 2010). Am I doing something wrong, or is this a problem with Exchange? Is there a way to work around this issue? Any help will be appreciated.

© Stack Overflow or respective owner

Related posts about c#

Related posts about exchangewebservices