Forum Discussion
Birthdays calendar behavior
- Apr 14, 2020
Yes, unfortunately, that is the current designed and expected behavior. This is because they are 2 separate features controlled at 2 separate levels.
The Birthday Calendar feature is an Exchange level feature exposed in Outlook on the Web (OWA). It creates an additional Calendar which is synched to Outlook Desktop as well. The entries are based on the Birthday information of your contacts in the Contacts folder.
The Birthday events that are being added to your main Calendar folder is an Outlook Desktop feature. These events are created when you add or update the birthday field of a contact and then save the contact. The same applies to the anniversary field.
Unfortunately, unlike in Outlook on the Web, there is no option to disable this behavior in Outlook Desktop and thus could end up with duplicate birthday events and have to delete them manually from your main Calendar.
Yes, unfortunately, that is the current designed and expected behavior. This is because they are 2 separate features controlled at 2 separate levels.
The Birthday Calendar feature is an Exchange level feature exposed in Outlook on the Web (OWA). It creates an additional Calendar which is synched to Outlook Desktop as well. The entries are based on the Birthday information of your contacts in the Contacts folder.
The Birthday events that are being added to your main Calendar folder is an Outlook Desktop feature. These events are created when you add or update the birthday field of a contact and then save the contact. The same applies to the anniversary field.
Unfortunately, unlike in Outlook on the Web, there is no option to disable this behavior in Outlook Desktop and thus could end up with duplicate birthday events and have to delete them manually from your main Calendar.
Hello RobertSparnaaij,
thank you for your reply; you confirmed my doubts.
Experiment
I made this experiment/test (just to increase my knowledge).
The objective was to set the Reminder to 0 days (default is 18 hours) for all recurring appointments/events inside Birthdays' calendar, in bulk.
I achieved the objective by using https://developer.microsoft.com/en-us/microsoft-365/blogs/microsoft-graph-powershell-preview-now-on-powershell-gallery/. This is the piece of PowerShell code:
# You'll be asked to sign in via web browser:
Connect-Graph -Scopes "Calendars.ReadWrite","User.Read.All"
$userId = (Get-MgUser | Where-Object {$_.DisplayName -eq "Bill Gates"}).Id
# If the 'Top' parameter is missing, it returns one calendar only (the default user's calendar):
$calendarId = (Get-MgUserCalendar -UserId $userId -Top 10 | Where-Object {$_.Name -eq "Birthdays"}).Id
# If the 'Top' parameter is missing, it returns 10 events only (maybe it's the default:
Get-MgUserCalendarEvent -CalendarId $calendarId -UserId $userId -Top 2000 | %{ Update-MgUserEvent -EventId $_.Id -UserId $userId -ReminderMinutesBeforeStart 0}
Even if the Update-MgUserEvent cmdlet returns the error below (for each item in loop), Reminder was changed successfully. Of course, the error itself can be suppressed by adding the parameter -ErrorAction SilentlyContinue.
Update-MgUserEvent : The server responded with an unrecognized response, Status: OK
At line:1 char:80
+ ... p 1000 | %{ Update-MgUserEvent -EventId $_.Id -UserId $userId -Remind ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: ({ UserId = 0a24...oftGraphEvent }:<>f__AnonymousType41`3) [Update-MgUserEvent_UpdateExpanded], RestException`1
+ FullyQualifiedErrorId : OK,Microsoft.Graph.PowerShell.Cmdlets.UpdateMgUserEvent_UpdateExpanded
Bye,
Luca
- GlennKocakMay 08, 2024Copper Contributor
Thanks Luca,
Can't believe in 2024 this is the only viable way to remove/change something as straightforward as a reminder on a birthday calendar...
I ended up doing something similar using the Graph API, doing an update request on each of the events in the Birthday calendar. Basically following the syntax layed out here: https://learn.microsoft.com/en-us/graph/api/event-update?view=graph-rest-1.0&tabs=http.
Did take a bit of manual labor looping through all the event ids separately, but I didn't have the option of connecting via Powershell unfortunately.