Migration Civicrm de Joomla à Drupal

 

Un petit exercice de style de migration du composant Civicrm d'un CMS Joomla à un site Drupal.

Dans cet article je passe volontairement rapidement sur certains poins que j'approfondirai dans d'autres articles.

 

Etape 1 : dump des tables Civicrm

On va récupérer les tables civicrm nécessaires :

# mysqldump -h localhost -u root -p'password' basejoomla `mysql -h localhost -u root 
-p'password' basejoomla -e "show tables ;" | grep -v Tables_in_basejoomla | grep civicrm_
| grep -v cache | grep -v log | grep -v civicrm_domain | grep -v openid | grep -v acl | 
xargs` > dump_tables_civicrm.sql

Bien sur ici je le fait directement avec le compte root mysql. Rien ne vous emeche de le faire avec le compte d'un utilisateur ayant les droits sur la base. Attention on est dans un cas ou on a pas de synchro des utilisateurs entre Joomla et CIVICRM. On dois rajouter les deux lignes suivantes au début du fichier sql :

SET foreign_key_checks = 0;
SET character_set_client = utf8;

Puis on dois modifier les urls type Joomla pour les adapter à Drupal :

# sed -i 's/administrator/index2.php?option=com_civicrm&task=//g'
 dump_tables_civicrm.sql

On a maintenant notre base civicrm disponible.

 

Etape 2 : installation de Drupal avec le composant civicrm

Installation de drupal

Je vais pas rentrer dans les détails de l'installation, j'installe simplement un drupal de base avec quelques modules :

# drush dl drupal
# mv drupal* www
# wget http://ftp.drupal.org/files/projects/fr-6.x-1.0.tar.gz
# tar xvzf fr-6.x-1.0.tar.gz -C www/
# rm fr-6.x-1.0.tar.gz
# mkdir www/sites/all/{modules,themes}
# mkdir www/sites/default/files
# cp www/sites/default.settings.php www/sites/settings.php
# cd www
# for i in `cat /root/scripts/drupal/liste_modules`; do drush dl $i; done

On crée une base de données pour drupal et une pour civicrm :

# mysql -u root -p'password' -e "create database drupal character set utf8;"
# mysql -u root -p'password' -e "create database civicrm character  set utf8;"
# mysql -u root -p'password' -e "grant all privileges on drupal.* to 
'drupal_yuzer'@'localhost' identified by 'pass_drupal_youzer' with grant option;" ;
# mysql -u root -p'password' -e "grant all privileges on civicrm.* to 
'civicrm_yuzer'@'localhost' identified by 'pass_civicrm_youzer' with grant option;" ;

On paramètre ensuite le settings de drupal, les droits du répertoire www et le vhost et on attaque l'installation de Drupal. Puis on active les modules que l'on veut :

# cd www
# for i in `cat /root/scripts/drupal/liste_modules_active`; do drush enable $i; done

 

Installation composant civicrm pour Drupal

# cd www/sites/all/modules
# wget http://sourceforge.net/projects/civicrm/files/civicrm-stable/3.1.3/
civicrm-3.1.3-drupal.tar.gz/download
# wget http://sourceforge.net/projects/civicrm/files/civicrm-stable/3.1.3/
civicrm-3.1.3-l10n.tar.gz/download
# tar xvzf civicrm-3.1.3-drupal.tar.gz
# tar xvzf civicrm-3.1.3-l10n.tar.gz
# rm *.tar.gz

Modifiez les droits sur ce répertoire.

Allez sur l'url suivante : http://url_site/sites/all/modules/civicrm/install/index.php

Valider les paramètres pour les bases de données et finir l'install du composant Civicrm.

Il faut pour finir mettre à jour les menus (merci Nahed) :

http://url_site/civicrm/menu/rebuild&reset=1