domingo, 10 de abril de 2016

Serialización de entidades en JSON desde procesos (Workflow Tools)

Buenas, sigo avanzando con las funcionalidades desde Workflows.

Hoy he realizado una actualización, en la que he añadido una nueva funcionalidad y adicionalmente he realizado unso cambios solicitados por la comunidad.

Los campos es el de cambiar los nombres para mostrar de las acciones, por nombre mas “User friendly”. Ahora al seleccionar una acción desde los workflows, los usuarios verán las acciones de forma mas simple.

Por otra parte, estoy empezando a pensar en añadir algo que pueda ayudar para realizar integraciones. Muchas veces las integraciones de datos, pasan por ser envíos de datos en formato JSON.

Entonces la funcionalidad de hoy, lo que hace simplemente es recorrer todos los datos de la entidad, y generar un “string” con el JSON de todos los valores de todos los campos. Este JSON puede ser utilizado con posterioridad en cualquier otra acción del workflow.

Explico simplemente como siempre como funciona. Lo primero es seleccionar la acción (notar que han cambiado los nombres de las actividades):

SNAGHTML74b1ed9

Luego seleccionamos el registro a serializar mediante la URL del mismo:

SNAGHTML74b7bdd

Luego podemos utilizar el JSON de salida en cualquier acción del Workflow:

SNAGHTML74c1d5d

Finalmente os dejo un ejemplo de un JSON serializado de una cuenta:

SNAGHTML74c8203

Espero a futuro poder añadir funcionalidad de integración, como por ejemplo a través de WebHooks para enviar estos JSONs.

un abrazo!

@demian_rasko

domingo, 3 de abril de 2016

Eliminación de registros desde Workflows (workflow Tools)

En los últimos días, me han contactado algunas personas reportando un par de incidencias en mi componente de Workflow Tools que comparto en Codeplex: https://msdyncrmworkflowtools.codeplex.com/

En concreto tenía dos “bugs” en la funcionalidad de Clonado relacionado con los estados de las Citas y con los activity party, y otro “bug” en el de “Check User in Role” cuando había roles en varias Unidades de Negocio. En fin, estos temas me los han reportado en la misma página de Codeplex, y ya los he resuelto.

Adicionalmente hoy he añadido una funcionalidad que misteriosamente no existe de forma “estandar” en Dynamics CRM. Es el tema de borrado de registros. El nuevo paso que añadí, permite eliminar registros desde un workflow de dos formas:

  • Desde la URL del registro
  • con el GUID y el tipo de registro

Como siempre, explico como funciona. Primero seleccionamos la actividad:

SNAGHTML4ffac40

y una vez seleccionado, tenemos dos opciones de borrado. Primero con la URL del registro:

SNAGHTML50020c4

y luego, con el GUID y el tipo de registro:

SNAGHTML5005f83

Los parámetros son entonces:

  • Delete Using Record URL: Para seleccionar el modo de eliminación
  • Record URL: Requerido si "Delete Using Record URL" es true
  • Entity Type Name: nombre de esquema (en minúsculas) del tipo de entidad a ser eliminado. Requerido si "Delete Using Record URL" es false
  • Entity Guid: Guid del registro a ser eliminado. Requerido si "Delete Using Record URL" es false

Esta historia sigue creciendo y creciendo!! cada vez mas cosas se pueden hacer sin abrir el Visual Studio!!! Winking smile

espero les guste, y como siempre, se acepta sugerencias de mejora!

un abrazo!

@demian_rasko

sábado, 2 de abril de 2016

MVP para 2016 por cuarto año consecutivo

Ayer he recibido el email de reconocimiento como MVP para el año 2016, como todos los años el 1 abril, y sobre la misma hora (por la tarde hora española):

SNAGHTML1c01dcec

Es un orgullo volver a ser reconocido por mis contribuciones en las comunidades, cosa que me motiva a hacer mas cosas. Así que otro año mas, compartiendo este apasionante mundo del Dynamics CRM!

Un abrazo!

@demian_rasko

domingo, 20 de marzo de 2016

Trabajo con Strings desde workflows (Workflow Tools)

Buenas! hoy he añadido nuevas funcionalidades a mi componente de Workflows, que creo que puede ser muy útil. Como siempre lo publico en mi Codeplex: https://msdyncrmworkflowtools.codeplex.com/ con todo el código abierto y compartido.

Muchas gracias a “carltoncolter” (https://manipulationlibrary.codeplex.com/) ya que me he inspirado en una solución que hizo para CRM 4.0 para añadir esta funcionalidad en mi componente.

Muchas veces en la ejecución de los workflows necesitamos hacer operaciones con campos de tipo texto, y estas son las funcionalidades que he añadido:

  • Texto con palabras en mayúsculas
  • Longitud del texto
  • Padding (completar con un carácter hasta un tamaño fijo)
  • Reemplazar textos
  • Substring (recortar un trozo del string)
  • Trimmed (quitar espacios por delante y detrás)

Como siempre, para utilizar esta actividad, descargar la nueva versión y utilizar la acción “String Functions”:

SNAGHTML30d8ab5

Y luego los parámetros:

SNAGHTML30dc9c1

Los parámetros de entrada del workflow son:

  • Input Text: texto de entrada a ser procesado
  • Capitalize All Words: para definir se si podrá la mayúscula solo a la primera palabra o a todas 
  • Padding: Pad Character: Definir el caracter de relleno
  • Padding: Pad on the Left: definir si el relleno es por la derecha o izquierda
  • Padding: Final Length: Longitud final del texto con el relleno
  • Replace: Old Value: Texto original a ser buscado para reemplazados
  • Replace: New Value: nuevo texto de reemplazo
  • Replace: Case Sensitive: definir si será sensible a mayúsculas o no el reemplazo
  • Substring: From Left to Right: define si el recorte, empieza por la derecha o izquierda
  • Substring: Start Index: Índice de inicio del recorte
  • Substring: Length: longitud del recorte

Los resultados de la ejecución de esta acción, devuelve todos los resultados, para que podamos utilizar lo que queramos:

SNAGHTML30f6e69

Espero les haya gustado, sigo buscando ideas….y seguiré evolucionando el componente!!!

un abrazo!

@demian_rasko

sábado, 12 de marzo de 2016

Actualizando los UserSettings de forma automática (Workflow Tools)

Las experiencias del día a día de los proyectos son una fuente inagotable de ideas para publicar cosas en mi blog.
Hoy he añadido una nueva “Tool” a mi ya conocida “Workflow Tools”, que comparto en Codeplex: https://msdyncrmworkflowtools.codeplex.com/
Hoy he añadido una cosilla que todo necesitamos en especial en aquellos proyectos que tienen muchos usuarios. La utilidad de hoy se llama “Set User Settings” y nos permitirá predefinir desde un Workflow, ciertos valores de los settings de usuario.
La funcionalidad es bastante simple, primero añadimos la acción:
SNAGHTMLd367c61
Y luego en los parámetros, podemos ir seleccionado los valores a introducir:
SNAGHTMLd36ecfd
La explicación de cada uno de los parámetros es la siguiente:
  • User: El usuario que se actualizará
  • PagingLimit: Registros por página en las vistas de CRM. los valores pueden ser: 25,50,75,100,250
  • AdvancedFindStartupMode: Determina la visualizacion predeterminada de las búsquedas avanzadas: 1:simple, 2: detalle.
  • TimeZoneCode: Determina la zona horaria del usuario. Si se pasa un “0” se ignora el valor. un ejemplo de todos los valores a introducir se puede ver aquí: http://www.powerobjects.com/2014/07/25/importing-values-time-zone-fields-dynamics-crm/
  • HelpLanguageId: Específica el código de idioma de la ayuda de CRM para el usuario. “0” para ignorar el valor.
  • UILanguageId: Especifica el idioma de la interfaz de usuario (UI) de CRM. “0” para ignorar el valor.
  • DefaultCalendarView: determina el valor predeterminado de la vista del calendario.
    • 0 para “día”
    • 2 para “mes”
    • 1 para “semana”
Pensar, en todas las posibilidad que nos puede dar esto, por ejemplo para iniciar todos estos “settings” de forma masiva, incluso para dejar un Workflow preparado para que futuros nuevos usuarios se inicien con estos valores, o utilizar un “dialogo”, para actualizar estos datos de usuarios…etc…
Espero les guste y lo encuentren útil!
un abrazo!
@demian_rasko

domingo, 28 de febrero de 2016

Creación de un Worker Role de Azure conectado con Dynamics CRM Online

Hola, hoy voy a cambiar un poco la línea de mis últimos “posts”, para empezar a meterme un poco mas en el mundo de Azure.
Como todos saben, Azure es una de las áreas de mayor inversión por parte de Microsoft y semanalmente tenemos noticias de nuevas funcionalidades en el Cloud.
Hoy, quiero hablar de lo que se llaman “Worker Role” de Azure.
Para la descripción de los Worker Roles, cito la siguiente información:
<inicio de la cita>
La arquitectura de un servicio alojado en Windows Azure se basa en componentes auto-contenidos desarrollados típicamente con código .NET. Estos componentes son conocidos en Windows Azure como roles.
El siguiente diagrama explica su arquitectura:

Existen dos tipos de roles en Windows Azure:
  • Web rol: Un ‘web rol’ es una aplicación basada en web accesible mediante HTTP o HTTPS. Un web rol es alojado en un entorno de ejecución que soporta un subconjunto bastante amplio de ASP.NET y Windows Comunication Foundation.
  • Worker rol: Un ‘worker role’ es un proceso que corre en segundo plano. Sería el equivalente a un servicio de Windows en la plaforma Windows Azure. Un worker rol se puede comunicar con los servicios de almacenamiento y de colas de Windows Azure, incluso puede comunicarse directamente con otros roles.
(fuente de esta descripción: http://www.estoyenlanube.com/recursos/windows-azure/arquitectura-de-una-aplicacion-windows-azure/)
<fin de la cita>
En este caso, lo que voy a hacer, es crear un “Worker Role”, enfocado en la realización de tareas contra un Dynamics CRM Online, en este caso, la creación de una Cuenta, cada 10 segundos. Es algo simple, pero que puede enseñar fácilmente como funciona.
Los pasos a seguir para el desarrollo de este servicio en la nube son los siguientes:
Creación del proyecto “Servicio de nube Azure”:
SNAGHTML29446e52
Seleccionamos el tipo de Worker Role:
SNAGHTML29452aad
En el proyecto de tipo worker role (que es una dll), primero añadimos las librearías de la SDK de CRM que vamos a utilizar y luego desarrollamos dentro del método “RunAsync” la lógica de negocio que queremos que se ejecute. En este caso, nuestro código se conecta con un CRM Online, y crea una cuenta, luego espera 10 segundos, y se volverá a ejecutar, igual que como funciona un servicio de Windows.
SNAGHTML2946fde7
Una vez desarrollado, podemos depurarlo en local, o podemos publicarlo. Para publicar el servicio en Azure, hacemos click derecho en el proyecto de Cloud Service y le damos a publicar:
SNAGHTML294a1d95
Nos pedirá autenticarnos con nuestro usuario de Azure:
SNAGHTML294a85e4
Definimos una serie de parámetros en el segundo paso:
SNAGHTML294aef5c
y confirmamos y todo se despliega “mágicamente” en la nube:
SNAGHTML294b2939
En mi CRM Online, ya puedo ver que se empiezan a crear nuevas cuentas:
SNAGHTML294c8474
Dentro de mis servicios en la nube, además puedo ver como va de rendimiento, y consultar su uso mediante muchas métricas de CPU, red, disco, etc.:
SNAGHTML294ea223
Excelente! he tardado solo 5 minutos y ya he publicado un servicio en mi cuenta de Azure, que se ejecuta constantemente allí, de forma igual a la que funciona un servicio de Windows.
Este tipo de servicios, pueden ser muy útiles en implantaciones de CRM Online, para ejecutar procesos constantes por ejemplo de sincronización de información, o de comunicaciones.
Espero les haya gustado, y les pueda dar ideas para nuevas implementaciones en la nube Winking smile
un saludo
@demian_rasko

domingo, 21 de febrero de 2016

Añadiendo y quitando roles a usuarios y equipos (Workflow Tools)

Buenas, pasados unos días algo dificiles, vuelvo a mi blog.
Esta vez, he añadido 4 nuevas acciones a mis herramientas de Workflow. Las herramientas permiten:
  • Añadir Roles de seguridad a Usuarios
  • Añadir Roles de seguridad a Equipos
  • Quitar Roles de seguridad a Usuarios
  • Quitar Roles de seguridad a Equipos
Mi componente cada día crece mas, y ya tiene 21 funcionalidades, y sigue creciendo mes a mes.
Mediante estas nuevas funcionalidades, podemos “jugar” con los roles de los usuarios y de los equipos de forma dinámica y ágil, promoviendo que determinados procesos de negocio definidos en Dynamics CRM, tengan consecuencias en la asignación de los roles de seguridad.
La utilización es muy muy simple, y aqui os dejo ejemplo de usuarios y equipos:
SNAGHTML7cf60d
SNAGHTML7d1ca0
He pasado pruebas con diferentes usuarios y equipos, incluso con diferentes unidades de negocio. Solo un tema importante a tener en cuenta, es que al seleccionar el rol de seguridad, solamente se puede seleccionar el rol de seguridad de la unidade de negocio ráiz (la padre de todo).
Espero les guste!!
abrazo!
@demian_rasko