Haut de page

Comment migrer des utilisateurs entre répertoires Atlassian


Publié par
Clément Marceau

30 mai 2018

Jusqu’a présent, votre instance Jira utilise son propre répertoire interne d’utilisateurs pour l’identification. Votre Confluence utilise également ce même repertoire pour gérer les droits de son côté.
Le choix du répertoire cible pour un compte donné se fait à la création de ce dernier. Il n’existe ensuite aucune procédure pour déplacer ce repertoire après cette action. Et pourtant, cela serait très utile dans de nombreux cas, comme par exemple :

  • La mise en place d’un serveur Crowd pour la gestion des utilisateurs afin de profiter de son module de SSO
  • La remise à plat de la politique de gestion des utilisateurs
  • Le raccordement au LDAP entreprise. (Toutefois, il est déjà possible lors de la déclaration du LDAP, de choisir de fusionner nativement les comptes qui portent le même nom. Le périmètre est alors moins couvert qu’avec cette procédure)

 

Outil Version
Jira 7.2.8
Confluence 6.1.2
Crowd 2.7.0
MySQL 5.5

 

 

Cette procédure de migration est compatible avec n’importe quel cas de migration d’un repertoire à un autre (Crowd et/ou Jira).

Cette procédure demande d’effectuer des modifications sur la base de données Jira/Confluence. Aucune action de cette article ne doit être faite sans sauvegarde préalable des outils impactés. 

Etude de cas

Dans le cas étudié, nous utilisons Crowd depuis un moment avec deux répertoires : un interne et un LDAP délégué. Le répertoire LDAP est prioritaire sur l’interne. Crowd est utilisé par Jira et Confluence pour l’authentification des utilisateurs.

Pour certaines raisons techniques, certains utilisateurs n’étaient pas créés dans le repertoire LDAP délégué, mais dans le répertoire interne.
Par ailleurs, d’autres utilisateurs possédaient un compte dans les 2 repertoires.

L’objectif est alors de basculer l’ensemble des comptes sur le LDAP délégué. Pour cela, nous allons distinguer les différents cas d’utilisateurs rencontrés :

  • Utilisateur ayant seulement un compte dans le répertoire Crowd interne. « CRÉER LE COMPTE DANS LE RÉPERTOIRE CIBLE » puis « FUSIONER LES COMPTES »
  • Utilisateur ayant seulement un compte dans le répertoire LDAP délégué. « PAS D’ACTIONS À PRENDRE »
  • Utilisateur ayant un compte avec un login différent dans le répertoire Crowd interne et dans le le répertoire LDAP délégué. « FUSIONER LES COMPTES »
  • Utilisateur ayant un compte avec le même login dans le répertoire Crowd interne et dans le le répertoire LDAP délégué. « FUSIONER LES COMPTES »
Bien que deux répertoires (Interne et LDAP délégué) soient déclarés dans Crowd, on ne vera qu’un seul répertoire dans les outils Jira et Confluence. Autrement dit, Jira et Confluence ne peuvent pas faire la différence entre un utilisateur Interne Crowd et celui d’un LDAP délégué Crowd. Il est possible qu’un utilisateur ayant le même login existe dans les deux répertoires Crowd. Dans ce cas, les outils connectés à ce dernier n’en verront qu’un seul. Celui dans le répertoire ayant la priorité la plus forte. 

L’opération doit conserver l’historique des actions faites via les comptes actuels.

La procédure

Prérequis

  • Les utilisateurs dont le contenu est à migrer doivent déjà être créés dans répertoire LDAP de Crowd.
  • Les comptes d’utilisateurs à migrer qui sont dans le répertoire interne Crowd doivent posséder un nom différent de ceux du répertoire LDAP (on pourra par exemple suffixer le nom par « _old »)
  • Les affectations de groupes doivent être identiques entre les répertoires pour les utilisateurs migrés.
  • Les répertoires doivent avoir été synchronisés au préalable (Dans Jira/Confluence, partie administration > Gestion des utilisateurs > Répertoires, forcez la synchronisation du répertoire Crowd)

Exécution

Nous allons aller en base et prendre toutes les contributions et abonnements de l’ancien utilisateur pour aller l’affecter au nouveau. Il s’agit donc d’un fusion entre deux comptes.

La fusion peut se faire entre 2 comptes et plus. Dans le cas d’un fusion de plusieurs comptes, il faudra reproduire l’opération 2 à 2 jusqu’à épuisement de la liste.

1- Migration

La modification en base implique un arrêt des outils le temps de la modification. Le temps d’exécution des requêtes dépend du serveur, mais aussi du résultat de ces dernières. Il faut compter environ 1 à 2 secondes sur un environnement de production classique pour traiter un utilisateur. La rupture de service sera donc relativement minime.

Pour cette dernière étape, nous allons effectuer des modifications en base de données sur les outils Jira et Confluence.

L’idée est d’aller changer en base les clés qui font le lien vers les anciens utilisateurs et de les rebrancher vers les nouveaux.
Il faut procéder à 24 requêtes SQL pour Jira et 15 pour Confluence, par utilisateur. L’utilisation du script donné plus bas n’est pas obligatoire, mais aidera vraiment si vous avez plusieurs utilisateurs à migrer durant cette opération.

L’utilisation du script est assez simple. Il faut l’appeler et passer en paramètre :

  • l’ancien login
  • le nouveau login (ce dernier doit être différent car, comme expliqué plus haut, on ne pourra distinguer la provenance du répertoire Crowd depuis Jira et Confluence)
migrate.bat EleanorGuertin_old EleanorGuertin
migrate.bat IsaacCantin_old IsaacCantin
migrate.bat AstolphoDescoteau_old AstolphoDescoteaux
migrate.bat YvonLagr YvonLagrange
migrate.bat MartheVoisine_old MartheVoisine
migrate.bat ElodieGuay_old ElodieGuay
migrate.bat gr GuyRichard
migrate.bat JulieCharron JulieTanguay
migrate.bat BruceCote_old BruceCote
migrate.bat PascalMethot_old PascalMethot
migrate.bat OrielBerard_old OrielBerard
migrate.bat StephaneMoquin_old StephaneMoquin
migrate.bat ola OpheliaLacombe
migrate.bat DenisSaucier_old DenisSaucier
...
migrate.bat RobertDemers_old RobertDemers
migrate.bat OctaveVernadeau_old OctaveVernadeau
migrate.bat MCotuand MargauxCotuand
migrate.bat MathildeHachee_old MathildeHachee
migrate.bat ag AntonGagne
migrate.bat PatriciaHuppe_old PatriciaHuppe
migrate.bat AlainGosselin_old AlainGosselin
migrate.bat WilliamBreton_old WilliamBreton
setgroups.bat

2- Opérations post-migration

Après relance des outils, il faudra lancer une ré-indexation de Jira et Confluence. Cela peut être plus ou moins long selon les instances.

L’accès aux utilisateurs qui viennent d’être migrés est instantané. En revanche, l’affectation des contributions et abonnements dépendra de la ré-indexation. Cela s’effectuera donc progressivement.

Scripts de références

Migrate.bat

Rôle et déroulement

Le but de ce script est d’aller collecter dans Jira et Confluence les contributions de l’utilisateur actuel. Le script va générer automatiquement un fichier SQL pour aller faire la mise à jour de l’ancien vers le nouvel utilisateur.

Ce dernier se charge pour chaque utilisateur d’aller chercher en base les identifiants utilisateurs pour les deux comptes, afin de limiter la fourniture des arguments. En cas de mauvaise saisie ou si l’utilisateur n’est pas trouvé, le script se met en erreur. Aucune modification en base ne sera faite dans ce cas là.

Le résultat de la sauvegarde ainsi que les modifications effectuées sont conservés pour chaque utilisateur migré, dans un dossier à son nom.

On fournit simplement le login de l’ancien utilisateur et le nouveau comme paramètres d’entrée,

REM VARS
SET OLD_USER_NAME=%1
SET NEW_USER_NAME=%2
 
REM -------------------------
REM Getting values from DB
 
ECHO SELECT ID FROM cwd_user WHERE user_name = '%OLD_USER_NAME%' > JiraGetInfos.sql
mysql --host=localhost --user=root --password=My$qlR00t31 --database=Jiradb < JiraGetInfos.sql > JiraGetInfos.txt
for /F "skip=1 delims=" %%a in ('type JiraGetInfos.txt ^& del JiraGetInfos.txt') do >> JiraGetInfos.txt echo %%a
SET /P OLD_USER_ID= < JiraGetInfos.txt
DEL JiraGetInfos.txt
 
ECHO SELECT ID FROM cwd_user WHERE user_name = '%NEW_USER_NAME%' > JiraGetInfos.sql
mysql --host=localhost --user=root --password=My$qlR00t31 --database=Jiradb < JiraGetInfos.sql > JiraGetInfos.txt
for /F "skip=1 delims=" %%a in ('type JiraGetInfos.txt ^& del JiraGetInfos.txt') do >> JiraGetInfos.txt echo %%a
SET /P NEW_USER_ID= < JiraGetInfos.txt
DEL JiraGetInfos.txt
 
 
ECHO SELECT user_key FROM user_mapping WHERE username = '%OLD_USER_NAME%' > confluenceGetInfos.sql
mysql --host=localhost --user=root --password=My$qlR00t31 --database=confluencedb < JiraGetInfos.sql > confluenceGetInfos.txt
for /F "skip=1 delims=" %%a in ('type confluenceGetInfos.txt ^& del confluenceGetInfos.txt') do >> confluenceGetInfos.txt echo %%a
SET /P OLD_USER_KEY= < confluenceGetInfos.txt
DEL JiraGetInfos.txt
 
ECHO SELECT user_key FROM user_mapping WHERE username = '%NEW_USER_NAME%' > confluenceGetInfos.sql
mysql --host=localhost --user=root --password=My$qlR00t31 --database=confluencedb < confluenceGetInfos.sql > confluenceGetInfos.txt
for /F "skip=1 delims=" %%a in ('type confluenceGetInfos.txt ^& del confluenceGetInfos.txt') do >> confluenceGetInfos.txt echo %%a
SET /P NEW_USER_KEY= < confluenceGetInfos.txt
DEL JiraGetInfos.txt
 
IF "%OLD_USER_ID%."=="." GOTO Error
IF "%NEW_USER_ID%."=="." GOTO Error
IF "%OLD_USER_KEY%."=="." GOTO Error
IF "%NEW_USER_KEY%."=="." GOTO Error
 
 
SET OUTPUPATH=%OLD_USER_NAME%
 
md %OUTPUPATH%
 
 
REM -------------------------
REM Jira
REM genrating Jira BACKUP file
@echo off
ECHO SELECT ID FROM worklog WHERE author = '%OLD_USER_NAME%' LIMIT 0,100000; > JiraBackupLines.sql
ECHO SELECT ID FROM worklog WHERE updateauthor = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM userhistoryitem WHERE username = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM userhistoryitem WHERE entityid = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT SOURCE_NAME, SINK_NODE_ID, SINK_NODE_ENTITY, ASSOCIATION_TYPE FROM userassociation WHERE source_name = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM searchrequest WHERE authorname = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM searchrequest WHERE username = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM schemepermissions WHERE perm_parameter = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM projectroleactor WHERE roletypeparameter = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM project WHERE lead = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM portalpage WHERE username = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM Jiraworkflows WHERE creatorname = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM Jiraissue WHERE reporter = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM Jiraissue WHERE creator = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM Jiraissue WHERE assignee = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM Jiraaction WHERE updateauthor = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM Jiraaction WHERE author = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM filtersubscription WHERE username = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM fileattachment WHERE author = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM favouriteassociations WHERE username = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM cwd_membership WHERE child_id = %OLD_USER_ID% LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM cwd_membership WHERE child_name = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM cwd_membership WHERE lower_child_name = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
ECHO SELECT ID FROM changegroup WHERE author = '%OLD_USER_NAME%' LIMIT 0,100000; >> JiraBackupLines.sql
 
@echo on
REM genrating Jira UPDATE file
@echo off
ECHO UPDATE worklog SET author = '%NEW_USER_NAME%' where author = '%OLD_USER_NAME%'; > JiraMigrate.sql
ECHO UPDATE worklog SET updateauthor = '%NEW_USER_NAME%' where updateauthor = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE userhistoryitem set username = '%NEW_USER_NAME%' where username = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE userhistoryitem set entityid = '%NEW_USER_NAME%' where entityid = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE userassociation SET source_name = '%NEW_USER_NAME%' where source_name = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE searchrequest SET authorname = '%NEW_USER_NAME%' where authorname = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE searchrequest SET username = '%NEW_USER_NAME%' where username = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE schemepermissions SET perm_parameter = '%NEW_USER_NAME%' where perm_parameter = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE projectroleactor SET roletypeparameter = '%NEW_USER_NAME%' where roletypeparameter = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE project SET lead = '%NEW_USER_NAME%' where lead = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE portalpage SET username = '%NEW_USER_NAME%' where username = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE Jiraworkflows SET creatorname = '%NEW_USER_NAME%' where creatorname = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE Jiraissue SET reporter = '%NEW_USER_NAME%' where reporter = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE Jiraissue SET creator = '%NEW_USER_NAME%' where creator = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE Jiraissue SET assignee = '%NEW_USER_NAME%' where assignee = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE Jiraaction SET updateauthor = '%NEW_USER_NAME%' where updateauthor = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE Jiraaction SET author = '%NEW_USER_NAME%' where author = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE filtersubscription SET username = '%NEW_USER_NAME%' where username = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE fileattachment SET author = '%NEW_USER_NAME%' where author = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE favouriteassociations SET username = '%NEW_USER_NAME%' where username = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE cwd_membership SET child_id = %NEW_USER_ID% where child_id = %OLD_USER_ID%; >> JiraMigrate.sql
ECHO UPDATE cwd_membership SET child_name = '%NEW_USER_NAME%' where child_name = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE cwd_membership SET lower_child_name = '%NEW_USER_NAME%' where lower_child_name = '%OLD_USER_NAME%'; >> JiraMigrate.sql
ECHO UPDATE changegroup SET author = '%NEW_USER_NAME%' where author = '%OLD_USER_NAME%'; >> JiraMigrate.sql
 
 
@echo on
REM -------------------------
REM CONFLUENCE
REM genrating CONFLUENCE BACKUP file
@echo off
 
ECHO SELECT PERMID FROM spacepermissions WHERE creator= '%OLD_USER_KEY%' LIMIT 0,100000; > confluenceBackupLines.sql
ECHO SELECT PERMID FROM spacepermissions WHERE permusername= '%OLD_USER_KEY%' LIMIT 0,100000; >> confluenceBackupLines.sql
ECHO SELECT PERMID FROM spacepermissions WHERE lastmodifier= '%OLD_USER_KEY%' LIMIT 0,100000; >> confluenceBackupLines.sql
ECHO SELECT NOTIFICATIONID FROM notifications WHERE username= '%OLD_USER_KEY%' LIMIT 0,100000; >> confluenceBackupLines.sql
ECHO SELECT NOTIFICATIONID FROM notifications WHERE creator= '%OLD_USER_KEY%' LIMIT 0,100000; >> confluenceBackupLines.sql
ECHO SELECT NOTIFICATIONID FROM notifications WHERE lastmodifier= '%OLD_USER_KEY%' LIMIT 0,100000; >> confluenceBackupLines.sql
ECHO SELECT ID FROM likes WHERE username= '%OLD_USER_KEY%' LIMIT 0,100000; >> confluenceBackupLines.sql
ECHO SELECT LABELID FROM label WHERE owner= '%OLD_USER_KEY%' LIMIT 0,100000; >> confluenceBackupLines.sql
ECHO SELECT ID FROM content_perm WHERE username= '%OLD_USER_KEY%' LIMIT 0,100000; >> confluenceBackupLines.sql
ECHO SELECT ID FROM content_perm WHERE creator= '%OLD_USER_KEY%' LIMIT 0,100000; >> confluenceBackupLines.sql
ECHO SELECT ID FROM content_perm WHERE lastmodifier= '%OLD_USER_KEY%' LIMIT 0,100000; >> confluenceBackupLines.sql
ECHO SELECT ID FROM content_label WHERE owner= '%OLD_USER_KEY%' LIMIT 0,100000; >> confluenceBackupLines.sql
ECHO SELECT CONTENTID FROM content WHERE lastmodifier= '%OLD_USER_KEY%' LIMIT 0,100000; >> confluenceBackupLines.sql
ECHO SELECT CONTENTID FROM content WHERE creator= '%OLD_USER_KEY%' LIMIT 0,100000; >> confluenceBackupLines.sql
ECHO SELECT AUDITRECORDID FROM auditrecord WHERE authorkey= '%OLD_USER_KEY%' LIMIT 0,100000; >> confluenceBackupLines.sql
 
@echo on
REM genrating CONFLUENCE UPDATE file
@echo off
 
ECHO UPDATE spacepermissions SET permusername = '%NEW_USER_KEY%' WHERE permusername = '%OLD_USER_KEY%'; > confluenceMigrate.sql
ECHO UPDATE spacepermissions SET creator = '%NEW_USER_KEY%' WHERE creator = '%OLD_USER_KEY%'; >> confluenceMigrate.sql
ECHO UPDATE spacepermissions SET lastmodifier = '%NEW_USER_KEY%' WHERE lastmodifier = '%OLD_USER_KEY%'; >> confluenceMigrate.sql
ECHO UPDATE notifications SET username = '%NEW_USER_KEY%' WHERE username = '%OLD_USER_KEY%'; >> confluenceMigrate.sql
ECHO UPDATE notifications SET creator = '%NEW_USER_KEY%' WHERE creator = '%OLD_USER_KEY%'; >> confluenceMigrate.sql
ECHO UPDATE notifications SET lastmodifier = '%NEW_USER_KEY%' WHERE lastmodifier = '%OLD_USER_KEY%'; >> confluenceMigrate.sql
ECHO UPDATE likes SET username = '%NEW_USER_KEY%' WHERE username = '%OLD_USER_KEY%'; >> confluenceMigrate.sql
ECHO UPDATE label SET owner = '%NEW_USER_KEY%' WHERE owner = '%OLD_USER_KEY%'; >> confluenceMigrate.sql
ECHO UPDATE content_perm SET username = '%NEW_USER_KEY%' WHERE username = '%OLD_USER_KEY%'; >> confluenceMigrate.sql
ECHO UPDATE content_perm SET creator = '%NEW_USER_KEY%' WHERE creator = '%OLD_USER_KEY%'; >> confluenceMigrate.sql
ECHO UPDATE content_perm SET lastmodifier = '%NEW_USER_KEY%' WHERE lastmodifier = '%OLD_USER_KEY%'; >> confluenceMigrate.sql
ECHO UPDATE content_label SET owner = '%NEW_USER_KEY%' WHERE owner = '%OLD_USER_KEY%'; >> confluenceMigrate.sql
ECHO UPDATE content SET creator = '%NEW_USER_KEY%' WHERE creator = '%OLD_USER_KEY%'; >> confluenceMigrate.sql
ECHO UPDATE content SET lastmodifier = '%NEW_USER_KEY%' WHERE lastmodifier = '%OLD_USER_KEY%'; >> confluenceMigrate.sql
ECHO UPDATE auditrecord SET author = '%NEW_USER_KEY%' WHERE author = '%OLD_USER_KEY%'; >> confluenceMigrate.sql
 
 
@echo on
REM -------------------------
@echo off
 
mysql --host=localhost --user=USER --password=PASSWORD --database=Jiradb < JiraBackupLines.sql > %OUTPUPATH%\JiraBackupLines.txt
mysql --host=localhost --user=USER --password=PASSWORD --database=Jiradb < JiraMigrate.sql
mysql --host=localhost --user=USER --password=PASSWORD --database=confluencedb < confluenceBackupLines.sql > %OUTPUPATH%\confluenceBackupLines.txt
mysql --host=localhost --user=USER --password=PASSWORD --database=confluencedb < confluenceMigrate.sql
pause
 
 
 
:Error
echo "Missing var, operation stopped"
exit
migrate.bat

Vous devez remplacer USER/PASSWORD par les identifiants de votre user pour la base de données.

La vérification

  • Si ce n’est pas déjà fait, en cas d’utilisation du CAPCHA, vous devez désactiver la fonction en attendant que les utilisateurs impactés se connectent une première fois après la migration.
  • Vérifiez que les utilisateurs migrés peuvent bien se connecter : via le panel d’administration de Jira > Gestion des utilisateurs, faîtes une recherche sur les utilisateurs correspondants et vérifiez la date de dernière connexion.
  • Depuis Jira et Confluence, allez sur les profils d’utilisateurs d’origine et cible, et constatez que le flux d’activité a bien été transféré.

Pour aller plus loin

Maintenant que vous savez tout sur la migration des utilisateurs entre répertoires Atlassian, votre gestion des utilisateurs devrait s’en trouver simplifiée. Pour bénéficier de nombreux autres conseils avisés de nos consultants sur Jira, Confluence, Jira Service Desk ou encore des apps de la Marketplace Atlassian, inscrivez-vous à notre newsletter.