Haut de page

Comment changer un lien Confluence après une migration


Publié par
Rémi De Chalendar

28 février 2018

Réaliser une migration de serveur d’une instance Confluence et d’une instance Jira liées entre elles dans le cadre d’une fusion d’instance, d’une séparation d’instance ou encore d’un changement de domaine n’est pas une procédure à prendre à la légère. Lorsque vos deux applications contiennent des liens, ceux-ci doivent être mis à jour pour suivre le changement du nom du serveur et éventuellement le changement d’ID des pages Confluence.

Les liens de Confluence vers Jira (liens Jira dans Confluence) étant dépendants des application links, ils ne sont pas impactés par la migration.

En revanche, ceux de Jira vers Confluence (liens Confluence dans Jira) conservent l’ancien nom du serveur ainsi que les anciens ID des pages et doivent donc être modifiés en masse via la base de données.

Dans cet article, nous allons voir deux procédures qui, selon le type de migration effectuée, vous permettront de remettre en place les liens entre vos deux applications.

A chaque type de migration sa procédure

En fonction du type de migration effectuée, les actions à mener sont différentes : cela est dû au fait que dans certains cas l’ID des pages est conservé et dans d’autres non. Nous aurons donc deux procédures :

  • Cas A : Seul le nom du serveur est modifié et l’ID des pages est conservé
    C’est le cas lorsque vous réalisez une migration via une copie du dossier home et un dump/restore de la base de données et lorsque vous réalisez votre migration via export et import de Confluence. Pour réaliser notre procédure, nous aurons seulement besoin de l’accès à la base de donnée de Jira sur le serveur cible.
  • Cas B : Le nom du serveur ainsi que l’ID des pages sont modifiés
    C’est le cas lorsque vous réalisez votre migration via export et import d’espaces. Dans cette situation, nous aurons besoin d’accéder aux bases de données de Confluence sur le serveur source et cible, ainsi que celle de Jira sur le serveur cible.

Cas A: Mise à jour du nom du serveur (conservation de l’ID des pages)

Dans le cadre d’un migration conservant les IDs des pages Confluence, seul le nom du serveur doit être mis à jour pour réactiver les liens de Jira vers Confluence.

Pour cela une requête SQL doit être appliquée sur la base de données Jira du serveur cible.

Voyons maintenant comment procéder :

Mis à jour des liens

Avant d’appliquer la moindre requête, il faut stopper l’application Jira et il est indispensable de réaliser un backup de la base de données.

Pour mettre à jour les liens des pages Confluence dans Jira, il faut modifier la table remotelink et remplacer les mentions du nom de l’ancien serveur par le nouveau sur la base de données Jira.

Ainsi:

SELECT ISSUEID, APPLICATIONTYPE, APPLICATIONNAME, URL FROM remotelink ;
Obtenir la liste des liens existants (sur la base Jira)
doit devenir :

 

Pour cela il suffit d’appliquer la requête suivante sur la base de données Jira, en remplaçant NOM_ANCIEN_SERVEUR par le nom du serveur source et NOM_NOUVEAU_SERVEUR par le nom du serveur cible :

UPDATE remotelink SET URL=REPLACE(URL,'NOM_ANCIEN_SERVEUR','NOM_NOUVEAU_SERVEUR') WHERE URL like 'https://NOM_ANCIEN_SERVEUR/%' ;
Mis à jour des liens Jira vers Confluence

Et voilà, mission accomplie !

Cas B : Mis à jour du nom du serveur et de l’ID des pages

Dans le cadre d’une migration ne conservant pas l’ID des pages Confluence, plusieurs étapes sont nécessaires :

  1. Récupération de l’ID des espaces concernés par la migration (optionnel).
  2. Création d’une table de correspondances entre les anciens et nouveaux ID des pages.
  3. Mise à jour des liens dans la base de données de Jira

Les requêtes des étapes 1 et 2 sont à réaliser sur la base de données de Confluence et ne nécessitent pas de backup préalable.

Celles de l’étape 3 sont à faire sur la base de données de Jira, l’application doit au préalable être stoppée et il est indispensable de faire un backup de la base avant.

1. Récupération des IDs des espaces (optionnel, si tous les espaces ne sont pas concernés)

Sur les bases de données Confluence source et cible, exécutez la requête suivante pour obtenir les anciens et les nouveaux IDs des espaces concernés par la migration :

SELECT SPACEID, SPACENAME, SPACEKEY FROM SPACES;
Récupération des ID des espaces

2. Création de la table de correspondance

Il faut maintenant créer une table de correspondance pour relier les IDs des pages sur l’ancien serveur à ceux sur le nouveau.

Lors de la modification d’une page, son ID ne change pas mais Confluence l’incrémente pour garder en mémoire les différentes versions de la page. Il y existe donc plusieurs IDs pour une même page.

De plus la table stockant le nom des pages et leurs IDs contient d’autres informations que celle des pages.

Ainsi pour ne récupérer que ce qui est utile pour la table de correspondance, il faut :

  • Uniquement ce qui concerne les pages (CONTENTTYPE=’PAGE’).
  • La dernière version de chaque page (PREVVER is NULL).

La requête suivante permet de récupérer la liste des IDs des pages pour les espaces SPACEID_1 et SPACEID_2 :

SELECT CONTENTID, TITLE FROM CONTENT WHERE CONTENTTYPE='PAGE' AND PREVVER is NULL AND SPACEID IN ('SPACEID_1','SPACEID_2');
Récupération des ID des pages (Base Confluence)

Note: remplacer SPACEID_1 et SPACEID_2 par la liste des espaces récupérés à l’étape précédente (ATTENTION à bien utiliser les anciens IDs sur le serveur source, et les nouveaux sur le cible)Si tous les espaces Confluence sont concernés par la migration, alors il suffit d’utiliser la requête suivante :

SELECT CONTENTID, TITLE FROM CONTENT WHERE CONTENTTYPE='PAGE' AND PREVVER is NULL;
Récupération des ID des pages (Base Confluence)

Pour récupérer plus simplement les valeurs de la requête, il est possible d’exporter son résultat directement dans un fichier CSV :

mysql BASE_Confluence -u USER -p -e "REQUETE_SQL" | tr '\t' ';' > /PATH/ID_PAGE.csv
MySQL
COPY (REQUETE_SQL) TO '/PATH/ID_PAGE.csv' DELIMITER ';' CSV HEADER;
PostgreSQL

Il faut ensuite faire correspondre les anciens IDs avec les nouveaux, grâce aux titres des pages qui eux ne changent pas.

Vous pouvez faire le mapping dans un fichier Excel en vérifiant que les noms correspondent (et donc que les IDs sont bien alignés) avec la formule utilisée dans la table ci-dessous :

ID Source
Nom page Source
Nom page cible
ID Cible
Comparaison (retourne VRAI si les noms sont les mêmes)
65633 Nom page Nom page 1605637 =EXACT(A3;A4)

3. Mise à jour des liens en base de données :

Il faut maintenant mettre à jour les liens dans la table Jira, grâce à la table de correspondance précédemment obtenue.

La table remotelink de Jira contient deux valeurs à mettre à jour :

  • L’URL dont le nom du serveur et l’ID de la page liée doivent être modifiés
  • Le GLOBALID contient lui uniquement l’ID de la page qui doit être modifié.

Il faut ensuite construire les requêtes de mise à jour. Pour plus de lisibilité, elles seront séparées en deux parties, une pour l’URL et l’autre pour le GLOBALID.

Les deux types de requêtes auront la même construction :

update remotelink set URL=REPLACE(URL,'OLD_SERVEUR/pages/viewpage.action?pageId=OLD_ID','NEW_SERVEUR/pages/viewpage.action?pageId=NEW_ID') WHERE URL='https://OLD_SERVEUR/pages/viewpage.action?pageId=OLD_ID';
update remotelink set GLOBALID=REPLACE(GLOBALID,'OLD_ID','NEW_ID') WHERE GLOBALID like '%&pageId=OLD_ID';
Récupération des ID des pages (Base Confluence)

Note : Les « where » ne sont pas indispensables mais leur ajout est plus sûr et permet de voir à combien de ligne s’applique chaque requête.

Avant d’appliquer les requêtes, il faut stopper l’application Jira et il est indispensable de réaliser un backup de la base de données.

Dans un fichier excel vous pouvez construire simplement toutes ces requêtes avec la formule « CONCAT ».

Ca y est ! Enfin nous y sommes.

Besoin d’accompagnement ?

Nous l’avons vu, réaliser une migration lorsque vous avez des instances liées est loin d’être simple. Dans cet article nous n’avons abordé qu’une des problématiques qui peuvent se poser à vous dans ce contexte. J’espère que ce tutoriel permettra aux plus aguerris d’entre vous de s’en sortir sans aide et sans encombre.

Sachez cependant que Valiantys propose des prestations d’accompagnement à la migration. Nos consultants expérimentés peuvent vous aider à réaliser cette mission complexe et vous décharger de cette responsabilité. N’hésitez-pas à nous contacter pour en parler !