Mettre à niveau SharePoint 2013 vers SharePoint 2016 à l’aide du Gestionnaire de workflow
S’APPLIQUE À :2013 2016 2019 Édition d’abonnement SharePoint dans Microsoft 365
Résumé
Lorsque vous mettez à niveau Microsoft SharePoint 2013 vers Microsoft SharePoint 2016, vous n’avez pas besoin de créer une nouvelle installation du Gestionnaire de flux de travail. Vous pouvez utiliser la même installation que celle utilisée par la batterie de serveurs SharePoint 2013 dans la nouvelle batterie de serveurs SharePoint 2016. Toutefois, vous devrez peut-être créer une nouvelle installation de Workflow Manager dans certaines circonstances. Par exemple, si vous souhaitez déplacer Workflow Manager vers un autre système d’exploitation Windows, ou si le serveur de base de données principal est désactivé. Dans ces situations, suivez les étapes décrites dans Récupération d’urgence de Workflow Manager pour créer la nouvelle installation de Workflow Manager à l’aide des anciennes bases de données. Veillez à utiliser la copie la plus récente des bases de données Workflow Manager.
Contexte
Lorsque vous utilisez SharePoint Server avec le Gestionnaire de flux de travail, Workflow Manager conserve un enregistrement des sites SharePoint qui ont publié des flux de travail. Chaque site est représenté dans workflow Manager sous la forme d’une étendue. Workflow Manager stocke également les définitions de flux de travail, toutes les instances de workflow et leurs états.
SharePoint stocke l’historique des flux de travail et les informations sur les tâches de flux de travail pour les flux de travail SharePoint. Lorsque la page d’état du flux de travail est chargée, SharePoint effectue d’abord un appel au Gestionnaire de flux de travail pour voir si le flux de travail existe. Pour ce faire, il utilise l’ID d’instance de workflow. Ensuite, SharePoint charge le reste des informations de flux de travail. Si l’ID d’instance de workflow est manquant dans Workflow Manager, ou si une erreur se produit lors de la communication avec Workflow Manager, vous recevez un message d’erreur.
Guide pratique pour mettre à niveau SharePoint 2013 vers SharePoint 2016 à l’aide du Gestionnaire de flux de travail
Configuration requise
Les prérequis suivants doivent être effectués pour installer cette mise à niveau :
Installez la dernière mise à jour cumulative pour Workflow Manager à l’aide de Web Platform Installer (Web PI).
Installez la dernière version du client Workflow Manager sur les serveurs SharePoint 2013 et assurez-vous que tous les flux de travail sont fonctionnels.
Installez la batterie de serveurs SharePoint Server 2016 et mettez à niveau toutes les applications de service et bases de données de contenu.
Sur tous les serveurs de batterie de serveurs SharePoint Server 2016, installez la dernière version de Workflow Manager Client à l’aide de Web PI.
Inscrire le Gestionnaire de flux de travail auprès de SharePoint Server 2016
Procédez comme suit pour inscrire workflow Manager auprès de SharePoint Server 2016 :
Dans la batterie de serveurs SharePoint 2013, 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 du service de flux de travail.
Dans la batterie de serveurs SharePoint Server 2016, exécutez l’applet de commande Microsoft PowerShell suivante pour associer SharePoint 2016 à la même installation du Gestionnaire de flux de travail :
Register-SPWorkflowService -SPSite <SharePoint site URL> -
WorkflowHostUri <Workflow service endpoint URL> -force
Problèmes courants que vous pouvez rencontrer 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 concerné à 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, republiez les flux de travail à partir du site affecté. Vous pouvez également exécuter le travail d’actualisation du flux de métadonnées des services de jetons de sécurité approuvés .
Problème 3 : Les flux de travail échouent et retournent l’erreur « Impossible d’obtenir les informations d’autorisation du principal d’application »
Prenons l’exemple du scénario suivant :
Vous avez des flux de travail SharePoint 2013 et workflow Manager configurés dans votre batterie de serveurs.
Vous avez récemment connecté des sites dans la batterie à une instance de Workflow Manager existante.
Dans ce scénario, les flux de travail créés après la connexion à l’installation de Workflow Manager se terminent correctement. Toutefois, les flux de travail créés avant la connexion à Workflow Manager ne se terminent pas. Au lieu de cela, ils sont bloqués quand ils essaient de terminer ou 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 enregistrée dans le journal ULS : Impossible d’obtenir les informations d’autorisation du principal de l’application.
Cause
Workflow Manager dispose déjà d’une étendue pour le site sur lequel les flux de travail s’exécutent. É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 workflows é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 effectuez cette opération sur l’objet SPWeb dont l’ID correspond à la valeur ApplicationID stockée dans l’étendue de l’objet SPWeb dans 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
Remarque : si le principal de l’application avait App-Only autorisations sur le site SharePoint 2013, vous devez également passer -EnableAppOnlyPolicy à l’applet de commande Set-SPAppPrincipalPermission.
Plus d’informations
Pour obtenir la valeur SPAuthenticationRealm d’ApplicationID stockée dans l’étendue, procédez comme suit :
Exécutez la requête SQL suivante :
SELECT * FROM [WFResourceManagementDB].[dbo].[Scopes] WITH (NOLOCK) WHERE Description like '%<WebID>%'
Où <WebID> est l’espace réservé pour l’ID de l’objet SPWeb.
Dans le résultat de la requête, cliquez sur la valeur dans la colonne SecuritySettings pour ouvrir le code XML sous un onglet distinct dans SQL Server Management Studio.
Dans le fichier XML, vous avez 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 :
03/11/2017 12:13:16.72 w3wp.exe (SPWFE01:0x51FC) 0x1298 Autorisation d’authentification SharePoint Foundation an3eg Moyen Impossible d’obtenir les informations d’autorisation du principal de l’application. AppId=i :0i.t|ms.sp.ext|<ID d’objet> SPWeb@<SPAuthenticationRealm>
03/11/2017 12:13:16.72 w3wp.exe (SPWFE01:0x51FC) 0x1298 erreur SharePoint Foundation Général 8nca Moyenne Application lors de l’accès à /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) sur Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.PostAuthenticateRequestHandler(Object oSender, EventArgs ea) sur System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() à System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)