Condividi tramite


Aggiornare SharePoint 2013 a SharePoint 2016 tramite Workflow Manager

Numero KB originale: 4073758

Riepilogo

Quando si aggiorna Microsoft SharePoint 2013 a Microsoft SharePoint 2016, non è necessario creare una nuova installazione di Workflow Manager. È possibile usare la stessa installazione usata dalla farm di SharePoint 2013 nella nuova farm di SharePoint 2016.

Potrebbe tuttavia essere necessario creare una nuova installazione di Workflow Manager in determinate circostanze. Ad esempio, se si desidera spostare Workflow Manager in un sistema operativo Windows diverso o se il server di database back-end viene disattivato. In queste situazioni, seguire i passaggi descritti in Workflow Manager ripristino di emergenza per creare la nuova installazione Workflow Manager usando i database precedenti. Assicurarsi di usare la copia più recente dei database Workflow Manager.

Background

Quando si usa SharePoint Server insieme a Workflow Manager, Workflow Manager mantiene un record dei siti di SharePoint che hanno pubblicato flussi di lavoro. Ogni sito è rappresentato in Workflow Manager come ambito. Workflow Manager archivia anche le definizioni del flusso di lavoro, tutte le istanze del flusso di lavoro e i relativi stati.

SharePoint archivia la cronologia del flusso di lavoro e le informazioni sulle attività del flusso di lavoro per i flussi di lavoro di SharePoint. Quando viene caricata la pagina di stato del flusso di lavoro, SharePoint esegue prima una chiamata a Workflow Manager per verificare se il flusso di lavoro esiste. A tale scopo, usa l'ID istanza del flusso di lavoro. Quindi, SharePoint carica il resto delle informazioni del flusso di lavoro. Se l'ID istanza del flusso di lavoro è mancante in Workflow Manager o se si verifica un errore durante la comunicazione con Workflow Manager, viene visualizzato un messaggio di errore.

Aggiornare SharePoint 2013 a SharePoint 2016 tramite Workflow Manager

Prerequisiti

  • Installare l'aggiornamento cumulativo più recente per Workflow Manager usando Web Platform Installer (Pi Web).
  • Installare la versione più recente di Workflow Manager Client nei server SharePoint 2013 e assicurarsi che tutti i flussi di lavoro siano funzionanti.
  • Installare la farm di SharePoint 2016 e aggiornare tutte le applicazioni di servizio e i database del contenuto.
  • In tutti i server farm di SharePoint 2016 installare la versione più recente di Workflow Manager Client usando l'elemento Pi Greco Web.

Registrare Workflow Manager con SharePoint 2016

A tal fine, attenersi alla seguente procedura:

  1. Nella farm di SharePoint 2013 passare a Central Amministrazione Application Management Manage Service Application (Gestione applicazioni) e quindi eliminare Workflow Service Application Proxy.In the SharePoint 2013 farm, go to Central Amministrazione>Application Management>Manage Service Application, and then delete Workflow Service Application Proxy.

  2. Nella farm di SharePoint 2016 eseguire il cmdlet di PowerShell seguente per associare SharePoint 2016 alla stessa installazione Workflow Manager:

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

Nota

Tenere presente che i database del contenuto aggiornati nella nuova farm di SharePoint 2016 devono essere stati ripristinati dal backup più recente. Ciò consente di evitare differenze e lacune tra Workflow Manager e i database del contenuto.

Problemi comuni che possono verificarsi dopo l'aggiornamento

Problema 1: L'URL del sito viene modificato

Se l'URL del sito viene modificato in SharePoint 2016 ma l'ID sito rimane invariato, è necessario ripubblicare un flusso di lavoro dal sito interessato usando SharePoint Designer.

Problema 2: i flussi di lavoro non vengono avviati in alcuni siti

Se i flussi di lavoro non vengono avviati in alcuni siti, ripubblicare i flussi di lavoro dal sito interessato. In alternativa, eseguire il processo timer Aggiorna feed di metadati dei servizi token di sicurezza attendibili .

Problema 3: I flussi di lavoro hanno esito negativo e restituiscono l'errore "Impossibile ottenere informazioni sull'autorizzazione dell'entità app"

Sintomi

Considerare lo scenario descritto di seguito:

  • I flussi di lavoro di SharePoint 2013 e Workflow Manager configurati nella farm.
  • Di recente sono stati connessi siti nella farm a un'istanza di Workflow Manager esistente in precedenza.

In questo scenario, i flussi di lavoro creati dopo la connessione al Workflow Manager'installazione vengono completati correttamente. Tuttavia, i flussi di lavoro creati prima di connettersi a Workflow Manager non vengono completati. Al contrario, si bloccano quando tentano di completare o rimangono in uno stato sospeso. Per i flussi di lavoro che rimangono sospesi, viene visualizzato un errore HTTP 500. Inoltre, nel log ULS viene registrata la voce seguente:

Impossibile ottenere informazioni sull'autorizzazione dell'entità app.

Causa

Workflow Manager ha già un ambito per il sito in cui sono in esecuzione i flussi di lavoro. Poiché l'ambito ha un valore non corretto SPAuthenticationRealm nel ApplicationID campo dell'ambito, nell'oggetto SPWeb non esiste alcuna SPAppPrincipal classe corrispondente al ApplicationID valore dell'ambito. Di conseguenza, i flussi di lavoro hanno esito negativo e restituisce un messaggio di errore.

Risoluzione

Per risolvere questo problema, usare i comandi di PowerShell seguenti per registrare il nuovo SPAppPrincipal oggetto. Questa operazione viene attivata nell'oggetto il SPWeb cui ID corrisponde al ApplicationID valore archiviato nell'ambito dell'oggetto SPWeb in Workflow Manager.

#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
$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

Ulteriori informazioni

Per ottenere il SPAuthenticationRealm valore di ApplicationID archiviato nell'ambito, seguire questa procedura:

  1. Eseguire la query SQL seguente:

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

    Nota

    < Webid> è il segnaposto per l'ID dell'oggetto SPWeb .

  2. Nel risultato della query fare clic sul valore nella SecuritySettings colonna per aprire il codice XML in una scheda separata in SQL Server Management Studio.

  3. Nel file XML individuare l'elemento ApplicationID che contiene il valore. Ad esempio, individuare l'elemento seguente:

    <ApplicationId>SPWeb_object_ID@SPAuthenticationRealm</ApplicationId>

    Nota

    Il GUID visualizzato prima del segno di corrispondenza (@) è l'ID dell'oggetto SPWeb e il GUID visualizzato dopo il segno di corrispondenza è il SPAuthenticationRealm valore .

In alternativa, è possibile trovare il SPAuthenticationRealm valore nel log ULS, ad esempio nella voce di log di esempio seguente:

Data/ora w3wp.exe (SPWFE01:0x51FC) 0x1298 autorizzazione di autenticazione di SharePoint Foundation an3eg Medium Non è possibile ottenere informazioni sull'autorizzazione dell'entità app. AppId=i:0i.t|ms.sp.ext|<ID> oggetto SPWeb@<SPAuthenticationRealm>

Data/ora w3wp.exe (SPWFE01:0x51FC) 0x1298 errore dell'applicazione media di SharePoint Foundation General 8nca quando si accede a /site/teamsite/teamweb/_vti_bin/client.svc, Il riferimento Error=Object non è impostato su un'istanza di un oggetto. in Microsoft.SharePoint.SPAppRequestContext.EnsureTenantPermissions(SPServiceContext serviceContext, Boolean throwIfAppNotExits, Boolean allowFullReset) in Microsoft.SharePoint.SPAppRequestContext.InitCurrent(HttpContext context) in Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.InitCurrentAppPrincipalToken(HttpContext context) in Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.PostAuthenticateRequestHandler(Object oSender, EventArgs ea) all'indirizzo System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() nel passaggio System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean& completedSynchronously)