Bug description
When the organizer modifies a single occurrence of a recurring event (delete, move, or rename), the Nextcloud-generated email body sent to attendees does not indicate which occurrence was affected. The body only shows the series title and lists upcoming dates. The attendee cannot tell what changed without opening the ICS attachment or syncing their calendar.
Additionally, the email template has two secondary issues:
- It says "invite" instead of "update" for attendees who already accepted the series.
- It shows Accept/Decline buttons for cancellation notifications where there is nothing to accept.
Thunderbird's own iMIP parser extracts the correct information (canceled/modified occurrences) from the ICS attachment, which proves the data is present in the ICS. The Nextcloud mail body simply does not use it.
Previously reported as #21220 (closed as duplicate of #38686, closed as completed in PR #45547). Also related: #29460 (closed), #29601 (closed). The problem persists on Nextcloud 33.
Related calendar-app issues: nextcloud/calendar#7850, nextcloud/calendar#7771.
Setup:
- Calendar app: 6.2.2
- dav: 1.36.0
- All users on the same instance, invited via the internal user picker (principal-based scheduling).
- Attendees read emails in Thunderbird 128.x. CalDAV sync was paused during tests to observe raw email content.
Case A: Organizer deletes a single occurrence
User A creates a daily recurring event "Daily Test", starting 2026-05-06 at 15:00, with User B as attendee (added via user picker in Web-UI). User A deletes the occurrence on 2026-05-07 via the Calendar web UI ("Delete this occurrence").
Email subject: Invitation updated: Daily Test
Thunderbird iMIP display (parsed from ICS):
When: Occurs every day effective 5/6/26 from 15:00 to 15:30
Canceled Occurrences: Thursday, May 7, 2026 at 15:00
This is correct and tells the attendee exactly what happened.
Nextcloud mail body:
admin updated the event "Daily Test"
When: Every Day between 3:00 PM - 3:30 PM (Europe/Berlin)
Occurring: In 19 hours on May 6, 2026 then on May 8, 2026 and May 9, 2026
There's no mention of the canceled event on May 7.
ICS excerpt (anonymized):
METHOD:REQUEST
BEGIN:VEVENT
UID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
DTSTART;TZID=Europe/Berlin:20260506T150000
SUMMARY:Daily Test
ATTENDEE;CN=User B;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;ROLE=R
EQ-PARTICIPANT;RSVP=TRUE:mailto:user-b@example.com
ORGANIZER;CN=admin:mailto:user-a@example.com
RRULE:FREQ=DAILY
EXDATE;TZID=Europe/Berlin:20260507T150000
END:VEVENT
The EXDATE is present in the ICS. The mail body does not use it.
Bonus (Thunderbird): The same thing happens when creating the recurring event in Thunderbird and deleting one occurrence. ICS looks slightly different, but the display on the iMIP screen and in the email body is identical.
Case B: Organizer moves a single occurrence
Same series as Case A. User A moves the occurrence on 2026-05-08 from 15:00 to 16:00.
Email subject: Invitation: Daily Test
Thunderbird iMIP display:
Canceled Occurrences: Thursday, May 7, 2026 at 15:00
Modified Occurrences: Friday, May 8, 2026, 16:00 – 16:30
Correct.
Nextcloud mail body:
admin would like to invite you to "Daily Test"
When: In 2 days on Friday, May 8, 2026 between 4:00 PM - 4:30 PM (Europe/Berlin)
Problems:
- Shows the new time but does not mention it was moved from 15:00 to 16:00.
- The mail subject should say "Invitation updated" (as it already does for deletion notifications) rather than presenting it as a new invitation.
ICS excerpt (anonymized):
METHOD:REQUEST
BEGIN:VEVENT
UID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
DTSTART;TZID=Europe/Berlin:20260420T150000
DTEND;TZID=Europe/Berlin:20260420T153000
SUMMARY:Daily Test
ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:user-b@example.com
ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:user-c@example.com
ORGANIZER;CN=admin:mailto:user-a@example.com
RRULE:FREQ=DAILY
EXDATE;TZID=Europe/Berlin:20260424T150000
END:VEVENT
BEGIN:VEVENT
UID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
DTSTART;TZID=Europe/Berlin:20260425T160000
DTEND;TZID=Europe/Berlin:20260425T163000
SUMMARY:Daily Test
ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:user-b@example.com
ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:user-c@example.com
ORGANIZER;CN=admin:mailto:user-a@example.com
RECURRENCE-ID;TZID=Europe/Berlin:20260425T150000
END:VEVENT
Case C: Same tests after attendee accepted the series
User B first accepts the entire series via Thunderbird iMIP, then User A deletes an occurrence.
Email subject: Invitation updated: Daily Test
Nextcloud mail body:
admin updated the event "Daily Test"
Occurring: In 18 hours on May 6, 2026 then on May 8, 2026 and May 9, 2026
Same problem as Case A: no mention of the canceled date. The wording "updated" is correct in this case (unlike Case B).
Additionally, the email shows Accept/Decline buttons. Since the only change is a deletion, there is nothing to accept or decline. These buttons should be omitted for cancellation-only updates.
Bonus (Thunderbird): The same thing happens when creating the recurring event in Thunderbird, accepting the series, and deleting one occurrence. Display on the iMIP screen and in the email body is identical.
Case D: Organizer changes the title of a single occurrence
User A changes the title of the 2026-05-11 occurrence to "Daily Test Weekstart".
Email subject: Invitation: Daily Test Weekstart
Nextcloud mail body:
admin would like to invite you to "Daily Test Weekstart"
When: In 5 days on Monday, May 11, 2026 between 3:00 PM - 3:30 PM (Europe/Berlin)
Here the mail body is actually useful: correct date, new title visible. But it says "invite" instead of "update".
Bonus (Thunderbird): When making the same change in Thunderbird, the email is noticeably better:
Subject: Invitation updated: Daily Test TB Weekstart
Nextcloud mail body:
admin updated the event "Daily Test TB Weekstart"
Title:
Daily Test TB
Daily Test TB Weekstart
When:
Every Day between 3:00 PM - 3:30 PM (Europe/Berlin)
In 5 days on Monday, May 11, 2026 between 3:00 PM - 3:30 PM (Europe/Berlin)
Steps to reproduce
- User A creates a daily recurring event in the Nextcloud Calendar web UI, adds User B as attendee via the user picker.
- User A deletes a single occurrence via "Delete this occurrence".
- User B receives an iMIP email. The Nextcloud mail body does not mention which occurrence was deleted.
- Same behavior for moving or renaming a single occurrence.
Expected behavior
The Nextcloud mail body should include the same information that is already present in the ICS:
- For deleted occurrences: "Canceled: Friday, May 7, 2026 at 15:00"
- For moved occurrences: "Moved: Friday, May 8, 2026 from 15:00 to 16:00"
- For updates to accepted series: "updated" instead of "would like to invite you"
- For cancellation-only changes: no Accept/Decline buttons
On an instance with ~600 users who regularly invite each other to recurring meetings, the current emails have low informational value. Users learn to ignore them, which defeats the purpose of calendar notifications.
Nextcloud Server version
33
Operating system
Debian/Ubuntu
PHP engine version
PHP 8.3
Web server
Apache (supported)
Database engine version
MySQL
Is this bug present after an update or on a fresh install?
Upgraded to a MAJOR version
Are you using the Nextcloud Server Encryption module?
Encryption is Disabled
What user-backends are you using?
Configuration report
{
"system": {
"passwordsalt": "***REMOVED SENSITIVE VALUE***",
"secret": "***REMOVED SENSITIVE VALUE***",
"trusted_domains": [
"***REMOVED SENSITIVE VALUE***",
"***REMOVED SENSITIVE VALUE***",
"***REMOVED SENSITIVE VALUE***"
],
"datadirectory": "***REMOVED SENSITIVE VALUE***",
"dbtype": "mysql",
"version": "33.0.2",
"overwrite.cli.url": "***REMOVED SENSITIVE VALUE***",
"dbname": "***REMOVED SENSITIVE VALUE***",
"dbhost": "***REMOVED SENSITIVE VALUE***",
"dbport": "",
"dbtableprefix": "oc_",
"mysql.utf8mb4": true,
"dbuser": "***REMOVED SENSITIVE VALUE***",
"dbpassword": "***REMOVED SENSITIVE VALUE***",
"installed": true,
"instanceid": "***REMOVED SENSITIVE VALUE***",
"htaccess.RewriteBase": "\/",
"maintenance_window_start": 1,
"maintenance": false,
"default_phone_region": "de",
"mail_smtpmode": "smtp",
"mail_smtpsecure": "ssl",
"mail_sendmailmode": "smtp",
"mail_from_address": "***REMOVED SENSITIVE VALUE***",
"mail_domain": "***REMOVED SENSITIVE VALUE***",
"mail_smtphost": "***REMOVED SENSITIVE VALUE***",
"mail_smtpauth": 1,
"mail_smtpname": "***REMOVED SENSITIVE VALUE***",
"mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
"mail_smtpport": "465",
"theme": "",
"loglevel": 2,
"config_preset": 9,
"app_install_overwrite": [
"fairmeeting",
"jitsi",
"bbb"
],
"memcache.local": "\\OC\\Memcache\\APCu"
}
}
List of activated Apps
Enabled:
- activity: 6.0.0
- app_api: 33.0.0
- bruteforcesettings: 6.0.0
- calendar: 6.2.2
- circles: 33.0.0
- cloud_federation_api: 1.17.0
- comments: 1.23.0
- contacts: 8.4.5
- contactsinteraction: 1.14.1
- dashboard: 7.13.0
- dav: 1.36.0
- federatedfilesharing: 1.23.0
- federation: 1.23.0
- files: 2.5.0
- files_downloadlimit: 5.1.0
- files_pdfviewer: 6.0.0
- files_reminders: 1.6.0
- files_sharing: 1.25.2
- files_trashbin: 1.23.0
- files_versions: 1.26.0
- firstrunwizard: 6.0.0
- guests: 4.7.2
- logreader: 6.0.0
- lookup_server_connector: 1.21.0
- mail: 5.7.15
- nextcloud_announcements: 5.0.0
- notifications: 6.0.0
- oauth2: 1.21.0
- password_policy: 5.0.0
- photos: 6.0.0
- privacy: 5.0.0
- profile: 1.2.0
- provisioning_api: 1.23.0
- recommendations: 6.0.0
- related_resources: 4.0.0
- richdocuments: 10.1.3
- serverinfo: 5.0.0
- settings: 1.16.0
- sharebymail: 1.23.0
- support: 5.0.0
- survey_client: 5.0.0
- text: 7.0.1
- theming: 2.8.0
- twofactor_backupcodes: 1.22.0
- twofactor_totp: 15.0.0
- updatenotification: 1.23.0
- user_status: 1.13.0
- viewer: 6.0.0
- weather_status: 1.13.0
- webhook_listeners: 1.5.0
- whiteboard: 1.5.8
- workflowengine: 2.15.0
Disabled:
- admin_audit: 1.23.0
- bbb: 2.9.1 (installed 2.9.1)
- calendar_resource_management: 0.12.1 (installed 0.12.1)
- collectives: 4.4.0 (installed 4.4.0)
- deck: 1.17.1 (installed 1.17.1)
- encryption: 2.21.0
- fairmeeting: 0.22.5 (installed 0.22.5)
- files_external: 1.25.1
- integration_mattermost: 3.1.0 (installed 3.1.0)
- jitsi: 0.19.0 (installed 0.19.0)
- richdocumentscode: 25.4.904 (installed 25.4.904)
- riotchat: 0.20.0 (installed 0.20.0)
- spreed: 23.0.4 (installed 23.0.4)
- suspicious_login: 11.0.0
- systemtags: 1.23.0 (installed 1.22.0)
- tables: 2.1.1 (installed 2.1.1)
- testing: 1.23.0
- twofactor_nextcloud_notification: 7.0.0
- user_ldap: 1.24.0
Nextcloud Signing status
No errors have been found.
Nextcloud Logs
Additional info
Related issues (all closed):
Related calendar-app issues:
Bug description
When the organizer modifies a single occurrence of a recurring event (delete, move, or rename), the Nextcloud-generated email body sent to attendees does not indicate which occurrence was affected. The body only shows the series title and lists upcoming dates. The attendee cannot tell what changed without opening the ICS attachment or syncing their calendar.
Additionally, the email template has two secondary issues:
Thunderbird's own iMIP parser extracts the correct information (canceled/modified occurrences) from the ICS attachment, which proves the data is present in the ICS. The Nextcloud mail body simply does not use it.
Previously reported as #21220 (closed as duplicate of #38686, closed as completed in PR #45547). Also related: #29460 (closed), #29601 (closed). The problem persists on Nextcloud 33.
Related calendar-app issues: nextcloud/calendar#7850, nextcloud/calendar#7771.
Setup:
Case A: Organizer deletes a single occurrence
User A creates a daily recurring event "Daily Test", starting 2026-05-06 at 15:00, with User B as attendee (added via user picker in Web-UI). User A deletes the occurrence on 2026-05-07 via the Calendar web UI ("Delete this occurrence").
Email subject:
Invitation updated: Daily TestThunderbird iMIP display (parsed from ICS):
This is correct and tells the attendee exactly what happened.
Nextcloud mail body:
There's no mention of the canceled event on May 7.
ICS excerpt (anonymized):
The EXDATE is present in the ICS. The mail body does not use it.
Bonus (Thunderbird): The same thing happens when creating the recurring event in Thunderbird and deleting one occurrence. ICS looks slightly different, but the display on the iMIP screen and in the email body is identical.
Case B: Organizer moves a single occurrence
Same series as Case A. User A moves the occurrence on 2026-05-08 from 15:00 to 16:00.
Email subject:
Invitation: Daily TestThunderbird iMIP display:
Correct.
Nextcloud mail body:
Problems:
ICS excerpt (anonymized):
Case C: Same tests after attendee accepted the series
User B first accepts the entire series via Thunderbird iMIP, then User A deletes an occurrence.
Email subject:
Invitation updated: Daily TestNextcloud mail body:
Same problem as Case A: no mention of the canceled date. The wording "updated" is correct in this case (unlike Case B).
Additionally, the email shows Accept/Decline buttons. Since the only change is a deletion, there is nothing to accept or decline. These buttons should be omitted for cancellation-only updates.
Bonus (Thunderbird): The same thing happens when creating the recurring event in Thunderbird, accepting the series, and deleting one occurrence. Display on the iMIP screen and in the email body is identical.
Case D: Organizer changes the title of a single occurrence
User A changes the title of the 2026-05-11 occurrence to "Daily Test Weekstart".
Email subject:
Invitation: Daily Test WeekstartNextcloud mail body:
Here the mail body is actually useful: correct date, new title visible. But it says "invite" instead of "update".
Bonus (Thunderbird): When making the same change in Thunderbird, the email is noticeably better:
Subject:
Invitation updated: Daily Test TB WeekstartNextcloud mail body:
Steps to reproduce
Expected behavior
The Nextcloud mail body should include the same information that is already present in the ICS:
On an instance with ~600 users who regularly invite each other to recurring meetings, the current emails have low informational value. Users learn to ignore them, which defeats the purpose of calendar notifications.
Nextcloud Server version
33
Operating system
Debian/Ubuntu
PHP engine version
PHP 8.3
Web server
Apache (supported)
Database engine version
MySQL
Is this bug present after an update or on a fresh install?
Upgraded to a MAJOR version
Are you using the Nextcloud Server Encryption module?
Encryption is Disabled
What user-backends are you using?
Configuration report
{ "system": { "passwordsalt": "***REMOVED SENSITIVE VALUE***", "secret": "***REMOVED SENSITIVE VALUE***", "trusted_domains": [ "***REMOVED SENSITIVE VALUE***", "***REMOVED SENSITIVE VALUE***", "***REMOVED SENSITIVE VALUE***" ], "datadirectory": "***REMOVED SENSITIVE VALUE***", "dbtype": "mysql", "version": "33.0.2", "overwrite.cli.url": "***REMOVED SENSITIVE VALUE***", "dbname": "***REMOVED SENSITIVE VALUE***", "dbhost": "***REMOVED SENSITIVE VALUE***", "dbport": "", "dbtableprefix": "oc_", "mysql.utf8mb4": true, "dbuser": "***REMOVED SENSITIVE VALUE***", "dbpassword": "***REMOVED SENSITIVE VALUE***", "installed": true, "instanceid": "***REMOVED SENSITIVE VALUE***", "htaccess.RewriteBase": "\/", "maintenance_window_start": 1, "maintenance": false, "default_phone_region": "de", "mail_smtpmode": "smtp", "mail_smtpsecure": "ssl", "mail_sendmailmode": "smtp", "mail_from_address": "***REMOVED SENSITIVE VALUE***", "mail_domain": "***REMOVED SENSITIVE VALUE***", "mail_smtphost": "***REMOVED SENSITIVE VALUE***", "mail_smtpauth": 1, "mail_smtpname": "***REMOVED SENSITIVE VALUE***", "mail_smtppassword": "***REMOVED SENSITIVE VALUE***", "mail_smtpport": "465", "theme": "", "loglevel": 2, "config_preset": 9, "app_install_overwrite": [ "fairmeeting", "jitsi", "bbb" ], "memcache.local": "\\OC\\Memcache\\APCu" } }List of activated Apps
Nextcloud Signing status
Nextcloud Logs
Additional info
Related issues (all closed):
Related calendar-app issues: