Integración server-side de Microsoft Dynamics CRM Online con Microsoft Exchange Server híbrido

¿Tienes en tu organización Dynamics CRM y Exchange ya sean on-premises u online? Entonces estarás al tanto de que hay una característica de integración entre ambos llamada server-side synchronization. Como bien dice la palabra, permite que se realice una sincronización de mensajes de email, citas de calendario, contactos y tareas entre Dynamics CRM y Exchange, de forma que trabajemos con los mismos elementos en ambos sistemas.

El problema

Hay una guía muy completa en Technet sobre como establecer esta sincronización, por lo que no va a ser el menester de este artículo. ¿De qué quiero hablaros entonces? Imaginad que tenemos el siguiente escenario:

  • Dynamics CRM Online
  • Exchange Server 2010 ó 2013 hibridizado con Exchange Online (Office 365), donde todos los usuarios de CRM Online tienen su buzón en Exchange Online.

Si queremos configurar esta integración, nos llevaremos un bajón cuando verifiquemos la documentación de escenarios no soportados y descubramos lo siguiente:

Server-side synchronization doesn’t support the following scenarios:

  • Hybrid deployments:
    • CRM Online with Exchange (on-premises).
    • Microsoft Dynamics CRM (on-premises) with Exchange Online.
  • Mix of Exchange/SMTP and POP3/Exchange.
  • Creation of mass email marketing campaigns.
  • Extensibility scenarios like extending EWS/POP3/SMTP protocols and creating custom email providers.
  • Exchange Server 2003 and Exchange Server 2007.
  • Server-side synchronization in CRM Online, or in a Microsoft Dynamics CRM (on premises) deployment that is configured for FIPS 140-2 compliancy, requires a POP3/SMTP email server that is also FIPS 140-2 compliant. Some email servers are not FIPS 140-2 compliant, such as MSN, Outlook.com, or Windows Live Mail.

For most situations not supported by server-side synchronization, you can use the Microsoft Dynamics CRM Email Router. More information: Choose a method for message synchronization

Efectivamente parece que si realizamos implementaciones híbridas no va a funcionar la integración. Sin embargo, y dado el detalle de que en Plain Concepts, todos los usuarios que hacen uso de Dynamics CRM Online también tienen su buzón en Exchange Online, me llevó a preguntarme si no había forma de hacerlo funcionar en nuestra casuística concreta.

Para habilitar la integración, como es habitual, tenemos que crear un nuevo Email Server Profile, tal como se muestra en la siguiente imagen:

image

Como veréis, llama la atención de que no hay ningún parametro de configuración de Exchange, por lo que parece que se retira esta configuración automáticamente mediante Autodiscover. Si intentamos continuar con la configuración de Dynamics CRM Online con nuestro entorno híbrido y utilizamos Autodiscover, la configuración fallará sin remedio.

Autodiscover es un servicio disponible desde Exchange Server 2007 en adelante que permite mediante una consulta HTTP con nombre de usuario y contraseña retirar los detalles de configuración del buzón del usuario autenticado.

En una implementación híbrida de Exchange Server, el registro de Autodiscover siempre apunta a on-premises, ya que así puede facilitar la información de configuración de buzones almacenados en nuestro Exchange local; y en caso de que el buzón se encuentre en la nube realizará una redirección HTTP 302 hacia el Autodiscover de Exchange Online. Este HTTP 302 es el que parece no estar soportado por la configuración de Dynamics CRM Online.

Como este servicio lo único que hace es facilitarnos automáticamente parámetros de configuración, ¿por qué no intentamos especificarlos manualmente? Así pues nos enfrentamos a dos problemas:

  • Usar Autodiscover no es una opción puesto que Dynamics CRM Online no parece llevarse bien con las redirecciones HTTP.
  • En el formulario de configuración no se nos dá opción a especificarla de forma manual.

La solución

Si abris la ventana de configuración de Email Server Profile y vuestra vista es lo suficientemente rápida veréis algo raro: hay opciones de configuración que están mientras carga la interfaz y que tras terminar desaparecen. ¡¡Y entre ellas está la configuración manual de la conexión con Exchange!! Por lo visto Microsoft decidió deshabilitar esta opción y forzar el uso de Autodiscover en la actualización de Dynamics CRM Online de diciembre de 2014, alegando que se evitarían errores de configuración por parte del usuario.

Más allá de valorar si esta decisión fue acertada o no… la realidad es que las opciones han sido sólo deshabilitadas a nivel de interfaz de usuario. Hablando más técnicamente, los controles HTML se encuentran en la interfaz sólo que están ocultos para que no podamos manipularlos. Si sólo están ocultos… un poquito de Javascript en la interfaz podría rehabilitarlos fácilmente. ¡Vamos a ello!

  1. En Dynamics CRM Online ve a Settings –> Email Configuration –> Email Server Profile –> New
  2. Observarás el curioso efecto que he comentado antes.
  3. Abre la consola de depuración de tu navegador, F12 en Internet Explorer.
  4. Introduce el siguiente código:

Tras ello –y si Microsoft no ha cambiado nada desde el momento de escribir estas líneas- deberíais ver las opciones de configuración ocultas:

image

Ahora sólo nos queda configurar las URLs de Exchange Web Services para que apunten directamente a Exchange Online y no se toque nuestro servidor on-premises para nada. La configuración para Office 365 sería:

Guardamos la configuración y aunque ya no introduzcamos el código podremos ver que esta queda siempre visible, pero ya no se podrá modificar. Y con esto conseguimos que todos los usuarios de Dynamics CRM Online que tengan su buzón Exchange Online disfruten de la integración aunque nuestro entorno de Exchange sea híbrido. Espero que os haya sido útil.

Happy CRMing!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *