Accueil > Joomla > Joomla: migrer une base utilisateur Joomla / SOBI2 vers Community Builder

Joomla: migrer une base utilisateur Joomla / SOBI2 vers Community Builder

Pour le besoin récent d’un projet de refonte de site, j’ai dû travailler à la migration d’un site Joomla.

Celui-ci utilisait d’une part la gestion standard des utilisateurs (nom, email) et d’autre part  le composant de gestion d’index SOBI 2Sigsiu Online Business Index 2 (champs enrichis : région, téléphone, numéro d’adhérent…).

Le problème avec le choix original Joomla et SOBI2 est la double gestion des utilisateurs, Joomla pour les accès et SOBI2 pour leurs profils et caractéristiques.

Bilan : deux bases d’utilisateurs à gérer, aucun lien entre elles, la gestion de mailing ou de newsletter est complexe.

Le système cible devait donc intégrer les informations et les utilisateurs des deux outils. Pour cela j’ai décider d’utiliser le composant Community Builder.

L’opération est délicate  car :

  • il y a plus d’utilisateur dans SOBI2 que d’utilisateur ayant un accès au site Joomla (1000 / 300). Il va donc falloir extraire de SOBI2 les 700 nouveaux utilisateurs et les injecter dans Joomla.
  • SOBI2 contient toutes les données riches concernant les utilisateurs, il va falloir les extraire et les associer aux nouveaux profils correspondants dans Community Builder.
  • et évidemment, il ne faut aucune ressaisie manuelle.

Préparations

Étape préliminaire, il faut bien sûr sauvegarder la base de données du site. Dans mon cas j’ai utilisé l’excellent composant Akeeba Backup pour exporter l’ensemble du site + base et le réinstaller sur une autre adresse http://proto.xxx.

Cela permet de faire tous les essais possibles sans toucher au site en production. Vous n’aurez ensuite plus qu’à reproduire le même scénario en production, et le tour sera joué.

Installer Community Builder

Vous pouvez installer Community Builder en amont de l’opération. Suivez simplement les instructions d’installation et en quelques clics l’installation sera terminée.

Reste ensuite un travail un peu laborieux de paramétrage, pour créer les nouveaux champs qui vont faire partie de la fiche profil des utilisateurs : prénom, nom, adresse, ville, etc.

Exporter les données

Il faut se connecter à l’administration de la base de données phpMyAdmin et travailler avec les tables suivantes:

  • jos_users : contient les utilisateurs Joomla, mais aucune information riche,
  • jos_core_acl_aro : contient les permissions des utilisateurs joomla,
  • jos_core_acl_groups_aro_map : indique les groupes desquels les utilisateurs sont membres,
  • jos_comprofiler: contient les utilisateurs et leurs données, cette table est synchronisée avec joomla
  • jos_comprofiler_fields: contient les types de champs personnalisés qui sont utilisés par Community Builder
  • jos_sobi2_item: contient les utilisateurs,
  • jos_sobi2_fields_data: contient les valeurs des types de champs personnalisés SOBI2

Il faut se connecter à phpMyadmin, sélectionner la table à exporter, puis l’onglet exporter, et choisir le format Excel, exporter toutes les lignes, et transmettre.

La création des nouveaux comptes

Pour commencer il faut exporter jos_users et jos_sobi2_items, afin de déterminer quels sont les utilisateurs de SOBI2 qui n’existent pas dans Joomla.

Export de jos_users dans Excel

Export Excel de jos_users

Export Excel de jos_sobi2_items

Export Excel de jos_sobi2_items

Utiliser la feuille Excel pour créer les nouveaux comptes

La feuille Excel qui permet de créer les nouveaux utilisateurs

La feuille Excel qui permet de créer les nouveaux utilisateurs

La feuille Excel qui permet de créer les nouveaux utilisateurs est disponible ici, ainsi que les autres fichiers extraits. Elle s’utilise comme ceci :

  1. placer ces fichiers dans le même répertoire, mettre vos données dans le fichier jos_users.xls
  2. coller dans les deux premières colonnes les données ITEMID et TITLE extraites de la table JOS_SOBI_ITEMS
  3. les colonnes bleues vont déterminer s’il y a des utilisateurs présents dans SOBI qui ne le sont pas dans Joomla. Dans chaque cas des formules que vous pouvez adapter vont calculer les prénoms, noms et emails.
  4. copier l’intégralité des lignes de la première colonne rouge, sauf l’entête, dans une fenêtre de requête SQL de phpMyAdmin, et exécutez la requête. Ceci va créer de nouvelle lignes dans le table jos_users.
  5. exporter le contenu de la table jos_users afin de récupérer les identifiants des nouvelles lignes ajoutées, et collez ces résultats dans la colonne ID résultants.
  6. grâce aux ID collés, la seconde colonne rouge contient maintenant les requêtes ad’hoc pour créer les permissions. Copier/coller à nouveau les lignes dans une fenêtre de requêtes SQL et exécutez. Ceci va créer de nouvelle lignes dans le table jos_core_acl_aro.
  7. à nouveau , exporter le contenu de la table jos_core_acl_aro afin de récupérer les identifiants des nouvelles lignes ajoutées, et collez ces résultats dans la colonne ID résultants.
  8. enfin, copier et exécuter le contenu de la dernière colonne rouge.

Voilà, la première étape est terminée. Affichez maintenant la gestion des utilisateurs de joomla et vous allez retrouver les nouveaux utilisateurs.

Utilisez Community Builder pour vérifier l’intégrité de la base utilisateur de Joomla. Allez dans l’onglet Tools, et lancez « Check users database« .

Vérifier la base utilisateur Joomla avec Community Builder

Vérifier la base utilisateur Joomla avec Community Builder

La synchronisation avec Community Builder

Maintenant que les utilisateurs sont présents dans Joomla, vous pouvez synchroniser Community Builder. Pour cela,  allez dans l’onglet Tools, et lancez « Synchronize users « .

Synchronizer la base de Community Builder

Synchroniser la base de Community Builder

L’enrichissement des champs de Community Builder

Dernière étape, extraire de SOBI2 les valeurs des champs riches et les injecter dans Community Builder.

A nouveau, Excel est notre ami. Je vous propose une feuille de calcul avec ce qu’il faut dedans pour créer toutes les requêtes qui vont nous simplifier la vie.

La convertion des données SOBI2 en requêtes SQL

La convertion des données SOBI2 en requêtes SQL

Elle s’utilise comme ceci :

  1. coller dans les premières colonnes jaunes les données extraites de la table jos_sobi2_fields_data,
  2. les colonnes vertes vont retrouver à quel utilisateur Joomla est associée chaque donnée.
  3. Les colonnes orange vont alors afficher des requêtes SQL qu’il faudra lancer dans l’interface de phpMyAdmin. A chaque colonne orange correspond l’identifiant d’une colonne de la table jos_comprofiler_fields. Par exmple dans le fichier, ID=1 correspond au champ « adresse 1 », ID=2 correspond au champ « code postal », etc.

Une fois toutes les requêtes lancées, utilisez Community Builder pour vérifier son intégrité.

Dernière vérification, l'intégrité des champs de Community Builder

Dernière vérification, l'intégrité des champs de Community Builder

Et voilà, l’opération est achevée. J’espère que cet article pourra vous aider si vous êtes face à une situation similaire !

  1. Pas encore de commentaire
  1. Pas encore de trackbacks