Sie sind auf Seite 1von 22

Jornada Drupal.

SugarCRM y Drupal aplicado a la empresa.

Introducción
SugarCRM
SugarCRM como base para desarrollos.
¿Para qué integrar?
Ejemplos:
Integraciones con SugarCRM
Uso de iFrames.
Compartir el calendario vía vCalendar.
Carpeta de correo monitorizada.
Uso de WebToLead
Acceso a Sugar vía Webservices
Implementación: Soluciones disponibles
A) Carpeta de correo monitorizada
Configuración.
B) Web To Lead.
Método genérico.
Mediante módulos de Drupal.
Campos personalizados (Custom)
Ventajas de Webform2Sugar
Problemas de Webform2Sugar
C) Webservice.
SugarOnDrupal
Limitaciones de SugarOnDrupal
Desarrollo de módulos a medida
Licencia.

Rodrigo Saiz Camarero


rodrigo@regoluna.com
twitter.com/turtulino
Introducción
Nota: Este documento es un resumen de la charla de la Jornada Drupal que tuvo lugar el
26 de Octubre de 2010 en Workbox (Pamplona). Por lo tanto, no tiene por que cubrir todos
las posibilidades de integración ente Sugar y Drupal existentes actualmente.

SugarCRM
SugarCRM es un sistema para controlar las relaciones con el cliente. Lleva control del
proceso desde el momento del contacto (Cliente Potencial) hasta la asistencia posterior a
una venta o proyecto (Casos).

El objetivo de SugarCRM es automatizar y mejorar tareas de Ventas, Marketing y Atención


al cliente. Todo ello con la posibilidad de medir y realizar informes sobre el estado y
resultado de todas las acciones.

SugarCRM controla:
● Clientes potenciales.
● Contactos (personas)
● Cuentas (empresas)
● Campañas de marketing
● Oportunidades
● Casos
● Agenda: Eventos, Tareas, Reuniones.
● Documentos: Gestión documental muy básica.

Cada una de los registros que controla SugarCRM tiene un comportamiento muy similar.
Dispone de 3 vistas diferentes:

● Listado: Muestra todos los elementos de un determinado tipo y permite filtrar.


● Vista de detalle: Muestra en detalle un determinado registro y todas sus relaciones
con otros registros. Permite cambiar esas relaciones.
● Vista de edición: Permite editar los datos generales de un registro.

SugarCRM como base para desarrollos.


SugarCRM dispone de una herramienta integrada para crear nuevos módulos: el Estudio.
Los datos de los nuevos módulos tienen la típica estructura de base de datos relacional:

● Cada registro tiene una serie de campos que lo definen. (Equivalente a las
columnas)
● Cada registro tiene relaciones con otros registros de otros módulos. (pueden ser 1-n
o n-n).
Una vez creado un nuevo módulo este puede modificarse mediante edición directa del
código generado y exportarse en forma compatible con el cargador de módulos.

Es por lo tanto un candidato excelente para reemplazar los típicos registros que hay en
todas las organizaciones basados en hojas de cálculo o bases de datos de escritorio
(Access), y sustituirlos por una aplicación completa y 100% web.

¿Para qué integrar?


Drupal es un sistema muy modular y extensible. Sería posible obtener toda la funcionalidad
de SugarCRM mediante módulos existentes y desarrollos a medida. Sin embargo esto
llevaría un gran esfuerzo de implantación y desarrollo.

El objetivo de integrar dos aplicaciones como SugarCRM y Drupal es obtener un sistema


único con todas los puntos fuertes de cada sistema individual y con un esfuerzo de
implantación menor. No se trata de dotar a Drupal de las funcionalidades para actuar como
CRM sino de usarlo para todas aquellas tareas para las que no está capacitado Sugar.

Drupal nos proporciona todo aquello que necesitamos para ofrecer una vista web para el
público en general. Podemos adaptar dicha vista a distintos perfiles de usuario. SugarCRM
sin embargo se asemeja más a una herramienta ofimática típica. Es necesario que los
usuarios dispongan de una cierta formación para usarla.

Si usamos Drupal en la parte pública y SugarCRM como herramienta de uso interno en


nuestra organización obtendremos:

Por parte de Drupal:


● Una o múltiples vistas web.
● La capacidad de añadir casi cualquier elemento típico de los portales web gracias a
sus cientos de módulos: foros, tiendas, comentarios, comunidades...
● Una defensa contra el Spam.
● Ilimitadas capacidades de diseño para adaptar la apariencia a tareas de marketing.
Por parte de SugarCRM:
● Una herramienta para los departamentos comercial y de soporte.
● La posibilidad de gestionar campañas de marketing y de medir su efectividad.

Ejemplos:
Los casos más típicos que nos encontramos son:
● Márketing: Drupal se usa para generar sitios web para anunciar determinados
productos. Estos sitios buscan obtener datos de “Clientes Potenciales” o incluso
peticiones de ofertas. Los datos se pasan a SugarCRM que permite obtener
estadísticas de la campaña.
● Soporte técnico: Desde Drupal se ofrece a los usuario autenticados (clientes)
un formulario desde donde solicitar ayuda o notificar un problema. Al rellenar
el formulario se crea un nuevo Caso en SugarCRM que será tratado por los
encargados de soporte.

Integraciones con SugarCRM


Existen varias formas de integrar SugarCRM con otros sistemas.

Uso de iFrames.
En caso de necesitar mostrar ambas aplicaciones una dentro de otra (Sugar funcionando
dentro de Drupal o a la inversa) no nos queda más remedio que recurrir al uso de iFrames.

DataSync Suite
http://www.sugarforge.org/publisher/?group_id=514
DataSync Suite nos proporciona una de las mejores formas de mostrar ambas aplicaciones
integradas y con un mecanismo de SSO (Single Sign On) lo que nos permite autenticarnos
una sola vez y después movernos por ambas aplicaciones.

Incrustando las aplicaciones en marcos añade un menú superior con accesos directos a la
Administración de Drupal y a las tareas más típicas de SugarCRM. Además añade un tema
de administración de Drupal específico.
Aparecen los típicos problemas del uso de marcos, por ejemplo, que al abrir enlaces en
pestañas el menú superior se pierde y con él la sensación de una única aplicación.

Con esta solución no se intercambian datos entre Drupal y Sugar, pero se comparten los
usuarios.

Compartir el calendario vía vCalendar.


SugarCRM puede exportar los distintos calendarios de los usuarios mediante el estandar
vCalendar. (Debería ser compatible con todo tipo de aplicaciones que soporten iCal)
Drupal dispone de varios módulos capaces de importar y mostrar dichos calendarios:

● Calendar: Permite mostrar eventos sobre una vista de calendario


● Date: Permite importar eventos creando nuevos nodos.
● Feed: También crea nuevos nodos.
● iCal: Actualmente en estado “alpha” permitirá una mayor integración de Drupal con
calendarios que soporten iCal.

La sincronización es unidireccional (Drupal puede mostrar los calendarios de Sugar pero no


modificarlos) por lo que en la práctica, no es una integración que aporte mucho valor.

Carpeta de correo monitorizada.


Sugar es capaz de monitorizar carpetas de correo y crear automaticamente “Casos” a partir
de nuevos correos.

Esto permite disponer de un formulario en Drupal para la atención al cliente. Cada consulta
vía formulario se convierte en un Caso.
Uso de WebToLead
SugarCRM dispone de un punto de entrada para la creación de Leads (Clientes
potenciales) a través de un formulario web.

El uso de este sistema está siempre asociado a campañas de marketing. Buscamos


mediante algún tipo de promoción conseguir que una serie de personas acaben
proporcionando sus datos de contacto. Estas personas serán tratadas en el CRM como
clientes potenciales.

Cada campaña de marketing puede tener asociado un formulario diferente de forma que
podemos medir el resultado que está teniendo una campaña determinada.

SugarCRM dispone de un mecanismo para generar formularios incrustables en cualquier


web. Además existen módulos de Drupal que nos permiten hacer lo mismo de una forma
más integrada en Drupal.

Acceso a Sugar vía Webservices

A través de los webservices de Sugar se puede modificar cualquier entidad registrada en


SugarCRM y las relaciones entre ellas.
El API expuesto via webservice se mantiene estable durante más versiones que la base de
datos. Una integración realizada en base a WS será compatible durante más versiones.

Será la solución cuando necesitemos realizar integraciones que impliquen acciones


complejas. A través de los webservices de SugarCRM podremos:

● Obtener un listado de registros de cualquier módulo.


● Obtener los datos detallados uno o varios registros incluidas las relaciones.
● Crear, borrar y modificar entradas.
● Crear, borrar y modificar relaciones.
● Obtener información del servidor y de los usuarios.
● Consultar a que módulos tiene acceso el usuario y obtener información sobre los
mismos.

No existe ninguna solución robusta y estable de software libre para compartir datos ente
Sugar y Drupal. Para este cometido no nos queda otra opción que realizar un desarrollo a
medida e implementar nuestro propio cliente usando SOAP o REST.
Implementación: Soluciones
disponibles
A) Carpeta de correo monitorizada
No se trata de una integración como tal, puesto que ambas aplicaciones permanecen
independientes, sino más bien una forma de relacionarlas usando un sistema intermedio, en
este caso, el email.

No necesita plugins.
● En el lado de Drupal: Formulario de Contacto (Contact).
También se pueden usar otro tipo de formularios más avanzados (Webform).
● En el lado de SugarCRM: Monitorización de carpeta de correo.

Desde Drupal se envían email a una cuenta que será monitorizada por Sugar. Los nuevos
emails generarán “Casos” en el CRM.

Un caso se utiliza para registrar un problema, queja o simplemente una duda que hay que
resolver relacionada con alguno de los clientes registrados. Los usos típicos son: atención
al cliente, asistencia técnica, gestión de reclamaciones, etc...

Con este método no solo podemos registrar en Sugar nuevos casos a partir de un
formulario de Drupal, sino que también quedarán registrados todos los emails posteriores en
relación a la petición.

Configuración.
Desde SugarCRM se configura una nueva cuenta para monitorizar: (Admin -> Email
Entrante -> Nueva cuenta de correo de grupo)
Indicaremos los datos de la cuenta a monitorizar y la carpeta remota desde donde se
obtienen los emails igual que en cualquier cliente de correo. Indicamos que hay que crear
casos desde correos.

Revisamos los “planificadores” y nos aseguramos de que está activa la tarea “Check
Inbound Mailboxes“ (activa por defecto). Debe existir una tarea programada que invoque el
cron de Sugar a intervalos regulares (Ver documentación de SugarCRM).

En la parte de Drupal tenemos que configurar un método para que envíe correos a este
buzón. El más sencillo de poner en marcha es el propio formulario de contacto de Drupal
(módulo contact), aunque existen otros.

El módulo “Contact” viene incluido en el Core de Drupal pero está desactivado por defecto.
Así que lo activamos y lo configuramos. (Administrar -> Construcción del sitio -> Formulario
de contacto)

Creamos una nueva categoría en la que indicamos como “destinatarios” la dirección de


correo que estamos monitorizando.

Hacemos visible el formulario de contacto (damos permisos y creamos una entrada en un


menú) y listo.

Cada vez que se rellene y envíe el formulario de contacto en Drupal se creará un nuevo
caso en Sugar. Si la dirección indicada en el remitente es un contacto en Sugar se asociará
el ticket al contacto, si es de una cuenta se asociará la cuenta. Si respondemos al email
manteniendo el número de caso en el asunto, toda la conversación quedará asociada al
caso.
B) Web To Lead.
Existe una forma genérica de crear formularios para obtener datos de clientes potenciales
y otras específicas de Drupal (mediante módulos). En todos los casos, los formularios van
asociados siempre a una campaña de marketing, así que lo primero que haremos será
registrar una nueva campaña dentro de SugarCRM.

Método genérico.
SugarCRM nos permite generar nuestros propios formularios web, modificarlos mediante un
editor WYSIWYG y obtener el código para integrarlos en cualquier web.

Para crear un formulario de captación de clientes potenciales:

1. En la pestaña de “marketing” elegimos la opción “Nuevo Formulario de Cliente


Potencial”

1. El formulario generado tendrá 2 columnas con datos. En la siguiente venta podemos


arrastrar los campos disponibles a cualquiera de las columnas para generar el
formulario.
2. En el siguiente paso del asistente, configuramos las propiedades generales: título,
pié, etc. En este paso podemo indicar una URL para que se haga una redirección
después de registrar los datos.

3. Después podremos cambiar la apariencia, textos, colores, etc, mediante el editor de


texto enriquecido.
4. Y tras aceptar los cambios, nos generará el código (en HTML) que tenemos que
incrustar en nuestra página para que se vea el formulario.

Una vez que tenemos el código generado, en Drupal lo insertamos dentro de un nodo, un
bloque o una sección (según necesitemos). El formato de entrada debe ser “Full HTML”.
La configuración por defecto del formato FullHTML de Drupal rompe el formulario
generado por Drupal. Es necesario cambiar su configuración y eliminar los todos los filtros.
(Configuración del Sitio -> Formatos de Entrada):
Mediante módulos de Drupal.
Existen 2 módulos de Drupal disponibles que hacen más sencilla la inclusión de formularios
para obtener clientes potenciales:
● SugarCRM Webform Integration: drupal.org/project/sugarwebform
● Webform2Sugar: drupal.org/project/webform2sugar
Más moderno que el anterior, más actualizado. Usaremos este último.

Webform2Sugar extiende el funcionamiento del módulo Webform (drupal.org/project/


webform) permitiendo conectar estos formularios con campañas registradas en Sugar y
mapeando los distintos campos del formulario a campos de “Cliente Potencial” en el CRM.

AVISO: En el momento de escribir este documento Webform2Sugar solo es


compatible con la versión 2.x del módulo Webform. Además la instalación de Webform
3.x no permite una vuelta atrás.

Webform permite crear todo tipo de formularios o cuestionarios. Para más información se
puede consultar drupal.org/project/webform.

Antes de poder enlazar formularios en Drupal con Sugar es necesario que haya, al menos
una campaña creada. Asociaremos un formulario de Drupal con una campaña. Podemos
tener varios formularios que se enlacen con distintas campañas.

1. Creamos la campaña en SugarCRM y obtenemos su ID. La forma más sencilla de


obtener este ID es a partir de la URL de la vista de detalle:

Tomaremos el código que aparece entre “record=” y el símbolo “&” (si lo hay). Debe
ser un código similar a este: “2706522c-0293-b862-ccc3-4cc06becd7ff” . Todos los
identificadores de SugarCRM tienen la misma forma, así que hay que asegurarse de
que copiamos el que aparece tras el parámetro “record”.

2. En Drupal, instamos los módulos: Webform, y Webform2Sugar. Configuramos el


segundo indicando la dirección del CRM (dominio y carpeta si procede).
Si por ejemplo estamos accediendo al CRM en la dirección http://
www.midominio.com/aplicaciones/crm, entonces la configuración debería ser:
3. Creamos un nuevo formulario en Drupal. El módulo Webform habrá creado un nuevo
tipo de contenido: “Formulario Web” o “Webform”. Rellenamos el contenido como un
contenido cualquiera de Drupal (Menú, contenido, ect...).

Si el módulo Webform2Sugar está correctamente configurado, aparecerá entre las


opciones del formulario un campo para introducir el ID de la campaña:

4. Una vez creado el formulario hay que definir cada uno de los campos (componentes)
que aparecerán en el mismo. Para cada campo podemos decidir si corresponden
a un campo existente en SugarCRM. En este caso se registrarán cada vez que se
envíe el formulario.

Cada vez que añadamos un nuevo componente al formulario, se nos dará la opción
de enlazarlo con un campo existente.
Campos personalizados (Custom)
SugarCRM permite añadir campos personalizados a cualquier módulo mediante su
herramienta “Estudio”. El problema radica en que si añadimos nuevos campos a
los “Clientes Potenciales”, inicialmente no aparecerán en el desplegable.

Podemos añadir campos custom al desplegable editando el fichero


webform2sugar_fields.php sin embargo, estos valores se perderán al actualizar el
módulo.

Ejemplo:
1. En SugarCRM vamos a “Studio” (recomiendo entrar en Inglés pues en algunas
ocasiones se producen errores en el Estudio con las versiones traducidas).
Agregamos un nuevo campo personalizado para Leads (Clientes potenciales):
Lo llamamos “campo_de_prueba”, pero internamente se guardará
como “campo_de_prueba_c”. SugarCRM añade “_c” a todos los campos custom.

2. Ahora tenemos que hacer que este nuevo campo esté disponible desde Drupal para
poder mapearlo. Editamos el fichero webform2sugar_fields.php dentro del módulo
y reemplazamos alguno de los múltiples campos de descripción por el nuevo campo.
Ventajas de Webform2Sugar
Utilizar el módulo en lugar de incrustar el formulario creado desde SugarCRM tiene varias
ventajas:
● Mantiene una apariencia uniforme con el resto del sitio.
● Permite el uso combinado con otros módulos que alteren el funcionamiento del
formulario. Especialmente útiles son los módulos anti-spam.
● El acceso al CRM se realiza desde Drupal en lugar de el navegador del usuario. El
punto de entrada del CRM queda oculto. Facilita la protección contra el Spam y los
ataques DDoS para los que Drupal está más preparado.
● Permite limitar el número de envíos en un intervalo de tiempo.

Problemas de Webform2Sugar
● No es compatible con la versión 3.x de Webform.
● Todavía no hay una versión estable.
● Los cambios para incluir campos custom se pierden al actualizar el módulo. (Sin
embargo si parece que se va a añadir soporte para campos personalizados en el
futuro.)

C) Webservice.
SugarOnDrupal
drupal.org/project/sugarondrupal

Nota: Este módulo está en una fase muy inicial de desarrollo. Sin embargo puede ser
muy útil para programadores puesto que realiza la conexión inicial y sirve también como
referencia para implementar nuevos servicios.

SugarOnDrupal permitirá compartir los usuarios de Drupal con SugarCRM actuando como
un portal de clientes. Los clientes o contactos podrán modificar los datos que se guardan en
el CRM.

SugarOnDrupal establece el enlace entre Drupal y Sugar y proporciona un API para ser
usado desde otros módulos.

Para hacerlo funcionar es recomendable repasar el gestor de incidencias donde se


encuentran algunas modificaciones necesarias para poder conectarse vía REST. (SOAP
todavía no está soportado).

1. Descarga e instala el módulo SugarOnDrupal. Aplica las modificaciones necesarias y


activalo.

2. Configura el módulo ( admin/settings/sugarondrupal/settings ). Configuralo para usar


REST / JSON (Es el único que me ha funcionado)
3. Utiliza el botón “Update Autenticated Session” para comprobar que la conexión se
realiza correctamente:

Si aparece el mensaje “Got a valid session id. Both applications are now connected” ya
podemos realizar consultas a SugarCRM usando las funciones de SugarOnDrupal.

Un pequeño snippet de ejemplo que obtiene un array con la lista de IDs de todas las
cuentas:

<?php
$parametros = array(
'module' => 'Accounts' ,
'deleted' => false,
);
$respuesta = sugarondrupal_get_entry_list( $parametros );
print_r($respuesta);
?>

Para obtener el nombre y el website de una cuenta en concreto:

<?php
$parametros = array(
'module' => 'Accounts' ,
'id' => ‘6fb15bd9-1cd3-c0a9-a777-4cc1629238b0’,
'select_fields' => array( 'name', 'website' ),
);

$cuenta = sugarondrupal_get_entry( $parametros );


print_r($cuenta);
?>

Para crear una nueva cuenta en Sugar cada vez que se registra un usuario en Drupal,
podemos usar el módulo Rules y crear una acción que ejecute el siguiente código PHP:

<?php
$parametros = array(
'module' => 'Accounts' ,
'name_value_list' => array(
array( 'name' => 'name', 'value'=> $account->name ),
array( 'name' => 'email1', 'value'=> $account->mail )
),
);

sugarondrupal_set_entry( $parametros );
?>

Limitaciones de SugarOnDrupal
● Actualmente solo está disponible una versión de Desarrollo.
● Por ahora solo soporta el protocolo REST, por lo que es necesario Sugar 5.5 o
superior. (En el futuro parece que está pensado que soporte también SOAP)
● Por ahora, no tiene mucha utilidad por si solo aunque si puede funcionar como base
para otros módulos.

Desarrollo de módulos a medida


SugarOnDrupal es un módulo que, por si mismo no nos aporta mucho. Llamar a su API de
directamente desde nodos o acciones puede servirnos eventualmente para resolver algún
problema o realizar pruebas. Sin embargo lo recomendable es crear un nuevo módulo que
defina nuevas acciones asociables a Triggers. De esta forma se puede llevar un control de
versiones sobre las mismas y es más fácil reutilizar código entre proyectos.

Actualmente la interfaz a través de SOAP está más madura y da menos problemas,


especialmente si utilizamos el cliente nuSoap que viene incluido en SugarCRM.
Licencia.
Este documento se distribuye bajo licencia Creative Commons:

Reconocimiento-CompartirIgual 3.0

Usted es libre de:


● copiar, distribuir y comunicar públicamente la obra
● hacer obras derivadas
Bajo las condiciones siguientes:
● Reconocimiento: Debes atribuir este documento “Jornada Drupal - SugarCRM y
Drupal aplicado a la empresa” a Rodrigo Saiz Camarero (http://www.regoluna.com).
● Compartir bajo la misma licencia: Si altera o transforma esta obra, o genera
una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a
ésta.

Das könnte Ihnen auch gefallen