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.

Starting a new intranet? Decide between Classic SharePoint and Modern Communication sites

Over the past year and I half I’ve been privileged to work on work on one of the first modern intranet’s for a fantastic biotech company, Shire. My role is the associate director of collaboration responsible for SharePoint, Yammer, and OneDrive and related technologies. Two companies, Shire and Baxalta were coming together and looking to create a new intranet for the entire company.

As the lead architect for the Intranet and a long term SharePoint guy, I was passionate about being a part of the renaissance that SharePoint was experiencing. Our timing was a bit ahead of the product but we were able to make decisions aligned with our long term goals of modern, mobile, and out of the box even when we needed to build a few temporary solutions to ensure we met the needs of the business.

6 months after the general availability of communication sites, we have launched over 300 communication sites and 3000 modern team sites in our governance first self-service intranet. Being first comes with unique challenges but also some fantastic opportunities to share lessons learned with companies who are redesigning their intranet right now.

I had a great conversation a couple weeks ago with a friend who’s designing right now and was deciding between classic and modern for the root of her intranet. We collaborated on some pros and cons so I wanted to share these with the hopes that it helps others who may be asking the same question.

 What is Classic, What’s Modern?

Classic SharePoint is based on Microsoft’s ASP.NET web technology. The pages are rendered on the server and HTML is sent over the wire to clients. When a user clicks, the page posts back to the server and the server renders the new html. This back and forth can make interaction seen a bit slower as you need to go roundtrip to the server for each edit. This technology was not designed for modern connected devices and works best on desktop browsers.

Modern SharePoint is pages are based on modern web development standards and are written in JavaScript and run on your device for a faster, natively mobile responsive application experience. This new set of experiences was designed for mobility and leverage a number of native iOS and Android applications such as SharePoint, OneDrive, Planner, and Teams.

 Building a Classic SharePoint Online Intranet

Most customized classic intranets in SharePoint rely on master pages for their branding. It is possible but more challenging to customize relying only on css and javascript injection which is more complex and costly but doesn’t have the same supportability challenges.

If you are going to design in classic, please be sure to follow these best practices from Microsoft for the best supportable outcome: https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/portal-branding

Master Pages

The ultimate in user interface customization.
One can rewrite or customize any aspect of the page chrome giving you the ability to make SharePoint not look like SharePoint.
Customizing Master Pages in SharePoint Online is not recommended by Microsoft.

Avoid customizing master pages. As mentioned above, updates
to the service, may affect the structure of out of the box master pages. If you
have implemented custom master page copying the contents of any out of the box
master page, you will need to further monitor if this out of the box master
page is not updated, and re-implement these changes in your custom master page.

Otherwise, some SharePoint functionality may start behaving
incorrectly, when your custom master page is in use. That’s why customizing
master pages leads to additional risks and maintenance costs, and it’s
recommended to avoid it, when possible.

Mature 3rd Party design
options and templates

A very mature eco-system
of 3rd party options and intranet in a box solutions exist.  These can provide a jump start or cost savings versus developing your
own custom solutions.

Be aware that deep knowledge of SharePoint
development (placeholders, delegate controls, HTML and CSS) required to make
changes to these solutions and they are not generally compatible with Modern

Mature patterns and
tooling for customization

Even within a responsive template, all content must be designed to be responsive via custom CSS as the native webparts and text editors are not designed for

Classic webparts and
customization techniques

Some customization techniques such as JSLINK for list customization, Display Templates for search based applications, or Filter WebParts don’t have a modern

Classic and Modern
Hybrid UX challenges

Inconsistency between Intranet Home and Modern Team and Communication Sites can be confusing to users

Modern Pages in Classic

Classic customization
techniques do not apply to modern pages within the site such as the Document
Library, Lists, Site Contents etc.

Doesn’t support Modern

Does not support Modern
News (rollup to SharePoint Home or Mobile).

Doesn’t support News
Alerts on Mobile

Doesn’t rollup news to a Hub Site

Limited Hub Site Support

No shared Hub Navigation
or shared theme with other Hub connected


Building a Modern SharePoint Intranet with Communication Sites

Microsoft’s fully supported forward direction for Intelligent Intranets. Communication Sites will allow you to quickly create an out of the box responsive intranet and extend where necessary using the SharePoint Framework.

Communication Sites are not supported in the root Site Collection for your tenant so you’ll need to create it under the /sites/ path and use a little JavaScript to redirect to the Intranet. This can be done with no user perceptible impact.


Responsive out of the box

Both the site chrome and all webparts are automatically optimized for modern mobile

3rd Party solutions may be immature

Developers less skilled with modern customization techniques may have a tough learning curve. 

SharePoint developers have traditionally been .NET developers working in Microsoft Visual Studio.  SharePoint Framework is based on open source tools and is written in JavaScript so there is quite a bit of learning required.

Anyone can design a great looking intranet

Easily updated without third party or IT support. 

You need some great pictures and writing skills but significantly lowers the
technical demands for creating a professional responsive intranet.

Consistency between Modern Team and Communication Sites.

Maintains continuity in design and function of rest of the new Intranet and Collaboration Sites. 

If you use SharePoint framework to extend the design, the changes can be easily applied to all modern sites.

Evolving Platform

Continually evolving as Microsoft releases mature the platform.  For
example: Hub Sites, News Alerts, Parallax Scrolling, Image Search and Image Cropping have all shipped since the launch of Communication Sites

Hub Sites

Hub Sites will allow you to connect a number of Site Collections with a common Hub navigation, shared theme, news roll-up and ability to search across all Hub connected

Unlike sub-sites, one can easily reorganize what Hub a site is connected to to adapt as your organization changes over time.

Extensible with SharePoint Framework

Can extend with 3rd Party or custom webparts or extensions on site pages for customized look and feel or functionality

Safer to customize

Modern Customizations are designed to not break as SharePoint evolves and changes.

As an example built in locations for top and bottom user interface
customization will always be supported vs the developer choosing a location on
the page and hoping that it’s not broken by future changes in

Get started with free PNP samples

Large collection of open source Web Parts available from Microsoft Patterns and



For me this is really about aligning with where the product is going to get the best user experience for my company and reducing the amount of rework we’ll need to do over time.

There were some classic sites we build early on when communication sites weren’t available and it’s been painful to go back and rebuild once users have moved in and settled into their sites. For those who are starting now, I’d encourage you to seriously consider if there are hard constraints that would prevent you from starting modern.


I’d love to talk with you about your questions and help as many folks be successful with their SharePoint based intranets as possible. If you’d like to learn more there some great events coming up on the east coast and west coast.   I’ll be at SharePoint Fest DC March 26 – 30, 2018 and SharePoint Conference North America May 21- 23 in Las Vegas


To save a little money on these conferences:

Use code FeldmanDC100 for SharePoint Fest DC March 26 – 30, 2018

Use code Feldman for SharePoint Conference North America May 21- 23 in Las Vegas



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