- Démarrage
- Meilleures pratiques
- Locataire
- À propos du contexte du locataire
- Recherche de ressources dans un locataire
- Gestion des Robots
- Connexion des Robots à Orchestrator
- Exemples de configurations
- Enregistrement des identifiants du Robot dans CyberArk
- Configuration des Robots Attended
- Configurer des robots Unattended
- Stockage des mots de passe d'Unattended Robot dans Azure Key Vault (lecture seule)
- Stockage des informations d'identification de l'Unattended Robot dans HashiCorp Vault (lecture seule)
- Suppression des sessions Unattended déconnectées et qui ne répondent pas
- Authentification du Robot
- Authentification du Robot avec les informations d'identification du client
- Authentification par carte à puce
- Audit
- Service de catalogue de ressources
- Contexte des dossiers
- Automatisations
- Processus (Processes)
- Tâches (Jobs)
- Déclencheurs (Triggers)
- Journaux (Logs)
- Surveillance
- Files d'attente (Queues)
- Actifs
- Compartiments de stockage
- Test Suite - Orchestrator
- Autres configurations
- Intégrations
- Robots classiques
- Administration de l'hôte
- À propos du niveau de l'hôte
- Gestion des administrateurs système
- Gestion des locataires
- Configuration des notifications par e-mail du système
- Journaux d'audit pour le portail hôte
- Mode de Maintenance
- Administration de l'organisation
- Résolution des problèmes
- À propos de la résolution des problèmes
- Erreurs d'Orchestrator fréquemment rencontrées
- Expressions cron
- Problèmes de mise à niveau
Problèmes de mise à niveau
Lors de la mise à niveau de votre système Orchestrator existant dans lequel plusieurs unités d’organisation ont été définies sur v2019.10, certaines conditions peuvent entraîner une migration incorrecte des unités d'organisation existantes vers le paradigme Dossiers (Folders). Plus précisément, cela se produit lorsqu’une unité d'organisation avec un ou plusieurs utilisateurs affectés est supprimée et que ces utilisateurs ne peuvent pas utiliser Orchestrator.
Deux scripts sont fournis pour corriger ce problème s’il se produit dans votre mise à niveau d'Orchestrator :
Utilisés conjointement, ils supprimeront toutes les affectations d'unités d’organisation à des utilisateurs en cas d'unités d'organisation supprimées :
- Téléchargez les deux scripts à partir des liens ci-dessus.
- Exécutez SelectUndeletedUserOrganizationEntires.sql et enregistrez les données qui en résultent.
- Exécutez DeleteAffectedUserOrganizationUnitsEntries.sql.
Les utilisateurs de la mise à niveau à partir des versions Orchestrator avant v2019.10 sont touchés par un problème se produisant en raison de demandes simultanées de création de dossier. Le problème provoque l’affichage incorrect de certains rôles d’utilisateur tout en affectant le processus de suppression ou de réaffectation des utilisateurs.
Si vous rencontrez ce problème, exécutez le script suivant :
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_Cursor
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_Cursor