Actualizar de SharePoint 2013 a SharePoint 2016 través del Administrador de flujos de trabajo
SE APLICA A:2013 2016 2019 Subscription Edition SharePoint en Microsoft 365
Resumen
Al actualizar Microsoft SharePoint 2013 a Microsoft SharePoint 2016, no es necesario crear una nueva instalación del Administrador de flujos de trabajo. Puede usar la misma instalación que usó la granja de SharePoint 2013 en la nueva granja de SharePoint 2016. Sin embargo, es posible que tenga que crear una nueva instalación del Administrador de flujos de trabajo en determinadas circunstancias. Por ejemplo, si desea mover el Administrador de flujos de trabajo a otro sistema operativo Windows o si se retira el servidor de base de datos back-end. En estas situaciones, siga los pasos descritos en Recuperación ante desastres de Workflow Manager para crear la nueva instalación de Workflow Manager mediante las bases de datos antiguas. Asegúrese de usar la copia más reciente de las bases de datos del Administrador de flujos de trabajo.
Información previa
Cuando se usa SharePoint Server junto con el Administrador de flujos de trabajo, el Administrador de flujos de trabajo mantiene un registro de los sitios de SharePoint que han publicado flujos de trabajo. Cada sitio se representa en el Administrador de flujos de trabajo como un ámbito. El Administrador de flujos de trabajo también almacena las definiciones de flujo de trabajo, todas las instancias de flujo de trabajo y sus estados.
SharePoint almacena el historial de flujo de trabajo y la información de la tarea de flujo de trabajo para flujos de trabajo de SharePoint. Cuando se carga la página de estado del flujo de trabajo, SharePoint realiza primero una llamada al Administrador de flujos de trabajo para ver si el flujo de trabajo existe. Para ello, usa el identificador de instancia de flujo de trabajo. A continuación, SharePoint carga el resto de la información del flujo de trabajo. Si falta el identificador de instancia de flujo de trabajo en el Administrador de flujos de trabajo o si se produce un error durante la comunicación con el Administrador de flujos de trabajo, recibirá un mensaje de error.
Cómo actualizar SharePoint 2013 a SharePoint 2016 mediante el Administrador de flujos de trabajo
Requisitos previos
Se deben realizar los siguientes requisitos previos instalados en esta actualización:
Instale la actualización acumulativa más reciente para Workflow Manager mediante el Instalador de plataforma web (Web PI).
Instale la versión más reciente del cliente del Administrador de flujos de trabajo en los servidores de SharePoint 2013 y asegúrese de que todos los flujos de trabajo sean funcionales.
Instale la granja de servidores de SharePoint Server 2016 y actualice todas las aplicaciones de servicio y las bases de datos de contenido.
En todos los servidores de granja de servidores de SharePoint Server 2016, instale la versión más reciente del cliente del Administrador de flujos de trabajo mediante Web PI.
Registro del Administrador de flujos de trabajo con SharePoint Server 2016
Siga estos pasos para registrar el Administrador de flujos de trabajo con SharePoint Server 2016:
En la granja de SharePoint 2013, en el sitio web de Administración central, haga clic en Administración de aplicaciones, haga clic en Administrar aplicaciones de servicio y, a continuación, elimine El proxy de aplicación de servicio de flujo de trabajo.
En la granja de servidores de SharePoint Server 2016, ejecute el siguiente cmdlet de Microsoft PowerShell para emparejar SharePoint 2016 con la misma instalación del Administrador de flujos de trabajo:
Register-SPWorkflowService -SPSite <SharePoint site URL> -
WorkflowHostUri <Workflow service endpoint URL> -force
Problemas comunes que puede experimentar después de la actualización
Problema 1: Se ha cambiado la dirección URL del sitio
Si se cambia la dirección URL del sitio en SharePoint 2016, pero el identificador de sitio sigue siendo el mismo, debe volver a publicar un flujo de trabajo desde el sitio afectado mediante SharePoint Designer.
Problema 2: Los flujos de trabajo no se inician en algunos sitios
Si los flujos de trabajo no se inician en algunos sitios, vuelva a publicar los flujos de trabajo desde el sitio afectado. O bien, ejecute el trabajo del temporizador actualizar fuente de metadatos de Servicios de token de seguridad de confianza .
Problema 3: Se produce un error en los flujos de trabajo y se devuelve el error "No se puede obtener la información de permisos de la entidad de seguridad de la aplicación".
Imagine la siguiente situación:
Tiene los flujos de trabajo de SharePoint 2013 y el Administrador de flujos de trabajo configurados en la granja de servidores.
Recientemente ha conectado sitios de la granja a una instancia existente anteriormente del Administrador de flujos de trabajo.
En este escenario, los flujos de trabajo que se crean después de conectarse a la instalación del Administrador de flujos de trabajo finalizan correctamente. Sin embargo, los flujos de trabajo que se crean antes de conectarse al Administrador de flujos de trabajo no finalizan. En su lugar, se bloquean cuando intentan finalizar o permanecen en un estado suspendido. Para los flujos de trabajo que permanecen suspendidos, recibe un error HTTP 500. Además, la siguiente entrada se registra en el registro ULS: No se puede obtener información de permisos de entidad de seguridad de la aplicación.
Causa
El Administrador de flujos de trabajo ya tiene un ámbito para el sitio en el que se ejecutan los flujos de trabajo. Dado que el ámbito tiene un valor SPAuthenticationRealm incorrecto en el campo ApplicationID del ámbito, no existe ninguna clase SPAppPrincipal en el objeto SPWeb que coincida con el valor ApplicationID del ámbito. Por lo tanto, los flujos de trabajo producen un error y devuelven un mensaje de error.
Solución
Para resolver este problema, use los siguientes comandos de PowerShell para registrar el nuevo objeto SPAppPrincipal . Esto se hace en el objeto SPWeb cuyo identificador coincide con el valor ApplicationID que se almacena en el ámbito del objeto SPWeb en el Administrador de flujos de trabajo.
#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
Tenga en cuenta: si la entidad de seguridad de la aplicación tenía permisos de App-Only en el sitio de SharePoint 2013, deberá pasar -EnableAppOnlyPolicy también al cmdlet Set-SPAppPrincipalPermission.
Más información
Para obtener el valor SPAuthenticationRealm de ApplicationID almacenado en el ámbito, siga estos pasos:
Ejecute la siguiente consulta SQL:
SELECT * FROM [WFResourceManagementDB].[dbo].[Scopes] WITH (NOLOCK) WHERE Description like '%<WebID>%'
Donde <WebID> es el marcador de posición del identificador del objeto SPWeb.
En el resultado de la consulta, haga clic en el valor de la columna SecuritySettings para abrir el XML en una pestaña independiente de SQL Server Management Studio.
En el archivo XML, se encuentra el elemento ApplicationID que contiene el valor. Por ejemplo, busque el siguiente elemento:
<ApplicationId>SPWeb_object_ID@SPAuthenticationRealm</ApplicationId>`
Nota:
El GUID que aparece delante del signo at (@) es el identificador del objeto SPWeb y el GUID que aparece después del signo at es el valor SPAuthenticationRealm.
Como alternativa, puede encontrar el valor de SPAuthenticationRealm en el registro ULS, como en la entrada de registro de ejemplo siguiente:
11/03/2017 12:13:16.72 w3wp.exe (SPWFE01:0x51FC) 0x1298 autorización de autenticación de SharePoint Foundation an3eg Medium no puede obtener información de permisos de entidad de seguridad de la aplicación. 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 Medio Error de aplicación cuando se accede a /site/teamsite/teamweb/_vti_bin/client.svc, Error=Referencia de objeto no establecida en una instancia de un objeto en Microsoft.SharePoint.SPAppRequestContext.EnsureTenantPermissions(SPServiceContext serviceContext, Boolean throwIfAppNotExits, Boolean allowFullReset) en Microsoft.SharePoint.SPAppRequestContext.InitCurrent(contexto HttpContext) en Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.InitCurrentAppPrincipalToken(contexto HttpContext) en Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.PostAuthenticateRequestHandler(Object oSender, EventArgs ea) en System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() en System.Web.HttpApplication.ExecuteStep(paso IExecutionStep, booleano& completedSynchronously)