How and When to Adopt the Modern UI in SharePoint – Part 2/2

< Previous post in this series


This post is the second in a two-part series where I look at how and when the Modern UI should be adopted in SharePoint Online, including the benefits constraints, and design decisions that need to be weighed up as part of this process. In my first post I covered the first two steps below, in this post I cover parts three and four:

  1. What compatibility problems (if any) are there for existing sites in SharePoint Online, and what do we need to do to address them?
  2. What compatibility problems are there that may constrain or alter the approach for future design and development work, and how might we address these problems?
  3. What requirements/use cases are there that mean moving to the Modern UI provides benefits to either the business or IT?
  4. What options do we have for if/when we roll out the Modern UI, what are the pros/cons of each, and what is our recommendation?

Step 3 – Benefits of the Modern UI

So having spent the previous post unearthing a myriad of reasons not to adopt the Modern UI, it’s only fair that I go into a bit more detail on the benefits of adopting it. It’s undeniable that the UX is better in the Modern UI and offers a far more intuitive way of getting stuff done. Once you become familiar with the new layout, it makes things like menu options easier to find. I’ll go into a little bit more detail in this section.

User Experience – Lists/Libraries

Easier to Switch Views

Minor UI tweak, but the Modern Experience makes it easier to navigate between views of your library/list.

Easier to Customise Views

Users can change column widths, and sort, filter and group information to customise their view. They can then save the view to make it available to other users, without having to go into the hideous ‘Create a View’ interface we all know and love.

Pinning Documents

Important or frequently used documents can be ‘stickied’ to the top of document libraries, helping to highlight vital information to users. This can be really useful in big document libraries where only a few documents are truly useful.

Properties Pane

You can edit item metadata in-line in a nice new pane that appears on the right-hand side of a list/library. This pane also shows a preview of documents, and who they’re shared with. It’s a much easier way of accessing the stuff previously buried in the context menu or in pop-ups.

Properties Pane

List Forms

The out of the box list forms have been revamped and generally provide a much more intuitive experience for end users.

Copy and Move Files Easily

These toolbar items provide a much easier, more intuitive way of moving/copying files to other areas of SharePoint.


The Modern Libraries and Lists look like OneDrive, which provides users with some much-needed consistency across different services in Office 365.


User Experience – Sites/Pages

Permissions Management

Modern Sites expose the membership options on every page to site owners, and offers a far simpler way of managing membership than the overly-complex, cumbersome SharePoint model.

Page Editing

It’s much easier to edit pages now. You can add a web part far more simply, move them around far more intuitively (it’s nice not to have to threaten death to Bill Gates when web parts inevitably move into the wrong zone or in the wrong order), and the nasty old edit web part pane is massively improved.

Modern Web Parts

The best thing about Modern Pages are the Modern Web Parts themselves, which are all really useful and much easier to set-up than the old-school web parts. You can very quickly get pages looking really good and really useful.

Highlighted Contents

Cross-Device Compatibility

The Modern UI moves SharePoint into the present in terms of mobile device compatibility. Forms, pages, libraries etc. will now display nicely on tablets and smartphones, without the need for custom CSS.

Mobile Form


Office 365 Groups and Teams

Modern Sites are provisioned automatically alongside new Office 365 Groups, and are intrinsically linked to Groups and Teams. The Modern Site (also known as a Group Site) is the default storing place for files within the Group, and the out of the box ‘Files’ tab within Teams.


PowerApps and Flow

PowerApps and Flow can be easily integrated into Modern lists/libraries to create business applications/forms and basic workflows. I’ve not worked with any organisations yet that have widely adopted PowerApps or Flow, but I’m sure there are plenty out there who will see this deeper integration as a big win for the Modern UI.


Increased Storage Capacity

Site collections created as Modern Sites (as opposed to them being upgraded to the Modern UI later) can store a massive 25TB of content, up from the previous 1TB limit. The 1TB limit was already massive and serviced all but the most unusually large sites, but 25TB of storage is truly enormous. This gives even more flexibility to your IA (information architecture) planning, and all but removes site collection storage capacity as a constraint, allowing you to focus on other things like security boundaries and usability for your IA.

Step 4 – Options and Recommendations

Now that we’ve considered the impact to your existing estate; how you’ll be constrained for future work; and the benefits of upgrading to the Modern UI, we can compare different options of when/if to adopt the functionality.

Here are a few general things to consider when you’re looking at options.

Things to Consider Before You Come Up with Options

Consider Constraints Versus Benefits

Probably the best way to approach this decision point to weigh up the constraints of going Modern versus the benefits. Organisations are likely to weigh criteria differently depending on their exact context and business use cases, so it’s up to you what you consider the biggest areas of concern or benefit. In my current client’s case, the constraints around the provisioning, the fragmented user experience between classic and modern lists, and the (current) lack of support for a global navigation were big knocks against the Modern UI, but in other companies these may be more acceptable. Conversely, the business are crying out for a more intuitive page editing experience, whereas in your organisation this might not be seen as especially important.

Consider Whether to Upgrade Legacy Sites

The longer you leave it to upgrade to Modern, the more legacy sites you’ll have to deal with down the line. Sometimes you can ease this concern by coming up with blanket rules, such as “All existing project sites will remain in Classic” (as a project site has a finite lifespan), but most of the time you’ll need to consider sites on a case-by-case (or at least a template-by-template) basis.

My advice is to approach this like you would a migration: unless there is a good reason or a business case to justify putting in the remediation effort to change a site to Modern, don’t do it. Think about it in much the same way you would consider rebuilding a business application running on some old on-premises kit as a provider-hosted add-in in SharePoint Online: if it doesn’t provide some ROI, it’s just not worth the hassle, risk, and expense.

Consider the Fragmented User Experience Between Areas of SharePoint

I’m not talking about the fragmented experience of hopping between Classic and Modern lists here (which I’ve already covered), but the fragmented experience traversing Modern and Classic Sites. During your adoption of the Modern UI, it’s likely there will some sites that remain as Classic either indefinitely or for a period of time, and others that are either born Modern or upgraded quickly (due to them having no compatibility issues). And that’s not to mention the fact that your publishing intranet sites will be unable to adopt the Modern Sites experience for the foreseeable future!

Consider Fragmented Training

Your training delivery and material will likely need to cover both Modern and Classic configurations, as stuff has been moved about in the menus and generally looks quite different. This has impacts on the cost and resources required to train your staff.

Consider the Support Implications

Similar to training, you will need to support two types of experience. This has implications in terms of the knowledge required for support staff, and might make it harder for 1st/2nd line support to resolve issues. You could see an increased number of tickets flowing down to 2nd/3rd line when they might have previously been resolved further upstream.

Consider the Maintenance Implications

Another risk is that you could find yourself having to maintain two ‘copies’ of the same site type/template; one designed for the Classic UI and one for Modern. There’s a very real chance you’ll face a scenario where an urgent change needs to proliferate across all existing and future sites of that type, and guess what? You’re now going to double your test execution effort, and will probably need to spend more effort on design, development work, test scripting, automated regression testing set-up, and deployments to accommodate the two UIs.

Consider the Strategic Direction Microsoft Are Taking Things

The Modern UI is where things are all heading longer-term for SharePoint. At some point, you will have to get on the bandwagon, or you will miss out on useful new functionality and features being rolled out on Office 365.

You shouldn’t really look at “going Modern” as a question of if, more a question of when you do it.

Assessing the Options

As mentioned above, this should be a question of when, not if, you move to the Modern UI. For me, there are a few options worth looking at for when you choose to make the move, and these are:

  1. Go Modern immediately;
  2. Go Modern in c. 3 months (when things like embedding custom JS hit general availability);
  3. Go Modern in c. 6 months (when – hopefully – other stuff like custom page layouts, new web parts etc. hits); and
  4. Do nothing/stay Classic (included in the interest of fairness more than anything).

It’s going to depend on your organisation, your situation, and your stakeholders how you go about recommending what to do. But if you want to take the decision down to a very granular level, you can do something like I’ve done below.


In this table, I’ve got rows for every ‘consideration’, including the broad areas of constraint, benefits, how much remediating action would need to be conducted, and the extra stuff I outlined above. Against each criteria, I’ve given a weighting % for how important it is in the grand scheme of things. Obviously, this is likely to change in your organisation. Then, I’ve given a score out of 5 (with 0 being terrible and 5 being excellent) for how a particular option deals with a particular criterion. Again, this is highly subjective and you may vehemently disagree with my scores here!

Finally, a weighted score for each option can be derived, indicating which is the “best” option for you situation.

I’ve stuck the spreadsheet this table is derived from on my OneDrive here:!AkfwQi26meWDgegN95w0IwNRaHJR-A

Final Recommendations

According to how I scored and weighted things above, it’s clear that moving to the Modern UI immediately would present too many challenges to overcome. Doing nothing is – despite it’s relatively high score – not a great idea either. For this reason, my final recommendations were as follows:

  1. Adopt Modern (SPFx) Web Part development immediately to future-proof any customisations;
  2. Trial workarounds for the provisioning issues (e.g. we can implement processes whereby an admin or power user adds an app to configure the homepage of a Modern Site how we want it to look, and implement a Proof of Concept for a UI-based execution to do this programmatically);
  3. Build any new templates required in the next 3 months as Classic sites;
  4. Leave all legacy sites in Classic mode for the time being;
  5. Trial the Modern UI with business champions to see if there are specific use cases that will force us to go Modern;
  6. Enable Modern on the tenant and ensure scripts for downgrading incompatible areas to Classic work; and
  7. Reassess things in three months’ time, or whenever additional information is made available on the Public Roadmap.


So, there you have it. Hopefully this post helps some of you guide your organisations or clients as to if/when they should adopt the Modern UI. As I noted earlier, this is a bit of a moving feast as Microsoft are continually rolling out updates and making new information available to us about what’s coming down the pipeline, but – for the time being anyway – this post should serve as a useful reference or starting point for your own research.

My TL;DR (too long; didn’t read) summary of the Modern UI would be as follows: It’s great, but it’s not quite enterprise-ready yet.

The problems around provisioning and the limitations it puts on customisation currently means it is not feasible to roll it out in large organisations with a lot of legacy content or demand for new collaboration spaces. The only situation in which I would confidently endorse fully adopting the Modern UI in its current guise is for organisations with brand new, greenfield SharePoint Online implementations.

As it happens, I actually went into this process with the belief that my client should adopt the Modern UI immediately, in order to align themselves with Microsoft’s strategy. It was only after doing more research and testing around the constraints that I was forced to climb down from my original position and adopt a more conservative outlook. For most of us, the Modern UI just isn’t there yet. But I’m hoping my view will change once more updates are released!

Thanks for reading.

< Previous post in this series

Related Reading

< Previous post in this series

How and When to Adopt the Modern UI in SharePoint – Part 1/2

Next post in this series >


I’ve spent some time over the last few weeks doing an impact assessment of moving to the new(ish) ‘Modern UI’ in SharePoint Online. I looked at it primarily from a technical angle so that my client can decide whether to adopt it now, based on the constraints of the current technology. The conclusion I reached was that it’s not quite ready yet.

This post isn’t an attempt to bash Microsoft or poke holes in this functionality. I actually think the Modern UI is great, and completely the right direction for Microsoft to take things. But for me, it’s not quite an ‘enterprise-ready’ product yet. Hopefully this post helps other customers out there facing a similar dilemma, or at the very least frames how you can do your own assessment of whether or not to ‘go Modern’.

The post ended up getting pretty big, so I’ve split it into two parts:

  1. Part One: Introduction, assessing compatibility for existing sites, and assessing constraints for future work; and
  2. Part Two: Benefits of the Modern UI, and options/recommendations for how and when to adopt it.

What is the Modern UI?

Microsoft have been introducing the ‘Modern UI’ for sites in SharePoint Online over the last year or so. This new functionality provides a better user experience, cross-device compatibility, better integration with other products in the Office 365 suite (namely, O365 Groups), and a 24 TB increase in total storage space per site.

It surfaces at three ‘levels’:

  • Modern Sites, in the form of Modern Team Sites (AKA Group Sites) and Modern Communication Sites;
  • Modern Lists and Libraries; and
  • Modern Pages.

Modern Page

Above: A Modern Page on a Modern Site


Modern Lib

Above: A Modern Library within a Modern Site

However, Modern UI offer some drawbacks around the customisations that can be achieved. These constraints will directly affect how, where and when the Modern UI can be adopted within many organisations’ Office 365 environments.

Process for Assessing the Impact of the Modern UI in Your Environment

When I was looking at if/when the Modern UI should be adopted and rolled out in my organisation, I undertook four steps, which I will detail in this blog post. At a high-level, these steps were:

  1. What compatibility problems (if any) are there for existing sites in SharePoint Online, and what do we need to do to address them?
  2. What compatibility problems are there that may constrain or alter the approach for future design and development work, and how might we address these problems?
  3. What requirements/use cases are there that mean moving to the Modern UI provides benefits to either the business or IT?
  4. What options do we have for if/when we roll out the Modern UI, what are the pros/cons of each, and what is our recommendation?

As mentioned above, Steps 1 and 2 will be covered in this first post; Steps 3 and 4 will follow in a second post.

Step 1 – Assess Compatibility with Existing Sites

Before moving to the Modern UI, you are going to need to look at how it plays with any existing sites you have in your Office 365 tenant. There may be bits of customisation and configuration that preclude certain sites or lists from becoming Modern, and mean that you need to do some remediation work or plan for leaving some sites/areas behind in the Classic configuration.

To help with this assessment, the PnP (Patterns and Practices) team at Microsoft have provided a really excellent tool called the ‘SharePoint Modern UI Experience Scanner’. There are some solid instructions in the GitHub repository that even a plebeian like me could understand and follow, so you shouldn’t have too many difficulties getting this up and running in your environment – provided you have an admin account to set-up an app-only principle with tenant permissions.

The UI Scanner trawls through every site on your tenant and outputs a whole raft of CSV files at the end of it. These CSVs provide information on incompatible customisations and configurations at both the site level and the list level. I created a Power BI report to make the information a bit more human-readable, but you can achieve something similar in Excel (or draw your own conclusions straight from the CSV, if you don’t need to represent an impact assessment to a broader audience).

My tips to get meaningful information out of the reports are as follows:

Site-Level Customisations

IgnoredCustomisations.csv is the high-level report that tells you sites with custom Master Pages, custom CSS, or Custom Actions. These things are currently incompatible with the Modern UI.


My top tip for this report is to make sure you filter out any Publishing sites, i.e. stuff that is related to your publishing intranet rather than being a collaboration space. You might be able to do this via something as simple as which managed path a site resides under (/teams or /sites), but you may need some slightly more complicated logic to weed out the irrelevant stuff. The Modern UI cannot be used on Publishing sites anyway, so they’re kind of irrelevant for a compatibility report.

It’s also a good idea to find a way to call out any sites with no issues, so you have a clear way of knowing which sites you don’t need to refactor to get them working with the Modern UI.

My Power BI Report for Site-level customisations ended up looking like the below:


List-Level Customisations

The ModernListBlocked.csv file provides a whole heap of information about compatibility issues that might prevent you from switching on the Modern UI in certain lists/libraries. These issues fall into two broad buckets:

  1. Out of the Box Issues: Areas where things outside of your control mean that the Modern UI is not available for this list/library. This includes stuff like the base list template being incompatible; the view type being incompatible; or an unsupported field type (such as geo-location fields).
  2. Customisation Issues: These are areas where you, foolish developer, have caused a compatibility problem by customising something on a list or library. This includes stuff like custom list actions; JSLink; XSL; or multiple web parts added to a list view page.


I’ll discuss these limitations in much more detail in the next section, as they all need consideration, but for the purposes of assessing compatibility with your existing estate, my top tip for this report is to, again, find a way of filtering out the irrelevant publishing sites. A second tip is to find a way of categorising the type, or base template, of the list for each row. The report provides this in the format of a list base template identifier (e.g. 107, 108, 120 etc. etc.) from which you can infer the actual list type. For example, 104 is an Announcements list, 105 is Contacts, 106 is a Calendar, etc.

My Power BI Report for List-level customisations looked like the below:


How do I Upgrade?

Enabling Modern

Before you can think about when/where to upgrade, you need to enable the Modern UI on your tenant. This is simple to do, but has the potential to create a massive pain in the a**. Enabling the Modern UI is like an on/off switch. You can’t enable it at a more granular level, only across the tenant. This means you need to then script a downgrade for classic to any sites with compatibility issues, and for any sites you need to provision as Classic Sites. This is a massive pain in the neck. Once Modern is enabled (and you’ve disabled it wherever you need to disable), you can do the following:

Creating a Site as Modern Natively

Obviously, this isn’t an upgrade, but it’s worth noting here that new sites can be created as Modern natively. That said, read on to find out some of the constraints you have around provisioning Modern Sites, and other limitations you’ll experience once the site is up and running! This applies to sub-sites as well as new site collections.

Upgrading an Existing Classic Site

To upgrade an existing site in the classic configuration, you will need an admin to run a PowerShell script. This can be done against one or many sites.

Before doing this, you should – of course – have followed the guidance I outlined above around assessing the compatibility of your existing sites with the Modern UI. You might find that you need to do some remediation work before you can run any scripts.

Upgrading an Existing Classic List/Library

There are a few options as far as upgrading lists/libraries to the Modern UI goes:

  1. Administrators can set the default list experience for the whole Office 365 tenant.
  2. Site owners can switch lists and libraries to the Modern UI on a case-by-case basis.
  3. Administrators can run a PowerShell script to programmatically change the default list experience, or upgrade individual lists across a site or many sites at once.

Again, keep in mind that fact that many list types are not compatible with the Modern UI.

Upgrading an Existing Classic Page

Unfortunately, it is not possible to upgrade a Classic web page on a SharePoint site to Modern. Pages will need to be recreated as Modern Pages.

Recommendations for Remediating Existing Sites

If you’re finding lots of team sites, project sites or other collaboration spaces with custom CSS or master pages, you should consider changing these to something more generic. The general guidance extolled by Microsoft and SharePoint experts for the last couple of years has been to avoid doing these types of customisations to collaboration sites. However, in the real world, organisations usually want – at the very least – a consistent global navigation experience with the rest of their intranet/SharePoint environment. Unless you’ve kept your SharePoint environment extremely vanilla, it’s likely you’ll have some quite extensive work to do here to get these sites ready to go Modern.

As for lists, it’s unlikely that there will be any sites that don’t have at least a couple of lists with compatibility issues. This is due to the lack of Modern UI support for some very common list view types and base templates. But for lists with customisation issues, you should look at how feasible it is to tweak these, keeping in mind that support for some of the things that cause issues with Modern Lists at the moment is coming down the pipeline.

Step 2 – Assess Constraints for Future Design and Development Work

The next step I recommend is to familiarise yourself with where and how the Modern UI constrains what you want to do in the future. To help with this, I’ve looked at a variety of things an organisation might want to do with a SharePoint site, and compared the capabilities in Modern to the existing capabilities in Classic. For anything that the Modern UI does not yet support, I’ve included a bit of detail I’ve gleaned from Microsoft’s Public Roadmap (or bits I’ve inferred from supporting information around the roadmap).

It should be noted here that this blog post is correct at the time of writing (July 2017), in terms of the items on the roadmap and where the gaps are, but it will likely become out of date. I’d also say it’s highly unlikely I’ll maintain the blog post going forwards, so I’d suggest doing some of your own research around the roadmap if you’ve come across this post more than a few months after its initial published date. But

The areas I consider are as follows:

  • Provisioning: How sites can be programmatically created to enforce consistency of structure, look and feel, information architecture etc.?
  • Branding: How can a site be configured to look and feel the way a business wants it to?
  • Custom Pages: What are some of the constraints around editing custom pages on a site?
  • Site Management: What needs to be kept in mind for the management of existing sites, in terms of settings, configuration, and adding new areas to the structure?
  • Site Discovery: How is the discovery/findability of sites impacted by the Modern UI?
  • List Views: What compatibility problems are there for specific types of list view in the Modern UI (building on what I alluded to in the compatibility with existing sites section)?
  • List Customisations: What customisations can you make at the list level?

In addition to the areas I’ve considered below, there are a few extra specifics in this article from Microsoft:

Feature Gaps and Constraints


CON Provisioning

While Modern sites can be created programmatically as part of a provisioning process (including all the content types and metadata fields that are required), you have no way to make the homepage of the new site look how it needs to without human interaction. Currently, you must add a new app to a newly provisioned Modern site manually, unless you create some sort of hacky UI-based execution, which has significant risk attached to it if Microsoft make updates.


CON Brandingjpg

Options for branding Modern sites are extremely limited, though further options akin to Master Pages and custom CSS are being rolled out as I write, and should hit General Availability (GA) in the next few months. The key takeaway here is that Modern Sites/pages will not look like the rest of your SharePoint environment if you have customised it in any way, and it is currently impossible to make them fit in look and feel-wise.

Update Sep 2017: The SharePoint Framework Extensions (the things that give you the ability to add custom Global Nav and brand a Modern Site) are now out of preview and available on first release tenants.

Custom Pages

CON Pages

The types of Modern Page that can be created are relatively limited, though the pages themselves are much easier to use for both end users and editors. It is also worth noting that Modern Web Parts are Microsoft’s clear strategic direction, and should become the de facto way in which custom web parts are developed in your organisation. If you’re not adopting the SharePoint Framework (SPFx) wherever possible for custom web part development, you are creating a bigger and bigger backlog of legacy stuff that will eventually need to be refactored.

Update, Sept 2017: All Modern Pages (across both Group Sites/Team Sites and Communication Sites) can now change their layout to various choices. This is actually really nicely implemented, and a lot more flexible than the old page layouts and web part zones on classic pages.

Site Management

CON Site Mgt

Modern Sites are currently only designed for collaboration (team/project site) scenarios, not web content management.

There are also issues with sub-sites created beneath Modern Sites, in that the homepage of the Sub-Site will be Classic, not Modern. This is a biggie for me, as it creates terrible inconsistency and is very confusing for site owners. Again, this is something that could possibly be addressed with a bit of a hack, but that’s not an ideal solution, or indeed a supported one.

Site Discovery

CON Discovery

Modern Sites/pages can be rolled up and presented in much the same way as Classic sites/pages, though some tweaking of the current configuration of your Content by Search web parts may be required. Also worth noting here is that it is not possible to capture metadata for a site in the property bag of Modern Sites. Some custom applications will have previously utilised the site property bag (rather than tags on pages or hiding properties away in some sort of site configuration list) in order to classify a site for rollup/discovery purposes when surfacing it through search. This is no longer an option, and if you’ve done this, you might have some serious remediation work on your hands.

They can also be attached/created as part of a new Group/Team to provide a more seamless interface with these other services in the Office 365 suite.

List Views

CON List Views

Some core list functionality does not work in the Modern UI, including Gantt and Calendar views which are widely used on collaboration spaces (at least in my experience). This means there will be a fragmented user experience if the site is Modern, but the list remains in classic mode. Something you must accept in the Modern UI is that there will – for the time being at least – be a degree of jumping around between Classic and Modern layouts as you move between lists. This has knock-on effects for training guidance and collateral, which must be kept in mind when you’re assessing the impact of the Modern UI (more to come on this in the next post).

Additionally, there are several field types that don’t work in Modern lists, though these are unlikely to affect the majority of sites.

List Customisations

CON List Cust

Lists with customisations generally do not work in the Modern Experience. However, Microsoft are rolling out the ability to add more customisations to the Modern Lists experience as we speak.

Microsoft’s Roadmap

Stuff That’s on the Roadmap

So this is a summary of the things that are on Microsoft’s current public roadmap, or at least alluded to as part of the collateral supporting related roadmap items.


Update, Sept 2017: As noted above, the ‘Injecting Content’ item is now out of preview and available to first release tenants.

Stuff That’s Missing from the Roadmap

This is a summary of constraints that aren’t on the roadmap to be addressed by Microsoft:


Wrapping it Up

So that’s it for Part One of this two-part series. It’s been slightly one-sided so far, but in the next post, I’ll cover off the benefits of the Modern UI, and options/recommendations for how and when to adopt it in your organisation.

Thanks for reading.

Next post in this series >

Planning for the Azure CDN Capabilities in Office 365


At work the last couple of weeks, I’ve been looking at how an Azure Public CDN (Content Delivery Network) and the newly-released SharePoint Online CDN can improve performance for geographically dispersed users in Office 365. There are a few important factors to consider, but generally I think these are great options for organisations with users experiencing latency in Office 365 due to their location.

What is a CDN?

A CDN takes static web content used by web pages on SharePoint, web sites, and other custom web applications (such as images, fonts, JavaScript and Style Sheets) and stores it at strategically placed locations around the world. In an Office 365 set-up without a CDN, this content gets served to the client/user from the base location of the Office 365 tenant, be that North America, Western Europe, or wherever Office 365 was originally set-up. This results in terrible network latency for geographically dispersed users thanks to the large distances involved. But after a CDN is implemented, this content can be served to the user from their nearest data centre, as opposed to the primary tenant location. This provides much better performance and a much improved experience for users, regardless of their location.

CDN Before3

CDN After

What options are available?

Azure provides two ‘flavours’ of CDN: the Public CDN, and the Private CDN. The Private CDN (also known as the SharePoint Online CDN) can only cache assets stored in SharePoint libraries, and checks the user’s access to the original location of the asset before serving it to them from the CDN. The Public CDN allows broader access to assets cached in the CDN, meaning it can be used for all manner of web applications, and cache files hosted outside of SharePoint.

So in other words, the new SharePoint CDN can be used to serve assets from SharePoint Online to other SharePoint Online pages, while the Public CDN can be used for everything else and isn’t purely for SharePoint.

Further constraints around the types of files that can be cached by the SharePoint CDN drives how you should architect your CDN(s) for Office 365. The SharePoint CDN can only cache files of the type .gif, .ico, .jpeg, .jpg, .js, and .png, while the Public CDN can cache files of the type .css, .eot, .gif, .ico, .jpeg, .jpg, .js, .map, .png, .svg, .ttf, and .woff. The key gap for the SharePoint CDN is style sheets and fonts, which means it should be used primarily for ‘author’ content, such as images (e.g. News Article pictures in a publishing intranet scenario). The Public CDN should be used for design assets such as fonts and CSS, as well as assets originated from or served to non-SharePoint applications.

SharePoint CDN

At a high-level, the SharePoint CDN works as per the below diagram:


There are a few things worth explaining from this diagram:

Origin Libraries

These are the SharePoint Libraries set-up via PowerShell as the sources of files to serve via the SharePoint CDN. It is possible for the CDN to cache content from all libraries under a specified path by using a relative URL meaning that, for example, the Style Library within each site collection can be specified as a source, provided it exists under the same path in each site collection.

An important note about the SharePoint CDN is that it relies on a published major version of a file before that asset will be cached. Just something to keep in mind, depending on the type of version control applied to a library configured as an origin.

Referring Pages

In this context, referring pages are any pages on SharePoint Online that reference assets cached by the SharePoint CDN.

For the SharePoint CDN to work, the referring page must be a SharePoint Online page. This means that pages hosted outside of SharePoint Online (such as custom Azure Web Apps) cannot utilise the SharePoint CDN. However, provider hosted add-ins embedded on a SharePoint Online page will be able to make use of the SharePoint CDN.

URLs for SharePoint CDN content are dynamically generated and automatically rewritten so that the asset is retrieved from the nearest point of presence server location, rather than the main Office 365 tenant server location. URLs are automatically rewritten for the following elements in SharePoint Online:

  • Classic Publishing Pages will rewrite IMG and LINK URLs.
  • Content By Search web parts will rewrite display template JavaScript files and thumbnail images provided in query results.
  • Image Renditions.
  • Hyperlink fields on lists and libraries.
  • Picture Library slideshow web parts.
  • Image fields served back to the user via the SPList REST API.

So in theory, you shouldn’t have to rewrite much of your existing functionality if you opt to use the SharePoint CDN for your Office 365 environment, though of course, it would be a good idea to check.

One major gap at the time of writing is that SPFx client side web parts cannot utilise the SharePoint CDN. This is due to the way these web parts have to reference static URLs (and – as noted above – the URLs generated for cached SharePoint CDN content are not static). But this functionality is coming soon to SPFx.


When a browser requests assets stored on the SharePoint CDN, user access to these assets is considered. In other words, the user must have at least Read access to the Origin Library the asset is stored in, or the image/script will not load on the page. Though, to be fair, this is the case regardless of whether the CDN is being used to serve content to the user, so not much should change here in terms of permissions you need to grant to origin libraries.

Public CDN

The diagram below summarises the components of the Public CDN and the relationship between them:


Origin Libraries

Any location can be set as the origin for a Public CDN, including external SaaS services, Azure Web Apps, and SharePoint Server on-premises libraries (and SharePoint Online libraries).

Referring Pages

Referring pages can use the Public CDN URLs to retrieve assets from the CDN location closest to the user. These pages can be from any application, including SharePoint and an Azure Web App.


The Public CDN, by definition, allows anonymous access to cached assets and does not check a user’s authorisation against the origin library. Basically, any person out on the internet who can guess the URL of your content will see it if it is cached by the Public CDN. This has obvious security implications, though there are ways of mitigating this (see later in this blog post).

The Underlying CDN Technology

Microsoft haven’t really built a CDN themselves, and instead use third parties to deliver the capability that can be managed and configured under the Azure umbrella. Microsoft offers three alternatives for its CDN capability:

  • Akamai (Standard)
  • Verizon (Standard)
  • Verizon (Premium)

Feature Comparison

The table below compares the functionality provided by each CDN supplier. For brevity, the comparison table only includes items where the capabilities differ between suppliers. The full list of capabilities, including ones where all three provide comparable services, are available here and here.

Feature Description Standard Akamai Standard Verizon Premium Verizon
Points of Presence Number of edge locations geographically dispersed around the world. ~2200 80+ 80+
Custom domain HTTPS Enables the delivery of secure content via SSL to improve the security of data in transit.
Asset pre-loading Pre-loads assets so that there is no delay the first time they are requested by a user.
Core analytics Shows usage patterns for the CDN, including bandwidth, hits, and data transferred.
Advanced HTTP reports Generates detailed data about the CDN, including map-based geography reports on usage.
Real-time stats Provides data on bandwidth, connections, cache statuses etc. in real-time.
Real-time alerts Provides notifications about the performance of CDN end points in real-time.
Rules engine Customise how HTTP requests are handled, change the behaviour of the cache, set rules for mobile devices and implement URL redirects.
Token authentication Only requests with certain criteria in the URL will be served, e.g. only requests from certain hosts will be served.
Origin Shield Provides an extra caching layer between CDN edge servers and the origin to improve security.  
Support The support processes and models in place to handle incidents and queries. Phone and Email support, Community Forum 24/7/365 Phone and Email support 24/7/365 Phone and Email support


Price Comparison

The costs for the CDNs are based on outbound data transfers in GB per month, and differ by region. There is also a sliding scale of cost whereby data becomes less expensive the more you use.

Akamai (Standard) and Verizon (Standard) are identically priced as below:

Outbound Data Transfers NA + EMEA Asia Pac South America Australia India
First 10 TB/month £0.0649 per GB £0.1029 per GB £0.1864 per GB £0.1044 per GB £0.1268 per GB
Next 40 TB (10-50 TB)/month £0.0597 per GB £0.0969 per GB £0.1491 per GB £0.1007 per GB £0.0969 per GB
Next 100 TB (50-150 TB)/month £0.0448 per GB £0.0895 per GB £0.1342 per GB £0.0895 per GB £0.082 per GB
Next 350 TB (150-500 TB)/month £0.0299 per GB £0.0746 per GB £0.1193 per GB £0.0746 per GB £0.0746 per GB
Next 524 TB (500-1,024 TB)/month £0.0224 per GB £0.0597 per GB £0.1044 per GB £0.0709 per GB Contact MSFT
Next 4,096 TB (1,024-5,120 TB)/month £0.0187 per GB £0.0522 per GB £0.0969 per GB £0.0671 per GB Contact MSFT
Over 5,120 TB/month Contact MSFT Contact MSFT Contact MSFT Contact MSFT Contact MSFT


While the Verizon (Premium) offering is a little under twice the price of the standard services:

Outbound Data Transfers NA + EMEA Asia Pac South America Australia India
First 10 TB/month £0.1268 per GB £0.1864 per GB £0.3727 per GB £0.2087 per GB £0.2535 per GB
Next 40 TB (10-50 TB)/month £0.1118 per GB £0.164 per GB £0.3168 per GB £0.1789 per GB £0.2162 per GB
Next 100 TB (50-150 TB)/month £0.0969 per GB £0.1417 per GB £0.2684 per GB £0.1491 per GB £0.1827 per GB
Next 350 TB (150-500 TB)/month £0.082 per GB £0.1193 per GB £0.2236 per GB £0.1268 per GB £0.1566 per GB
Next 524 TB (500-1,024 TB)/month £0.0746 per GB £0.1044 per GB £0.1938 per GB £0.1081 per GB Contact MSFT
Next 4,096 TB (1,024-5,120 TB)/month £0.0671 per GB £0.0895 per GB £0.1677 per GB £0.0932 per GB Contact MSFT
Over 5,120 TB/month Contact MSFT Contact MSFT Contact MSFT Contact MSFT Contact MSFT


If you work out the costs of this based on your current trends of data use, it soon becomes clear that the SharePoint CDN costs are negligible and almost a no-brainer to implement. Similar for the Public CDN, at least in the internal/enterprise space as opposed to publically accessible web sites.


Performance between the three options is very similar, though I would suggest you conduct your own performance tests to see how it would work in your environment.


Microsoft offers a SLA-backed 99.9% uptime guarantee for the CDN (both SharePoint and Public). There are diagnostic logs and analytics to help troubleshoot CDN issues and analyse traffic and bandwidth usage. The big thing to focus on here though are the security implications:

Data Privacy and Compliance

Microsoft pretty much washes its hands of any data you choose to cache in the CDN. When you’re setting up your CDN in PowerShell it will display disclaimers similar to the following:

Both the SharePoint CDN and Public CDN are Azure features built on 3rd party applications with privacy and compliance standards that differ from the commitments outlined by Microsoft in the Office 365 Trust Centre. Data cached by the local servers for both the Public and SharePoint CDNs does not conform to Microsoft Data Processing Terms and is outside the Microsoft Office 365 Trust Centre compliance boundaries.

In other words, your data is no longer under Microsoft’s jurisdiction once it enters the CDN, as the underlying capability is provided by third parties. I haven’t managed to find any info on the web about what standards Verizon and Akamai do offer around data privacy and compliance, but will update this post if I find some.

Given the content cached in the CDN is likely just JavaScript, images, fonts, and style sheets, it is unlikely there is anything sensitive in there, but it’s still something to consider before switching on the CDN.

Anonymous Access to the Public CDN

As noted in the previous section, the Public CDN allows any referrer to access its cached content anonymously. Again, due to the nature of the content stored in the CDN, this is unlikely to be a problem (particularly given you can restrict who has access to upload assets to the origin library). However, if you need to provide an extra security wrapper around the Public CDN, you are only really left with one choice: the Verizon (Premium) offering, which supports Token Authentication.

Token Authentication can be used to check things like the referrer of specific requests (so you can, for example, limit it to just your SharePoint Online/on-prem estate), country, and a myriad of other things.


Here are a few of the constraints associated with the Azure Public CDN and SharePoint CDN technology:

Files such as aspx pages or Master Pages cannot be delivered via the Azure CDN, only the static elements and client side code that is embedded on pages. This means Master Pages must still be deployed per site collection in SharePoint Online.

The SharePoint CDN can only cache files of the type .gif, .ico, .jpeg, .jpg, .js, and .png. This covers the most common image file formats and icon files, plus JavaScript files (which are called in order to run custom client side code on some SharePoint Online pages). The most crucial file type that the SharePoint CDN cannot cache is .css, which will be used on every single page of a publishing portal and in many collaboration scenarios in SharePoint online too.

The Public CDN can cache files of the type .css (Style Sheets used to change the look and feel of a site), .eot, .woff and .ttf (fonts), .map (image maps), and .svg (scalable images/vectors) in addition to the file types outlined for the SharePoint CDN.

All files of type GIF, ICO, JPEG, JPG, JS and PNG stored in origin locations will be cached by the SharePoint CDN. If a file of this type is placed in an origin library, it cannot be excluded from the SharePoint CDN at a granular level.

Using the SharePoint CDN means that the referring site must be a SharePoint Online site, and the user must have authorisation to view the location where the static files are stored.

The SharePoint CDN can only be used for SharePoint Online, not SharePoint Server on-premises, or the on-premises elements of a hybrid implementation of SharePoint.

URLs for content served via the SharePoint CDN are dynamically generated and can change on a regular basis. They therefore cannot be hardcoded into custom scripts, applications, or SharePoint Framework Client-side Web Parts (the newly recommended way of designing and building web part functionality in SharePoint).

My Recommendations

So that’s a whistle stop tour of the Azure Public CDN and the new SharePoint CDN capabilities. Here are my recommendations if you’re thinking about enabling either of these services in your organisation:

  1. Make sure you (and your security team) are comfortable with the disclaimers Microsoft put around data privacy and compliance.
  2. Plan around using the SharePoint CDN for ‘author content’ like images (plus JavaScript), and the Public CDN for everything else. You will likely need a blend of both CDNs to deliver a holistic solution.
  3. Configure SharePoint CDN origin libraries with relative URLs so that any library located at the same place within a site collection (under a given path) can be cached. This has information architecture implications, as you do not want your asset libraries in different places within each site/site collection or you will have a massive admin overhead maintaining the CDN.
  4. Use the Verizon (Premium) offering if you want to allow anything other than completely anonymous access to Public CDN content.
  5. Keep in mind that SPFx web parts cannot – at the time of writing – utilise the SharePoint CDN.
  6. Conduct some performance baselining before implementing the CDN so you can demonstrate how much improvement has been made post-implementation.
  7. Ensure you put suitable cache expiration policies in place for CDN content.
  8. Think about consolidating content to be cached by the Public CDN into a centralised library or Azure Web App. This will help you control who has access to update these assets, and ensure that multiple versions of the same content do not proliferate across the environment.

I would state that enabling the SharePoint CDN is a bit of a no-brainer for most organisations. It’s simple to do and offers massive performance benefits to any global company using Office 365. But I would also state that some form of planning/design is also required to ensure your company is comfortable with Microsoft’s disclaimers and whether or not you’re willing to allow anonymous access to your content in the Public CDN.

Thanks for reading.







SharePoint Operating Model

SharePoint Operating Model: Part 1 – Introduction


Most SharePoint projects focus on building the solution. This covers the information architecture, user experience, interface design, apps/add-ins, and system integrations that come together to form an effective SharePoint implementation. Fewer still define an effective strategy and business change approach for the project. But – in my experience at least – hardly any projects give much heed to how to run SharePoint once it goes live in the organisation. Having a well-defined Operating Model is crucial to ensuring the on-going success of the platform and can help to ease the difficult transition from project into service.

What is an “Operating Model”?

“An Operating Model is the organisational design that makes it possible to deliver the business strategy”. – Ashridge Business School

My interpretation of an Operating Model is that it’s a set of guidelines for how SharePoint aligns with people, processes and other technology to deliver the business strategy. The Operating Model defines the necessary level of process integration and standardisation to allow your SharePoint service to thrive and grow. It provides a general vision of how your organisation will enable the long-term business benefits of the platform. It drives the foundation for executing the SharePoint strategy.

I’ve also heard it described as “governance on steroids” in that it provides some definition to roles, responsibilities, processes and procedures. However, governance typically focuses on information management, application management, and IT ops. This is necessary work that all organisations looking to use SharePoint should be doing, yet SharePoint often requires something more holistic to get the most out of it long-term. This is where the Operating Model comes in.

There are two overriding dimensions that drive an operating model. These are:

  1. Standardisation; and
  2. Integration.

Standardisation is about defining how a process will be executed so that it runs smoothly no matter who is enacting it. This delivers efficiency and predictability around who is doing what, and helps align the platform across different divisions in the company, as well as third party suppliers.

Integration is about linking efforts through shared data, capability and knowledge. It ensures that new capabilities or initiatives delivered in SharePoint can be smoothly integrated with the pre-existing functionality.

A Sample Operating Model

The diagram below shows a sample high-level Operating Model:

Operating Model
A sample Operating Model for SharePoint.

The thinking behind this model is to divide SharePoint into five operational pillars: Content, Adoption, Enhancements, Support, and Operations. An overarching strategy supplements these pillars, and governance policies and processes underpin them.

 Strat3 Strategy defines the direction for the platform. It ensures everyone involved in operating the system is singing from the same hymn sheet and pushing for the same outcomes. It provides direction and impetus for action and helps to guide future investments in the platform.
 Cont2 Content encompasses all information stored on the platform. It covers the configuration possible without formal change control or lifecycle management.
 Adopt2 Adoption covers the on-going training, communications and business change aspects of running SharePoint. It ensures employees engage with and use the platform.
 Enhance2 Enhancements is how to deal with change in the system. This could range from adding small features to much bigger, strategic programmes of work.
 Support2 Support is all about how incidents, problems and service requests get raised against the system. It also covers who deals with them, and how to categorise and prioritise them.
 Ops2 Operations covers on-going maintenance tasks. These activities ensure the smooth running and optimisation of the system over time. You will typically find that on-premises implementations will be much heavier from an ops perspective. This is because you have little control over much of the IT operational tasks in SharePoint Online, as Microsoft looks after these for you.
 Gov2 Governance underpins the core operational pillars. It fleshes out the policies and procedures that must be followed to run SharePoint.

Together, these elements form a holistic Operating Model that can deliver standardisation and integration across the different pillars, and ensure that SharePoint can thrive within an organisation.

This series

I’m going to write a series of blog posts focusing on defining an operating model for SharePoint. I’ll do one post for each of the 5 operational pillars, plus one each for strategy and governance. I’ll also do an extra post on organisation design, and how to put together the right teams, roles and responsibilities to run SharePoint. I hope this blog series will provide some useful reference material for organisations who want to maximise their return on investment with SharePoint.

Thanks for reading.


Part 1 – Introducing the SharePoint Operating Model

Part 2 – Strategy

Part 3 – Content

Today I Learned

A colleague of mine highlighted something today that I didn’t know about, so thought I’d share it here too:

To view Followed documents or folders in SharePoint Online, you need a OneDrive for Business license.

ODFB Following

It struck me that this was slightly odd, as the ‘documents I’m following’ view is a piece of functionality that’s been in SharePoint since the days when the OneDrive area was called My Site, and it is what I’d call SharePoint functionality, not OneDrive-specific. But still, such is the life of a SharePoint professional: the sands are ever shifting. Worth keeping in mind if you’re leveraging any of the ‘follow’ functionality in other areas of SharePoint, e.g. displaying a feed of the user’s followed documents on an intranet homepage.

You get OneDrive for Business licenses on both E1 and E3 plans.