{"record":{"id":"f8d0606596a812fe","repo":"nextcloud/server","slug":"birthday-calendars-are-disabled","errorCode":null,"errorMessage":"Birthday calendars are disabled","messagePattern":"Birthday calendars are disabled","errorType":"console","errorClass":"InvalidArgumentException","httpStatus":null,"severity":"error","filePath":"apps/dav/lib/Command/SyncBirthdayCalendar.php","lineNumber":86,"sourceCode":"\t\t\t$isEnabled = $this->config->getUserValue($userId, 'dav', 'generateBirthdayCalendar', 'yes');\n\t\t\tif ($isEnabled !== 'yes') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/** @var IUser $user */\n\t\t\t$this->birthdayService->syncUser($user->getUID());\n\t\t});\n\n\t\t$p->finish();\n\t\t$output->writeln('');\n\t\treturn self::SUCCESS;\n\t}\n\n\tprotected function verifyEnabled(): void {\n\t\t$isEnabled = $this->config->getAppValue('dav', 'generateBirthdayCalendar', 'yes');\n\n\t\tif ($isEnabled !== 'yes') {\n\t\t\tthrow new \\InvalidArgumentException('Birthday calendars are disabled');\n\t\t}\n\t}\n}\n","sourceCodeStart":68,"sourceCodeEnd":90,"githubUrl":"https://github.com/nextcloud/server/blob/ecdeb153ffdf227235c9a7e2d13dbe0f9c817bc3/apps/dav/lib/Command/SyncBirthdayCalendar.php#L68-L90","documentation":"Thrown by verifyEnabled() at the very start of occ dav:sync-birthday-calendar when the global app config value dav/generateBirthdayCalendar is anything other than 'yes' (default is 'yes'). The feature was deliberately switched off, so the command refuses to run before touching any user. The per-user key of the same name only re-enables syncing for one user and does not bypass this global gate.","triggerScenarios":"`occ dav:sync-birthday-calendar [uid]` after an admin ran `occ config:app:set dav generateBirthdayCalendar --value no` (common on instances that disable auto-generated birthday calendars).","commonSituations":"Performance tuning guides recommend disabling birthday calendars on large instances; admin re-enables per-user but forgets the global flag; inherited config from instance setup automation.","solutions":["Re-enable globally: `occ config:app:set dav generateBirthday-calendar --value yes` is wrong key — use `occ config:app:set dav generateBirthdayCalendar --value yes`, then re-run the sync","Confirm the current value with `occ config:app:get dav generateBirthdayCalendar`","If the feature must stay off, remove the sync job from cron instead of running the command"],"exampleFix":"# before\nocc dav:sync-birthday-calendar alice\n# InvalidArgumentException: Birthday calendars are disabled\n\n# after\nocc config:app:get dav generateBirthdayCalendar   # -> no\nocc config:app:set dav generateBirthdayCalendar --value yes\nocc dav:sync-birthday-calendar alice","handlingStrategy":"validation","validationCode":"#!/usr/bin/env bash\nif [ \"$(occ config:app:get dav generateBirthdayCalendar)\" != \"yes\" ]; then\n  echo \"Birthday calendars disabled globally — refusing to sync\" >&2; exit 1\nfi\nocc dav:sync-birthday-calendar \"$@\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Gate the sync job on `occ config:app:get dav generateBirthdayCalendar` returning yes","Distinguish the global app flag from the per-user flag of the same name","Document intentional feature-off decisions so operators don't blindly re-enable"],"tags":["dav","calendar","birthday","config","occ","cli","feature-flag"],"backgroundTag":"feature-disabled-by-config","analyzedSha":"ecdeb153ffdf227235c9a7e2d13dbe0f9c817bc3","analyzedAt":"2026-08-17T01:36:13.386Z","schemaVersion":2},"datasetVersion":"2026-08-17T04:17:16.089Z"}