SharePoint Updates: Patchday November 2016

Neuer Monat, neue SharePoint Updates.

Wie immer hilft der Blog von Stefan Goßner mit allen Details. Dieses mal gibt es für alle drei Plattformen (2010, 2013 und 2016) Updates:

Besonders interessant ist das Update KB3127940 für SharePoint 2016: hierbei handelt es sich um das bei der MS-Ignite angekündigte Feature-Pack 1, über das ich ja auch im Rahmen meiner Ignite-Nachlese bereits berichtet hatte.

Zusätzlich gibt es über WSUS für SharePoint 2010 und 2013 auch Sicherheits-Updates.

Bei den Sicherheitsupdates über WSUS ist zu beachten, dass nach der Installation (wie immer) auch der PSConfig-Wizard auszuführen ist.

SharePoint Updates: Patchday Oktober 2016

Neuer Monat, neue SharePoint Updates.

Wie immer hilft der Blog von Stefan Goßner mit allen Details. Dieses mal gibt es für alle drei Plattformen (2010, 2013 und 2016) Updates:

Hier ein paar Wichtige Änderungen:

  • das Update KB3118371 für SharePoint 2013 wird alle Mitglieder aus der db_owner Rolle aus dem SQL-Server entfernen, um womöglich unbeabsichtigte Zugriffe auf die SharePoint Datenbanken zu unterbinden. Sollten hier bewusst Benutzer in die Rolle aufgenommen worden sein beschreibt der Artikel, wie man das Verhalten durch Anwenden eines Registry-Schlüssels unterbinden kann.
  • das Update KB3118368 ermöglicht nun die Verwendung von Links die mit „//“ beginnen um somit URL-Schema unabhängige Verweise zu erstellen.

Zusätzlich gibt es über WSUS für SharePoint 2007, 2010, 2013 und 2016 auch Sicherheits-Updates.

Bei den Sicherheitsupdates über WSUS ist zu beachten, dass nach der Installation (wie immer) auch der PSConfig-Wizard auszuführen ist.

Erste Deutsche Nintex UserGroup

Du brennst für Nintex? Ich auch! Jeder, der Interesse an Nintex hat, Anwender ist, regelmäßig Projekte begleitet oder einfach nur ein paar Inspirationen sammeln möchte, ist herzlich eingeladen der Nintex UserGroup beizutreten.

In der UserGroup teilen wir:

  • Herausforderungen und Erfolgsgeschichten
  • Best practices und Produkt-Tipps
  • Anwendungsszenarien und reale Projekte
  • und diskutieren über die Zukunft der Nintex Plattform.

Interessiert? Dann einfach unsere Meetup-Seite besuchen und sich für eines unserer Treffen anmelden.

Nachlese der Ignite

So – die Ignite ist fast zuende – einmal kurz durchatmen und zunächst mal die großen, offiziellen Announcements verarbeiten.

Was haben wir in den letzten Tagen auf der Ignite gesehen?

OneDrive for Business

Große Änderungen gibt es bei OneDrive for Business. Zum einen gibt ein großes Update für den OneDrive for Business Client, der lange gewünschte Features liefert:

  • der sogenannte Next Generation Sync Client (NGSC) kann nun auch SharePoint Online Dokumentbibliotheken synchronisieren und nicht mehr nur ausschließlich das OneDrive
  • durch die Verwendung des NGSC können nun auch selektive Inhalte aus SharePoint gesynct werden – es muss nicht mehr immer die komplette Bibliothek synchronisiert werden
  • bei dem „alten“ SkyDrive Client gab es schon mal die Möglichkeit, dass man im Client zwar alle Dateien gesehen hatte, aber nicht alle wirklich auch lokal vorhanden waren. Dazu konnte zwischen Online und Offline-Dateien unterschieden werden. Diese Möglichkeit wird es nun auch wieder im NGSC geben – und somit auch für OneDrive als auch für SharePoint Online Bibliotheken

Zum anderen gibt es neuen Features in der Online-Darstellung von OneDrive:

  • mehr und verbesserte Previews (z.B. bessere Darstellung von PDF-Dokumenten, Darstellung von Mails in .msg und .eml Dateien)
  • direkte Bearbeitung von Dateien im Browser
  • Herunterladen von mehreren Dateien in einer ZIP-Datei

Dazu kommen noch viele weitere Funktionen für Administratoren und neue Fähigkeiten für die mobilen Apps für OneDrive.

Mehr Infos: Major OneDrive updates at Ignite 2016 include SharePoint Online sync preview

Feature Pack 1 for SharePoint

Nachdem im Frühjahr die freigegebene Version von SharePoint 2016 veröffentlicht wurde, gibt es nun voraussichtlich im November das erste Feature Pack, welche neue Funktionen für SharePoint 2016 liefert:

  • Logging von administrativen Aktionen
  • Erweiterung des MinRole-Konzepts für kleine Umgebungen (ermöglicht eine 2-Server-Farm mit Min-Roles! bisher war die kleinste mögliche Farm mit 4 Servern zu erreichen)
  • OneDrive for Business verbesserungen (für On-Premise SharePoint bzw OneDrive!)
  • Anpassung des App-Launchers

Mehr Infos: Announcing Feature Pack 1 for SharePoint Server 2016—cloud-born and future-proof

SharePoint Mobile Apps

Bereits auf dem Future-Of-SharePoint Event wurden Apps für SharePoint vorgestellt – nun gibt es die Apps als Preview in der Stores. Damit kann man auf mobilen Geräten direkt auf SharePoint-Inhalte zugreifen, Datein betrachten, Listen durchsuchen und aktuelle Aktivitäten einer Seite sehen

Mehr Infos: Enriching the mobile and intelligent intranet with team news, apps for Android and Windows and more

My Analytics

Im Frühjahr wurde Delve um einen Analytics-Menupunkt erweitert, der in nächster Zeit aus Delve heraus in eine eigene App MyAnalytics wandern wird.

Mehr Infos: Create better work habits with MyAnalytics (formerly Delve Analytics)

Yammer

Yammer wächst immer weiter mit Office365 zusammen. Office-Dokumente, die in Yammer abgelegt sind können oline mit Office-Online betrachtet und bearbeitet werden. Darüber hinaus kann aus Yammer direkt auf OneDrive, OneDrive for Business und SharePoint zugegriffen werden. Zudem können Notizen in Yammer nun mit OneNote erstellt und gepflegt werden und Aufgaben lassen sich mit Planner für Yammer-Gruppen genauso verwalten wir das mit Office-Groups bereits funktioniert.

Mehr Infos: Yammer strengthens team collaboration through integration with Office 365 Groups

Weitere Ankündigungen

SharePoint Patchday September 2016

Neuer Monat, neue Patches.

Wie immer hilft der Blog von Stefan Goßner mit allen Details. Dieses mal gibt es für alle drei Plattformen (2010, 2013 und 2016) Updates:

Zusätzlich gibt es über WSUS für SharePoint 2007, 2010, 2013 und 2016 auch Sicherheits-Updates.

Bei den Sicherheitsupdates über WSUS ist zu beachten, dass nach der Installation (wie immer) auch der PSConfig-Wizard auszuführen ist.

Recap – 15. Treffer der UserGroup in Köln

Zu einem fast perfekten Wetter hatte sich die UserGroup auf der Dachterrasse der ConVista in Köln eingefunden. Das Interesse war groß und die Vorträge sehr abwechslungsreich.

Wer nicht dabei sein konnte darf uns gerne am 4.10. in Düsseldorf besuchen- ansonsten sind hier noch mal die Slides zum nachlesen.

Office365 E5 Plan von Denis Buco

Hier noch einmal ein paar Eindrücke von dem Vorträgen.

Probleme beim Patching von SharePoint 2016

Beim letzten Patch-Dienstag wurde auch wieder SharePoint mit Sicherheitsupdates bedacht. Normalerweise ist die Installation immer recht problemlos: Sicherheitsupdates über den WSUS beziehen, am Ende neu starten und dann den Konfigurationsassistenten laufen lassen (ganz wichtig, sonst ist das Update nicht vollständig, siehe den Post von Stefan Goßner warum man den Konfigurationsassistenten immer laufen lassen sollte).

Aber dieses mal wollte mein neuer SharePoint 2016 nicht so ganz mitspielen – der Konfigurationsassistent versagte seinen Dienst mit folgender Meldung:

Task upgrade has failed with a PostSetupConfigurationTaskException An exception of type Microsoft.SharePoint.PostSetupConfiguration.PostSetupConfigurationTaskException was thrown.  Additional exception information: Failed to upgrade SharePoint Products.

Was also nun tun?

Die Rettung nahte in Form von PowerShell. Ein kurzer Blick in die Zentraladministration zeigte, dass die Content-Datenbank im Kompatibilitätsmodus lief und gerne aktualisiert werden wollte. Eigentlich sollte das ja der Konfigurationsassistent tun – aber vielleicht kann man da ja auch mit PowerShell ein wenig nachhelfen.

Upgrade-SPContentDatabase SP_Portal_Content -NoB2BSiteUpgrade -Confirm:$false

Damit wurde die Datenbank schon mal aktualisiert. Anschließend konnte ich dann den Konfigurationsassistenten auch erfolgreich ausführen und somit meinen frisch ge-patchten SharePoint genießen.

Keine Sandboxed Solutions in Office365

Nun ist es soweit – Sandboxed Solutions in SharePoint sind ja schon seit langem als „deprecated“ markiert. Deprecated bedeutet, dass das Feature noch voll Funktionsfähig ist, aber in einer der nächsten Versionen eingestellt werden könnte und dann nicht mehr zur Verfügung stehen wird. Und das ist jetzt.

Letzte Woche gab es in Office365 einen Incident SP73009, demnach kein Sandboxed Code mehr aktiviert oder ausgeführt werden kann. Kurz darauf hat das Office-Team in einem Blogpost  bekannt gegeben, dass das Ausführen von Sandbox-Code in Office365 (mit sofortiger Wirkung) eingestellt werden wird. Allerdings bleibt weiterhin die Option, dass No-Code Lösungen (also deklarative Lösungen) über Sandboxed Solutions zu deployen.

Incident SP73009 - Service Degradation

Interessant ist, dass das Office365 aber dennoch erst einmal eine Woche recherchiert hat, bis der Incident SP73009 als „false-positiv“ geschlossen wurde.

Incident SP73009 - Resolution

Jetzt heißt es also: Lösungen auf die Verwendung von Sandboxed Solutions prüfen und alternativen entwickeln: Provider-Hosted Apps oder auf Client-Side Technologien umstellen!

SharePoint-Veröffentlichung, Reverse-Proxy und Fiddler

… oder wie Fiddler mir geholfen hat eine fehlerhafte Reverse-Proxy Konfiguration bei der Veröffentlichung eines internen SharePoint-Portals zu umgehen.

Die Story

Einer unserer Kunden betreibt eine lokale Installation von SharePoint für sein Intranet. Im Laufe des Projekts wurde klar, dass auch von extern von Mitarbeitern auf den SharePoint zugegriffen werden sollte. Nun war SharePoint aber bereits mit portal.acme.local intern veröffentlicht. Für den externen Zugriff sollte aber eine Adresse wie portal.acme-extranet.de verwendet werden.

Für die IT-Abteilung des Kunden war es kein Problem, eine Web-Anwendung von extern unter einem anderen Namen zu veröffentlichen. Dazu stellt die IT einen Reverse Proxy zur Verfügung, der die eingehenden Anfragen an das interne Portal weiterleitet.

Das Problem

Nun hat die IT also den Reverse Proxy eingerichtet und alle Anfragen von https://portal.acme-extranet.de werden an http://portal.acme.local umgeleitet. Nun ist auf der Empfängerseite ein SharePoint, der die Anfrage für bare Münze nimmt. Als Folge werden interne Links und URLs in dem von SharePoint generierten HTML auch auf http://portal.acme.local gemünzt. In der Antwort für den Client sind die Links dann aber falsch, weil unter dieser Adresse die sind Ressourcen von extern ja nicht zu erreichen, da es sich dabei ja um eine interne Adresse handelt.

Glücklicherweise ist nur an wenigen Stellen in den URLs auch der Hostname inklusive Protokoll enthalten. Viele Links sind relativ zum Host, so dass diese funktionieren, egal wie die Seiten aufgerufen werden. Aber es gibt dennoch einige Stellen, an denen der Hostname aus der Anfrage eingefügt werden. Gerade im JavaScript findet sich der Hostname mehrfach wieder. Somit funktionieren diese Funktionen in diesem Fall nicht.

Das Problem an dieser Stelle ist, dass der Reverse-Proxy die Anfrage intern an http://portal.acme.local umleitet und nicht den original Host-Headernamen https://portal.acme-extranet.de im HTTP-Request beibehält (nur damit funktioniert dann das AAM im SharePoint auch richtig).

Die Lösung

Solange die die Konfiguration des Reverse-Proxy nicht angepasst wird kann man von extern nicht vollständig auf SharePoint zugreifen … oder … ich verwende Fiddler.

Wenn ich zunächst in meinem Browser http://portal.acme.local aufrufe, dann bekomme ich eine Fehlermeldung, dass der Name nicht aufgelöst werden kann.

Nun habe ich also mal meinen Fiddler gestartet und der Traffic meines Browsers geht durch Fiddler. Und nun kommt Magic … ich kann im Fiddler mit Fiddler-Script in die Verarbeitung eingreifen, indem ich Custom-Rules definiere. So gibt es ein OnBeforeRequest-Event in dem ich in die Verarbeitung eines Requests in Fiddler eingreifen kann. Hier habe ich nun folgenden Eingriff vorgenommen:

if (oSession.HostnameIs("portal.acme.local")) {    
    oSession.hostname="portal.acme-extranet.de"; 
    oSession.fullUrl = "https" + oSession.fullUrl.Substring(oSession.fullUrl.IndexOf(':'));  
}

Damit erreiche ich, dass aller Traffic, den mein Browser an http://portal.acme.local sendet an https://portal.acme-extranet.de umgelenkt wird. Somit ist mir egal wie die URLs in der HTML-Antwort von SharePoint aussehen und ich somit auch auf Seite und Funktionen zugreifen kann, die mir vorher verwehrt waren, weil sie nur die “interne” URL angezeigt haben.

Das Ziel

Als Ergebnis kann ich nun auch mit ShareGate auf das Portal zugreifen und dort Daten migrieren, was vorher nicht möglich war, weil insbesondere in den Antworten der Webservices immer die komplette URL angegeben ist, und alle Antworten auf einen Webservice-Aufruf immer gegen die interne Adresse laufen.

Installation SharePoint 2016

So langsame wird es ja mal Zeit … SharePoint 2016 zu installieren.

Zunächst also mal die Vorbereitungen … ich habe hier schon ein Domäne und einen SQL-Server (SQL 2014), sowie einen neuen Windows Server 2012 R2.

Nun geht es also darum alles für die Installation von SharePoint 2016 vorzubereiten. Dabei müssen also folgende Dinge getan werden:

  1. Einrichten von neuen Dienstkonten
  2. Vorbereiten der Datenbank

Die Schritte sind ja nicht neu – waren sie ja bei SharePoint 2013 auch genauso schon notwendig. Aber dennoch wollte ich das noch einmal in Erinnerung rufen.

1. Dienstkonten

Diese lassen sich am besten per Skript anlegen. Also schnell eine kleine CSV-Datei mit allen benötigten Konten erstellen:

UserName,Password,Description
sp16Setup,super$ecret,Setup user Test Env SP2016
sp16Farm,super$ecret,server farm Test Env SP2016
sp16SearchService,super$ecret,SharePoint Server Search service Test Env SP2016
sp16SearchContent,super$ecret,default content access Test Env SP2016
sp16Services,super$ecret,SharePoint Services Test Env SP2016
sp16AppPool_Portal,super$ecret,Portal Application Pool Test Env SP2016
sp16AppPool_MySite,super$ecret,MySite Application Pool Test Env SP2016
sp16CacheUser,super$ecret,Cache Super User Test Env SP2016
sp16CacheReader,super$ecret,Cache Super User Reader Test Env SP2016
sp16ExcelUser,super$ecret,Excel Services Unattended Test Env SP2016
sp16VisioUser,super$ecret,Visio Services Unattended Test Env SP2016
sp16ProfileSync,super$ecret,SharePoint Profile Sync Test Env SP2016

Dann PowerShell öffnen und die Konten aus der CSV-Datei anlegen lassen.

Import-Module ActiveDirectory

$FileName = "sp2016_ads_user.csv"
$spou = "ou=SPS2016,ou=Service-Accounts,dc=acme,dc=local"

Import-Csv $FileName | foreach-object { 
    Write-Host "Adding User $($_.UserName) ... " -NoNewline
    New-AdUser $_.UserName -Description $_.Description -CannotChangePassword $true -PasswordNeverExpires $true -Enabled $true -AccountPassword (ConvertTo-SecureString -AsPlainText $_.Password -Force) -Path $spou
    Write-Host "Done"
}


2. Datenbank

Ich habe hier schon einen SQL-Server mit einer neuen Instanz für meine SharePoint Datenbanken. Hier muss ja nun der Setup-User dbcreator und securityadmin sein. Zudem muss das MAXDOP auf “1” gesetzt werden.

Da es sich bei meiner Installation nicht um ein Produktiv-System handelt setze ich das Recovery-Model noch auf “simple” und ich limitieren den maximalen RAM für meine Instanz auf 512MB. Das Ganze geht auch am besten schnell mit einem Skript.

-- Create Login and assign permissions
USE [master]
GO
DECLARE @setupUser NVARCHAR(100) = N'acme\spSetup';
DECLARE @sqlStmt NVARCHAR(200);
SET @sqlStmt = 'CREATE LOGIN [' + @setupUser + '] FROM WINDOWS WITH DEFAULT_DATABASE=[master]'
EXEC (@sqlStmt)
EXEC master..sp_addsrvrolemember @loginame = @setupUser, @rolename = N'dbcreator'
EXEC master..sp_addsrvrolemember @loginame = @setupUser, @rolename = N'securityadmin'
GO

-- set MAXDOP to 1, as recommended
EXEC sys.sp_configure N'show advanced options', N'1'  RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'max degree of parallelism', N'1'
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'show advanced options', N'0'  RECONFIGURE WITH OVERRIDE
GO


-- for dev-env only!! Set recovery-model to simple!!
USE [master]
GO
ALTER DATABASE [model] SET RECOVERY SIMPLE WITH NO_WAIT
GO

-- for dev-env only!! Set max-ram to 768 MB!!
USE [master]
GO
EXEC sys.sp_configure N'show advanced options', N'1'  RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'min server memory (MB)', N'768'
GO
EXEC sys.sp_configure N'max server memory (MB)', N'768'
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'show advanced options', N'0'  RECONFIGURE WITH OVERRIDE
GO

3. Los!

Nachdem nun die Vorbereitungen soweit abgeschlossen sind, können wir uns unserem neuen SharePoint-Server widmen. Als erstes muss unser Installationsaccount sp16Setup noch in die lokale Admin-Gruppe aufgenommen werden.

net localgroup administrators /add acme\sp16Setup

Nun können wir (fast) mit der Installation beginnen. Was noch fehlt sind die Installationsdateien. Zunächst wird also SharePoint 2016 benötigt.

Ansonsten geht die Installation erst einmal wie bei SharePoint 2013 auch: Die Installationsdateien mit dem AutoSPSourceBuilder vorbereiten, sprich für den AutoSPInstaller in die notwendige Struktur bringen.

Achtung: in dem XML-File für die Pre-Requisits ist (Stand Mai 2016) noch ein Fehler. Die URL für den ODBC Treiber 11 lautet nicht http://download.microsoft.com/download/5/7/2/57249A3A-19D6-4901-ACCE-80924ABEB267/1033/x64/msodbcsql.msi sondern http://download.microsoft.com/download/5/7/2/57249A3A-19D6-4901-ACCE-80924ABEB267/1033/amd64/msodbcsql.msi. Alos entweder die URL in dem XML anpassen, oder den Treiber einfach vorher schon laden und in dem Install-Verzeichnis bei den Pre-Requisits ablegen. Dann wird das von dem AutoSPSourceBuilder übersprungen werden.

.\AutoSPSourceBuilder.ps1 -SourceLocation "\\acme\dfs\SharePoint\2016\Server\" -Destination "c:\Install\" -GetPrerequisites $true

Nachdem das entpakte ISO kopiert und die Pre-Requisits heruntergeladen wurden kann man die XML Datei für den AutoSPInstaller anpassen. Entweder von Hand – oder über AutoSPInstaller Online.

Nach getaner Konfiguration geht es dann auch direkt los – fast. In meinem Fall habe ich einen frischen Windows Server 2012 R2 als OS – dummerweise fehlt hier aber noch das .Net Framework 3.x, und die Installation über den AutoSPInstaller mit Add-WindowsFeature -Name NET-Framework will nicht so richtig, weil für das .Net Framework die Installationsquelle mit angegeben werden muss. Also kurz vorher an der Kommandozeile mit

dism /online /enable-feature /featurename:NetFX3 /all /Source:d:\sources\sxs /LimitAccess

Das .Net Framework installieren. In meinem Fall habe ich die Windows Server Installationsquelle als Laufwerk D: eingebunden. Nun kann aber wirklich die Installation gestartet werden.

Zunächst also auf AutoSPInstaller Online eine neue Farm Konfiguration erstellen und als XML-Datei speichern.

Achtung: durch den AutoSPSourceBuilder wurde bei den Pre-Requisits eine Datei WcfDataServices56.exe bereitgestellt, der AutoSPInstaller erwartet hier aber WcfDataServices.exe. Damit die Offline-Installation auch ohne Probleme durchläuft sollte die Datei also umbenannt werden (oder das Skript anpassen).

Danach kann es dann aber losgehen mit der eigentlichen Installation.

image

Und nach kurzer Zeit (ein paar Reboots und gut drei Duzend Windows Updates später) steht die neue Farm – voila!

Happy #SharePointing