Forum Discussion

lucafabbri365's avatar
lucafabbri365
Brass Contributor
Apr 13, 2020

Birthdays calendar behavior

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.

Environment:

 

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

Thank you,

Luca

  • lucafabbri365 

    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.

  • lucafabbri365 

    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.

    • lucafabbri365's avatar
      lucafabbri365
      Brass Contributor

      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 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

       

      Bye,

      Luca

      • GlennKocak's avatar
        GlennKocak
        Copper 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.

  • Any Updates on this matter? Is this the best solution in 2024, 4 Years after the post?

Resources