[GH-ISSUE #32] moved recurring event is not synced to Outlook #515

Closed
opened 2026-03-01 17:39:30 +03:00 by kerem · 14 comments
Owner

Originally created by @aluxnimm on GitHub (Jul 15, 2015).
Original GitHub issue: https://github.com/aluxnimm/outlookcaldavsynchronizer/issues/32

Originally assigned to: @aluxnimm on GitHub.

I moved a single occurrence of a recurring event to the place of an event (which belongs to the same series) which has been moved before. This modification on the server is not reflected in Outlook.

Steps to reproduce:

  1. Import the attached ics file into sogo.
  2. Sync the calendar to Outlook.
  3. Switch to February 2015 in Outlook. The event at 2015-02-17 was not synced to Outlook.

In the log file you will find a error message:

'ERROR 2015-07-15 14:20:22,738 [VSTA_Main] .Implementation.Events.EventEntityMapper . MapRecurrance2To1 - Can't find occurence of exception
System.Runtime.InteropServices.COMException (0x80020009): Dieses Element kann nicht gespeichert werden.'

Original comment by: mawinkler

Original Ticket: outlookcaldavsynchronizer/47

Originally created by @aluxnimm on GitHub (Jul 15, 2015). Original GitHub issue: https://github.com/aluxnimm/outlookcaldavsynchronizer/issues/32 Originally assigned to: @aluxnimm on GitHub. I moved a single occurrence of a recurring event to the place of an event (which belongs to the same series) which has been moved before. This modification on the server is not reflected in Outlook. Steps to reproduce: 1. Import the attached ics file into sogo. 2. Sync the calendar to Outlook. 3. Switch to February 2015 in Outlook. The event at 2015-02-17 was not synced to Outlook. In the log file you will find a error message: 'ERROR 2015-07-15 14:20:22,738 [VSTA_Main] .Implementation.Events.EventEntityMapper . MapRecurrance2To1 - Can't find occurence of exception System.Runtime.InteropServices.COMException (0x80020009): Dieses Element kann nicht gespeichert werden.' Original comment by: mawinkler Original Ticket: [outlookcaldavsynchronizer/47](https://sourceforge.net/p/outlookcaldavsynchronizer/47)
kerem 2026-03-01 17:39:30 +03:00
Author
Owner

@aluxnimm commented on GitHub (Jul 15, 2015):

I guess that's an outlook limitation. Try to create that series in Outlook and you will get an error aswell. It is not allowed to move a recurrence exception of a weekly event in a prior week or 2 instances in the same week.

Original comment by: aluxnimm

<!-- gh-comment-id:126312665 --> @aluxnimm commented on GitHub (Jul 15, 2015): I guess that's an outlook limitation. Try to create that series in Outlook and you will get an error aswell. It is not allowed to move a recurrence exception of a weekly event in a prior week or 2 instances in the same week. Original comment by: aluxnimm
Author
Owner

@aluxnimm commented on GitHub (Jul 15, 2015):

I just tried it out in Outlook and yes, it can be done. There is no such limition in Outlook.

Original comment by: mawinkler

<!-- gh-comment-id:126312666 --> @aluxnimm commented on GitHub (Jul 15, 2015): I just tried it out in Outlook and yes, it can be done. There is no such limition in Outlook. Original comment by: mawinkler
Author
Owner

@aluxnimm commented on GitHub (Jul 15, 2015):

Well I can't move an event to the same week with Outlook 2013 and get the following error, see screenshot.

Original comment by: aluxnimm

<!-- gh-comment-id:126312667 --> @aluxnimm commented on GitHub (Jul 15, 2015): Well I can't move an event to the same week with Outlook 2013 and get the following error, see screenshot. Original comment by: aluxnimm
Author
Owner

@aluxnimm commented on GitHub (Jul 15, 2015):

Oh now I see the problem with your example. We process the exceptions one by one and the first exception tries to move the event to 17-02 which fails at that time because therei is already an event on 17-02 and the second exception moves the event from 17-02 to 18-02 later. So if we would swap the ordering that special case would work I guess. I will test this :)

Original comment by: aluxnimm

<!-- gh-comment-id:126312670 --> @aluxnimm commented on GitHub (Jul 15, 2015): Oh now I see the problem with your example. We process the exceptions one by one and the first exception tries to move the event to 17-02 which fails at that time because therei is already an event on 17-02 and the second exception moves the event from 17-02 to 18-02 later. So if we would swap the ordering that special case would work I guess. I will test this :) Original comment by: aluxnimm
Author
Owner

@aluxnimm commented on GitHub (Jul 15, 2015):

Steps to reproduce

STEP 1: Create a Appointment, which outlook cannot handle

  • Create a new Appointment on the 01.07
  • Set Recurrence to Daily every 2nd day with 5 occurences
  • Delete the 3rd occurence (at 05.07)
  • Move the 2nd occurence from the 03.07 to the 06.07

STEP 2: Synchronize it to sogo and check data in Sogo

  • Synchronize
    => The generated iCal is wrong, since the Outlook provides the following (wrong) Data via its object model:

Deleted Occurence:
03.07
05.07
Moved Occurence:
03.07 to the 06.07

When you open the synced Appointment in Sogo, sogo does not display the occurence on 06.07, since there is an ExDate For that.
Opening the Raw source in Sogo shows:
EXDATE;VALUE=DATE:20150703
EXDATE;VALUE=DATE:20150705

And an exception event (which is not displayed)
DTSTART;VALUE=DATE:20150706
RECURRENCE-ID;VALUE=DATE:20150703

STEP 3: Delete Appointment in Outlook, switch Sync direction and try to sync it back:

You will get the following exception:
"COMException (0x80020009): Cannot save this item."

br
Gerhard

Original comment by: nertsch

<!-- gh-comment-id:126312672 --> @aluxnimm commented on GitHub (Jul 15, 2015): Steps to reproduce STEP 1: Create a Appointment, which outlook cannot handle - Create a new Appointment on the 01.07 - Set Recurrence to Daily every 2nd day with 5 occurences - Delete the 3rd occurence (at 05.07) - Move the 2nd occurence from the 03.07 to the 06.07 STEP 2: Synchronize it to sogo and check data in Sogo - Synchronize => The generated iCal is wrong, since the Outlook provides the following (wrong) Data via its object model: Deleted Occurence: 03.07 05.07 Moved Occurence: 03.07 to the 06.07 When you open the synced Appointment in Sogo, sogo does not display the occurence on 06.07, since there is an ExDate For that. Opening the Raw source in Sogo shows: EXDATE;VALUE=DATE:20150703 EXDATE;VALUE=DATE:20150705 And an exception event (which is not displayed) DTSTART;VALUE=DATE:20150706 RECURRENCE-ID;VALUE=DATE:20150703 STEP 3: Delete Appointment in Outlook, switch Sync direction and try to sync it back: You will get the following exception: "COMException (0x80020009): Cannot save this item." br Gerhard Original comment by: nertsch
Author
Owner

@aluxnimm commented on GitHub (Jul 15, 2015):

Yes your file works if you swap those 2 exception events in the ics file :)

I have no idea if those exception events are sorted normally or random ordered.
But I guess it would be a good idea to handle deleted exceptions (exdates) before moved exceptions.

Original comment by: aluxnimm

<!-- gh-comment-id:126312673 --> @aluxnimm commented on GitHub (Jul 15, 2015): Yes your file works if you swap those 2 exception events in the ics file :) I have no idea if those exception events are sorted normally or random ordered. But I guess it would be a good idea to handle deleted exceptions (exdates) before moved exceptions. Original comment by: aluxnimm
Author
Owner

@aluxnimm commented on GitHub (Jul 15, 2015):

Obviously the Bug in Outlook is, that it is possible to skip a later occurrence, if the later occurrence was deleted before.

Original comment by: nertsch

<!-- gh-comment-id:126312674 --> @aluxnimm commented on GitHub (Jul 15, 2015): Obviously the Bug in Outlook is, that it is possible to skip a later occurrence, if the later occurrence was deleted before. Original comment by: nertsch
Author
Owner

@aluxnimm commented on GitHub (Jul 15, 2015):

Perhaps we should also skip deleted exceptions, when there is another exception for the same occurrence. (When exporting from Outlook)
This would prevent generating wrong iCalender entities.

Original comment by: nertsch

<!-- gh-comment-id:126312675 --> @aluxnimm commented on GitHub (Jul 15, 2015): Perhaps we should also skip deleted exceptions, when there is another exception for the same occurrence. (When exporting from Outlook) This would prevent generating wrong iCalender entities. Original comment by: nertsch
Author
Owner

@aluxnimm commented on GitHub (Jul 16, 2015):

Both errors fixed in 0.99.4

Original comment by: aluxnimm

<!-- gh-comment-id:126312676 --> @aluxnimm commented on GitHub (Jul 16, 2015): Both errors fixed in 0.99.4 Original comment by: aluxnimm
Author
Owner

@aluxnimm commented on GitHub (Jul 16, 2015):

Cool, thank you!

Original comment by: mawinkler

<!-- gh-comment-id:126312677 --> @aluxnimm commented on GitHub (Jul 16, 2015): Cool, thank you! Original comment by: mawinkler
Author
Owner

@aluxnimm commented on GitHub (Jul 22, 2015):

There is a problem if I delete the event on 2015-02-18 in Outlook.

Steps to reproduce:

  1. I import 'moved-recurrence.ics' into Sogo.
  2. I sync the calendar to Outlook - all events are synced successfully (see screenshot after-sync.png) - thanks to version 0.99.4
  3. I delete the event on 2015-02-18 in Outlook: The event on 2015-02-17 is deleted too. You will see an additional event on 2015-02-10. Strange!

Original comment by: mawinkler

<!-- gh-comment-id:126312678 --> @aluxnimm commented on GitHub (Jul 22, 2015): There is a problem if I delete the event on 2015-02-18 in Outlook. Steps to reproduce: 1. I import 'moved-recurrence.ics' into Sogo. 2. I sync the calendar to Outlook - all events are synced successfully (see screenshot after-sync.png) - thanks to version 0.99.4 3. I delete the event on 2015-02-18 in Outlook: The event on 2015-02-17 is deleted too. You will see an additional event on 2015-02-10. Strange! Original comment by: mawinkler
Author
Owner

@aluxnimm commented on GitHub (Jul 23, 2015):

It behaves differently on my system but still wrong. I will look into it in the next few days, busy atm.

Original comment by: aluxnimm

<!-- gh-comment-id:126312679 --> @aluxnimm commented on GitHub (Jul 23, 2015): It behaves differently on my system but still wrong. I will look into it in the next few days, busy atm. Original comment by: aluxnimm
Author
Owner

@aluxnimm commented on GitHub (Jul 27, 2015):

Similar effect as in ticket #41. I can reproduce your scenario sometimes but not always. After restarting Outlook it is not affected again. But syncing back to Sogo after deleting had also some issues I fixed in latest commit.

Original comment by: aluxnimm

<!-- gh-comment-id:126312680 --> @aluxnimm commented on GitHub (Jul 27, 2015): Similar effect as in ticket #41. I can reproduce your scenario sometimes but not always. After restarting Outlook it is not affected again. But syncing back to Sogo after deleting had also some issues I fixed in latest commit. Original comment by: aluxnimm
Author
Owner

@aluxnimm commented on GitHub (Jul 30, 2015):

Explicit GarbageCollector Call after each sync run solves that strange issue.
https://github.com/aluxnimm/outlookcaldavsynchronizer/releases/download/v0.99.9/OutlookCalDavSynchronizer-0.99.9.zip

Original comment by: aluxnimm

<!-- gh-comment-id:126312682 --> @aluxnimm commented on GitHub (Jul 30, 2015): Explicit GarbageCollector Call after each sync run solves that strange issue. https://github.com/aluxnimm/outlookcaldavsynchronizer/releases/download/v0.99.9/OutlookCalDavSynchronizer-0.99.9.zip Original comment by: aluxnimm
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/outlookcaldavsynchronizer#515
No description provided.