miércoles, 30 de marzo de 2016

AssignRequest en Dynamics CRM

Hace mucho tiempo no escribía en este blog, y hoy quiero retomar un poco temas de Microsoft Dynamics CRM ya que es en lo que enfoco la mayor parte de mi trabajo.

Hoy vamos a hablar un poco de la asignación de registros en Dynamics y la importancia de realizar dicha asignación de registros de una manera adecuada en este caso con el "AssignRequest".

Primero que nada, expliquemos que es una asignación de registros en Dynamics CRM para aquellas personas que apenas se están iniciando en el mundo de Dynamics.  Una asignación de registros, es el mecanismo por el cual Dynamics controla y brinda propiedad de acceso uno o varios  registros a usuarios o equipos, con el fin de que dichos usuarios o los usuarios que estén incluidos en los equipos tengan acceso a dichos registros por medio de los roles que tengan asignados. de esta manera, Dynamis evita que tengamos que realizar algún tipo de codificación para que el usuario no tenga acceso indebido a estos registros.

La asignación de registros únicamente es válida para aquellas entidades que sean creadas o que vengan pre configuradas en Dynamics como entidades de propiedad"Usuario o Equipo" como se muestra en el siguiente pantallazo:

Propiedad (Definición de la entidad)

Algo importante a destacar cuando creamos una entidad de propiedad usuario o equipo, es que se crea unpermisos especial a nivel de rol sobre esta entidad llamado "Asignar". Lo siguiente que ocurre es que en la definición de la entidad se crea unos atributos invisibles llamados "OwningBusinessUnit" y "OwningUser", que corresponden a la unidad de negocio del propietario y al usuario propietario respectivamente. Y se crea un atributo llamado Ownerid, que es el usuario propietario. Este último es visible.

Dicha asignación de acuerdo a los roles que posea el usuario autenticado en el sistema, podrán reflejar comportamientos de Visualización, Modificación, Eliminación Asignación, Anexar y Anexar a.

La asignación de registros se puede ejecutar de manera visual por las opciones que trae Dynamics de fábrica. aunque en algunas ocasiones, estas acciones también pueden ser lanzadas a través de extensiones tales como Plugins, Javascripts o llamando el Organization Service.

Cuando hacemos la asignación de manera visual no existe inconveniente alguno,  Pero.......... que ocurre cuando hacemos una asignación de un registro en Dynamics CRM por medio de un mecanismo de extensión?.

La manera correcta de hacer la asignación de un registro por medio de un mecanismo de extensión como por ejemplo un plugin, es realizando un AssignRequest como se muestra en el siguiente código de ejemplo:

Pero muchas veces lo realizamos haciendo una asignación directa al atributo owner y haciendo un service.update a la entidad.

Cuando lo hacemos de la manera que acabo de mencionar ocurren varias cosas incorrectas:

  • Únicamente cambia el atributo ownerid: No se actualiza el atributo OwningBusinessUnit, impidiendo el acceso al registro al usuario que lo tiene asignado. Muchas veces me pasaba que realizaba la asignación por medio del Update y el usuario que tenía asignado el registro lo podía abrir pero no editarlo. y esto era porque la unidad de negocio que había en el atributo OwningBusinessUnit, no correspondía con la del usuario propietario del registro.
  • No se ejecuta el mensaje Assign :  Si hay extensiónes que se ejecutan bajo el mensaje "Assign", estas no serán ejecutadas. se ejecutará en cambio un mensaje Update.
Por ende, como conclusión y buena práctica, recomiendo que se haga la asignación con el AssignRequest, ya que con este fin fué creado, este request puede ser ejecutado desde un plugin, Custom Activity Workflow, Javascript e Invocación al OrganizationService así que no tendremos ningún impedimento a la hora de utilizarlo.

Mil gracias por tomarte el tiempo y leer este contenido. si tienes alguna anotación adicional o algo que consideres que puedo mejorar en esta redacción, no dudes en escribirme. la finalidad de este blog es tener un espacio donde se genere conocimiento.

No hay comentarios: