Recurring events not displayed for local ics file

  • Hi,

    first of all thanks a lot for ICSx5.
    I’m using ICSx5 1.9.1 to load a local .ics file on my Android 9 Samsung SM-J730F, which was exported from an IBM Notes calendar.
    It works great for the most part, but recurring events are not shown.

    I have attached a minimum example that demonstrates my problem:
    The event “SomeText1” is shown on 2021-03-23 as expected, but none of the “Recurring_Event_Instance<N>” events, where N=1…6 are shown.
    Validating the ics ( shows no errors except for missing PRODID, but this is how Lotus outputs the file. I checked the file with an online viewer (, which displays all the recurring events fine.
    The funny thing is that when importing the file with the Samsung calendar app, the calendar shows those recurring items, so I could save them to the local calendar. However, I would very much prefer using ICSx5 to clearly distinguish between imported and local events.

    I would be very glad if you could take a look at the file and see whether ICSx5 has an issue here. I have changed the GUIDs to make sure they don’t collide with my already imported events in the local calendar (my workflow prior to ICSx5), but that did not help.
    Any assistance with this issue is highly appreciated.

    Test file:

  • developer

    @cx Hi,

    Thanks for your report. But I am confused because I don’t see an RRULE or RDATE. So where is there a recurring event?

    RECURRENCE-ID doesn’t work without RRULE or RDATE.

  • @rfc2822 said in Recurring events not displayed for local ics file:

    RECURRENCE-ID doesn’t work without RRULE or RDATE.

    Hi, thanks for taking a look at the file and finding out what might be the issue.

    I’m not sure why Notes does not export RRULE or RDATE. A possible explanation is the fact that I’m exporting by date range instead of the whole database, so it might be that they don’t want to “rewrite” the rule to an event within the range when the rule was specified on an event outside that range, so they just export individual items (if that makes any sense technically, I’m no expert considering the finer details of the ical spec).
    If the validator I linked is any good however, the resulting file is not invalid in itself, but just seems to have an uncommon/unexpected combination of fields.

    Please understand that I don’t expect ICSx5 to work out the recurrence. I simply mentioned this in my title as this was the pattern I saw of items that fail to display.

    I would be totally happy if for an event that has a recurrence-ID but no RRULE or RDATE, ICSx5 would fall back to importing a normal, non-recurring event for every “recurrence” found in the file.
    At least an option would be nice for this behavior.
    It seems most other ICS implementations do just that. I tested my file in Thunderbird, Samsung Calendar App, and a couple of online tools and the events showed up in all of them.

    As a minimum, I would expect ICSx5 informing me that 6 events could not be imported, so that I know my calendar is incomplete. At the moment, I have no indication that something is missing and I might double book or miss an appointment. I know Notes might not be the most frequent source for ICS files, but I think it’s still used frequently enough that a workaround makes sense.

    I will try to fix the issue on the export side, but I doubt that other than exporting everything will solve the issue, as my export code is just using the Notes NotesCalendar.readRange() method, which has very little options. I can try to post-process the data after fetching the summary, but I don’t know yet whether this will give me the RRULE or RDATE fields.

    Anyway, thanks for taking a look and keep up the great work you’ve done with this tool.
    I hope that some kind of failsafe is easily implemented in ICSx5, since silently missing some items is a very unfortunate outcome for a calendar import/sync process.

    Kind regards, Chris

  • developer

    @cx said in Recurring events not displayed for local ics file:

    If the validator I linked is any good however, the resulting file is not invalid in itself, but just seems to have an uncommon/unexpected combination of fields.

    As I understand RFC 5545, all entries but the one without RECURRENCE-ID are invalid. Those validators check only the most common problems, often only in the syntax (not semantics).

    I’m sorry but this is clearly a problem of the iCalendar file. There is no recurring event, but only

    • one single event (which is shown by ICSx⁵) and
    • loose exceptions of a recurring event that doesn’t exist.

  • Hi @rfc2822,

    thanks for providing your knowledge of RFC 5545.

    Here’s another update on Notes scriptable export capabilities:
    I learned that using the NotesCalendar.getEntries() method, I can get a more complete list of event fields, including RRULE. However, there is another shortcoming of this method that prevents ICSx5 from directly consuming the result:
    Each entry I get is contained within its own VCALENDAR (probably to include VTIMEZONE), and there is no exposed interface to merge these entries.
    A naive concatenation approach to get an ics file from that (that is mentioned at various places online) looks like this:
    Only the VEVENT in the last VCALENDAR is imported by ICSx5.

    This is, however, a better starting point than readRange.
    Using some dirty string processing, I was able to construct a Notes Agent that creates a file that works for ICSx5.

    I’m putting it here for reference, but it needs some major improvements to be considered production ready. It is, however IMHO better than most of the examples out there that ignore the issues uncovered in this thread and pretend you can feed the concatenated output of getEntries() or that of readRange() directly to the client.
    LotusNotes_ICS_Ical_Agent_ICSx5 (Java 1.5)

    Thanks again for your support.
    Kind regards, Chris

Similar topics