Buenas a todos. A pesar que aún quedan algunos proyectos que irremediablemente van a seguir siendo en versiones Onpremise de Dynamics CRM, cada vez más y más clientes optan por entornos de Dynamics CRM Online.
Microsoft esta impulsando la nube con una fuerza sin precedentes, y la estrategia de la compañía por ejemplo en otros productos como Sharepoint o Exchange cuyo roadmap es puramente Online, nos indica que Dynamics CRM será similar.
Dado este escenario, creo que debemos enfocarnos cada vez mas a implementaciones que no tendrán servidores montados en los clientes, sino que estarán en la nube. Esto implica unos grandes beneficios pero también grandes retos.
El primero y el que me voy a enfocar hoy, es el de como crear servicios web que conecten con Dynamics CRM Online. Es un escenario muy habitual que en implementaciones de CRM se tengan que desarrollar servicios web que conecten con CRM para hacer integraciones con otras plataformas.
En un entorno Onpremise, donde ya se dispone de servidores, es fácil crear un nuevo sitio web, y añadir allí nuestros web services. Pero en una implementación en la nube, no parece tener mucho sentido el pedirle al cliente que nos provea de una servidor fisico con IIS configurado para montar nuestros servicios web.
Para esto hoy en día tenemos los web sites de azure (https://azure.microsoft.com/en-us/services/app-service/web/). Básicamente consiste en una plataforma PaaS (Plataforma como Servicio) donde poder montar nuestras aplicaciones web (y web services) en la nube, de forma sencilla, segura, escalable, etc…
Lo que hoy os voy a enseñar es como paso a paso, he creado un servicio web en Azure, que conecta con mi Dynamics CRM Online y creo una cuentas, luego como poder ejecutarlo desde una aplicación de consola local, y como poder monitorizar el funcionamiento del servicio web.
En este ejemplo “paso a paso” voy a utilizar Visual Studio 2015 Enterprise.
Lo primero que hay que hacer es descargar la SDK de Azure para Visual Studio 2015 (https://azure.microsoft.com/en-us/downloads/)
Y luego instalarlo:
Luego vamos a crear un nuevo proyecto de tipo “Aplicación web ASP.NET”:
En este caso vamos a crearlo vacío:
Y seleccionamos los datos de Azure donde vamos a desplegar nuestro servicio web:
Y esperamos a que se configure todo:
En nuestro proyecto vacío vamos a añadir un servicio Web WCF:
Y luego vamos a NuGet para añadir las referencias a la SDK de Dynamics CRM:
Instalamos Microsoft.Crm.Sdk.CoreAssemblies:
Y Microsoft.Crm.Sdk.Extensions (para utilizar la conexión simplificada):
Desarrollamos el Web Service, en este caso muy simple, conectamos con Dynamics CRM Online, y luego creamos una Cuenta:
Ahora vamos a desplegar en Azure. Botón derecho y Publicar:
Validamos la conexión:
Siguiente:
Verificamos que todo esta bien:
Cuando acaba el despliegue, no enseña una página de confirmación como esta:
Verificamos en la consola de salida que todo haya ido bien:
Y verificamos en el portal de Azure, que el sitio web se ha creado correctamente:
Ahora que ya tenemos nuestro servicio web WCF que conecta con CRM publicado en Azure, vamos a crear una aplicación de Consola nueva, para conectarnos y probar nuestro servicio web. Una vez creada esta aplicación, vamos a añadir una referencia a nuestra servicio WCF en Azure:
Introducimos la URL de nuestro servicio web WCF en Azure:
Y luego instanciamos el mismo y lo ejecutamos, y depurando podemos verificar que todo va bien:
Una vez ejecutado, vamos a nuestro Dynamics CRM Online, y vemos que funciona! se ha creado una nueva Cuenta:
Finalmente y luego de hacer muchas otras pruebas, podemos ir a nuestro portal de Azure, y entrando a nuestro Web Site, poder supervisar como esta funcionando, para decidir si hay que escalar el mismo por ejemplo:
Hermoso, simple y genial. Sinceramente, este tipo de cosas a los desarrolladores nos abre mundos increíbles, ya que podemos desarrollar de todo, sin tener en cuenta infraestructuras, servidores ni nada. Es increíble como ha evolucionado la tecnología para poder “abstraernos” tanto de todo lo que hay de sistemas por abajo, de cara a desarrollar este tipo de integraciones.
Espero que les haya gustado, un abrazo…
@demian_rasko