Disable calendar notifications with Office 365 Groups

The group calendar web part in SharePoint online is fantastic! Traditionally we’ve relied on SharePoint lists to store calendar data in SharePoint. That’s great when i want a list with a bunch of custom metadata fields, but not so great when i want to handle recurring events, outlook integration or make it easy for my users to manage it along with the rest of their meetings.

Scenario Overview

Have a team of leaders who travel all around the world. Want a way to keep them informed about where folks are going to be and who’s out of the office. Want this to be easy for folks to maintain and of course, it needs to work on any device. This is a pretty common scenario so it may sound familiar.


This may seem like an obvious fit for Office 365 group calendars. The calendar is hosted as a part of Exchange online and every modern team site / office 365 group comes with a great shared calendar. You can invite the calendar from any email address and your new meeting invite will show up on the calendar. This sounds great. Unfortunately, every member and owner of the office 365 group will be notified by default. Not great when you get emailed a calendar invite for every time someone is out of the office or traveling on your team. Removing their email subscription to the group in powershell or the ui didn’t fix the issue either.

Solution Overview

To work around this, we can change a setting on the group in Exchange Online powershell that automatically subscribes new users to calendar invites. Sadly, we already have a ton of users in our group so we’ll need to remove and silently re-add the users with powershell after making this change. It’s pretty easy .. check out the script below. Let me know if this helps out,


    #Get GroupID

    $group = Get-AzureADGroup -SearchString "Test-IT-Calendar3"

    #connect o exchange online and get the group
    Set-ExecutionPolicy RemoteSigned
    $UserCredential = Get-Credential
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
    Import-PSSession $Session -DisableNameChecking

    Get-UnifiedGroup  $group.ObjectId  -IncludeAllProperties | Format-List

    #Set Group to  RequireSenderAuthenticationEnabled $false, dont subscribe new members, and turn off the welcome message
    Set-UnifiedGroup $group.ObjectId -RequireSenderAuthenticationEnabled  $false -AlwaysSubscribeMembersToCalendarEvents:$false -UnifiedGroupWelcomeMessageEnabled:$false

    $owners = Get-UnifiedGroupLinks $group.ObjectId  -LinkType Owner
    $members = Get-UnifiedGroupLinks $group.ObjectId  -LinkType Member

    #add service account as member and owner
    Add-UnifiedGroupLinks $group.ObjectId  -LinkType Member -Links $UserCredential.UserName
    Add-UnifiedGroupLinks $group.ObjectId  -LinkType Owner -Links $UserCredential.UserName

    #remove owners
    foreach ($owner in $owners)
        Remove-UnifiedGroupLinks $group.ObjectId  -LinkType Owner -Links $owner.WindowsLiveID -Confirm:$false

    #remove members
    foreach ($member in $members)
        Remove-UnifiedGroupLinks $group.ObjectId  -LinkType Member -Links $owner.WindowsLiveID -Confirm:$false

    #readd members
     foreach ($member in $members)
        Add-UnifiedGroupLinks $group.ObjectId  -LinkType Member -Links $owner.WindowsLiveID 

    #readd owners
     foreach ($owner in $owners)
        Add-UnifiedGroupLinks $group.ObjectId  -LinkType Owner -Links $owner.WindowsLiveID 

    #remove the service account
    Remove-UnifiedGroupLinks $group.ObjectId  -LinkType Owner -Links $UserCredential.UserName -Confirm:$false

     #turn back on the welcome message
    Set-UnifiedGroup $group.ObjectId -RequireSenderAuthenticationEnabled  $false -AlwaysSubscribeMembersToCalendarEvents:$false -UnifiedGroupWelcomeMessageEnabled:$true

Balancing Self-Service with Governance and Control in Office 365

When designing the Shire intranet, one of our earliest decisions was to enable our users to provision their own sites without needing to involve the support team. Traditionally, IT has placed controls and process around the creation of SharePoint sites with the goal of preventing sprawl and maintaining a centralized repository of all sites and their basic metadata.

Having build a number of custom site provisioning processes and governance strategies for SharePoint 2007-2013 I understood that we always started with the best intentions of preventing duplication and reviewing each request. As the number of requests increase over time and our focus is split across many competing priorities, we often fail to live up to our noble aspirations and blindly approve all incoming site requests.

During a rollout of Yammer in 2015 I came across a great article on Yammer vs SharePoint governance by Rich Wood that further influenced my perspective on self-service. Rich describes traditional SharePoint as a heavily architected, controlled, locked down environment in contrast to Yammer’s free and open communication style. Rich focused heavily on who can contribute content, join in conversations and pull people into a conversation. For me, the interesting part was that in Yammer, anyone could create a new group and admins had no ability to disable or stop group creation.


To monitor for the creation of new Yammer groups, one simply monitored for the “has created” phrase as each new group is announced in the All Company feed. At that point, the Yammer admin can take reach out to the group owners to offer training, collect metadata or even take down the group if it was inconsistent with company guidelines. In 2015 I had reservations about this monitored self-service model but found that the key to success was actually monitoring for what groups were being utilized and promoting them while removing groups that weren’t active. Let the business create new groups to support community or project conversations, just be diligent about cleaning up unused groups to avoid confusion.

Whether we are discussing Yammer or SharePoint, the act of creating a group or site is inconsequential and costs us nothing. The objective is to discover the site before the user invests too much effort or shares the site broadly. If we reach the user early, we can accomplish our business outcomes of education, governance, and cataloging without impacting the user’s ability to provision new Sites or Office 365 Groups from SharePoint, Outlook, Teams, Stream, Planner, PowerBI, Yammer etc.

At the start of this project we had 5 on-premises SharePoint environments and 2 Office 365 tenants. To accomplish our goal of consolidating to a single Office 365 environment we needed a single source of truth for our SharePoint inventory data, the metadata and status of each of the sites. We created a command line agent that connects to SharePoint APIs and captures all new sites into a centralized database. The application runs every 5 minutes and collects any new sites and gives them a status indicating that they are new, and we haven’t collected information about the site yet.


After identifying a new site, the agent adds a SharePoint Framework Extension to all modern SharePoint sites and a User Custom Action to classic SharePoint sites injecting a JavaScript onto the page that loads our governance banner.


How it works:


The SharePoint Framework Extension or the User Custom Action load a JavaScript onto every page on the site. The script collects the userID of the logged in user and the URL of the site collection and calls an HTTP Initiated Azure Function that sits on our Site Catalog database. The function returns a block of generated HTML based upon the status of the site in our catalog and if the user is an administrator. For each governance status, the database stores a html / handlebars template that is rendered by the Azure Function based on data in our Site Catalog. This lets us easily define custom banners for Newly Created Sites, Sites Requiring Recertification, Sites Requiring Migration, or even a custom redirect for Migrated Sites.



From the big red banner, a user can click through to an app where they can provide information about their new site that is captured in the site catalog database. Once we have received information about the site, the status in the database is changed and the banner no longer displays. When six months elapse and we want to recertify the site, we simply change the status of the site in the catalog and a new banner is displayed to users.


If a user doesn’t want to complete the form right away, they can dismiss the banner for 24 hours and access the site.

The process of letting users create sites immediately without IT intervention has been incredibly successful resulting in up to 50 new site collections per day being created.

In our tenant we hide the ability for users to create subsites within modern sites giving us an extremely flat information architecture.

By collecting this data about each and every site as well as the business sponsor for each site, we can easily communicate with owner, provide a managed decommissioning / archival process for unused sites and identify all SharePoint sites for a particular business function, location, or line of business.

Around the globe and around the clock users can provision new SharePoint Sites and Office 365 Groups to meet their needs without waiting for IT. Within minutes of site creation, users are prompted with a banner (and an email) requesting that they register their site and providing additional guidance and training. If a site hasn’t been registered within 30 days the status is updated and a decommissioning process begins automatically enabling a clean, governed environment with self-service for all.

SharePoint Spaces – A glimpse into the future or a solution in search of a problem

On my way back from the triumphant return of SharePoint Conference in Las Vegas. This partnership between Microsoft and the SharePoint community presented a magical mixture of right-now best practices from industry experts with product team vision, announcements,  and future insights.


Investments in the core of SharePoint’s collaboration experiences generated universal excitement among every attendee I spoke with. Some favorites include external sharing links that block download, password protected anyone links, and incredible usability improvements to list and library experiences. During the keynote, a simple copy and paste from excel created the structure of a list and imported the data. This simple yet delightful user interaction lowers the barrier of entry for everyday information worker to innovate and transform their business processes.


Without a doubt, the most surprising announcement came in the form of SharePoint Spaces, a new capability to create three dimensional virtual worlds with just a few clicks in SharePoint. Users simply add a new SharePoint space using a self-service experience modeled on team site creation and then use a webpart picker to import document libraries, files, movies, 360 videos and more.


The keynote certainly highlighted cool factor of these virtual spaces and the potential value of democratizing mixed reality by enabling every day users to do something that today requires highly specialized skills and equipment.


After playing with SharePoint Spaces hands on, many I spoke to enjoyed the experience but wondered if corporate America is ready for  broad adoption of mixed reality.  One can explore the space with just a modern web browser, but the best experience requires one to wear a headset such as the Windows Mixed Reality headset. While these aren’t expensive, it’s a bit difficult for me to imagine rows of cubicles in filled with boomers through millennials wearing something clearly designed with gamers in mind.


Several people I spoke to had similar concerns about the idea living in a headset and working in three dimensions no matter how cool the experience is. It’s taken a couple days of processing for me to wrap my brain around this, but I do believe there’s a potential for real value in SharePoint Spaces.


In every successful large enterprise I’ve interacted with, connecting employees to the business and creating culture has been a key focus of senior leadership. I’ve seen culture created through programs and symbols such as president’s awards, 30 year parking spaces, programs designed to support STEM in schools, or community involvement through volunteering. These endeavors connect employees to the values and spirit of a company creating a more engaged a productive workforce.


A leadership coach I worked with years ago told me it’s not about having just the best and brightest, it’s about being able to take a diverse team of people with all kinds of skills and perspectives and align them to the same vision enabling the company to pull in the same direction. It’s taken me years to understand the wisdom and value of creating this inclusive and aligned culture to take on even the hardest engineering problems while not ignoring user experience, change management and quality.


As someone who’s made a career out of helping businesses implement solutions with Microsoft technology, my first trip to the Redmond campus was a bit like a pilgrimage to the mother ship. Between the house of the future experience and the visitor’s gallery of products one feels a strong connection to the vision of empowering people to do more and the reality that across industries, this technology can make a difference in people’s lives.

Most new hires around the world will never get the opportunity to connect in person to their company headquarters. Front line workers, field sales and technical reps and local offices may receive emails with updates from their leadership or watch a quarterly webcast but that pales in comparison with the experience of exploring and interacting with the symbols of their company culture and feeling a live connection to their mission.


As a technologist, the cool factor of a 3rd world is of course interesting.  My real excitement is about the ability for everyday users to create immersive experiences that connect us in new ways.  Every employee should experience the growth opportunities that come from an engaged culture. I don’t think that mixed reality will replace today’s established experiences on phone, tablet and desktops, but I’m incredibly excited to see how it compliments and has  impact as companies use SharePoint Spaces to support culture creation and transform their organizations.


I can imagine a robust ecosystem of web parts including integration with teams to bring live interaction, stream to let users watch company events live translated in their own language, even virtual project war rooms with planner tasks on the wall, whiteboards with notes and more.  As more employees work from home and more freelancers bring specialized skills to our teams the imperative of creating an empowered, engaged workforce becomes more challenging.  I look forward to leveraging spaces to to help bring people together and build the culture we aspire to be a part of.

Communicating your way to success!

Thursday March 2nd I was lucky enough to get a change to present with a long-time friend and collaborator, Mike Gilronan.  The topic is one I’m working on for a presentation at the Share conference in Johannesburg June 12-14th.  This conference is a bit different than most I do as it’s totally focused on business users rather than technology professionals.  In partnering up with Mike on this deck it was fun to work with a guy who professionally helps drive and coach conversations around getting business value out of the SharePoint everyday at his company Collacrity.


The process of putting this together was a blast with a career project manager and a career solution architect debating roles and responsibilities and sharing stories from past projects until after midnight.  Many thanks for Mike for partnering on this and I hope you enjoy it!





Modern Team Sites have reached general availability! Here’s how to apply theming to your new modern sites

Welcome to the future!  Since the first time we saw modern team sites on May 4th 2016 we have all lusted after them.  Slick, polished, easy to use pages that you can edit on any device that will look great on any device.  I was speaking last night at the CT SharePoint User Group and took a picture on my phone which I posted as a part of a new news article from the SharePoint app on my phone.  Really exciting stuff!


Vesa Juvonen put together a fantastic introduction into the current state of customizations for modern team sites.  In all honesty they really are a very much out of the box, no customization sort of experience today.  Once the SharePoint Framework ships, we’ll be able to add some modern client-side webparts but other than that, things are pretty much locked down.  This includes no sharepoint designer support, no uploading .aspx pages, no script injection, nothing.


The one customization you can do is to apply a theme to the site.  For folks who have done branding work in SharePoint 2013 I’m referring to a composed look.  The fun part, is that the user interfaces for managing this are entirely removed so its time to break out some PowerShell with the patterns and practices PowerShell library for SharePoint online.  There’s an example on the site of how to apply branding but I faced some challenges with that so tweaked / adapted it a bit and wanted to share it here:


Building your theme

Since SharePoint 2013, you can (and should) use a .spcolor file to define the palette for your SharePoint site, and a .spfont file to define the fonts that are used.  There two items historically come together as part of a composed look which you can access via site settings.


Personal advice, don’t ever both hacking through the giant ugly xml file that is the .spcolor file on your own, Microsoft has a great free tool called the SharePoint Color Palette Tool.  Use it!  It’s great an gives you a preview of how things would look when applying the styles on a classic team site.



Apply the theme

If you have never used the SharePoint PNP PowerShell libraries you’ll need to get them.  My preference is to run PowerShell ISE as an admin and install it from the PowerShell Gallery using this:

Install-Module -Name SharePointPnPPowerShellOnline


After installing the module this is the basic code you’ll want to run

# Connect to a previously created Modern Site
$cred = Get-Credential
https://mytenant.sharepoint.com/sites/MyTeamSite -Credentials $cred

#get the current web used in generating the url to the files
$web = Get-PnPWeb


#add a Theme folder in site assets to keep things neat
Add-PnPFolder -Name Theme -Folder SiteAssets

# First, upload theme assets
Add-PnPFile -Path C:\theme\ModernTeamSite.spcolor -Folder SiteAssets/Theme
#Add-PnPFile -Path C:\theme\Arial.spfont -Folder SiteAssets/Theme
#Add-PnPFile -Path C:\theme\bgimage.jpg -Folder SiteAssets/Theme


# Second, apply theme assets to site
$palette = $web.ServerRelativeUrl + “/SiteAssets/Theme/Shire.spcolor”


#sp font doesn’t seem to be supported
$font = [NullString]::Value


#if you want a background image, map it here
$background = [NullString]::Value

# We use oob CSOM operation for this
$web.ApplyTheme($palette, $font, $background, $true)


# Set timeout as high as possible and execute
$web.Context.RequestTimeout = [System.Threading.Timeout]::Infinite


Leveraging Microsoft Teams to Accelerate Team Collaboration (San Francisco SPTechCon)

Microsoft Teams is a brand-new service in preview that promises to change the way that teams collaborate to get work done.  Built on the foundation of Office 365 Groups, Teams is much more than persistent chat and has the potential to transform our collaboration landscape.  Come spend an hour understand when to use what, out of the box functionality and the extensibility story.  This session was presented at SPTechCon San Francisco and explores the framing, use cases, competitive landscape and features including persistent chat with emojis, integration of SharePoint, PowerBI, Planner, and Office content with tabs, and the new bots that make it easy to find expertise by using the Microsoft Graph.

Download the slides

Actionable insights post-ignite

As always, Ignite this year was a fantastic event not just for the sessions but for the many conversations on convention center floor talking to folks from various teams and comparing the stories and demos.  This quick post will highlight a few things not yet in first release that are coming in the near future, things i expected to see that are further off


Super exciting Coming Soon or in Preview:

  1. Yammer and Office 365 Groups Integration:  Yammer is far from dead.  In fact, users of yammer can create a new yammer group and automatically create a team site, planner board and powerbi workspace.  When you manage the users in the yammer ux the changes in membership can also be seen in O365 Admin Center.  While i haven’t been able to get my hands on it yet, this would imply the ability to create dynamic groups using rules in AAD.
  2. Modern Team Sites:  This one feels very close but is not yet rolled out.  If you create an Office 365 Group and check out the sitepages library you can see the scaffolding that stores modern pages, create your own pages, add client side web parts and publish the page as your welcome page.  Still no ability to add new apps or lists and the navigation story is a bit inconsistent.    Very exciting stuff and can’t wait to see this become real.
  3. Custom Client Side WebParts with SPFX.  The SharePoint Framework gives developers a way to create new experiences using the same tooling as the product team for client side, responsive custom solutions.
  4. Team Site Pages: for now these really area a partial replacement for wikipages with a super intuitive ux but lots of limits in terms of layout or functionality.  Very promising
  5. PowerApps and Flow: these are really maturing into solutions that companies could plan to use early next year.
  6. External Members in O365 groups: This is partly here, but lacks support in planner and some other workloads.


Totally Missing for now:

  1. Modern Publishing: The screen shots have existed since the future of SharePoint event but nothing was shown in terms functional equivalents to master pages, page layouts, themes, or real branding capabilities
  2. Page and List Apps with SPFX
  3. Search Results Templating in modern pages
  4. List View Templating in modern pages
  5. Replacement for JS Embedding in modern pages
  6. Site Templating
  7. APIs to manipulate modern pages: how can i add modern webparts to preconfigure modern pages as a part of provisioning
  8. Planner Import / Export
  9. Ability to manage o365 group members for non-OWA users


As you can see, a ton of focus in sharepoint around the modern experiences, integration with groups, and next generation development stories.   Amazing things have been accomplished in months since May 4th, but tons is still to be done.  We’re used to seeing 3 years of development innovation by the time we get access to it and for platform level capabilities it looks like the cadence shift will mean that things will take a bit to mature into real usable mature platforms.  None the less great things to start bringing back value quickly.  One of my biggest takeaways was the need for a detailed roadmap to help customers understand what’s happening when as we roll out new capacities.  In a future post i’ll share more on that topic as well.