SharePoint Updates Service Update

Last week I updated SharePoint Updates from .NET Framework to .NET Core 3.1, preserving the feature set with a few minor UI changes. I’m looking for suggestions for new features you’d like to see. This includes UI/UX, the RESTful API, and any changes you’d like to see with the associated PowerShell module.

I’m also curious to how the community would like to approach retired knowledge base articles. It looks like many of the SharePoint 2010-era KBs have been removed from support.microsoft.com; their downloads likely have also been removed. Should I preserve those links for posterity or remove them from the entry in the SharePoint Updates service?

I’ve set up a new SharePoint Updates repository to handle any feedback you may have. You can of course contact me on Twitter if you don’t have a GitHub account or want to message me privately.

I’ve also added a GitHub Sponsorship. Should you find any service, application, or script I develop useful, consider funding even at any level.

Thanks!

SharePoint 2019 November 2020 Updates

The SharePoint 2019 November 2020 Updates have been released.

Product KB Article
SharePoint Server 2019 (sts-x-none) https://support.microsoft.com/help/4486714
SharePoint Server 2019 (wssmui) https://support.microsoft.com/help/4486715
Office Online Server https://support.microsoft.com/help/4486713
Office Updates https://support.microsoft.com/help/4583503

For all SharePoint updates, visit SharePoint Updates.

SharePoint 2016 November 2020 Updates

The SharePoint 2016 November 2020 Updates have been released.

Product KB Article
SharePoint Server 2016 (sts-x-none) https://support.microsoft.com/help/4486717
SharePoint Server 2016 (wssmui) N/A - Use the October 2020 Language Update
Office Online Server https://support.microsoft.com/help/4486713
Office Updates https://support.microsoft.com/help/4583503

For all SharePoint updates, visit SharePoint Updates.

Overriding Sender for Sharing Emails

In SharePoint Server 2013 and above, when a user sends an invite to another user, it sends the invite as that user. This can lead to SMTP servers rejecting mail from a SharePoint server due to lack of send on behalf rights.

Microsoft introduced a fix for SharePoint Server 2016 (and available in 2019 RTM) in November of 2017. KB4011244 allows a farm admin to disable the send on behalf behavior, reverting to the SharePoint Server 2010 and below behavior of sending as the email address configured in the Outgoing Email settings of the farm or Web Application.

This is set via PowerShell on a per-Web Application basis.

$wa = Get-SPWebApplication https://wa
$wa.OutboundMailOverrideEnvelopeSender = $true
$wa.Update()

Creating a Microsoft Team using PowerShell on an Existing Group

If you have a Microsoft 365 Group and you want to add a Microsoft Team to the Group, you can use the Microsoft Graph PowerShell to do so.

To get started, we need to install the Microsoft Graph PowerShell from the PowerShell Gallery. Note that this is a rather large set of modules and may take some time to install after downloading.

This particular method of connecting and creating a Team requires Global Administrator or the Teams Admin role as we are using Delegated permissions rather than Application permissions. You will need the ID of the Microsoft 365 Group. There are a variety of ways to get this, including from Graph PowerShell, SharePoint Online PowerShell, and so forth. You can also get it from Azure Active Directory UI.

Install-Module Microsoft.Graph -Scope CurrentUser #Remove CurrentUser if you want to install machine-wide
Connect-MgGraph -Scopes "Group.ReadWrite.All, Directory.ReadWrite.All"
#Complete Device login
$body =
'{
  "memberSettings": {
    "allowCreateUpdateChannels": true,
    "allowDeleteChannels": true,
    "allowAddRemoveApps": true,
    "allowCreateUpdateRemoveTabs": true,
    "allowCreateUpdateRemoveConnectors": true
  },
  "messagingSettings": {
    "allowUserEditMessages": true,
    "allowUserDeleteMessages": true,
    "allowOwnerDeleteMessages": true,
    "allowTeamMentions": true,
    "allowChannelMentions": true
  },
  "funSettings": {
    "allowGiphy": true,
    "giphyContentRating": "strict",
    "allowStickersAndMemes": true,
    "allowCustomMemes": true
  }
}' #define the options for the Team. See below for available options
Invoke-MgGraphRequest -Method PUT -Uri https://graph.microsoft.com/v1.0/groups/<M365GroupId>/team -ContentType "application/json" -Body $body #Create the Team

Once invoked, you should see a response similar to this:

Name                           Value
----                           -----
displayName                    Change Request
classification
guestSettings                  {allowCreateUpdateChannels, allowDeleteChannels}
messagingSettings              {allowUserEditMessages, allowOwnerDeleteMessages, allowChannelMentions, allowUserDeleteMessages...}
@odata.context                 https://graph.microsoft.com/v1.0/$metadata#teams/$entity
specialization
webUrl                         https://teams.microsoft.com/l/team/19:48a42ce16238439dbe1fb02ba8e8288d%40thread.tacv2/conversations?groupId=057697b5-57f8-4f1d-8b87-7347faa91cf6&tenantId=95920ba6-0edd-4d0c-b...
memberSettings                 {allowDeleteChannels, allowCreatePrivateChannels, allowCreateUpdateChannels, allowCreateUpdateRemoveTabs...}
visibility
id                             057697b5-57f8-4f1d-8b87-7347faa91cf6
description                    Change Request
funSettings                    {allowCustomMemes, allowGiphy, allowStickersAndMemes, giphyContentRating}
isArchived
isMembershipLimitedToOwners    False
discoverySettings
internalId                     19:48a42ce16238439dbe1fb02ba8e8288d@thread.tacv2

And that’s it! To see the available Team options you can set in the $body variable, you can execute a GET request on the Team.

$team = Invoke-MgGraphRequest -Method GET -Uri https://graph.microsoft.com/v1.0/teams/057697b5-57f8-4f1d-8b87-7347faa91cf6
$team.guestSettings
$team.messagingSettings
#and so on...

For additional information, see the Microsoft Graph documentation on Create a team from group API.