nextcloud / nextcloud/server

[Bug]: Birthday calendar shows events for deleted contacts

Open
#54,903 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

0. Needs triage 31-feedback bug feature: caldav feature: carddav
Dominant language
PHP
Stars
36.9k
Forks
5.2k
Avg merge
2d 3h
Merged PRs (30d)
713

Description

⚠️ This issue respects the following points: ⚠️
Bug description

I have (at least one) event on my birthday calendar for a contact that has been deleted for a while. I've double check, the contact was deleted. I've found no occurrence for this contact everywhere in my Nextcloud.

My Nextcloud is self hosted in version 31.0.8. Calendar app is V5.5.2. I've performed ./occ dav:sync-birthday-calendar for my user without success.

Steps to reproduce
  1. Create a contact with a birthday date
  2. Check the birthday calendar to preview the event related to this contact
  3. Delete the contact created in 1.
  4. The event for the birthday of this contact is still here
Expected behavior

Event for deleted contact should be removed from the birthday agenda.

Nextcloud Server version

31

Operating system

Debian/Ubuntu

PHP engine version

PHP 8.3

Web server

Nginx

Database engine version

MySQL

Is this bug present after an update or on a fresh install?

None

Are you using the Nextcloud Server Encryption module?

Encryption is Disabled

What user-backends are you using?
  • Default user-backend (database)
  • LDAP/ Active Directory
  • SSO - SAML
  • Other
Configuration report
www-data@nextcloud:~/nextcloud$ ./occ config:list system
{
    "system": {
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": {
            "1": "192.168.1.33",
            "2": "nextcloud",
            "3": "cloud.rps.ovh",
            "4": "10.1.0.1",
            "5": "192.168.1.35",
            "6": "uno",
            "7": "rps.ovh",
            "8": "nextcloud.lan"
        },
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "mysql",
        "version": "31.0.8.1",
        "overwrite.cli.url": "https:\/\/cloud.rps.ovh",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "enable_previews": true,
        "enabledPreviewProviders": [
            "OC\\Preview\\PNG",
            "OC\\Preview\\JPEG",
            "OC\\Preview\\GIF",
            "OC\\Preview\\BMP",
            "OC\\Preview\\XBitmap",
            "OC\\Preview\\MP3",
            "OC\\Preview\\TXT",
            "OC\\Preview\\MarkDown",
            "OC\\Preview\\MSOffice2003",
            "OC\\Preview\\MSOffice2007",
            "OC\\Preview\\MSOfficeDoc",
            "OC\\Preview\\OpenDocument",
            "OC\\Preview\\PDF",
            "OC\\Preview\\TIFF",
            "OC\\Preview\\Movie",
            "OC\\Preview\\HEIC",
            "OC\\Preview\\Image"
        ],
        "mail_smtpmode": "smtp",
        "mail_sendmailmode": "smtp",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpport": "465",
        "mail_smtpsecure": "ssl",
        "maintenance": false,
        "maintenance_window_start": 1,
        "theme": "",
        "has_rebuilt_cache": true,
        "updater.release.channel": "stable",
        "app_install_overwrite": {
            "0": "occweb",
            "1": "spreed",
            "2": "files_reader",
            "3": "admin_notifications",
            "4": "end_to_end_encryption",
            "5": "folderplayer",
            "6": "files_clipboard",
            "7": "activitylog",
            "8": "workin2gether",
            "9": "passman",
            "10": "cospend",
            "11": "quickaccesssorting",
            "12": "printer",
            "13": "uploaddetails",
            "14": "mindmap_app",
            "15": "files_external_dropbox",
            "16": "joplin",
            "17": "dicomviewer",
            "18": "ocsms",
            "19": "emlviewer",
            "20": "gpxedit",
            "21": "sharerenamer",
            "22": "workflow_pdf_converter",
            "23": "passwords",
            "24": "transmission",
            "26": "socialsharing_email",
            "27": "scanner",
            "28": "gpxmotion",
            "29": "documentserver_community",
            "30": "group_everyone",
            "31": "bookmarks_fulltextsearch",
            "33": "afterlogic",
            "34": "fulltextsearch",
            "35": "apporder",
            "36": "fulltextsearch_elasticsearch",
            "37": "files_fulltextsearch",
            "38": "files_markdown",
            "39": "breezedark",
            "40": "ocdownloader",
            "41": "extract",
            "42": "flowupload",
            "43": "transfer",
            "44": "customproperties",
            "45": "epubreader",
            "46": "ransomware_protection",
            "47": "files_downloadactivity",
            "48": "mail_roundcube",
            "49": "memories",
            "50": "hedgenext",
            "51": "metadata",
            "52": "news",
            "53": "files_archive",
            "54": "checksum",
            "55": "workflow_kitinerary",
            "56": "files_retention",
            "57": "holiday_calendars",
            "58": "twainwebscan",
            "59": "integration_whiteboard",
            "60": "files_trackdownloads",
            "61": "hibp",
            "62": "hibp_login_check",
            "63": "gluusso",
            "64": "orcid",
            "65": "otpmanager",
            "66": "files_scripts",
            "67": "files_staticmimecontrol",
            "69": "files_automatedtagging",
            "70": "maps",
            "71": "integration_collaboard",
            "72": "globalsiteselector"
        },
        "preview_libreoffice_path": "\/usr\/bin\/soffice",
        "onlyoffice": {
            "verify_peer_off": true
        },
        "encryption.legacy_format_support": false,
        "encryption.key_storage_migrated": false,
        "trusted_proxies": "***REMOVED SENSITIVE VALUE***",
        "forwarded-for-headers": [
            "X-Forwarded-For",
            "HTTP_X_FORWARDED_FOR"
        ],
        "default_phone_region": "FR",
        "preview_max_memory": 4096,
        "preview_max_filesize_image": 50,
        "preview_max_x": 1024,
        "preview_max_y": 1024,
        "jpeg_quality": 80,
        "trashbin_retention_obligation": "30, 60",
        "mail_smtpauth": 1,
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "loglevel": 3,
        "log_type": "file",
        "logfile": "\/var\/log\/nextcloud\/nextcloud.log",
        "log.condition": {
            "apps": [
                "admin_audit"
            ]
        },
        "memories.exiftool": "\/var\/www\/nextcloud\/apps\/memories\/bin-ext\/exiftool-amd64-glibc",
        "mail_smtpauthtype": "LOGIN",
        "htaccess.RewriteBase": "\/nextcloud",
        "memories.ffmpeg_path": "\/usr\/bin\/ffmpeg",
        "memories.ffprobe_path": "\/usr\/bin\/ffprobe",
        "memories.transcoder": "\/var\/www\/nextcloud\/apps\/memories\/exiftool-bin\/go-vod-amd64",
        "memories.no_transcode": false,
        "memories.qsv": false,
        "memories.vod.path": "\/var\/www\/nextcloud\/apps\/memories\/bin-ext\/go-vod-amd64",
        "memories.vod.ffmpeg": "\/usr\/bin\/ffmpeg",
        "filelocking.enabled": true,
        "memcache.local": "\\OC\\Memcache\\APCu",
        "memcache.distributed": "\\OC\\Memcache\\Redis",
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***",
            "port": 0,
            "dbindex": 0,
            "timeout": 1.5
        },
        "data-fingerprint": "2ef849be57025e5a6b18264bb526a5d2",
        "allow_local_address": true,
        "memories.db.triggers.fcu": true,
        "ldapProviderFactory": "OCA\\User_LDAP\\LDAPProviderFactory",
        "memories.vod.ffprobe": "\/usr\/bin\/ffprobe",
        "memories.gis_type": 1,
        "defaultapp": "dashboard,files",
        "activity_expire_days": 90,
        "memories.vod.disable": false
    }
}
List of activated Apps
www-data@nextcloud:~/nextcloud$ ./occ app:list
Enabled:
  - activity: 4.0.0
  - admin_audit: 1.21.0
  - app_api: 5.0.2
  - bookmarks: 15.2.0
  - bruteforcesettings: 4.0.0
  - calendar: 5.5.2
  - camerarawpreviews: 0.8.7
  - checksum: 1.2.6
  - circles: 31.0.0
  - cloud_federation_api: 1.14.0
  - contacts: 7.2.6
  - contactsinteraction: 1.12.0
  - cookbook: 0.11.3
  - dav: 1.33.0
  - drawio: 3.1.0
  - duplicatefinder: 1.7.3
  - event_update_notification: 2.6.1
  - extract: 1.3.6
  - federatedfilesharing: 1.21.0
  - federation: 1.21.0
  - files: 2.3.1
  - files_downloadactivity: 1.18.1
  - files_downloadlimit: 4.0.0
  - files_external: 1.23.0
  - files_fulltextsearch: 31.0.0
  - files_mindmap: 0.0.33
  - files_pdfviewer: 4.0.0
  - files_reminders: 1.4.0
  - files_retention: 2.0.1
  - files_scripts: 4.1.0
  - files_sharing: 1.23.1
  - files_trashbin: 1.21.0
  - firstrunwizard: 4.0.0
  - forms: 5.1.2
  - fulltextsearch: 31.0.0
  - fulltextsearch_elasticsearch: 31.0.0
  - google_synchronization: 4.0.1
  - gpxpod: 7.0.4
  - integration_google: 4.1.0
  - integration_mastodon: 3.2.1
  - integration_openstreetmap: 2.1.0
  - logreader: 4.0.0
  - lookup_server_connector: 1.19.0
  - maps: 1.6.0
  - memories: 7.6.2
  - metadata: 0.22.0
  - notes: 4.12.3
  - notifications: 4.0.0
  - oauth2: 1.19.1
  - occweb: 0.2.3
  - ownershiptransfer: 1.2.1
  - password_policy: 3.0.0
  - passwords: 2025.7.20
  - photos: 4.0.0
  - polls: 8.4.3
  - previewgenerator: 5.9.0
  - privacy: 3.0.0
  - profile: 1.0.0
  - provisioning_api: 1.21.0
  - quickaccesssorting: 3.0.0
  - quota_warning: 1.21.0
  - ransomware_protection: 1.14.0
  - recognize: 9.0.7
  - related_resources: 2.0.0
  - richdocuments: 8.7.4
  - richdocumentscode: 25.4.403
  - serverinfo: 3.0.0
  - settings: 1.14.0
  - sharebymail: 1.21.0
  - side_menu: 5.1.1
  - support: 3.0.0
  - survey_client: 3.0.0
  - suspicious_login: 9.0.1
  - systemtags: 1.21.1
  - tasks: 0.16.1
  - text: 5.0.0
  - theming: 2.6.1
  - transfer: 0.6.3
  - twofactor_backupcodes: 1.20.0
  - updatenotification: 1.21.0
  - user_ldap: 1.22.0
  - viewer: 4.0.0
  - webhook_listeners: 1.2.0
  - workflowengine: 2.13.0
Disabled:
  - comments: 1.21.0 (installed 1.13.0)
  - dashboard: 7.11.0 (installed 7.8.0)
  - documentserver_community: 0.2.0 (installed 0.2.0)
  - encryption: 2.19.0 (installed 2.13.0)
  - files_archive: 1.2.7 (installed 1.2.7)
  - files_automatedtagging: 2.0.0 (installed 2.0.0)
  - files_versions: 1.24.0 (installed 1.24.0)
  - guests: 4.5.0 (installed 4.5.0)
  - hedgenext: 0.0.15 (installed 0.0.15)
  - holiday_calendars: 0.3.0 (installed 0.3.0)
  - nextcloud_announcements: 3.0.0 (installed 1.12.0)
  - recommendations: 4.0.0 (installed 1.2.0)
  - twofactor_nextcloud_notification: 5.0.0
  - twofactor_totp: 13.0.0-dev.0
  - user_status: 1.11.0 (installed 1.2.0)
  - weather_status: 1.11.0 (installed 1.8.0)
  - whiteboard: 1.1.3 (installed 1.1.3)
  - workflow_script: 2.0.0 (installed 2.0.0)
Nextcloud Signing status
Technical information
=====================
The following list covers which files have failed the integrity check. Please read
the previous linked documentation to learn more about the errors and how to fix
them.

Results
=======
- files_mindmap
	- EXCEPTION
		- OC\IntegrityCheck\Exceptions\InvalidSignatureException
		- Certificate is not valid.

Raw output
==========
Array
(
    [files_mindmap] => Array
        (
            [EXCEPTION] => Array
                (
                    [class] => OC\IntegrityCheck\Exceptions\InvalidSignatureException
                    [message] => Certificate is not valid.
                )

        )

)
Nextcloud Logs
I have no relevant log about this behavior.
Additional info

My instance is behind a reverse proxy (NGINX) that manage https

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the issue with the reported contact creation and deletion steps, then run ./occ dav:sync-birthday-calendar to compare the result. Trace the birthday calendar behavior after contact deletion; done means the deleted contact's birthday event is removed from the calendar.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.