Azure App Service: Integraciones con Salesforce (1 de 4)

Una vez más, volvemos a tener con nosotros un post invitado, esta vez de la mano de Giovanni Modica, Software Architect, .Net Developer & Salesforce Consultant.

Estos son los puntos que se van a tratar en esta serie de artículos:

  • El escenario
  • Requisitos
  • Creación de la Aplicación en Salesforce
    • Probar la Aplicación creando algunos registros
  • Creación del Portal de Proveedores
    • Publicación del Portal como una Web App
  • Integración mediante un Logic App
    • Creación de API Apps
      • Salesforce API App
      • SQLServer API App
    • Creación del Logic App
      • Sincronización de Registros de Salesforce a SQL Server
      • Sincronización de Registros de SQL Server a Salesforce
      • Ejecución automática
  • Conclusiones
  • Recursos

El pasado mes de marzo se anunció Azure App Service, un nuevo servicio de Azure el cual integra aplicaciones web (Web Apps), aplicaciones móviles (Mobile Apps), lógica de negocio (Logic Apps) y APIs (API Apps) en un único servicio. El blog de Scott Guthrie tiene un artículo muy bueno donde explica este nuevo servicio.

En este artículo hablaremos sobre cómo usar Azure App Services para integrar aplicaciones de Salesforce. Para el ejemplo desarrollaremos una pequeña solución basada en un caso real. Asumo que el lector está más familiarizado con la tecnología de Microsoft que con Salesforce, por lo que daré más detalles sobre esta última.

El Escenario

El escenario es el siguiente: supongamos que nuestro cliente es una empresa de Seguros y que usa Salesforce como CRM. Los asegurados llaman al Call Center para solicitar asistencias dependiendo de las coberturas de la póliza, como por ejemplo: asistencia en carretera (en caso de pólizas de automóvil), o asistencias de fontanero o cerrajero (para pólizas de hogar). Las asistencias son atendidas por proveedores de servicio (talleres, grúas, cerrajeros, etc.) La idea es que desde el CRM se realiza una petición de servicio y luego los proveedores pueden atender estas peticiones y marcarlas como completadas una vez que se haya prestado el servicio. Lo ideal sería que los proveedores externos tuvieran acceso al CRM para poder ver las peticiones de asistencia y realizar las actualizaciones directamente en el sistema. Sin embargo, en nuestro caso no va a ser tan fácil: los proveedores de servicio son muchos y no queremos tener licencias de Salesforce para cada uno de ellos (las licencias de Salesforce no son precisamente baratas), y además no queremos que entes externos a la empresa tengan acceso al CRM. Por esto desarrollaremos un pequeño portal web para los proveedores de servicios el cual sincronizaremos con el CRM usando Azure App Services. Nuestra solución tendrá el siguiente flujo:

  1. Los usuarios del Call Center reciben una solicitud de asistencia por el asegurado. Esta solicitud se crea en el CRM (Salesforce)
  2. A intervalos regulares, la aplicación de lógica (Logic App) se encarga de obtener del CRM aquellas solicitudes de asistencia que estén pendientes de atención usando el Salesforce Connector. Estas solicitudes son enviadas a la BD del portal de proveedores mediante el SQL Server Connector
  3. La nueva solicitud aparece en el portal de proveedores
  4. Los proveedores toman las solicitudes y las atienden. Cuando terminan se cambia el estado de la solicitud a completada
  5. A intervalos regulares, la aplicación de lógica se encarga de obtener todas las solicitudes completadas y las sincroniza de vuelta al CRM usando el Salesforce Connector
  6. Finalmente, los usuario del CRM podrán ver las actuaciones de los proveedores externos

01

En el diagrama podemos ver que se requiere una sincronización bidireccional entre Salesforce y la aplicación web que vamos a crear.

Es importante notar que el objetivo de este artículo es describir cómo usar Azure App Services para realizar integraciones con Salesforce. La solución que desarrollaremos en este artículo no pretende ser una solución completa sino más bien una solución simple para poder mostrar los aspectos más importantes de una solución de este tipo. Una solución completa tendría un mejor manejo de los estados de las solicitudes, notificaciones (via email o sms) de las asignaciones de las peticiones a los proveedores, notificaciones a los asegurados del estado de las peticiones, etc. Para mantener las cosas simples, y el artículo no tan largo, nos enfocaremos en los puntos más importantes dejando los detalles de lado para una solución real.

Requisitos

Para poder desarrollar esta solución necesitaremos:

  • Una suscripción de Azure. Si no tienes una puedes obtener una subscripción gratis en la web de Azure
  • Un ambiente de desarrollo de Salesforce. Puedes obtener un ambiente gratis en el site de desarrollo de Salesforce. Al registrarte recibirás un email con los datos para poder conectarte al entorno.
  • Visual Studio 2013 Community Edition (Update 4 en este momento). Lo puedes descargar gratis aquí. También necesitas el Azure SDK instalado (versión 2.5.1 en este momento)

Creación de la Aplicación en Salesforce

Lo primero que vamos a hacer es crear los objetos necesarios en nuestro ambiente de Salesforce. Si has solicitado un nuevo ambiente de desarrollo y es la primera vez que entras en Salesforce entrarás directamente en el área de configuración de Salesforce. Desde aquí podremos customizar el sistema y crear nuevos objetos. En nuestro caso queremos crear un objeto llamado Asistencia.

crear nuevo objeto

En el menú de la izquierda iremos a la sección de “Compilación”, luego “Crear”, y luego en “Objetos”. En la pantalla de “Objetos personalizados”, pinchamos el botón de “Nuevo objeto personalizado”. En la pantalla de creación del objeto llenaremos los datos requeridos tal y como se muestra en la siguiente pantalla. El resto de los datos los dejaremos por defecto.

objeto asistencia

Nótese que el “nombre de objeto” es Asistencia. Todo objeto en Salesforce tiene lo que se llama un Nombre de la API, el cual es el nombre que usaremos para poder identificar dicho objeto en los desarrollos. Como regla, Salesforce agrega el sufijo __c a todos los nombres de objetos personalizados. Así, el verdadero nombre de nuestro objeto es Asistencia__c.

Pincha en el botón de “Guardar” para crear el objeto. En Salesforce los objetos están disponibles de forma inmediata. Vamos a proceder a crear algunos campos para poder recoger los datos de la asistencia. En la misma pantalla del objeto, en la sección de “Relaciones y campos personalizados” pincha en el botón de “Nuevo”, el cual lanzará el wizard de creación de un nuevo campo. El primer campo que vamos a crear es la relación entre la asistencia y el contacto: un contacto tiene varias asistencias y una asistencia pertenece a un contacto. Salesforce viene de caja con un objeto estándar llamado Contact (aquí el nombre no tiene el sufijo __c ya que se trata de un objeto estándar y no un objeto personalizado). Para crear la relación entre asistencia y contacto crearemos un campo de tipo “Relación de búsqueda” (“Lookup Relationship” en inglés), escogeremos esta opción en la pantalla del wizard y pincharemos en “Siguiente”. En el siguiente paso, en el campo “Relacionado Con” escogeremos el objeto Contacto. En el siguiente paso especificamos Contacto como el nombre del campo, y dejaremos el resto de valores por defecto.

02

Pinchamos en “Siguiente” y dejaremos las opciones por defecto en el resto de los pasos hasta finalizar el wizard pinchando en “Guardar y nuevo” para proceder a crear un nuevo campo. Repetiremos el wizard de nuevo campo por cada uno de los campos descritos a continuación:

03

Al terminar de crear los campos, estos deben verse así debe quedar así:

campos

Nótese que al igual que pasaba con los nombres de los objetos personalizados, los nombres de campos personalizados también tienen el sufijo __c. Todo objeto en Salesforce, personalizado o estándar, tiene dos campos llamados Id y Name. El primero constituye la clave primaria del objeto, mientras que el segundo es un texto que sirve de descriptor para el registro. Ambos campos no llevan el sufijo __c, incluso en los objetos personalizados, ya que se consideran campos estándar.

Probar la Aplicación Creando Algunos Registros

Ya tenemos creado nuestro objeto de asistencia. Para probarlo crearemos una nueva asistencia: en el menú superior iremos al tab de “Contactos” donde, al ser primera vez que entramos en Salesforce, no tendremos ningún contacto reciente. Para ver la lista de todos los contactos en el combo de “Ver” selecciona la lista “Todos Los Contactos” y pincha en el botón “Ir”. Selecciona cualquier contacto de la lista para ver sus detalles. Al final del todo veremos la sección de “Asistencias”, pincha en el botón de “Nueva asistencia”. Nótese como algunos de los campos se llenan con valores predefinidos: el contacto se llena automáticamente al crear la asistencia desde un contacto, la fecha tiene un valor por defecto de la fecha de hoy, y el estado se fija en el primer valor de la lista introducida al crear el campo. Introduce un nombre y una descripción y guarda la asistencia.

nueva asistencia

Crea una o dos asistencias adicionales para poder tener datos para lo que viene a continuación.

Si volvemos al registro de contacto, veremos las solicitudes que acabamos de crear, sin embargo, en la lista solo aparece el nombre. Para poder ver más detalles haremos lo siguiente: en la parte superior de la página hay un link llamado “Modificar formato”, el cual nos permite modificar el formulario de contacto.

personalización de un secundario

En la pantalla de edición del formulario buscaremos al final la lista de asistencias y con el ratón nos posaremos encima del título hasta que aparezca un icono de una llave inglesa. Al pinchar en este icono nos aparecerá una pantalla donde podremos seleccionar los campos que queremos visualizar en la lista. Selecciona los campos Fecha, Estado y Proveedor y pincha en el botón “Aceptar”. Para guardar el formulario pincha en el botón de “Guardar” en la parte superior del editor de formularios, con lo que regresaras al registro de contacto y ahora podrás ver más detalles de las asistencias:

asistencias completadas en salesforce

Muchas gracias a Giovanni Modica por esta serie de artículos uniendo Azure Apps con Salesforce.

 

Un saludo,

El equipo MSDN España