This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Migrator Notes-Exchange and editing items through EWS

Hello,

we have problems when editing calendar items through EWS that have been migrated with MNE. No problems occur with newly created entries from Outlook or OWA, or entries that have been edited through Outlook after migration.

Four issues have been identified so far:

  • In meetings migrated from Notes mailbox test@contoso.com to Exchange mailbox test2@contoso.com, the organizer address is still set to test@contoso.com, although the organizer should be the owner of the mailbox.
  • When updating a calendar item, appointments created during MNE migration are reversed to meetings, although we correctly send the parameter SendInvitationsOrCancellationsMode.SendToNone.
  • When binding (Appointment.Bind()) to calendar entries that have been created in Notes in timezone W. Europe, have been migrated through MNE and that are correctly displayed in timezone “W. Europe” in Outlook, EWS returns them as created in tzone://Microsoft/Utc
  • When updating all-day events that have been created in timezone W. Europe, and providing a new time in timezone W. Europe, the time is wrongly updated to Utc.

Is there anything we can do to mitigate these issues? (Except manually editing every migrated entry through Outlook before editing it through EWS.)

Kind regards,

Alexander

Parents
  • Hello Trevor,

    I think it does not make sense for me to provide the full code, since it cannot be understood easily. Let me see whether I can get an excerpt tested against our customer's test accounts in the near future, which I could provide to you.

    Until then, I expect the relevant excerpt to be as follows:

    We are using the most recent EWS Managed API library from github, opening the service object with the StartTimeZone that we want to set:

    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2016, TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time"))

    then we provide credentials and do autodiscover, and then we load an EWS item through

    Appointment.Bind(service, new ItemId(uniqueId), propertySet)

    with the propertySet defined as:

    new PropertySet(AppointmentSchema.Id, AppointmentSchema.Start, AppointmentSchema.End, AppointmentSchema.Subject, AppointmentSchema.Location, AppointmentSchema.AppointmentType, AppointmentSchema.Body, AppointmentSchema.RequiredAttendees, AppointmentSchema.OptionalAttendees, AppointmentSchema.Resources, AppointmentSchema.Recurrence, AppointmentSchema.Organizer, AppointmentSchema.ReminderMinutesBeforeStart, AppointmentSchema.IsReminderSet, AppointmentSchema.IsMeeting, AppointmentSchema.IsAllDayEvent, AppointmentSchema.LegacyFreeBusyStatus, AppointmentSchema.Importance, AppointmentSchema.Sensitivity, AppointmentSchema.Categories, AppointmentSchema.StartTimeZone, AppointmentSchema.EndTimeZone, AppointmentSchema.TimeZone, AppointmentSchema.HasAttachments, AppointmentSchema.Attachments, AppointmentSchema.AppointmentState, AppointmentSchema.MyResponseType, AppointmentSchema.LastModifiedTime, AppointmentSchema.LastModifiedName, AppointmentSchema.IsRecurring, AppointmentSchema.IsCancelled, AppointmentSchema.AppointmentState)

    When we bind to an all-day event that has been created in Notes in W. Europe Standard Time and migrated through MNE, and then we read appt.StartTimeZone.Id, we get tzone://Microsoft/Utc (see Item 3 on the list of issues).

    Then we update some values as provided by the user (the user said the only change was a new category), most notably we try to correct the time zone because the current value doesn't match any system time zone:

    appt.StartTimeZone = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")
    appt.EndTimeZone = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")
    appt.Categories = new StringList(new string[] {"TestCategory"});

    and then we call update:

    appt.Update(ConflictResolutionMode.AlwaysOverwrite, SendInvitationsOrCancellationsMode.SendToNone);

    and when bind again and check (or check through Outlook), we find that the all-day event has been aligned to UTC days (was aligned to W. Europe Standard Time days before), presumably because Microsoft EWS could not process the existing time zone on the entry correctly.
Reply
  • Hello Trevor,

    I think it does not make sense for me to provide the full code, since it cannot be understood easily. Let me see whether I can get an excerpt tested against our customer's test accounts in the near future, which I could provide to you.

    Until then, I expect the relevant excerpt to be as follows:

    We are using the most recent EWS Managed API library from github, opening the service object with the StartTimeZone that we want to set:

    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2016, TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time"))

    then we provide credentials and do autodiscover, and then we load an EWS item through

    Appointment.Bind(service, new ItemId(uniqueId), propertySet)

    with the propertySet defined as:

    new PropertySet(AppointmentSchema.Id, AppointmentSchema.Start, AppointmentSchema.End, AppointmentSchema.Subject, AppointmentSchema.Location, AppointmentSchema.AppointmentType, AppointmentSchema.Body, AppointmentSchema.RequiredAttendees, AppointmentSchema.OptionalAttendees, AppointmentSchema.Resources, AppointmentSchema.Recurrence, AppointmentSchema.Organizer, AppointmentSchema.ReminderMinutesBeforeStart, AppointmentSchema.IsReminderSet, AppointmentSchema.IsMeeting, AppointmentSchema.IsAllDayEvent, AppointmentSchema.LegacyFreeBusyStatus, AppointmentSchema.Importance, AppointmentSchema.Sensitivity, AppointmentSchema.Categories, AppointmentSchema.StartTimeZone, AppointmentSchema.EndTimeZone, AppointmentSchema.TimeZone, AppointmentSchema.HasAttachments, AppointmentSchema.Attachments, AppointmentSchema.AppointmentState, AppointmentSchema.MyResponseType, AppointmentSchema.LastModifiedTime, AppointmentSchema.LastModifiedName, AppointmentSchema.IsRecurring, AppointmentSchema.IsCancelled, AppointmentSchema.AppointmentState)

    When we bind to an all-day event that has been created in Notes in W. Europe Standard Time and migrated through MNE, and then we read appt.StartTimeZone.Id, we get tzone://Microsoft/Utc (see Item 3 on the list of issues).

    Then we update some values as provided by the user (the user said the only change was a new category), most notably we try to correct the time zone because the current value doesn't match any system time zone:

    appt.StartTimeZone = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")
    appt.EndTimeZone = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")
    appt.Categories = new StringList(new string[] {"TestCategory"});

    and then we call update:

    appt.Update(ConflictResolutionMode.AlwaysOverwrite, SendInvitationsOrCancellationsMode.SendToNone);

    and when bind again and check (or check through Outlook), we find that the all-day event has been aligned to UTC days (was aligned to W. Europe Standard Time days before), presumably because Microsoft EWS could not process the existing time zone on the entry correctly.
Children
No Data