Share via


Upgraden von SharePoint 2013 auf SharePoint 2016 über Workflow Manager

GILT FÜR:yes-img-132013 yes-img-162016 no-img-192019 no-img-seSubscription Edition no-img-sopSharePoint in Microsoft 365

Zusammenfassung

Wenn Sie Microsoft SharePoint 2013 auf Microsoft SharePoint 2016 aktualisieren, müssen Sie keine neue Workflow-Manager-Installation erstellen. Sie können dieselbe Installation verwenden, die von der SharePoint 2013-Farm in der neuen SharePoint 2016-Farm verwendet wurde. Unter bestimmten Umständen müssen Sie jedoch möglicherweise eine neue Installation von Workflow-Manager erstellen. Wenn Sie z. B. Workflow-Manager auf ein anderes Windows-Betriebssystem verschieben möchten oder wenn der Back-End-Datenbankserver außer Betrieb genommen wird. Führen Sie in diesen Situationen die Schritte unter Workflow-Manager Notfallwiederherstellung aus, um die neue Workflow-Manager-Installation mithilfe der alten Datenbanken zu erstellen. Stellen Sie sicher, dass Sie die neueste Kopie der Workflow-Manager Datenbanken verwenden.

Hintergrund

Wenn Sie SharePoint Server zusammen mit Workflow-Manager verwenden, zeichnet Workflow-Manager die SharePoint-Websites mit veröffentlichten Workflows auf. Jede Website wird in Workflow-Manager als Bereich dargestellt. Workflow-Manager speichert auch die Workflowdefinitionen, alle Workflowinstanzen und deren Status.

SharePoint speichert den Workflowverlauf und die Workflowaufgabeninformationen für SharePoint-Workflows. Wenn der Workflow status Seite geladen wird, ruft SharePoint zuerst Workflow-Manager auf, um zu sehen, ob der Workflow vorhanden ist. Dazu wird die Workflow-instance-ID verwendet. Anschließend lädt SharePoint die restlichen Workflowinformationen. Wenn die Workflow-instance-ID in Workflow-Manager fehlt oder während der Kommunikation mit Workflow-Manager ein Fehler auftritt, erhalten Sie eine Fehlermeldung.

Aktualisieren von SharePoint 2013 auf SharePoint 2016 mithilfe von Workflow-Manager

Voraussetzungen

Die folgenden Prrequisites müssen für dieses Upgrade ausgeführt werden:

  • Installieren Sie das neueste kumulative Update für Workflow-Manager mithilfe des Webplattform-Installers (Web PI).

  • Installieren Sie die neueste Version von Workflow-Manager Client auf den SharePoint 2013-Servern, und stellen Sie sicher, dass alle Workflows funktionsfähig sind.

  • Installieren Sie die SharePoint Server 2016-Farm, und aktualisieren Sie alle Dienstanwendungen und Inhaltsdatenbanken.

  • Installieren Sie auf allen SharePoint Server 2016-Farmservern die neueste Version von Workflow-Manager Client mithilfe von Web PI.

Registrieren Workflow-Manager bei SharePoint Server 2016

Führen Sie die folgenden Schritte aus, um Workflow-Manager bei SharePoint Server 2016 zu registrieren:

  1. Klicken Sie in der SharePoint 2013-Farm auf der Website der Zentraladministration auf Anwendungsverwaltung und dann auf Dienstanwendungen verwalten, und löschen Sie dann den Workflowdienst-Applidcation-Proxy.

  2. Führen Sie in der SharePoint Server 2016-Farm das folgende Microsoft PowerShell-Cmdlet aus, um SharePoint 2016 mit derselben Workflow-Manager Installation zu koppeln:

   Register-SPWorkflowService -SPSite <SharePoint site URL> -
   WorkflowHostUri <Workflow service endpoint URL> -force

Häufige Probleme, die nach dem Upgrade auftreten können

Problem 1: Website-URL wird geändert

Wenn ihre Website-URL in SharePoint 2016 geändert wird, die Website-ID jedoch unverändert bleibt, müssen Sie einen Workflow von der betroffenen Website mithilfe von SharePoint Designer erneut veröffentlichen.

Problem 2: Workflows werden auf einigen Websites nicht gestartet

Wenn Workflows auf einigen Websites nicht gestartet werden, veröffentlichen Sie die Workflows von der betroffenen Website erneut. Oder führen Sie den Zeitgeberauftrag Aktualisieren des Metadatenfeeds vertrauenswürdiger Sicherheitstokendienste aus.

Problem 3: Workflows schlagen fehl und geben den Fehler "App-Prinzipalberechtigungsinformationen können nicht abgerufen werden" zurück.

Stellen Sie sich folgendes Szenario vor:

  • Sie haben SharePoint 2013-Workflows und Workflow-Manager in Ihrer Farm konfiguriert.

  • Sie haben websites in der Farm kürzlich mit einer zuvor vorhandenen instance Workflow-Manager verbunden.

In diesem Szenario werden Workflows, die erstellt werden, nachdem Sie eine Verbindung mit der Workflow-Manager Installation hergestellt haben, erfolgreich abgeschlossen. Workflows, die vor dem Herstellen einer Verbindung mit Workflow-Manager erstellt werden, werden jedoch nicht abgeschlossen. Stattdessen bleiben sie hängen, wenn sie versuchen, den Vorgang abzuschließen, oder sie bleiben in einem angehaltenen Zustand. Für Workflows, die angehalten bleiben, erhalten Sie einen HTTP 500-Fehler. Darüber hinaus wird der folgende Eintrag im ULS-Protokoll protokolliert: App-Prinzipalberechtigungsinformationen können nicht abgerufen werden.

Ursache

Workflow-Manager verfügt bereits über einen Bereich für die Website, auf der die Workflows ausgeführt werden. Da der Bereich einen falschen SPAuthenticationRealm-Wert im ApplicationID-Feld des Bereichs aufweist, ist keine SPAppPrincipal-Klasse für das SPWeb-Objekt vorhanden, das mit dem ApplicationID-Wert des Bereichs übereinstimmt. Daher schlagen die Workflows fehl und geben eine Fehlermeldung zurück.

Lösung

Um dieses Problem zu beheben, verwenden Sie die folgenden PowerShell-Befehle, um das neue SPAppPrincipal-Objekt zu registrieren. Dies erfolgt für das SPWeb-Objekt, dessen ID mit dem ApplicationID-Wert übereinstimmt, der im Bereich für das SPWeb-Objekt in Workflow-Manager gespeichert ist.

   #Variables
   $webUrl = "http://sp.contoso.com/sites/teamsite/teamweb"
   $oldAuthRealm = "58a2b173-0f88-4bff-935b-bf3778cd0524" #authentication realm expected by Workflow Manager
   $newAuthRealm = "48834d17-d729-471e-b0d0-a0ec83b49de0" #authentication realm of current farm
   #Get the SPWeb and SPSite objects, and the id of the web
   $web = Get-SPWeb $webUrl
   $site = $web.site
   $clientId = $web.Id
   #Create the old and new app principal ids
   $oldAppId = "$clientId@$oldAuthRealm"
   $newAppId = "$clientId@$newAuthRealm"
   #Register the app principal with the old authentication realm
   Register-SPAppPrincipal -DisplayName "Old Workflow" -Site $web -NameIdentifier $oldAppId
   #Set permissions for the app principal
   #If app-only permissions are used in old environment, you must use the -EnableAppOnlyPolicy parameter to pass to the cmdlet for app steps to succeed
   $oldAppPrincipal = Get-SPAppPrincipal -Site $web -NameIdentifier $oldAppId
   Set-SPAppPrincipalPermission -Site $web -AppPrincipal $oldAppPrincipal -Scope SiteCollection -Right FullControl
   Set-SPAppPrincipalPermission -Site $web -AppPrincipal $oldAppPrincipal -Scope Site -Right FullControl
   #List the app principals with the old and new authentication realms in the ids
   Get-SPAppPrincipal -Site $web -NameIdentifier $oldAppId | fl
   Get-SPAppPrincipal -Site $web -NameIdentifier $newAppId | fl

Hinweis: Wenn der App-Prinzipal über App-Only Berechtigungen auf der SharePoint 2013-Website verfügte, müssen Sie auch -EnableAppOnlyPolicy an das cmdlet Set-SPAppPrincipalPermission übergeben.

Weitere Informationen

Führen Sie die folgenden Schritte aus, um den SPAuthenticationRealm-Wert von ApplicationID abzurufen, der im Bereich gespeichert ist:

  1. Führen Sie die folgende SQL-Abfrage aus:

    SELECT *
    FROM [WFResourceManagementDB].[dbo].[Scopes] WITH (NOLOCK)
    WHERE Description like '%<WebID>%'
    
    

    Dabei <ist WebID> der Platzhalter für die ID des SPWeb-Objekts.

  2. Klicken Sie im Abfrageergebnis auf den Wert in der Spalte SecuritySettings, um den XML-Code auf einer separaten Registerkarte in SQL Server Management Studio zu öffnen.

  3. In der XML-Datei befindet sich das ApplicationID-Element, das den Wert enthält. Suchen Sie beispielsweise das folgende Element:

    <ApplicationId>SPWeb_object_ID@SPAuthenticationRealm</ApplicationId>`
    

    Hinweis

    Die GUID, die vor dem at-Zeichen (@) angezeigt wird, ist die ID des SPWeb-Objekts, und die GUID, die nach dem at-Zeichen angezeigt wird, ist der SPAuthenticationRealm-Wert.

Alternativ finden Sie den WERT SPAuthenticationRealm im ULS-Protokoll, z. B. im folgenden Beispielprotokolleintrag:

03.11.2017 12:13:16.72 w3wp.exe (SPWFE01:0x51FC) 0x1298 SharePoint Foundation Authentication Authorization an3eg Medium App-Prinzipalberechtigungsinformationen können nicht abgerufen werden. AppId=i:0i.t|ms.sp.ext|<SPWeb-Objekt-ID>@<SPAuthenticationRealm>

03.11.2017 12:13:16.72 w3wp.exe (SPWFE01:0x51FC) 0x1298 SharePoint Foundation General 8nca Medium Application error when access /site/teamsite/teamweb/_vti_bin/client.svc, Error=Object reference not set to an instance of an object. at Microsoft.SharePoint.SPAppRequestContext.EnsureTenantPermissions(SPServiceContext serviceContext, Boolean throwIfAppNotExits, Boolean allowFullReset) at Microsoft.SharePoint.SPAppRequestContext.InitCurrent(HttpContext context) at Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.InitCurrentAppPrincipalToken(HttpContext context) at Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.PostAuthenticateRequestHandler(Object oSender, EventArgs ea) at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)