domingo, 20 de diciembre de 2015

Cambiando el proceso de negocio de un registro desde workflow (Workflow Tools)

Hola a todos, sigo avanzando con mi desarrollo compartido, ahora ya enfocado en nuevas funcionalidades que nos ofrece Dynamics CRM 2016.
Si vemos en la nueva versión, en el artículo “What's new for developers: Microsoft Dynamics CRM 2016” (https://msdn.microsoft.com/en-us/library/gg309589.aspx) podemos ver que hay un nuevo mensaje “SetProcessRequest”.
Básicamente nos permite pasarle un registro, y definirle que proceso de negocio queremos aplicarle. Como bien saben, solo hay un proceso de negocio en ejecución por registro, por lo tanto al seleccionar uno nuevo, perdemos el anterior.
Esta nueva versión de los Workflow Tools, está como siempre disponible en Codeplex: https://msdyncrmworkflowtools.codeplex.com
Esta vez como ya estoy añadiendo funcionalidades solamente disponibles para Dynamics CRM 2016, solo lo dejaré disponible para esta versión. De todos modos, el código esta compartido para cualquiera que quiera mirarlo.
Para Utilizar este nuevo método seleccionamos la acción:
wf1.gif
y Luego añadimos la URL del registro a actualizar, y el Proceso de negocio:
wf2.gif
Con esto ya estaría listo. Solo unos comentarios:
  • En el parámetro de “Process” al seleccionar el proceso, aparecen todos los workflows, y hay que cambiar la vista para poder seleccionar Procesos de negocio.
  • Si ejecuto esta acción, y asigno el mismo proceso de negocio que ya tenía el registro, se reinicia la ejecución desde el primer paso.
  • Si se le pasa un valor vacío en el proceso de negocio, se quita del registro.
Espero les guste!
abrazo!
@demian_rasko

viernes, 27 de noviembre de 2015

Clonando registros desde Workflows (Workflow Tools)

Como no, sigo con mi “zaga” de mejoras en mi componente de workflows.

Si sigo así, cada día menos deberemos desarrollar en Dynamics CRM, y podremos usar cada vez mas soluciones de workflows Guiño

Hoy he añadido una actividad nueva, que posibilita la clonación de registros. Esta funcionalidad es muy buena por ejemplo para duplicar registros de prueba, o para guardar versiones históricas de registros, copiando un registro completo, y luego pudiendo actualizar un numero de versión o desactivarlo, por ejemplo.

Como siempre, toda la documentación y los códigos fuentes de lo que he desarrollado está aquí: https://msdyncrmworkflowtools.codeplex.com/

Para utilizar esta nueva funcionalidad es simple, primero seleccionamos la actividad de clonación de registros:

SNAGHTML848844b

y luego pasamos el único parámetro que hay y que es obligatorio, con la URL del registro que queremos clonar. Esta URL se coge del workflow como enseño a continuación:

SNAGHTML848f8a0

Simple como siempre, pero el código no lo es tanto. El código que he desarrollado, clona todo tipo de registros (lo he testeado con leads, cuentas y contactos y de forma síncrona y asíncrona y parece funcionar bien). Como no se ni que tipo de entidad debo clonar, ni que datos estan rellenos ni que campos estan personalizados, debo coger todo esto dinámicamente, pero claro, no todos los campos de un registro son susceptibles de tener un valor en la creación, por lo que he tenido que recoger los metadatos de la entidad que se quiere clonar, recorrerme los atributos y utilizando la propiedad “IsValidForCreate”, recoger solo los campos que me permite meter un valor en la creación.

Espero les guste, les sirva, y seguiré los próximos días explorando nuevas funcionalidad que añadir Guiño

abrazo!

@demian_rasko

sábado, 14 de noviembre de 2015

Quitando miembros a una Lista de marketing desde Workflow (Workflow Tools)

Hola a todos, hoy vuelvo a añadir nuevas funcionalidades a mi librería de workflows disponible en Codeplex:https://msdyncrmworkflowtools.codeplex.com

La última vez incluí la funcionalidad de añadir miembros a una lista de marketing, y hoy cierro el círculo con la posibilidad de eliminar miembros de una lista de marketing Guiño.

Aprovechando, he compilado la solución con las DLL de la nueva versión de la SDK (7.1.1) que podéis descargaros de aquí: https://www.microsoft.com/en-us/download/details.aspx?id=44567 

La funcionalidad es la misma que la de la versión anterior, pero seleccionando una acción diferente:

wf2.gif

Funciona con Cuentas, contactos y Leads. Solo recordar que las Listas deben ser de tipo “estáticas” (sino claro, no tendría sentido Guiño):

wf3.gif

Espero les guste y lo puedan utilizar.

Por favor, recordar que estoy abierto a recibir propuestas de mejoras, o funcionalidades que os parezcan interesantes.

un abrazo!

@demian_rasko

sábado, 24 de octubre de 2015

Añadir miembros a una Lista de marketing desde Workflow (Workflow Tools)

Hola a todos, hoy vuelvo a añadir nuevas funcionalidades a mi librería de workflows disponible en Codeplex: https://msdyncrmworkflowtools.codeplex.com

Hoy he añadido una nueva funcionalidad para poder incluir registros en una lista de marketing.

Ahora podemos seleccionar una lista de marketing, y luego añadir un registro de tipo:

  • Cuenta
  • Contacto
  • Cliente potencial

Podéis acceder al sitio de codeplex, y descargaros la solución para CRM 2015 Update 1 (online) o para CRM 2015 Onpremise: https://msdyncrmworkflowtools.codeplex.com/releases/view/618086

Sigo mejor mejorándolo día a día, para que cada vez tenga mas funcionalidades. Además disponéis allí de todo el código de forma abierta.

La funcionalidad es muy sencilla, una vez registrada la librería, podréis seleccionar la siguiente acción:

SNAGHTML30a79025

Y luego introducir los parámetros necesarios:

SNAGHTML30a73f36

Espero les guste, tener en cuenta que estoy abierto a nuevas ideas…Guiño

@demian_rasko

lunes, 12 de octubre de 2015

Consultar Equipos de usuarios con Dynamics CRM 2015 Workflow Tools

Hola!

Hoy he publicado una nueva versión de mis ya conocidas “Tools” para workflows para CRM 2015 como ya conocen, disponibles en Codeplex y con todo el código disponible: (https://msdyncrmworkflowtools.codeplex.com/).

Hoy he añadido una nueva funcionalidad, que nos permitirá ir aún mas lejos con nuestros workflows. La posibilidad de consultar si el usuario de ejecución está en un equipo determinado.

Esto es muy útil, ya que muchas veces necesitamos saber en que equipo está un usuario, para realizar determinadas acciones u otras.

Bien, la funcionalidad, como siempre es sencilla. Primero vamos a añadir la acción:

SNAGHTML37a3ef05

Luego, seleccionamos el equipo que queremos consultar:

SNAGHTML37a45c46 

Finalmente podemos utilizar el valor que nos devuelve (true/false), para lo que queramos, por ejemplo ponerlo en un campo:

SNAGHTML37a4cdad

Espero les guste esta nueva funcionalidad, y como siempre, sigo abierto a escuchar nuevas ideas para seguir mejorando la solución día a día añadiendo nuevas funcionalidades.

@demian_rasko

domingo, 4 de octubre de 2015

Creando un Servicio WCF en Azure conectando con Dynamics CRM Online

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/)

SNAGHTMLe6f7c5f

Y luego instalarlo:

SNAGHTMLe6f9f97

Luego vamos a crear un nuevo proyecto de tipo “Aplicación web ASP.NET”:

SNAGHTMLe70d930

En este caso vamos a crearlo vacío:

SNAGHTMLe70fff2

Y seleccionamos los datos de Azure donde vamos a desplegar nuestro servicio web:

SNAGHTMLe712711

Y esperamos a que se configure todo:

SNAGHTMLe714d66

En nuestro proyecto vacío vamos a añadir un servicio Web WCF:

SNAGHTMLe716850

Y luego vamos a NuGet para añadir las referencias a la SDK de Dynamics CRM:

SNAGHTMLe718975

Instalamos Microsoft.Crm.Sdk.CoreAssemblies:

SNAGHTMLe71d831

Y Microsoft.Crm.Sdk.Extensions (para utilizar la conexión simplificada):

SNAGHTMLe71f648

Desarrollamos el Web Service, en este caso muy simple, conectamos con Dynamics CRM Online, y luego creamos una Cuenta:

SNAGHTMLe724a92

Ahora vamos a desplegar en Azure. Botón derecho y Publicar:

SNAGHTMLe72704b

Validamos la conexión:

SNAGHTMLe72874d

Siguiente:

SNAGHTMLe72a5c2

Verificamos que todo esta bien:

SNAGHTMLe72bcc5

Cuando acaba el despliegue, no enseña una página de confirmación como esta:

SNAGHTMLe72d492

Verificamos en la consola de salida que todo haya ido bien:

SNAGHTMLe72e982

Y verificamos en el portal de Azure, que el sitio web se ha creado correctamente:

SNAGHTMLe730027

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:

SNAGHTMLe731871

Introducimos la URL de nuestro servicio web WCF en Azure:

SNAGHTMLe733010

Y luego instanciamos el mismo y lo ejecutamos, y depurando podemos verificar que todo va bien:

SNAGHTMLe7346e4

Una vez ejecutado, vamos a nuestro Dynamics CRM Online, y vemos que funciona! se ha creado una nueva Cuenta:

SNAGHTMLe7365f5

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:

SNAGHTMLe737c7b

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

martes, 29 de septiembre de 2015

Nueva versión: Dynamics CRM 2015 Workflow Tools

Hola a todos, hoy voy a publicar acerca de una modificación que he realizado sobre mi solución de Dynamics CRM 2015 Wokflow Tools (https://msdyncrmworkflowtools.codeplex.com) que tengo compartida en Codeplex.

Hace tiempo que no la actualizo, aunque en realidad en base a colaboraciones de gente que propone cambios y soluciona “bugs” en esta librería, me he tentado a añadir mas funcionalidad.

En esta nueva versión, la 1.0.5.0 he modificado:

  • [Bugfix]: en casos particulares no se reiniciaban bien los privilegios cuando se compartían/des compartían registros
  • [New feature]: Nueva acción “CheUserInRole” para verificar si un usuario tiene un rol de seguridad determinado
  • [New]: He creado soluciones descargables para versión CRM Online 2015 Update 1 (7.1) y para CRM 2015 Onpremise (7.0).

La nueva funcionalidad de verificación del role de un usuario se usa así:

SNAGHTML2fb22b39

Luego definimos por que role queremos comprobar:

SNAGHTML2fb2d2a4

Como resultado obtenemos un valor booleano que nos dice si el usuario que lanzó el flujo de trabajo, tiene ese rol o no y lo podemos utilizar como un campo mas del workflow para condiciones o valores:

SNAGHTML2fb3e685

Espero les haya gustado y les sirva de utilidad….

un abrazo

@demian_rasko

sábado, 26 de septiembre de 2015

Utilizando la Nueva Web API

Como ya os he contacto en un pasado POST (http://www.demianrasko.com/2015/08/nueva-web-api-en-update-1.html) la nueva Web API, ya está aquí, y llega para quedarse.

Esta nueva Web API abrirá un nuevo mundo en el desarrollo con Dynamics CRM, y hoy os voy a mostrar como poder empezar a “jugar” con ella desde una aplicación de consola. Tener en cuenta que está en preview y solo es para pruebas.

Lo primero que he hecho, es crearme una trial en CRM Online,o utilizar una existente pero hay que asegurarse que tiene Update 1, y luego habilitar la preview de Web API:

image

Para comprobar que funciona, podéis meter las URLs y probarlo por ejemplo:

image

SNAGHTML2f29100a

SNAGHTML2f28ce9c

Ok, ya funciona. Lo siguiente que hay que hacer es registrar nuestra aplicación de consola que vamos a desarrollar con Azure para poder dar permisos a la misma de acceder a datos de CRM. El paso a paso para hacer esto está descrito en este artículo: https://msdn.microsoft.com/dynamics/crm/mt149065.aspx

En realidad significa dos pasos:

1) Registrar el AD del CRM el de nuestro Azure, para que la autenticación de los dos ADs se “vean” bien

2) Registrar nuestra App y darle permisos

Para registrar el AD, básicamente vamos a Azure, y añadimos el AD de nuestra trial de CRM Online, y nos logueamos con las credenciales del CRM Online y autorizamos el enlace:

SNAGHTML2f2cc496

Seleccionamos “Usar directorio existente” (el de CRM Online)

SNAGHTML2f2d14aa

Nos autenticamos con las credenciales de nuestra trial:

SNAGHTML2f2d532a

SNAGHTML2f2db196

Confirmamos la relación entre ADs:

SNAGHTML2f2de884

Lo siguiente que hay que hacer es ir a ese AD, y añadir nuestra apliación y darle permisos. Como resultado tendremos un Aplication ID

SNAGHTML2f2f822f

Seleccionamos agregar la aplicación que estamos desarrollando (y seguimos los pasos siguientes):

SNAGHTML2f2fba47

Finalmente tenemos el Id de cliente, que utilizaremos en nuestro código:

SNAGHTML2f300058

Ahora hay que darle permisos a nuestra nueva aplicación, para conectarse al CRM:

SNAGHTML2f304baa

Seleccionamos Dynamics CRM Online:

SNAGHTML2f3097f5

Le damos los permisos:

SNAGHTML2f30dd1c

Genial, una “pequeña” parte del trabajo, ya está hecha.

Ahora vamos a abrir el Visual Studio por fin. En este caso voy a basarme en los ejemplo que hay en https://code.msdn.microsoft.com/Basic-Operations-with-web-67fc1d8f

Primero abrimos el proyecto y en el App.Config cambiamos lo siguiente (en ClienteID y en RedirectURL debemos introducir lo que pusimos en Azure al registrar la App):

SNAGHTML2f38ab66

Al ejecutar el código, en la línea que intenta autenticar con CRM para recoger el Token, nos aparecerá una ventana de autenticación con CRM:

SNAGHTML2f3c62a2

Luego viene la línea donde intenta crear una Cuenta, que es una petición simple de tipo “POST” con al jSON de la Cuenta a crear:

SNAGHTML2f3d3bad

Si ejecutamos esa línea podemos ver en nuestro “Fiddler” como esta Cuenta es enviada y la URL con la que nos responde:

SNAGHTML2f3dcb89

Que si la Copiamos y pegamos en nuestro navegador tenemos la misma:

SNAGHTML2f3ee5f2

Simple, sencillo, moderno, abierto y directo.

Por fin disponemos en Dynamics CRM de una API completamente RESTfull que implementa todos los métodos y actualizada a los estándares oData v4.

Emocionantes tiempos nos vienen en los próximos tiempos para los desarrolladores de Dynamics CRM. Sin duda un gran paso adelante en la plataforma y un gran trabajo del equipo de producto en este punto.

Creo que si bien este punto es muy “teki” (técnico) y no todos los implementadores de CRM son desarrolladores, el mensaje importante a destacar es que Dynamics CRM será convertida en una plataforma que si bien sigue siendo desarrollada en .NET por debajo, será abierta a todos los lenguajes de desarrollo y tecnologías y dispositivos. Será mucho mas fácil realizar integraciones, aplicaciones móviles, etc.

Espero les haya gustado!

Un abrazo!

@demian_rasko