Mettre à niveau SharePoint 2016 vers SharePoint 2019 à l’aide du Gestionnaire de workflow

S’APPLIQUE À : no-img-132013 yes-img-162016 yes-img-192019 no-img-seÉdition par abonnement no-img-sopSharePoint dans Microsoft 365

Résumé

Lorsque vous Microsoft SharePoint Server 2016 vers Microsoft SharePoint Server 2019, vous n’avez pas besoin de créer une nouvelle installation Gestionnaire de flux de travail’installation. Vous pouvez utiliser la même installation que celle utilisée par la batterie SharePoint 2016 dans la nouvelle batterie SharePoint Server 2016. Toutefois, vous de devez peut-être créer une nouvelle installation de Gestionnaire de flux de travail dans certaines circonstances. Par exemple, si vous souhaitez déplacer Gestionnaire de flux de travail vers un autre système d’exploitation Windows, ou si le serveur de base de données principal est désaffecté. Dans ces situations, suivez les étapes de Gestionnaire de flux de travail récupération d’urgence pour créer la nouvelle installation Gestionnaire de flux de travail à l’aide des anciennes bases de données. Veillez à utiliser la copie la plus récente des bases de données Gestionnaire de flux de travail données.

Contexte

Lorsque vous utilisez SharePoint Server avec Gestionnaire de flux de travail, Gestionnaire de flux de travail conserve un enregistrement des sites SharePoint qui ont des flux de travail publiés. Chaque site est représenté dans Gestionnaire de flux de travail en tant qu’étendue. Gestionnaire de flux de travail stocke également les définitions de flux de travail, toutes les instances de flux de travail et leurs états.

SharePoint stocke l’historique des flux de travail et les informations de tâche de flux de travail SharePoint flux de travail. Lorsque la page d’état du flux de travail est chargée, SharePoint appelle d’abord Gestionnaire de flux de travail pour voir si le flux de travail existe. Pour ce faire, il utilise l’ID d’instance de flux de travail. Ensuite, SharePoint charge le reste des informations de flux de travail. Si l’ID d’instance de flux de travail est manquant dans Gestionnaire de flux de travail, ou si une erreur se produit lors de la communication avec Gestionnaire de flux de travail, vous recevez un message d’erreur.

Comment mettre à niveau SharePoint Server 2016 vers SharePoint Server 2019 à l’aide Gestionnaire de flux de travail

Conditions préalables

Les préquis suivants doivent être installés pour cette mise à niveau :

  • Installez la dernière mise à jour cumulative pour Gestionnaire de flux de travail à l’aide du Programme d’installation de plateforme Web (PI Web).

  • Installez la dernière version de Gestionnaire de flux de travail Client sur les serveurs SharePoint 2016 et assurez-vous que tous les flux de travail sont fonctionnels.

  • Installez la batterie de serveurs SharePoint Server 2019 et mettre à niveau toutes les applications de service et bases de données de contenu.

  • Sur tous les SharePoint Server 2019 batterie de serveurs, installez la dernière version de Gestionnaire de flux de travail client à l’aide de Pi Web.

Inscrivez-Gestionnaire de flux de travail avec SharePoint Server 2019

Utilisez les étapes suivantes pour inscrire des Gestionnaire de flux de travail avec SharePoint Server 2019 :

  1. Dans la batterie SharePoint 2016, sur le site Web Administration centrale, cliquez sur Gestion des applications, cliquez sur Gérer les applications de service, puis supprimez le proxy d’application de service de flux de travail.

  2. Dans la SharePoint Server 2019 de serveurs, exécutez l’cmdlet Microsoft PowerShell suivante pour jumeler SharePoint 2016 avec la même installation Gestionnaire de flux de travail suivante :

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

Problèmes courants que vous pouvez connaître après la mise à niveau

Problème 1 : l’URL du site est modifiée

Si l’URL de votre site est modifiée dans SharePoint 2016, mais que l’ID de site reste le même, vous devez republier un flux de travail à partir du site affecté à l’aide de SharePoint Designer.

Problème 2 : les flux de travail ne démarrent pas sur certains sites

Si les flux de travail ne démarrent pas sur certains sites, republier les flux de travail à partir du site concerné. Sinon, exécutez le travail du timer de flux De jeton de sécurité approuvé Actualiser.

Problème 3 : les flux de travail échouent et retournent l’erreur « Impossible d’obtenir les informations d’autorisation du principal de l’application »

Prenons l’exemple du scénario suivant :

  • Vous avez SharePoint flux de travail 2016 et des Gestionnaire de flux de travail configurés dans votre batterie de serveurs.

  • Vous avez récemment connecté des sites dans la batterie de serveurs à une instance de Gestionnaire de flux de travail.

Dans ce scénario, les flux de travail créés après la connexion au Gestionnaire de flux de travail l’installation se terminent correctement. Toutefois, les flux de travail créés avant la connexion à Gestionnaire de flux de travail ne se terminent pas. Au lieu de cela, ils sont bloqués lorsqu’ils essaient de terminer ou qu’ils restent dans un état suspendu. Pour les flux de travail qui restent suspendus, vous recevez une erreur HTTP 500. En outre, l’entrée suivante est consignée dans le journal ULS : Impossible d’obtenir les informations d’autorisation du principal d’application.

Cause

Gestionnaire de flux de travail a déjà une étendue pour le site sur lequel les flux de travail sont en cours d’exécution. Étant donné que l’étendue a une valeur SPAuthenticationRealm incorrecte dans le champ ApplicationID de l’étendue, il n’existe aucune classe SPAppPrincipal sur l’objet SPWeb qui correspond à la valeur ApplicationID de l’étendue. Par conséquent, les flux de travail échouent et retournent un message d’erreur.

Résolution

Pour résoudre ce problème, utilisez les commandes PowerShell suivantes pour inscrire le nouvel objet SPAppPrincipal. Vous le faites sur l’objet SPWeb dont l’ID correspond à la valeur ApplicationID stockée dans l’étendue de l’objet SPWeb dans Gestionnaire de flux de travail.

   #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

Plus d’informations

Pour obtenir la valeur SPAuthenticationRealm d’ApplicationID stockée dans l’étendue, suivez les étapes suivantes :

  1. Exécutez la requête SQL suivante :

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

    Où <WebID> se trouve l’espace réservé pour l’ID de l’objet SPWeb.

  2. Dans le résultat de la requête, cliquez sur la valeur dans la colonne SecuritySettings pour ouvrir le XML sous un onglet distinct dans SQL Server Management Studio.

  3. Dans le fichier XML, localisé l’élément ApplicationID qui contient la valeur. Par exemple, recherchez l’élément suivant :

    <ApplicationId>SPWeb_object_ID@SPAuthenticationRealm</ApplicationId>`
    

    Notes

    Le GUID qui apparaît avant le signe at (@) est l’ID de l’objet SPWeb et le GUID qui apparaît après le signe at est la valeur SPAuthenticationRealm.

Vous pouvez également trouver la valeur SPAuthenticationRealm dans le journal ULS, comme dans l’exemple d’entrée de journal suivant :

11/03/2017 12:13:16.72 w3wp.exe (SPWFE01:0x51FC) 0x1298 SharePoint Foundation Authentication Authorization an3eg Medium Cannot get app principal permission information. AppId=i:0i.t|ms.sp.ext|<SPWeb object ID>@<SPAuthenticationRealm>

11/03/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. chez Microsoft. SharePoint. SPAppRequestContext.EnsureTenantPermissions(SPServiceContext serviceContext, Boolean throwIfAppNotExits, Boolean allowFullReset) chez Microsoft. SharePoint. SPAppRequestContext.InitCurrent(HttpContext context) chez Microsoft. SharePoint. ApplicationRuntime.SPRequestModule.InitCurrentAppPrincipalToken(contexte HttpContext) chez 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)