Birthdays calendar behavior

Occasional Contributor

Hello community,

I'm writing because I'd like to know if behaviors experienced while using the birthdays calendar from Outook (desktop), are well-known or not: 


  1. When I create a new contact with birthday date, Outlook creates an appointment entry in both Calendar and Birthdays calendar; the same happens while modifying an existent contact . I expected it to be in Birthdays calendar only. It doesn't happen when the same operations are made from OWA.
  2. The Birthdays calendar is read-only so I cannot modify any of birthday's appointment item inside of it (for example, change the reminder from 18 hours to 0 minutes); I can make these changes from OWA only.



  • Office 365 Business Premium
  • Microsoft Outlook for Office 365 (16.0.12624.20422) 32-bit

Thank you,


2 Replies
best response confirmed by lucafabbri365 (Occasional Contributor)


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 @Robert Sparnaaij,

thank you for your reply; you confirmed my doubts.




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 Microsoft Graph PowerShell Preview. 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