MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    Issue with Outlook recurring events

    Scheduled Pinned Locked Moved Solved Troubleshooting
    26 Posts 2 Posters 4.4k Views 2 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • W Offline
      WallysWellies
      last edited by

      Hello all.

      I’m having some issues with Outlook calendar events in the default calendar app and I think I have narrowed it down to a daylight savings issue (bug?):

      3d07cf41-5b10-497b-b80c-872291a2ffd8-image.png

      As you can see above, the recurring rule is expiring the evening before the event so these events do not show in my calendar.

      I realise this is looking like a Microsoft issue but I wondered if anyone had encountered this before and knows how to fix it?

      One thing that appears to work is setting my timezone to UTC then re-saving the event which I guess I can do unless someone has a better idea… Doing this sets the “UNTIL” time to 00:00 on the day of the actual event.

      S 2 Replies Last reply Reply Quote 0
      • S Offline
        sdetweil @WallysWellies
        last edited by sdetweil

        @WallysWellies this fix sets the rrule:until to start of day+1 day for fullday events (tested in LA, Chicago, London and Sydney timezones)

        add three lines
        modules/default/calendarcalendarfetcherutils.js

        					event.start = rule.options.dtstart;  // old code line 294
                                                // insert these three lines
        					if((rule.options.until != undefined) && CalendarFetcherUtils.isFullDayEvent(event)){
        						Log.debug("fixup rrule until")
        						rule.options.until = new Date(new Date(moment(rule.options.until).startOf("day").add(1,"day")).getTime())
        					}
        
        					Log.debug("fix rrule start=", rule.options.dtstart); // old code line 301

        Sam

        How to add modules

        learning how to use browser developers window for css changes

        W 1 Reply Last reply Reply Quote 0
        • S Offline
          sdetweil @WallysWellies
          last edited by sdetweil

          @WallysWellies if the event is a full day event(DTSTART:VALUE=DATE) then the rrule until should also only be date

          also full day events are considered local timezone only

          i dont think the parser (not our code) validates that

          oh, then rrule processes it ( also not our code)

          we call rrule.between() to get the list of events that match the rule between a year ago and an year forward(by default)

          Sam

          How to add modules

          learning how to use browser developers window for css changes

          1 Reply Last reply Reply Quote 0
          • S Offline
            sdetweil @WallysWellies
            last edited by

            @WallysWellies do you have that full VEVENT so i can look at its processing in both places as i work on both

            Sam

            How to add modules

            learning how to use browser developers window for css changes

            W 1 Reply Last reply Reply Quote 0
            • W Offline
              WallysWellies @sdetweil
              last edited by

              @sdetweil Here is a problematic event:

              BEGIN:VEVENT
              DESCRIPTION:\n
              RRULE:FREQ=YEARLY;UNTIL=20250504T230000Z;INTERVAL=1;BYMONTHDAY=5;BYMONTH=5
              UID:040000008200E00074C5B7101A82E00800000000DAEF6ED30D9FDA01000000000000000
               010000000D37F812F0777844A93E97B96AD2D278B
              SUMMARY:Person A's Birthday
              DTSTART;VALUE=DATE:20250505
              DTEND;VALUE=DATE:20250506
              CLASS:PUBLIC
              PRIORITY:5
              DTSTAMP:20250428T133000Z
              TRANSP:TRANSPARENT
              STATUS:CONFIRMED
              SEQUENCE:0
              LOCATION:
              X-MICROSOFT-CDO-APPT-SEQUENCE:0
              X-MICROSOFT-CDO-BUSYSTATUS:FREE
              X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
              X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
              X-MICROSOFT-CDO-IMPORTANCE:1
              X-MICROSOFT-CDO-INSTTYPE:1
              X-MICROSOFT-DONOTFORWARDMEETING:FALSE
              X-MICROSOFT-DISALLOW-COUNTER:FALSE
              X-MICROSOFT-REQUESTEDATTENDANCEMODE:DEFAULT
              X-MICROSOFT-ISRESPONSEREQUESTED:FALSE
              END:VEVENT
              

              And here is a working event:

              BEGIN:VEVENT
              DESCRIPTION:\n
              RRULE:FREQ=YEARLY;UNTIL=20250503T000000Z;INTERVAL=1;BYMONTHDAY=3;BYMONTH=5
              UID:040000008200E00074C5B7101A82E00800000000591C9B3BAA0EDA01000000000000000
               01000000005E6F2F9D20F7947B69F54FBF0794A6D
              SUMMARY:Person B's Birthday
              DTSTART;VALUE=DATE:20250503
              DTEND;VALUE=DATE:20250504
              CLASS:PUBLIC
              PRIORITY:5
              DTSTAMP:20250428T133000Z
              TRANSP:TRANSPARENT
              STATUS:CONFIRMED
              SEQUENCE:0
              LOCATION:
              X-MICROSOFT-CDO-APPT-SEQUENCE:0
              X-MICROSOFT-CDO-BUSYSTATUS:FREE
              X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
              X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
              X-MICROSOFT-CDO-IMPORTANCE:1
              X-MICROSOFT-CDO-INSTTYPE:1
              X-MICROSOFT-DONOTFORWARDMEETING:FALSE
              X-MICROSOFT-DISALLOW-COUNTER:FALSE
              X-MICROSOFT-REQUESTEDATTENDANCEMODE:DEFAULT
              X-MICROSOFT-ISRESPONSEREQUESTED:FALSE
              END:VEVENT
              

              Thanks for taking a look.

              S 1 Reply Last reply Reply Quote 0
              • S Offline
                sdetweil @WallysWellies
                last edited by

                @WallysWellies thanks, forgot to ask what timezone you are in

                Sam

                How to add modules

                learning how to use browser developers window for css changes

                W 1 Reply Last reply Reply Quote 0
                • W Offline
                  WallysWellies @sdetweil
                  last edited by

                  @sdetweil I’m in the UK. Since it’s British summer time I don’t know if that means I’m UTC+1 or something else… GMT, BST… Stupid changing clocks!

                  S 1 Reply Last reply Reply Quote 1
                  • S Offline
                    sdetweil @WallysWellies
                    last edited by sdetweil

                    @WallysWellies this fix sets the rrule:until to start of day+1 day for fullday events (tested in LA, Chicago, London and Sydney timezones)

                    add three lines
                    modules/default/calendarcalendarfetcherutils.js

                    					event.start = rule.options.dtstart;  // old code line 294
                                                            // insert these three lines
                    					if((rule.options.until != undefined) && CalendarFetcherUtils.isFullDayEvent(event)){
                    						Log.debug("fixup rrule until")
                    						rule.options.until = new Date(new Date(moment(rule.options.until).startOf("day").add(1,"day")).getTime())
                    					}
                    
                    					Log.debug("fix rrule start=", rule.options.dtstart); // old code line 301

                    Sam

                    How to add modules

                    learning how to use browser developers window for css changes

                    W 1 Reply Last reply Reply Quote 0
                    • W Offline
                      WallysWellies @sdetweil
                      last edited by

                      @sdetweil Thank you - that has fixed my upcoming calendar event 👍

                      S 3 Replies Last reply Reply Quote 1
                      • S Offline
                        sdetweil @WallysWellies
                        last edited by

                        @WallysWellies cool, i will submit as a change for next release

                        Sam

                        How to add modules

                        learning how to use browser developers window for css changes

                        1 Reply Last reply Reply Quote 1
                        • S Offline
                          sdetweil @WallysWellies
                          last edited by

                          @WallysWellies you will need to use my upgrade script and reply no to keeping the changed files
                          see https://github.com/sdetweil/MagicMirror_scripts

                          note upgrade is a two part process
                          test, do nothing (highlight exposed files, if any)
                          do upgrade

                          Sam

                          How to add modules

                          learning how to use browser developers window for css changes

                          1 Reply Last reply Reply Quote 1
                          • S sdetweil has marked this topic as solved on
                          • S Offline
                            sdetweil @WallysWellies
                            last edited by

                            @WallysWellies I opened issue 3781
                            https://github.com/MagicMirrorOrg/MagicMirror/issues/3781
                            and pushed the fix and testcase for next release

                            Sam

                            How to add modules

                            learning how to use browser developers window for css changes

                            W 1 Reply Last reply Reply Quote 0
                            • W Offline
                              WallysWellies @sdetweil
                              last edited by

                              @sdetweil Thank you!

                              S 1 Reply Last reply Reply Quote 0
                              • S Offline
                                sdetweil @WallysWellies
                                last edited by

                                @WallysWellies this was accepted and added to the next release

                                Sam

                                How to add modules

                                learning how to use browser developers window for css changes

                                1 Reply Last reply Reply Quote 0
                                • W Offline
                                  WallysWellies
                                  last edited by

                                  Hi Sam,

                                  I’m afraid this issue has reoccurred on an event that is not full day but instead is supposed to be the last in a series. I believe it’s the same issue though where the timezone / BST is causing the problem.

                                  Sample ICS data below:

                                  BEGIN:VCALENDAR
                                  METHOD:PUBLISH
                                  PRODID:Microsoft Exchange Server 2010
                                  VERSION:2.0
                                  X-WR-CALNAME:Test Calendar
                                  BEGIN:VTIMEZONE
                                  TZID:GMT Standard Time
                                  BEGIN:STANDARD
                                  DTSTART:16010101T020000
                                  TZOFFSETFROM:+0100
                                  TZOFFSETTO:+0000
                                  RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
                                  END:STANDARD
                                  BEGIN:DAYLIGHT
                                  DTSTART:16010101T010000
                                  TZOFFSETFROM:+0000
                                  TZOFFSETTO:+0100
                                  RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
                                  END:DAYLIGHT
                                  END:VTIMEZONE
                                  BEGIN:VEVENT
                                  RRULE:FREQ=WEEKLY;UNTIL=20250630T173000Z;INTERVAL=1;BYDAY=MO;WKST=MO
                                  UID:040000008200E00074C5B7101A82E00800000000E05582F27408DB01000000000000000
                                   010000000E892CDFA6C0E4E4298E1C987B4791120
                                  SUMMARY:Calendar Event
                                  DTSTART;TZID=GMT Standard Time:20250331T183000
                                  DTEND;TZID=GMT Standard Time:20250331T200000
                                  CLASS:PUBLIC
                                  PRIORITY:5
                                  DTSTAMP:20250630T164141Z
                                  TRANSP:OPAQUE
                                  STATUS:CONFIRMED
                                  SEQUENCE:0
                                  LOCATION:
                                  X-MICROSOFT-CDO-APPT-SEQUENCE:0
                                  X-MICROSOFT-CDO-BUSYSTATUS:BUSY
                                  X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
                                  X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
                                  X-MICROSOFT-CDO-IMPORTANCE:1
                                  X-MICROSOFT-CDO-INSTTYPE:1
                                  X-MICROSOFT-DONOTFORWARDMEETING:FALSE
                                  X-MICROSOFT-DISALLOW-COUNTER:FALSE
                                  X-MICROSOFT-REQUESTEDATTENDANCEMODE:DEFAULT
                                  X-MICROSOFT-ISRESPONSEREQUESTED:FALSE
                                  END:VEVENT
                                  END:VCALENDAR
                                  

                                  I’ve stripped out most of the content other than the event in question and the timezone info.

                                  You’ll see that the DTSTART and DTEND data shows the correct start and end time but the RRULE shows the UNTIL as an hour before the event so the event does not show on the MM calendar module.

                                  The event in Outlook shows the series being every Monday until 1st July.

                                  I’m not sure if this “bug” is a problem with Outlook or MagicMirror.

                                  Happy to start a new thread, or log a bug on GitHub if either of those is preferrable.

                                  S 1 Reply Last reply Reply Quote 0
                                  • S Offline
                                    sdetweil @WallysWellies
                                    last edited by sdetweil

                                    @WallysWellies there is a rewrite of the calendar event handler coming in tomorrow’s release .

                                    please check there

                                    Sam

                                    How to add modules

                                    learning how to use browser developers window for css changes

                                    1 Reply Last reply Reply Quote 1
                                    • W Offline
                                      WallysWellies
                                      last edited by

                                      I’m back with more calendar woes.

                                      I’m apparently still having an issue where events in my Outlook calendar can under certain circumstances not appear on my MM. This is again a symptom of the event’s rrule ending prior to the last event in the series. Some ICS code below:

                                      BEGIN:VCALENDAR
                                      METHOD:PUBLISH
                                      PRODID:Microsoft Exchange Server 2010
                                      VERSION:2.0
                                      X-WR-CALNAME:My Calendar
                                      BEGIN:VTIMEZONE
                                      TZID:GMT Standard Time
                                      BEGIN:STANDARD
                                      DTSTART:16010101T020000
                                      TZOFFSETFROM:+0100
                                      TZOFFSETTO:+0000
                                      RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
                                      END:STANDARD
                                      BEGIN:DAYLIGHT
                                      DTSTART:16010101T010000
                                      TZOFFSETFROM:+0000
                                      TZOFFSETTO:+0100
                                      RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
                                      END:DAYLIGHT
                                      END:VTIMEZONE
                                      BEGIN:VEVENT
                                      RRULE:FREQ=WEEKLY;UNTIL=20251007T164500Z;INTERVAL=1;BYDAY=TU;WKST=MO
                                      EXDATE;TZID=GMT Standard Time:20250930T174500
                                      UID:040000008200E00074C5B7101A82E008000000004ECDB12BC10FDC01000000000000000
                                       010000000012DADF723AF8140B35A2E374506E8D9
                                      SUMMARY:My Event
                                      DTSTART;TZID=GMT Standard Time:20250826T174500
                                      DTEND;TZID=GMT Standard Time:20250826T183000
                                      CLASS:PUBLIC
                                      PRIORITY:5
                                      DTSTAMP:20251006T181942Z
                                      TRANSP:OPAQUE
                                      STATUS:CONFIRMED
                                      SEQUENCE:0
                                      LOCATION:
                                      X-MICROSOFT-CDO-APPT-SEQUENCE:0
                                      X-MICROSOFT-CDO-BUSYSTATUS:BUSY
                                      X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
                                      X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
                                      X-MICROSOFT-CDO-IMPORTANCE:1
                                      X-MICROSOFT-CDO-INSTTYPE:1
                                      X-MICROSOFT-DONOTFORWARDMEETING:FALSE
                                      X-MICROSOFT-DISALLOW-COUNTER:FALSE
                                      X-MICROSOFT-REQUESTEDATTENDANCEMODE:DEFAULT
                                      X-MICROSOFT-ISRESPONSEREQUESTED:FALSE
                                      END:VEVENT
                                      END:VCALENDAR
                                      

                                      I’m not sure if this is something that can be resolved, or why it happens but I suspect some timezone issue as I’m based in the UK and we have to endure changing the clocks twice a year.

                                      Having said that, the ICS file does not reflect the settings in the calendar for that event:

                                      be808da3-ff4d-4103-9307-66550f6a2838-image.png

                                      Anyone got any suggestions? Sorry to be a pest with this one!

                                      S 1 Reply Last reply Reply Quote 0
                                      • S Offline
                                        sdetweil @WallysWellies
                                        last edited by sdetweil

                                        @WallysWellies the event looks correct according to the start/end and rrule
                                        But

                                        We do not use the custom timezone configuration in the iCal data
                                        We use the worldwide standard IANA tz names
                                        (Why one needs custom timezones is beyond me)

                                        Because so many users use MS products , I wrote a lookup table 5 years ago for the calendar parser we use, node-iCal

                                        But

                                        GMT Standard Time

                                        Is not in that table (GMT has long been replaced by UTC)

                                        UTC Standard Time

                                        Is in the table

                                        If the tz lookup fails, we use the local system timezone

                                        Sam

                                        How to add modules

                                        learning how to use browser developers window for css changes

                                        S W 2 Replies Last reply Reply Quote 0
                                        • S Offline
                                          sdetweil @sdetweil
                                          last edited by

                                          The calendar automatically adjusts for STD/DST time changes

                                          Sam

                                          How to add modules

                                          learning how to use browser developers window for css changes

                                          S 1 Reply Last reply Reply Quote 0
                                          • S Offline
                                            sdetweil @sdetweil
                                            last edited by

                                            I don’t know why the rrule until says oct 08:164500, but oct 7 is the last Tuesday in the event cycle

                                            Sept 30 was excluded

                                            So all the iCal entry looks good except for the timezone

                                            Sam

                                            How to add modules

                                            learning how to use browser developers window for css changes

                                            1 Reply Last reply Reply Quote 0
                                            • W Offline
                                              WallysWellies @sdetweil
                                              last edited by

                                              @sdetweil the timezone on my Pi is:

                                                             Local time: Mon 2025-10-06 20:26:51 BST
                                                         Universal time: Mon 2025-10-06 19:26:51 UTC
                                                               RTC time: Mon 2025-10-06 19:26:51
                                                              Time zone: Europe/London (BST, +0100)
                                              System clock synchronized: yes
                                                            NTP service: active
                                                        RTC in local TZ: no
                                              

                                              Is there something I need to do to try and resolve this? My MS calendar is set to a UTC timezone:

                                              eadce230-ca3e-4021-b204-d1f35a662692-image.png

                                              S 1 Reply Last reply Reply Quote 0

                                              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                              With your input, this post could be even better 💗

                                              Register Login
                                              • 1
                                              • 2
                                              • 2 / 2
                                              • First post
                                                Last post
                                              Enjoying MagicMirror? Please consider a donation!
                                              MagicMirror created by Michael Teeuw.
                                              Forum managed by Sam, technical setup by Karsten.
                                              This forum is using NodeBB as its core | Contributors
                                              Contact | Privacy Policy