Orchestrator
2021.10
False
Imagen de fondo del banner
Guía del usuario de Orchestrator
Última actualización 15 de feb. de 2024

Problemas de actualización

Migración de unidades de organización

Al actualizar tu Orchestrator existente, donde se definieron varias Unidades de organización, a la versión v2019.10, determinadas condiciones podrían dar lugar a que las UO existentes no se migren debidamente al paradigma de Carpetas. En concreto, esto sucede cuando se elimina una UO con uno o más usuarios asignados y da lugar a que dichos usuarios no puedan usar Orchestrator.

Se proporcionan dos scripts para corregir este problema si sucede en tu actualización de Orchestrator:

Usados conjuntamente, eliminará cualquier Usuario afectado a las asignaciones de Unidad de organización para las Unidades de organización borradas:

  1. Descarga ambos scripts desde los enlaces anteriores.
  2. Ejecuta SelectUndeletedUserOrganizationEntires.sql y guarda los datos resultantes.
  3. Ejecuta DeleteAffectedUserOrganizationUnitsEntries.sql.

Solicitudes de creación de Carpetas simultáneas

Los usuarios que actualizan desde las versiones de Orchestrator anteriores a v2019.10 experimentan un problema debido a las solicitudes de creación de carpetas simultáneas. El problema hace que algunos roles de usuario se muestren de manera incorrecta y también afecte al proceso de eliminación o reasignación de usuarios.

Si te encuentras con este problema, ejecuta el siguiente script:

DECLARE @duplicates TABLE([Id] BIGINT, [Code] NVARCHAR(95), [TenantId] INT)
INSERT INTO @duplicates
SELECT ou.[Id], ou.[Code], ou.[TenantId]
FROM [dbo].[OrganizationUnits] ou
INNER JOIN 
  (SELECT duplicates.[Code]
   FROM [dbo].[OrganizationUnits] duplicates
   WHERE duplicates.[IsDeleted] = 0 AND duplicates.[ProvisionType] = 0
   GROUP BY duplicates.[Code]
   HAVING COUNT(duplicates.[Code]) > 1) a ON a.[Code] = ou.[Code]
WHERE ou.[IsDeleted] = 0 AND ou.[ProvisionType] = 0
DECLARE @id BIGINT
DECLARE @code NVARCHAR(95)
DECLARE @tenantId INT
DECLARE @rootCode NVARCHAR(95) = (SELECT TOP 1 [Code] FROM [dbo].[OrganizationUnits])
DECLARE @rootCodeLength INT = LEN(IIF(CHARINDEX('.', @rootCode) > 0, SUBSTRING(@rootCode, 0, CHARINDEX('.', @rootCode)), @rootCode))
DECLARE duplicates_Cursor CURSOR FOR
SELECT * FROM @duplicates
OPEN duplicates_Cursor
FETCH NEXT FROM duplicates_Cursor INTO @id, @code, @tenantId
WHILE @@FETCH_STATUS = 0  
BEGIN  
    BEGIN TRAN
    DECLARE @result int;
    DECLARE @resource NVARCHAR(30) = 'Tenant#' + CAST(@tenantId AS NVARCHAR(10)) + '.RootFolder#0'
    EXEC @result = sp_getapplock @resource, 'Exclusive', 'Transaction', 10000;
    DECLARE @lastCode NVARCHAR(95) = (SELECT MAX([Code]) FROM [dbo].[OrganizationUnits] WHERE [IsDeleted] = 0)
    DECLARE @nextCode NVARCHAR(95) = CAST(CAST(@lastCode AS BIGINT) + 1 AS NVARCHAR(95))
    UPDATE [dbo].[OrganizationUnits] 
    SET [Code]  = REPLICATE('0', @rootCodeLength - LEN(@nextCode)) + @nextCode  
    WHERE [Id] = @id
    FETCH NEXT FROM duplicates_Cursor INTO @id, @code, @tenantId
    COMMIT TRAN;
END 
CLOSE duplicates_Cursor  
DEALLOCATE duplicates_CursorDECLARE @duplicates TABLE([Id] BIGINT, [Code] NVARCHAR(95), [TenantId] INT)
INSERT INTO @duplicates
SELECT ou.[Id], ou.[Code], ou.[TenantId]
FROM [dbo].[OrganizationUnits] ou
INNER JOIN 
  (SELECT duplicates.[Code]
   FROM [dbo].[OrganizationUnits] duplicates
   WHERE duplicates.[IsDeleted] = 0 AND duplicates.[ProvisionType] = 0
   GROUP BY duplicates.[Code]
   HAVING COUNT(duplicates.[Code]) > 1) a ON a.[Code] = ou.[Code]
WHERE ou.[IsDeleted] = 0 AND ou.[ProvisionType] = 0
DECLARE @id BIGINT
DECLARE @code NVARCHAR(95)
DECLARE @tenantId INT
DECLARE @rootCode NVARCHAR(95) = (SELECT TOP 1 [Code] FROM [dbo].[OrganizationUnits])
DECLARE @rootCodeLength INT = LEN(IIF(CHARINDEX('.', @rootCode) > 0, SUBSTRING(@rootCode, 0, CHARINDEX('.', @rootCode)), @rootCode))
DECLARE duplicates_Cursor CURSOR FOR
SELECT * FROM @duplicates
OPEN duplicates_Cursor
FETCH NEXT FROM duplicates_Cursor INTO @id, @code, @tenantId
WHILE @@FETCH_STATUS = 0  
BEGIN  
    BEGIN TRAN
    DECLARE @result int;
    DECLARE @resource NVARCHAR(30) = 'Tenant#' + CAST(@tenantId AS NVARCHAR(10)) + '.RootFolder#0'
    EXEC @result = sp_getapplock @resource, 'Exclusive', 'Transaction', 10000;
    DECLARE @lastCode NVARCHAR(95) = (SELECT MAX([Code]) FROM [dbo].[OrganizationUnits] WHERE [IsDeleted] = 0)
    DECLARE @nextCode NVARCHAR(95) = CAST(CAST(@lastCode AS BIGINT) + 1 AS NVARCHAR(95))
    UPDATE [dbo].[OrganizationUnits] 
    SET [Code]  = REPLICATE('0', @rootCodeLength - LEN(@nextCode)) + @nextCode  
    WHERE [Id] = @id
    FETCH NEXT FROM duplicates_Cursor INTO @id, @code, @tenantId
    COMMIT TRAN;
END 
CLOSE duplicates_Cursor  
DEALLOCATE duplicates_Cursor

Was this page helpful?

Obtén la ayuda que necesitas
RPA para el aprendizaje - Cursos de automatización
Foro de la comunidad UiPath
Logotipo blanco de UiPath
Confianza y seguridad
© 2005-2024 UiPath. All rights reserved.