Creating the SharePoint 2016 User Profile Service Application using PowerShell does not Display the App Launcher

While writing my second book “Beginning PowerShell for SharePoint 2016” I stumbled upon a weird situation, where when creating the User Profile Service Application for SharePoint 2016 using PowerShell, the App Launcher wasn’t showing up. As you know, in order to have the App Launcher displayed in your SharePoint 2016 environment, you need to have an instance of the User Profile Service Application. The code I use to instantiate the Service Application in PowerShell was the following:

$account = Get-SPManagedAccount "contoso\<App Pool User Account>"
$appPool = New-SPServiceApplicationPool -Name "UserProfile" -Account $account
$userProfileSA = New-SPProfileServiceApplication -ApplicationPool $appPool -Name "UPS"
New-SPProfileserviceApplicationProxy -ServiceApplication $userProfileSA -Name "UPSProxy"

CreateUPS

But even though that code did instantiate the User Profile Service Application, the App Launcher still didn’t appear.

NoAppLauncherThe problem is that in order for the App Launcher to appear, one needs to associated the User Profile Service Application Proxy to the DefaultProxy zone. This is achieved via PowerShell by simply adding the -DefaultProxyGroup switch to the line of code where we instantiate the proxy instance:

$account = Get-SPManagedAccount “contoso\<App Pool User Account>”
$appPool = New-SPServiceApplicationPool -Name “UserProfile” -Account $account
$userProfileSA = New-SPProfileServiceApplication -ApplicationPool $appPool -Name “UPS”
New-SPProfileserviceApplicationProxy -ServiceApplication $userProfileSA -Name “UPSProxy”
DefaultProxyGroup

DefaultProxy

Executing the code above automatically enabled and displayed the App Launcher in my environment.

AppLauncher

Installing Office Online Server for SharePoint 2016

Office Online Server is the next version of the Office Web Apps, which allows your users to view and edit Microsoft Office documents directly in their browsers. It is also a prerequisite to have the Durable Links feature of SharePoint 2016 on-premises work properly. Just like its 2013 predecessor, Office Online Server 2016 needs to be installed on its own server, and cannot coexist with a SharePoint installation. It can still be used as a standalone installation.

In the present article, I will go over the installation process. The farm I will use is a SharePoint 2016 farm hosted in Azure. It has one SQL Server with the SharePoint 2016 Application Server MinRole installed on, a Web-Front end (MinRole), and a standalone Office Online Server (OOS) node.

In this article, we will be installing Office Online Server on an Azure server named AzureSPOOPS (not an typo, the ‘p’ was there for -on-premises). The server is running Windows Server 2012 R2 and is a brand new Azure Cloud Virtual Machine I just created. If you simply try to run the setupe.exe application from the installation media on a new server, you will get the following error. Please note that this article was written at a time when the Office Online Server had just been made available for 3 days, so installation steps and screens are likely to change once the product its RTM.

 

ErrorIIS7Required

As the error message states, we need to first start an enable the Web-Server role on the server in order for the installation to work. This can be done two ways:

1 – Using the Graphical User Interface:

a) Launch Server Manager and click on Manage > Add Roles and Features

AddFeatures

b) Click Next on the first screen

AddFeatures-Screen1

c) Keep the default Role-based or feature-based installation option selected, and click Next

AddFeatures-Screen2

d) Keep the option Select a server from the server pool selected, making sure that the local server in selected in the Server Pool list, and click Next

AddFeatures-Screen3

e) On the Select server roles screen, scroll down to the bottom of the list, and check Web Server (IIS). Click Next

AddFeatures-Screen4

f) A prompt will appear, simply click on the Add Features button

AddFeatures-Screen5

g) On the Select features screen, select Ink and Handwriting Services then click on Next

AddFeatures-Screen6

h) On the Web Server Role (IIS) screen, simply click NextAddFeatures-Screen7

i) On the Select role services screen, keep the default options selected and click NextAddFeatures-Screen8

j) On the Confirm installation selections screen, click on the Install button

AddFeatures-Screen9

Let the installation progress finish and close the window.

2) Use PowerShell:

Using PowerShell, the Web-Server role can be enabled by simply calling the following line of code:

Install-WindowsFeature -Name Web-Server,InkAndHandWritingServices -IncludeAllSubFeature

Install-Features

After a minute or two, the role should be activated and the following output should be shown in the PowerShell console:

PSInstallcomplete


We are now ready to re-run the setup.exe installation application for the Office Online Server. This time, instead of getting the error message, we should be presented with the License Terms screen (yes, the title says Microsoft Office Online Server 2013, which in theory never existed). Click I accept the terms of this agreement and click on the Continue button.

AcceptScreen

Keep the default installation path, unless you have a requirement to put the files in a separate location (e.g. different disk drive). Click on the Install Now button.

InstallNow

Wait for the installation progress to finish

InstallProgress

The installation progress should take about 5-6 minutes. Once completed, you will be presented with the following screen. Simply click on the Close button.

InstallComplete

Creating the Office Online Farm:

After installing the Office Online Server 2016 bits, in order for the product to be usable, we need to configure a new “Farm”. This is achieved with PowerShell, using the following lines of code. Launch a new PowerShell console running as administrator and simply replace the URL with yours:

Import-Module OfficeWebApp
New-OfficeWebAppsFarm -InternalUrl "HTTPS Url" -ExternalUrl "HTTPS Url" -SSLOffloaded –EditingEnabled

*Note SSLOffloaded should only be used in dev/test environments. In production you will want to have the communication done over SSL.

When prompted to turn setting EditingEnabled to TRUE, enter Y. Once completed, the following screen will be shown:

CreateFarm

At this point, our job is done for the Office Online Server 2016 configuration. You can go ahead and test that the “Farm” was successfully created by trying to access http://<server name>/hosting/discovery using Internet Explorer (or edge if using Windows Server 2016 Preview). If everything worked, you should see the server’s XML WOPI output as shown in the figure below:

testconfig

Connecting SharePoint 2016:

Now that the Office Online Server 2016 bits have been installed, the next step is to actually tell our SharePoint 2016 farm about the existence of this new server. In order to do this, launch a new SharePoint Management Shell console on one of the SharePoint 2016 server. What we need to do now is declare a new WOPI binding on the SharePoint server to tell it about the existence of the new Office Online Server 2016 farm. This is done by executing the following line of PowerShell:

New-SPWOPIBinding -ServerName &lt;servername&gt; -AllowHTTP

*Note that -AllowHTTP is ok for non-production environments only. In a production environment you’ll want to ensure communication is done over SSL.

If the command worked, you will see a lot of Office specific properties being output on screen

SPConfig

We are now all set!

SharePoint 2016 – Share Documents with QR Codes

A new feature has been introduced in SharePoint 2016 IT Preview that allows users to share documents using QR codes. By default, each documents library has this feature enabled. Simply upload a document to a document library, and using the document properties overlay, you can generate a QR code for the document.

SharePoint 2016 QR Code

Clicking this icon will automatically bring the user over to a new application page (/_layouts/15/qr.aspx) which will generate a QR code.

SharePoint 2016 Generated QR Code for a document

My Microsoft Virtual Academy Session on Office 365 Development

I just realized that I never truly advertised on my blog the session I delivered back in March 2015 for the Microsoft Virtual Academy in Redmond, on Office 365 Development. This full day session was recorded live on March 24th, with my co-host Christopher Harrison. We had a blast! The audience asked several great questions throughout the day. Topics covered included OAuth for the new SharePoint Online Add-In model (still apps at the time), Office 365 apps development, as well as an overview of Azure authentication for your Office 365 apps. You can go ahead and listen to my awesome French Canadian accent right now, and learn all about apps and SharePoint add-ins in Office 365 by going to:

https://www.microsoftvirtualacademy.com/en-us/training-courses/sharepoint-online-development-for-office-365-10523






SharePoint 2016 – Fast Site Creation

SharePoint 2016 IT Preview introduces a new feature called Fast Site Creation, which allows SharePoint administrators to quickly create site collections based on an existing template. This feature works at the SQL Server level, meaning that it simply copies artefacts in the SQL server directly without going through the SharePoint Object Model, thus generating multiple round trips back and forth between the SharePoint Servers and the SQL database in the back-end. Currently this feature is only available via PowerShell (which is good for us). I have no insights as to whether or not Microsoft is planning on adding a graphical interface component to Central Administration to allow us to interact with this feature.

From a PowerShell perspective, 6 new cmdlets have been introduced to help us manage the fast site creation feature:

Disable-SPWebTemplateForSiteMaster
Enable-SPWebTemplateForSiteMaster
Get-SPSiteMaster
Get-SPWebTemplatesEnabledForSiteMaster
New-SPSiteMaster
Remove-SPSiteMaster

In this article we will go over what every single cmdlet listed above does.


Get-SPWebTemplatesEnabledForSiteMaster:

This cmdlet lists all Site Collection Templates that are “Fast Creation Enabled”:

Fast Site Creation SharePoint 2016

Disable-SPWebTemplateForSiteMaster:

This cmdlet disables a site collection template that was “Fast Site Creation Enabled”. In the example below, we disable the STS#0 template:

DisableSPwebenabledtemplated

Enable-SPWebTemplateForSiteMaster:

“Fast Site Creation Enables” a template. For example, after diasbling Fast Site Creation on template STS#0 above, if we wish to re-enable it, we need to run the following cmdlet:

EnableSPWebTemplate

New-SPSiteMaster:

Now that we have our Site Collection templates ready for Fast Site Creation, we need to create what we call a new Site Master. Think of a Site Master has being a cookie cutter. It is a blank “mould” from which all site collections created via Fast Site Creation will be made from. They will actually be a copy of that blank site master.

New-SPSiteMaster

Get-SPSiteMaster:

Returns a reference to the Site Master associated with a content database:

Get-SPSiteMaster

Remove-SiteMaster:

You probably have guessed by now what that cmdlet does. Yeah, that’s right, it deletes a Site Master from a content database:

Remove-SPSiteMaster


Now that we’ve looked at all the PowerShell cmdlets involved in SharePoint 2016’s Fast Site Creation, let’s see it in action. In order for us to create a new site collection using Fast Site Creation, all we have to do is call the New-SPSite cmdlet we all know and love, but this time we must make our call passing the new -CreateFromSiteMaster parameter:

New-SPSite http://localhost/sites/FSC1 -Template STS#0 -CreateFromSiteMaster -ContentDatabase "WSS_Content" -OwnerAlias "Contoso\administrator"

New-SPSite

Ok, it’s not that impressive when you simply look at the outcome. It just creates a new site collection, so what right? What if I told you the creation process was about twice as fast using the Fast Site Creation method? While you may not care for a small SharePoint instance, imagine a large scale SharePoint instance (like Office 365) where you have to spin off hundreds of new site collections a day. Now it is starting to make sense.

Let us now compare the Fast Site Creation with the traditional method in terms of performance. Using the Measure-Command{} PowerShell method, we can compare the time it takes to create a new site collection using the SharePoint 2013 way versus how long it takes doing it the SharePoint 2016 (Fast Site Creation) way.

Traditional:

Measure-Command{New-SPSite http://localhost/sites/FSC2 -Template STS#0 -ContentDatabase “WSS_Content” -OwnerAlias “Contoso\administrator”}

measure-spsitetraditional

Fast Site Creation (SharePoint 2016):

Measure-Command{New-SPSite http://localhost/sites/FSC3 -Template STS#0 -ContentDatabase “WSS_Content” -OwnerAlias “Contoso\administrator” -CreateFromSiteMaster}

measure-spsitefast

Now you finally understand why this new way of creating site collections is so amazing!