Después de realizar varias migraciones relativamente complejas para algunos de nuestros clientes de gran cuenta como por ejemplo Travel Air (Eroski Viajes) en su proyecto PACTA del que hablamos en nuestra web oficial, le tocaba el turno a nuestro sistema de CRM.
A lo largo de este artículo vamos a describir el proceso en 10 pasos (o incluso alguno menos dependiendo de vuestra instalación) que nos guiarán en nuestras migraciones.
Desde que, en el año 2013 SugarCRM abandonara a su suerte a la comunidad opensource de SugarCRM, el fork del proyecto SuiteCRM ha ido cogiendo más y más fuerza. SuiteCRM nació de las cenizas del recién abandonado SugarCRM en su versión 6.5 y fue supervitaminado por algunas de las mejores y más utilizadas extensiones existentes hasta el momento como SugarTeams, Facturas, Productos, Google Maps, etc.
Además de desarrolladores e integradores de SugarCRM, somos usuarios desde el año 2005. Para nosotros es una herramienta clave de nuestro negocio y resulta fundamental mantener el sistema actualizado. Siendo un sistema crítico de la empresa, nunca hemos realizado demasiadas actualizaciones que no fueran críticas. Sin embargo, el fallo de seguridad SugarCRM 6.5.23 – REST PHP Object Injection Exploit (Metasploit) de septiembre de 2016 nos obligó a migrar nuestro sistema a la última versión 6.4.24 libre de SugarCRM… pero aquí morían nuestras esperanzas de evolución, ya que el proyecto no tenía planificadas evoluciones funcionales.
Después de 11 años usando SugarCRM, nuestro sistema tenía un alto nivel de personalización (campos personalizados, relaciones) e integración con todo tipo de sistemas (mantisBT, JasperServer, Sitios web de la compañía, …), por ello la migración a SuiteCRM era relativamente compleja y arriesgada. Sin embargo, algunas de las nuevas funcionalidades aportadas por SuiteCRM, como las gestión avanzada de permisos y equipos, la definición de flujos de trabajo automatizada (p.e. cuando gane una oportunidad, crear una tarea de forma automática para facturar) o la creación de mapas geográficos de clientes, hacían esta migración muy atractiva para adecuar nuestro CRM a las necesidades de una empresa de 32 personas en el año 2016.
Con este método que exponemos a continuación nuestro CRM ha sido actualizado a la última versión de SuiteCRM invirtiendo menos de 2 horas de nuestro tiempo.
AVISO: ¡Aplica esta guía bajo tu propia responsabilidad y haz un buen backup de tu CRM por si algo sale mal!
10 pasos para migrar SugarCRM a SuiteCRM
1- Exportamos la base de datos de SugarCRM
Para ello utilizaremos el comando MySQLdump proporcionado por MySQL, lo que nos permitirá volcar toda la estructura de nuestra base de datos, así como sus contenidos, a un fichero de texto. Desde la línea de comando de nuestro servidor ejecutaremos el siguiente comando:
hqnew:~# mysqldump -uroot NOMBRE_DE_TU_BASEDEDATOS -p > backupBD.sql
Esto generará un fichero en la raíz de nuestro usuario (en este caso root) backupDB.sql que contendrá la copia de nuestra base de datos.
2- Instalamos un SuiteCRM limpio
El objetivo de este artículo no consiste en explicar como se instala SuiteCRM, para ello podéis seguir los pasos de la documentación oficial en:
https://suitecrm.com/wiki/index.php/Installation
De cara a los siguientes pasos vamos a asumir que durante la instalación del SuiteCRM hemos creado una base de datos y un usuario con su contraseña para acceder a la misma. En este ejemplo serán:
- Nombre de la base de datos: suitecrm
- Usuario: Usuitecrm
- Contraseña: 12345
3- Instalamos el paquete de idiomas
Instalar el paquete de idioma de Español es muy sencillo. Unicamente necesitamos descargar la última versión del paquete desde la página de crowdin del proyecto:
Accedemos al cargador de módulos de SuiteCRM y desde ahí subimos e instalamos el paquete.
Luego accederemos al menú de localización de nuestro SuiteCRM, seleccionamos el español como idioma por defecto.
Nos deslogamos, borramos la caché y volvemos a acceder a SuiteCRM.
4- Recuperamos nuestra carpeta uploads
Todos los ficheros subidos a vuestro SugarCRM se encuentran en la carpeta uploads. En nuestro caso esta carpeta se encuentra fuera del árbol general de carpetas del CRM.
Para saber cuál es la vuestra podéis ejecutar el siguiente comando:
hqnew:/var/www/iCRM# cat config.php | grep upload_dir En nuestro caso la salida es la siguiente: 'upload_dir' => '/var/www/iCRM_uploads/upload/',
Tras identificarlo, el siguiente paso será editar el fichero config.php alojado en nuestra nueva instalación de SuiteCRM y cambiar en la línea donde está upload_dir la dirección de nuestra carpeta uploads.
5- Importamos la base de datos de SugarCRM en la base de datos de SuiteCRM
Una vez que tenemos una instalación limpia de SuiteCRM, vamos a hacer el cambio de la base de datos de SuiteCRM por la estructura y contenidos de la base de datos que tenemos en backupDB.sql
Para ello lo primero que haremos será acceder a la interfaz de comandos de mysql:
hqnew:~# mysql -uroot -p
Desde aquí ejecutamos los siguientes comandos:
/* Borramos la base de datos de nuestro SuiteCRM limpio */ drop database suitecrm; /* Creamos una nueva base de datos para SuiteCRM que estará vacía */ create database suitecrm; /* Creamos el usuario con el se conectará SuiteCRM a esta base de datos con los mismos datos que en la instalación para no tener que tocar el fichero de configuración */ grant all privileges on suitecrm.* to 'UsuiteCRM'@'localhost' identified by "12345";
Salimos de la interfaz de MySQL con un exit y sobreescribimos la nueva base de datos con el dump de nuestra vieja base de datos de SugarCRM. Para ello ejecutamos el siguiente comando:
hqnew:~# mysql -u UsuiteCRM -p -h localhost suiteCRM < /root/backupBD.sql
6- Ejecutamos las siguientes reparaciones en SuiteCRM
A continuación nos logamos en nuestro nuevo SuiteCRM con las credenciales de administrador del viejo SugarCRM, ya que al cambiar la base de datos se cambiarán también los usuarios.
Accedemos al área de administración, concretamente al área de Reparación:
Y ejecutamos en este orden concreto las siguientes reparaciones:
- Quick Repair and Rebuild
- Rebuild relationships
- Repair roles
A la finalización de este paso deberíamos tener ya un CRM operativo con todos nuestros viejos datos migrados. Sin embargo, cualquier cambio en la presentación: campos personalizados (los datos si estarán pero no las vistas), las relaciones y otros elementos no estarán presentes en SuiteCRM. Por ello, continuamos con el siguiente paso…
7- Migramos las personalizaciones de nuestro SugarCRM
Una de las características más interesantes del Studio de SugarCRM desde hace muchas versiones, es que nos permite exportar todas las personalizaciones de visualización, campos custom y relaciones. Esto genera un archivo .zip que puede ser transplantado a otras instancias de SugarCRM o, en el caso que nos atañe, a SuiteCRM.
Para ello desde nuestro viejo SugarCRM accedemos como administrador a la sección estudio y desde allí pulsamos en Exportar personalizaciones:
Posteriormente, como administradores en el nuevo SuiteCRM, accedemos al cargador de módulos y desde allí subimos el paquete y pulsamos en ‘instalar’.
Salimos de SuiteCRM, borramos la cache del navegador, nos volvemos a autenticar y voilá… ya tenemos el CRM completamente personalizado con todas nuestras vistas y campos personalizados… pero todavía falta un poco, ya que muchas de las personalizaciones no estarán correctamente traducidas a nuestro paquete de idiomas.
8- Completamos los idiomas que faltan
Esta es una de las partes más tediosas del proceso. Hay una opción un poco más óptima que pasaría por generar un paquete de idioma completo para nuestra instalación, que contendría todos los literales del sistema más los literales custom. Se traduciría y se cargaría en el sistema. Sin embargo, para nuestro propósito nos parece más rápido y cómodo traducir los literales desde el propio estudio.
Para ello desde el panel de administración accederemos al módulo Studio. Desde allí, seleccionaremos el módulo donde estén los literales pendientes de traducción y seleccionaremos campos personalizados. Esto nos dará una vista parecida a la siguiente:
Traducimos el campo Etiqueta visible y damos a ‘Guardar’:
9- Metemos los hooks y módulos custom
En nuestro caso tenemos una serie de hooks de integración para informar en el canal de slack del equipo comercial de nuevas actualizaciones (en un próximo post explicaremos cómo lo hacemos). Únicamente quedaría copiar los ficheros desde la vieja ubicación a la nueva, aplicando para ello el siguiente comando (en vuestras instalaciones deberían ser los vuestros):
/* Movemos el lanzador de hooks */ hqnew:/var/www/iCRM/custom/modules/Opportunities# cp logic_hooks.php /RUTA_A_TU_SUITE/custom/modules/Opportunities /* Movemos el hook de oportunidades */ hqnew:/var/www/iCRM/custom/modules/Opportunities# cp Opportunities_hooks.php /RUTA_A_TU_SUITE/custom/modules/Opportunities
10- Final Check
Ya solamente nos queda probar y probar cada uno de los módulos y funcionalidades. Garantizar que todo está en su sitio funcionado adecuadamente y poder decir:
_______ _______ _________ _______ _________ _ ( ____ \( ____ )\__ __/( ____ \ |\ /|\__ __/( ( /| | ( \/| ( )| ) ( | ( \/ | ) ( | ) ( | \ ( | | (__ | (____)| | | | | | | _ | | | | | \ | | | __) | _____) | | | | | |( )| | | | | (\ \) | | ( | ( | | | | | || || | | | | | \ | | (____/\| ) ___) (___| (____/\ | () () |___) (___| ) \ | (_______/|/ \_______/(_______/ (_______)\_______/|/ )_)
One more thing: Integración con Jasper
En nuestro caso, tenemos el CRM integrado con JasperServer para generación de reporting comercial avanzado. Este sistema nos permite exprimir la información comercial del CRM a través de informes de rendimiento comercial, cálculo de comisiones comerciales, evolución comercial comparada por años, etc.
Por suerte, el proceso es tan sencillo como cambiar el origen de datos de los informes desde la antigua base de datos a la nueva.
Conclusiones
A nuestro modo de ver SuiteCRM ha traído al mundo CRM una serie de funcionalidades muy interesantes para las empresas, tanto si se plantean implantar un nuevo CRM, como si se plantean migrar desde uno ya existente. Las ventajas funcionales que aporta frente a SugarCRM en su versión 6.5.24 del año 2013, la sencillez para integrar la herramienta o la potencia que ofrece al usuario, hacen de ésta una de las mejores opciones para afrontar un proyecto de cualquier tamaño. Por ello, desde Irontec te recomendamos que te animes a migrar tu viejo SugarCRM, Salesforce, Siebel, etc…o directamente implantar un SuiteCRM en tu empresa.
¡Suerte con ello y si nos necesitas aquí estaremos!
Queremos tu opinión :)