Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Numéro de la base de connaissances d’origine : 4073758
Résumé
Lorsque vous mettez à niveau Microsoft SharePoint 2013 vers Microsoft SharePoint 2016, vous n’avez pas besoin de créer une installation 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 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ésactivé. Dans ce cas, suivez les étapes décrites dans 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.
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 publié des flux de travail. Chaque site est représenté dans Gestionnaire de flux de travail sous forme d’étendue. Gestionnaire de flux de travail 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 de status de flux de travail est chargée, SharePoint effectue d’abord un appel à Gestionnaire de flux de travail pour voir si le flux de travail existe. Pour ce faire, il utilise l’ID de instance de flux de travail. Ensuite, SharePoint charge le reste des informations de flux de travail. Si l’ID de 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.
Mettre à niveau SharePoint 2013 vers SharePoint 2016 à l’aide du Gestionnaire de workflow
Configuration requise
- Installez la dernière mise à jour cumulative pour Gestionnaire de flux de travail à l’aide de Web Platform Installer (Web PI).
- Installez la dernière version de Gestionnaire de flux de travail Client sur les serveurs SharePoint 2013 et assurez-vous que tous les flux de travail sont fonctionnels.
- Installez la batterie de serveurs SharePoint 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 2016, installez la dernière version de Gestionnaire de flux de travail Client à l’aide de Web PI.
Inscrire Gestionnaire de flux de travail avec SharePoint 2016
Pour cela, procédez comme suit :
Dans la batterie de serveurs SharePoint 2013, accédez à Central Administration>Gestion des> applicationsGérer l’application de service, puis supprimez le service de flux de travail Proxy d'application.
Dans la batterie de serveurs SharePoint 2016, exécutez l’applet de commande PowerShell suivante pour associer SharePoint 2016 à la même installation Gestionnaire de flux de travail :
Register-SPWorkflowService -SPSite <SharePoint site URL> -WorkflowHostUri <Workflow service endpoint URL> -force
Remarque
N’oubliez pas que les bases de données de contenu qui ont été mises à niveau dans la nouvelle batterie de serveurs SharePoint 2016 doivent avoir été restaurées à partir de la sauvegarde la plus récente. Cela permet d’éviter les différences et les écarts entre les Gestionnaire de flux de travail et les bases de données de contenu.
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 : Échec des flux de travail et retour de l’erreur « Impossible d’obtenir les informations d’autorisation du principal d’application »
Symptômes
Prenons l’exemple du scénario suivant :
- Vous avez des flux de travail et des Gestionnaire de flux de travail SharePoint 2013 configurés dans votre batterie de serveurs.
- Vous avez récemment connecté des sites dans la batterie à un instance de Gestionnaire de flux de travail existant.
Dans ce scénario, les workflows créés une fois que vous vous êtes connecté à l’Gestionnaire de flux de travail’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 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
Gestionnaire de flux de travail dispose déjà d’une étendue pour le site sur lequel les workflows s’exécutent. Étant donné que l’étendue a une valeur incorrecte SPAuthenticationRealm
dans le ApplicationID
champ de l’étendue, il n’existe aucune SPAppPrincipal
classe sur l’objet SPWeb qui correspond à la ApplicationID
valeur de l’étendue. Par conséquent, les workflows échouent et retournent un message d’erreur.
Solution
Pour résoudre ce problème, utilisez les commandes PowerShell suivantes pour inscrire le nouvel SPAppPrincipal
objet. Vous effectuez cette opération sur l’objet SPWeb
dont l’ID correspond à la ApplicationID
valeur 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
$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 SPAuthenticationRealm
valeur de ApplicationID
qui est 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>%'
Remarque
< 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
SecuritySettings
colonne pour ouvrir le code XML sous un onglet distinct dans SQL Server Management Studio.Dans le fichier XML, recherchez l’élément
ApplicationID
qui contient la valeur . Par exemple, recherchez l’élément suivant :<ApplicationId>SPWeb_object_ID@SPAuthenticationRealm</ApplicationId>
Remarque
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 laSPAuthenticationRealm
valeur.
Vous pouvez également trouver la valeur dans le SPAuthenticationRealm
journal ULS, comme dans l’exemple d’entrée de journal suivant :
Date/Heure w3wp.exe (SPWFE01 :0x51FC) 0x1298 Autorisation d’authentification SharePoint Foundation an3eg Medium Impossible d’obtenir les informations d’autorisation du principal de l’application. AppId=i :0i.t|ms.sp.ext|<ID d’objet> SPWeb@<SPAuthenticationRealm>
Date/Heure w3wp.exe (SPWFE01 :0x51FC) 0x1298 Erreur d’application moyenne Générale 8nca SharePoint Foundation lors de l’accès à /site/teamsite/teamweb/_vti_bin/client.svc, Error=Object reference not set to an instance of an object. sur Microsoft.SharePoint.SPAppRequestContext.EnsureTenantPermissions(SPServiceContext serviceContext, Boolean throwIfAppNotExits, Boolean allowFullReset) sur Microsoft.SharePoint.SPAppRequestContext.InitCurrent(HttpContext context) à l’adresse Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.InitCurrentAppPrincipalToken(HttpContext context) à l’adresse Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.PostAuthenticateRequestHandler(Object oSender, EventArgs ea) à l’adresse System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() sur System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)