Condividi tramite


Aggiornare SharePoint 2016 a SharePoint 2019 tramite Workflow Manager

SI APPLICA A:no-img-132013 yes-img-162016 yes-img-192019 no-img-seSubscription Edition no-img-sopSharePoint in Microsoft 365

Riepilogo

Quando si aggiorna Microsoft SharePoint Server 2016 a Microsoft SharePoint Server 2019, non è necessario creare una nuova installazione Workflow Manager. È possibile usare la stessa installazione usata dalla farm di SharePoint 2016 nella nuova farm di SharePoint Server 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.

Come aggiornare SharePoint Server 2016 a SharePoint Server 2019 usando Workflow Manager

Prerequisiti

Questo aggiornamento deve essere installato nei seguenti 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 2016 e assicurarsi che tutti i flussi di lavoro siano funzionanti.

  • Installare la farm SharePoint Server 2019 e aggiornare tutte le applicazioni di servizio e i database del contenuto.

  • In tutti i server farm SharePoint Server 2019 installare la versione più recente di client di Workflow Manager usando l'elemento PI Web.

Registrare Workflow Manager con SharePoint Server 2019

Per registrare Workflow Manager con SharePoint Server 2019, seguire questa procedura:

  1. Nella farm di SharePoint 2016, nel sito Web Amministrazione centrale fare clic su Gestione applicazioni , fare clic su Gestisci applicazioni di servizio, quindi eliminare Proxy di applicazione del servizio flusso di lavoro.

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

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

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 restituisce l'errore "Impossibile ottenere informazioni sull'autorizzazione dell'entità app"

Considerare lo scenario descritto di seguito:

  • I flussi di lavoro di SharePoint 2016 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 SPAuthenticationRealm non corretto nel campo ApplicationID dell'ambito, nell'oggetto SPWeb non esiste alcuna classe SPAppPrincipal corrispondente al valore ApplicationID dell'ambito. Di conseguenza, i flussi di lavoro hanno esito negativo e restituiscono un messaggio di errore.

Risoluzione

Per risolvere questo problema, usare i comandi di PowerShell seguenti per registrare il nuovo oggetto SPAppPrincipal . Questa operazione viene attivata nell'oggetto SPWeb il cui ID corrisponde al valore ApplicationID 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
   #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

Ulteriori informazioni

Per ottenere il valore SPAuthenticationRealm 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>%'
    
    

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

  2. Nel risultato della query fare clic sul valore nella colonna SecuritySettings 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 valore SPAuthenticationRealm.

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

03/11/2017 12:13:16.72 w3wp.exe (SPWFE01:0x51FC) 0x1298 SharePoint Foundation Authentication Authorization an3eg Medium Non è possibile ottenere informazioni sull'autorizzazione dell'entità app. AppId=i:0i.t|ms.sp.ext|<ID> oggetto SPWeb@<SPAuthenticationRealm>

03/11/2017 12:13:16.72 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)