Category Archives: SharePoint

SharePoint and MAXDOP

Microsoft strongly recommends that the SQL Server MAXDOP (maximum degree of parallelism) setting be set to “1” for servers supporting SharePoint. This setting suppresses parallel plan generation, and until SQL 2016, it’s an instance level setting, which means that all databases on that SQL instance would be affected by the change. Since most databases benefit from parallel plan generation, this setting will result in worse performance for most databases, except SharePoint, where this setting is strongly recommended. Though, when Microsoft says “recommended”, they really mean “required”, as SharePoint will not install or create new databases when the SQL Server does not have a MAXDOP of 1, starting in 2013. This is an easy requirement to miss, for a few reasons. First, this requirement is not mentioned in the documentation. Second, the SharePoint installer will set MAXDOP to 1 automatically if the install account has sysadmin permissions on the SQL Server. Since many shops will follow the advice to have a SQL instance that is dedicated to SharePoint, it’s rarely an issue as the setting applies automatically and no other database is affected as SharePoint is the only application using that SQL Server instance.

However, if you have a company that decided to have one huge database server that runs as many databases as possible, then this is a significant issue. Changing the server so that all databases run without parallel execution plans is a no-go. But installing SharePoint 2013 or 2016 without this option is also a problem. The solution is to follow best practices and set up a new SQL instance to support the SharePoint installation, but it’s not always easy to convince the IT group they need to diverge from their established plan of hosting as many databases as possible on one server and to spin up a new SQL instance in order to support SharePoint.


Excel Services has been Deprecated

SharePoint 2013 (and previous versions) shipped with Excel Services, allowing Excel workbooks to be viewed in the browser. SharePoint 2013 integrated with Office Web Apps (OWA), which also had the capability to show Excel workbooks in the browser. The complication in 2013 was that the two services had somewhat different functionality, resulting in some organizations having to use Excel Services to gain access to specific BI functionality. In SharePoint 2016, Excel on Office Online Server (OOS), formerly known as Office Web Apps (OWA), has been enhanced and now has the capability to work with Excel workbooks that utilize BI capabilities, such as data models.

Microsoft is now recommending that organizations move away from Excel Services and to use OOS instead. This has a couple impacts on clients:

  1. Smaller implementations, such as organizations using SharePoint as a platform for Project Server and that support a limited number of users, will now need a second server. Excel services was a service that ran on SharePoint, but OOS is a separate server product that cannot be installed on the same server as SharePoint.
  2. The list of requirements to support BI is still quite complicated, and will be challenging to communicate to clients. (perhaps a good infographic would help). For example, Excel files with Power View will require SSRS in SharePoint integrated mode to be viewable in the browser. Also, refreshing connections in Excel files with data models will require the PowerPivot add-in.

Microsoft Blog Post about this is here
(see the word doc that is linked in the first paragraph for details on deploying PowerPivot and Power View in 2016)

A good document that compares Excel Services and the Excel Web App from 2013 is here

How Files are Organized within Microsoft Teams/O365 Groups

If a user wants to store a file for an Office 365 Group, the could store it in in the “files” area of the Group, which is really just a library in the team site that was created for the group. Alternatively, they could store the file in the “files” area of a channel within a Team. This file will be stored in a subdirectory of the library for the Office 365 Group. If a user tries to view the files for a team that is associated with a group, they won’t be able to, as files are only associated with a channel, not the team itself. If a user views the files for a specific channel of a team that is associated with a group, they will only see files for that one channel, and will not be able to view files in other channels or files that were uploaded to the files repository for the Group. If, however, the user navigates to the normal O365 Group site and views the file repository, then they will be able to view group files, plus they will be able to see subfolders and files that were created for each channel within the Team that is associated with that Group, which makes sense, as the channels are associated with the group.

If a user would like to view a file, they could of course navigate to the appropriate repository, as described above, or they could simply click on “files” on the left nav of the Teams interface. Then, after clicking on “Microsoft Teams”, the user will be presented with a list of all files that exist across all all channels of all Teams they have access to. Helpfully, this list will also show files that are part of the Group, and not just the team’s channels. Just to clarify, if the user clicks on “OneDrive” in the Files tab, they will see the contents of their own personal OneDrive, not the OneDrive files for any of the teams or groups.

If the user clicks on “notes” within a channel of a Team, they will gain access to the OneNote notebook for that channel. More specifically, there is one single OneNote notebook for the Office 365 Group that is stored in the site assets library of the Group’s Team Site which hosts notes for the Group, including notes for each channel within the Team. Each channel of a Team will get a new tab within the notebook. If a user views the Notes section within the Team interface, they will see only the notes for the current channel. If the user clicks the “edit in onenote” button, they will be able to easily switch between tabs within onenote, and thereby view the notes from the different channels, or notes from any other tab that was created in the site notebook. If the user navigates to the Group site and clicks to view the notebook, the user will have full access to all tabs in the web interface, including the tabs for each team channel. This makes sense, as again, there’s one OneNote Notebook on a Group’s Team Site that stores notes for Group, including for all channels of the Team that is associated with that Group.

It really couldn’t be simpler. 😉

New-AzureSBNamespace for Remote Event Handler Debugging

There are a number of blog posts with outdated instructions for setting up the Azure Service Bus to enable debugging for Remote Event Handlers. The old info is to go to the Azure Portal and create a Service Bus in the UI, or to run the following PowerShell command:

New-AzureSBNamespace -Name mynamespace -Location “East US” -CreateACSNamespace $true -NamespaceType Messaging

However, the UI does not generate a service bus with an ACS namespace (which is required for this task), and the above PowerShell command is deprecated and is not available.

As of the time of writing this, the following works fine:

New-AzureSBNamespace -Name ‘mynamespace’ -Location ‘East US’

The New Delve Blog

My Office 365 tenant just got a new profile update in Delve that has the new blog. It’s, uh, neat? It’s sort of a blog, with a nice but limited editor, and definitely some version 1 functionality. Or version .9.

The editor is similar to what’s used for Sway. So on one hand, everything looks quite good with minimal effort. On the other hand, you don’t get much control. Here’s the toolbar that appears when you select text:

delve blog toolbar

From left to right:

  • Bold
  • Italic
  • Underline
  • Link – currently uses a JavaScript “prompt” function, which is a bit primitive.
  • bullet list
  • number list
  • Convert text to a heading – this does more than apply a format, it inserts a new heading section right above the current section and moves the text to it. There’s no button to click to undo this. Users can manually move the text back, or ctrl-z sort of works. (ctrl-z puts the text back in the original location but leaves the new header, the user will just have to manually delete it)
  • Quote – This moves the selected text to a section right below the current section and applies formatting to it
  • Remove formatting – Removes any of the previously mentioned formatting from the selected text

A few additional notes:

  • If you copy and paste text in from other sources, it will lose its formatting. (this includes things like bulleted lists: paste in a bulleted list and it becomes normal text with line breaks.)
  • You can add a video, but oddly it doesn’t prompt you to select one from an Office 365 video site or OneDrive. It just displays another JavaScript prompt dialog:
javascript prompt

This is sad

  • There are no options to change formatting other than what was already mentioned. So  no changing fonts, and no changing the ~450 pixel high image / header at the top of each and every blog post.
  • There is no standard blog view: you can’t scroll down through recent blog posts. Instead, the blog home page displays a set of Tiles, with the more recent blog post at the top.  Though, once you’re viewing a post, there are some nice looking arrows that appear that let you navigate to the next or previous blog post
  • There is no calendar view of posts to easily see what was posted 3 months ago, for example.
  • It does show you the count of views, which is nice.
  • Like Sway, it automatically adjusts for different sized screens.
  • You can insert documents from OneDrive. They appear on-screen courtesy of Office Online.
  • There is no RSS feed. In fact, there’s no OOB mechanism to find out when someone else has posted something new to their blog. It’s no longer just in a SharePoint library like the old blog, so alerts are not available. The quick solution (?) to this is to set up a search part on a page somewhere and use the following query to return all blog posts. Just sort it by date modified:

path:”” ContentTypeId:0x010100DA3A7E6E3DB34DFF8FDEDE1F4EBAF95D*

Or, to display one person’s blog, just put in the more specific path.

Of course, this is a work in progress, so by the time you read this something will have changed.

Prevent users from sharing content with “Everyone” in SharePoint Online

New capabilities were recently added to the SharePoint Online Management Shell that allow us to block users from being able to share content with either “Everyone” or “Everyone except external users”.

To do this, fire up the SharePoint Online Management Shell, and connect as usual:

Connect-SPOService -url

To view the current settings:



The current sharing dialog before changing any settings:


To hide “Everyone”:

Set-SPOTenant -ShowEveryoneClaim $false


The “Everyone except external users” can be hidden easily as well:

Set-SPOTenant -ShowEveryoneExceptExternalUsersClaim $false

Of course, to turn it back on just run the same command with $true. Note, nothing further has to be done to get these commands to take effect. The next time a user clicks “share”, these items will be hidden.

Connect-SPOService: DTD is prohibited in this XML document

The error message of “DTD is prohibited in this XML document” is an error that can be caused by DNS configuration, as described here. Another simpler cause is trying to connect to the incorrect url, as the Connect-SPOService needs to be provided with the url to the Admin site. So, the following will generate the above error:

Connect-SPOService -url

The following should work just fine:

Connect-SPOService -url