viernes, diciembre 21, 2018

Instalación y configuración de VM Ubuntu 18.x en VirtualBox para Mac OS X

Aunque Mac OS X es una plataforma poderosa y flexible, ampliamente recomendada para desarrollo web, en ocasiones queremos usar un entorno lo más cercano posible al de producción sin tener que abandonar la comodidad del sistema operativo de Apple. Una de las opciones es usar un producto como VMWare o VirtualBox para montar en Mac una máquina virtual (o VM por la sigla en inglés) que contenga el entorno de pruebas o pre-producción (como por ejemplo Linux o Windows Server).

En esta guía paso a paso vamos a poner a funcionar una máquina virtual Ubuntu Server 18.10 en Mac OS X High Sierra (versión 10.13 o superior) usando Oracle VirtualBox 5.2.22.

  1. Descargar e instalar VirtualBox
  2. Crear la máquina virtual en VirtualBox
  3. Creación de una nueva máquina virtual desde cero
  4. Creación a partir de una máquina preconfigurada
  5. Configuración de la red de la máquina virtual
  6. Verificación de que todo funcione correctamente

1. Descargar e instalar VirtualBox

Si VirtualBox  todavía no está instalado en el Mac, es necesario descargarlo de https://www.virtualbox.org/wiki/Downloads:


Como en esta guía estamos trabajando con Mac OS X, dar click en "OS X host", el cual descarga un archivo de nombre "VirtualBox-5.2.22-126460-OSX.dmg" o similar de 95.7MB. Una vez descargado, dar doble click sobre el archivo para iniciar la instalación. Se abre una ventana con el instalador:


Dar doble click sobre el icono de la esquina superior izquierda marcado como "1 Double click in this icon". Se abre la ventana del asistente de instalación, cuyo primer paso es verificar si el software cumple con las condiciones técnicas necesarias. Dar click en "Continue":


Si todo está en orden, pasa al siguiente paso que es seleccionar dónde se va a instalar. La opción predeterminada es suficiente. Dar click en "Continue":


El siguiente paso pregunta si se desea instalar el paquete opcional de línea de comandos de VirtualBox. Se puede dejar, pero si se desea una instalación mínima se desmarca el tercer módulo (ahorra 5KB de espacio) y se da click en "Install":


Una vez finalizado el proceso de instalación, el asistente pregunta si se desea eliminar el archivo de instalación (click en "Move to Trash") o si se desea conservarlo (click en "Keep"). Es recomendable la segunda opción en caso de que haya algún problema y se deba desinstalar VirtualBox y volver a repetir el proceso:


Ya habiendo instalado VirtualBox en Mac OS X, se puede ejecutar desde el lanzador o la carpeta de Aplicaciones.

2. Crear la máquina virtual en VirtualBox

Para crear una máquina virtual desde cero dar click en "New". Aparece una pantalla para definir el nombre de la máquina, el tipo y la versión.

Name es el nombre de la máquina virtual es cualquier nombre que sea significativo para identificarla de otras máquinas que puedan configurarse en el Mac; no tiene nada qué ver con el nombre que identificará internamente a la máquina en la red. Por ejemplo "Ubuntu18" o "DjangoMachine".
Type corresponde a la familia del sistema operativo que se va a a ejecutar en la máquina virtual, como "Linux".
Version lista las opciones disponibles de distribución y arquitectura para el sistema operativo seleccionado en el campo anterior. Por ejemplo "Ubuntu (64 bit)".

Después de seleccionar las opciones apropiadas, click en "Continue":


El siguiente paso es definir cuánta de la Memoria RAM (física) del anfitrión Mac se va a asignar a la máquina virtual cuando esté en funcionamiento. Esto significa que si el Mac tiene 8GB y está usando 3GB, solo quedan disponibles 5GB (la franja verde).

En teoría se podría asignar toda la RAM disponible a la máquina virtual, pero con el riesgo de que el Mac la pueda necesitar mientras se está ejecutando la máquina virtual. Por esa razón es recomendable crear la máquina virtual con 1GB (1024MB) o 2GB (2048MB) y si su funcionamiento es excesivamente lento, apagarla y reconfigurarla con un poco más de RAM hasta que mejore el desempeño o no quede más RAM disponible. 

Para asignar la RAM que va a usar la máquina virtual mientras esté en funcionamiento (ésta se libera al apagar la máquina) deslizar el marcador hasta la posición deseada que indica los MB a los que corresponde. Click en "Continue".


Si se desea crear una máquina virtual a partir de una imagen preconfigurada, saltar el paso 3 e ir directamente al paso 4.

3. Creación de una nueva máquina virtual desde cero

Crear una nueva máquina virtual desde cero es equivalente a instalar y configurar todo como si tuviera un disco duro vacío. Aunque es posible crear y usar una máquina SIN disco duro (podría trabajar con una unidad de DVD o una unidad de almacenamiento conectada al puerto USB) el caso más común es en el que se configura una unidad de disco.

En este caso, seleccionar la segunda opción (Create a virtual hard disk now)  y dar click en "Create":


En la siguiente pantalla el asistente pregunta el tipo de archivo que se usará para representar el disco duro de la máquina virtual. Como en este caso solamente vamos a usar una máquina que se pueda transportar a otros computadores que también usan VirtualBox, la primera opción (VirtualBox Disk Image) está bien. En caso de que se quisiera trabajar con otros productos diferentes a VirtualBox, sería necesario seleccionar alguna de las otras opciones según el caso para asegurar la compatibilidad. Dar click en "Continue":


La siguiente pantalla permite elegir la forma como se administrará el espacio de almacenamiento en la máquina virtual. La primera opción (Dynamically allocated) es útil cuando se está experimentando y no se está seguro de cuánto espacio se pueda llegar a necesitar; permitiendo ahorrar espacio. La segunda opción (Fixed size) ofrece una mayor velocidad a cambio de ocupar siempre el mismo espacio incluso si la máquina virtual no lo está usando. Tras seleccionar la opción deseada, dar click en "Continue".


En la siguiente pantalla se asigna un nombre al archivo de almacenamiento (la opción predeterminada es el mismo nombre de la máquina), se selecciona una ubicación en el sistema de archivos del anfitrión Mac y se le asigna un tamaño máximo. Dar click en "Create":



4. Creación a partir de una máquina preconfigurada

Si no se quiere instalar y configurar una nueva máquina virtual desde cero, es posible descargar una máquina ya preconfigurada con uno de muchos sistemas operativos y versiones. En esta guía se utilizó una máquina Linux Ubuntu Server 18.10 descargada de https://www.osboxes.org/ubuntu-server/:


OSBoxes provee dos versiones de cada máquina: una en formato de VirtualBox (que es nuestra opción predeterminada) y otra en formato VMWare en la pestaña correspondiente. Damos click en el botón "Download" de la primera opción para descargar el archivo comprimido en formato 7z.

Una vez descargado y descomprimido el paquete 7z, entramos a una carpeta que contiene el archivo "Ubuntu Server 18.10 (64bit).vdi". Es recomendable guardar una copia de este archivo antes de usarlo en caso de que sea necesario volver a restaurar la máquina virtual a su estado original descartando los cambios que se le puedan haber hecho durante su funcionamiento.

Copiar el archivo en la ubicación deseada, que puede ser una carpeta en el disco duro del Mac o en una unidad de almacenamiento externa. La segunda opción es ideal si solo se va a usar la máquina virtual ocasionalmente y solo requiere que la unidad de almacenamiento externa esté conectada al Mac cada vez que se vaya a trabajar con la máquina virtual.

En la pantalla de selección de definición del disco duro, seleccionar la tercera opción (Use an existing virtual hard disk file) y dar click en el icono de la carpeta para localizar el archivo en el sistema de carpetas del Mac. Dar click en "Create":


5. Configuración de la red de la máquina virtual

Después de haber definido cualquiera de los dos tipos de almacenamiento de los pasos 3 y 4, queda creada la nueva máquina virtual.

5.1. Configuración global a través del Host Network Manager

Para configurar la red, dar click en el menú File > Host Network Manager. También se puede acceder a dicha pantalla dando click en el icono Global Tools en la esquina superior derecha y seleccionando el menú desplegable Host Network Manager:


En la pantalla, dar click en el icono "Create" de la esquina superior izquierda. Aparece una nueva configuración de adaptador de red con el nombre "vboxnet0". En la parte inferior, en la pestaña "Adapter" y bajo la opción "Configure Adapter Manually" aparecen los campos de configuración del adaptador.

El campo IPv4 Address muestra una dirección IP local con la que VirtualBox va a identificar a la máquina virtual que se conecte a través del adaptador "vboxnet0". En este ejemplo, la dirección predeterminada es 192.168.99.1, pero puede ser cualquier IP que sea consistente con la red local a la que está conectado el anfitrión Mac. Para asegurarlo, el campo IPv4 Network Mask debe quedar 255.255.255.0 como viene predeterminado, a menos que la red local tenga una configuración diferente, que no es nuestro caso.

Como en este ejemplo se está definiendo manualmente una IP estática para el adaptador, el campo "Enabled" debajo de la columna "DHCP Server" en la esquina superior derecha debe quedar vacío. Esto significa que las opciones de la pestaña "DHCP Server" en la parte inferior se dejan vacías porque no se necesita dicha configuración. Dar click en "Apply" y "Close":


Una vez definida la configuración global de VirtualBox, se configuran los adaptadores específicos de la nueva máquina virtual. Estando resaltada la máquina nueva (en este ejemplo llamada "UbuntuDjangoBox"), dar click en el icono "Settings" de la esquina superior izquierda de la ventana de VirtualBox. En la ventana que aparece, ir hasta la sección "Network".

5.2. Configuración del adaptador NAT

En la pestaña "Adapter 1", marcar la opción "Enable Network Adapter" para que se desbloqueen los campos del adaptador. Este es el adaptador que permitirá a la máquina virtual recibir datos de la red.

En Attached to seleccionar "NAT" de la lista desplegable.
Dar click en "Advanced" para desplegar las opciones ocultas.
En Adapter Type seleccionar "Intel PRO/1000 MT Desktop (82540EM)" de la lista desplegable.
La opción Cable Connected debe estar marcada para que el adaptador se pueda usar.
Dar click en el botón "Port Forwarding":


Se abre una pantalla donde se definen los puertos que serán usados para intercambiar datos entre el anfitrión Mac y la máquina virtual Ubuntu. En este ejemplo, se usarán dos puertos: uno para conectarse vía consola a través de SSH y otro para poder acceder a un servidor Django dentro de la máquina virtual desde un navegador en el anfitrión Mac:

Dar click en el icono "+" en el extremo derecho.
En la línea que aparece, llenar la columna Name con un nombre que identifique el servicio para el que se va a usar el puerto. En la columna Protocol, dejar la opción predeterminada "TCP". En la columna Host Port, escribir el puerto a usar desde el anfitrión y en Guest Port escribir el puerto real que internamente se va a usar en la máquina Ubuntu.
Una vez realizada la operación para los servicios que se desea usar, dar click en OK:


5.3. Configuración del adaptador Host-only Adapter

El siguiente paso es configurar el segundo adaptador, que es el que permitirá al anfitrión Mac recibir datos desde la máquina virtual. Dar click en la pestaña "Adapter 2", marcar la opción "Enable Network Adapter" para que se desbloqueen los campos del adaptador.

En Attached to seleccionar "Host-only Adapter" de la lista desplegable.
En Name seleccionar "vboxnet0" de la lista desplegable.
Dar click en "Advanced" para desplegar las opciones ocultas.
En Adapter Type seleccionar "Intel PRO/1000 MT Desktop (82540EM)" de la lista desplegable.
En Promiscuous Mode seleccionar "Deny".
La opción Cable Connected debe estar marcada para que el adaptador se pueda usar.
Dar click en OK para finalizar.


Y eso es todo. VirtualBox ya tiene todas las configuraciones que necesita para que la máquina virtual tenga acceso a Internet (a través del adaptador 1) y que el anfitrión Mac tenga acceso a la máquina virtual (a través del adaptador 2).

6. Verificación de que todo funcione correctamente

Una vez configurada la máquina virtual, solo resta iniciarla. Seleccionar la máquina deseada (en este ejemplo llamada "UbuntuDjangoBox") y dar click en el icono "Start" (flecha verde en la parte superior de la ventana de VirtualBox). Aparece una nueva ventana con la pantalla de la máquina virtual mostrando todas las comprobaciones de hardware y servicios que hace al iniciar (deberían estar todas en OK).

Finalmente, pide el nombre de usuario y contraseña. Como en esta guía usamos una máquina Ubuntu 18.10 Server preconfigurada descargada de OSBoxes (ver paso 4), usamos los datos de acceso suministrados en el sitio de descarga:
En login escribir osboxes
En Password: escribir osboxes.org

La pantalla debería mostrar que el ingreso fue exitoso con un texto como este:


6.1. Verificación del acceso a Internet


El primer indicador de que la configuración de la red en VirtualBox es correcta es que los dos adaptadores de red definidos fueron reconocidos por la máquina virtual y se encuentran activos. Para ello escribir el comando ifconfig -a que debería mostrar un texto similar al siguiente:


Como se configuraron dos adaptadores en VirtualBox, la máquina virtual debería haberlos reconocido como "enp0s3" (correspondiente al adaptador 1 o NAT) y "enp0s8" (correspondiente al adaptador 2 o Host-only). El tercer adaptador "lo" ya viene con el sistema operativo y corresponde a la conexión del servidor consigo mismo.

Si hasta aquí todo se ve en orden, usar el comando ping www.google.com para corroborar que la máquina virtual sí tiene acceso a Internet. Después de recibir tres o cuatro paquetes de datos, se puede interrumpir el comando pulsando en el teclado Control-C:


Si todas las líneas producidas por el comando ping inician con "64 bytes from...", significa que el adaptador 1 funciona correctamente, ya que el servidor llamado "www.google.com" fue identificado por el servidor DNS (externo a la máquina virtual), se le enviaron paquetes de 64 bytes y éstos fueron recibidos de vuelta. Este mecanismo es el equivalente a un submarino enviando una señal de radar a un objeto para conocer su posición.

6.2. Verificación del acceso a la máquina virtual desde el anfitrión

Para probar el acceso desde el anfitrión Mac usaremos la Terminal. Desde el lanzador de Mac OS X se encuentra en la carpeta Other (Launchpad > Other > Terminal). También se puede abrir directamente desde la carpeta Applications > Utilities > Terminal.app:


De manera similar como ya hicimos desde la máquina virtual, vamos a comprobar si el anfitrión es capaz de contactarla desde fuera. Escribir en la terminal del anfitrión Mac el comando ifconfig -a. El resultado muestra la lista de adaptadores de red reconocidos por Mac OS X, donde el último de ellos debería verse como esto:


El adaptador vboxnet0 fue el que se configuró al inicio del paso 5 a través del Host Network Manager de VirtualBox. En la práctica esto equivale a que la máquina virtual fuera en realidad un computador real que está conectado por un cable de red a un puerto de red del Mac, el cual tiene asignada la dirección IP 192.168.99.1. Con esta IP es que vamos a poder probar la conexión a través del comando ping. En la terminal usar el comando ping 192.168.99.1


Si todas las líneas producidas por el comando ping inician con "64 bytes from...", significa que el adaptador "vboxnet0" funciona correctamente, ya que se le enviaron paquetes de 64 bytes a la IP 192.168.99.1 y éstos fueron recibidos de vuelta.

6.3. Ingreso a la máquina virtual desde el anfitrión Mac

Para ingresar a la máquina virtual desde la terminal del anfitrión vamos a usar el comando ssh. En esta guía seguiremos usando los ejemplos ya empleados, como nombre de usuario (osboxes), la IP de la interfaz "vboxnet0" a través de la cual nos conectamos (192.168.99.1) y el puerto que usamos en la redirección SSH configurada al final del paso 5.2 (2281).

En la terminal del anfitrión Mac escribir osboxes@192.168.99.1 -p 2281


Después de escribir la contraseña, la terminal del Mac debería verse como en la imagen anterior. Esto comprueba que la máquina virtual sí es accesible desde el anfitrión.

En caso de que no haya respuesta, puede deberse a que la máquina virtual todavía no tiene el servicio ssh instalado. Para hacerlo, ingresar a la máquina virtual y usar el comando

sudo apt-get install openssh-server 

Después de escribir la contraseña de administrador (en este ejemplo es la misma que la del usuario "osboxes"), el paquete queda instalado y funcionando.





lunes, agosto 11, 2014

Integración de Dynamics CRM 2013 con Microsoft Azure

Microsoft Dynamics CRM 2013 no debería funcionar como una plataforma aislada, sino como parte de un ecosistema donde debe tener algún nivel de integración con otros sistema como, por ejemplo, la plataforma de ERP de la organización que lo usa. Una forma de implementar dicha integración es cableando explícitamente los puntos de integración con cada uno de los otros sistemas, con el riesgo de tener que revisar todo cuando alguno de los sistemas cambie. Otra forma es aflojar el acoplamiento usando un intermediario cuya responsabilidad sea recibir actualizaciones del CRM (por ejemplo, se creó un nuevo caso, se desactivó una cuenta, se adicionó un contacto a una cuenta) y distribuirlas entre los componentes relevantes del ecosistema. Este es el mecanismo que discutiremos aquí a través de Microsoft Azure.

Dos formas de integración con Microsoft Azure

Hay varias formas de implementar la intermediación entre aplicaciones a través de Microsoft Azure. Aquí vamos a comparar dos enfoques diferentes: a través de las extensiones de Azure para Dynamics CRM y a través de colas del Bus de servicios de Azure. La diferencia fundamental es que el primer enfoque se basa en un plugin convencional que usa su contexto genérico para pasar información a Azure, mientras que el segundo envía peticiones REST de más bajo nivel a la cola de Azure con exactamente los datos que requiere la operación. 

La ventaja obvia del enfoque de las extensiones de Azure para Dynamics es que es más familiar para el desarrollador acostumbrado a usar plugins, lo que le permite salir a producción más rápido que si tiene que aprender a interactuar a más bajo nivel con Azure. Por otro lado, la ventaja de usar directamente las colas de Azure es que con grandes volúmenes de datos e interacciones frecuentes se va a obtener un mejor desempeño al tener mayor control sobre qué se envía, cómo y cuándo.

Extensiones de Azure para Microsoft Dynamics CRM

Microsoft Dynamics CRM 2013 (tanto Online como OnPremises) puede integrarse con Azure acoplando el flujo de ejecución de eventos del CRM al bus de servicios de Azure. Dicha conexión permite que los datos que están siendo procesados como parte de la operación actual del CRM puedan ser publicados en el bus. Las soluciones del bus de servicios de Azure que estén suscritas al CRM pueden estar alerta y, cuando lleguen publicaciones del CRM al bus, leer sus datos, que son almacenados en una instancia remota del contexto de ejecución pasado en tiempo real a los plugins asíncronos del CRM.

La operación arranca con un plugin, que puede ser de alguna de las dos clases de plugins asíncronos soportadas por la funcionalidad de integración: de caja (OOB o Out Of Box) o personalizados.

El CRM ya trae en la caja un plugin habilitado para Azure (Azure-aware), que se ejecuta con confianza total (full trust) en el CRM. La idea es incluir un paso en este plugin que identifique la entidad y mensaje de destino para que, una vez registrado en el CRM, el plugin pueda notificar al servicio asíncrono para que éste publique el contexto remoto de ejecución en el bus de servicios de Azure.

También es posible escribir plugins personalizados habilitados para Azure, los cuales se ejecutan con confianza parcial (partial trust) en entorno protegido (sandbox). Ver Write a custom Azure-aware plug-in.

Del otro lado, se necesita que al menos una solución conteniendo uno o más extremos de servicio (endpoints) esté escuchando en una cuenta de solución del bus de servicios de Azure. Si el contrato del extremo de servicio no es de cola, debe escuchar activamente, mientras que si es de cola no necesita hacerlo porque los mensajes se van almacenando hasta que sea el turno del extremo de servicio para procesarlos. 

Colas del Bus de servicios de Azure

El bus de servicios de Azure soporta dos esquemas de mensajería: el original síncrono por retransmisión (relayed messaging) y el actual asíncrono que es gestionado (brokered messaging). La principal desventaja del primer esquema es que exige que ambos participantes de la comunicación (emisor y receptor) estén en línea en el momento de la conexión, lo cual motivó la creación del esquema gestionado. Este último almacena los mensajes enviados por el emisor hasta que el receptor está disponible para procesarlos. La ventaja obvia es la nivelación de la carga, ya que el receptor no necesita reservar costosos recursos para estar en capacidad de procesar incluso las solicitudes que le envíen los emisores en un pico de mucha congestión, sino que el intermediador dosifica esas solicitudes a un ritmo que el destinatario puede procesar con menos recursos.  

Aquí es donde entran en escena las colas que a través de una política FIFO (First In, First Out) entregan mensajes, en el mismo orden en que llegaron, a uno o más receptores. Su longitud crece y se contrae en la medida en que la carga entrante varía. Este uso de las colas para mediar entre emisores de mensajes y consumidores brinda un bajo acoplamiento inherente entre los componentes, ya que al no conocer los detalles de los demás componentes, un receptor puede ser mejorados sin tener efecto alguno sobre los emisores (y viceversa).

En adición a las colas, el equema de mensajeria gestionado también ofrece suscripciones que permiten la comunicación uno-a-muchos en un patrón de "publicar/suscribirse". Es especialmente útil para escalar a un número muy grande de receptores, donde cada mensaje publicado queda disponible para cada suscriptor que se haya registrado en el "tema". Los mensajes son enviados a un tema y entregados a uno o más suscripciones asociadas, dependiendo de reglas de filtrado que se definen por cada suscripción. Las suscripciones pueden usar filtros adicionales para restringir los mensajes que quieren recibir. El emisor envía mensajes a un tema como si estuviera enviándolo a una cola. Las suscripciones actúan como colas virtuales que reciben copias de los mensajes que fueron enviados al tema (si pasan los filtros de la suscripción) y desde las cuales los receptores pueden consumir mensajes como lo harían con una cola.


Colas de Azure

Finalmente tenemos las colas de la infraestructura de almacenamiento de Azure, que estarían a más bajo nivel que las colas del bus de servicios de Azure. Éstas ofrecen una interfaz simple Get/Put/Peek basada en REST que implementa mensajería persistente y confiable dentro de un servicio o entre servicios. Las colas de Azure deberían usarse en lugar de las colas del bus de servicios cuando:
  • Nuestro CRM debe almacenar más de 80G de mensajes en una cola, donde los mensajes deben persistir por menos de 7 días.
  • Nuestro CRM hace seguimiento al avance en el procesamiento de un mensaje al interior de la cola. Esto es útil si el proceso que está trabajando en un mensaje fallece. El proceso que venga después puede usar esa información para retomar el trabajo donde el proceso anterior lo dejó.
  • Nuestro CRM requiere registros de log del lado del servidor para todas las transacciones ejecutadas contra las colas.  




miércoles, junio 25, 2014

Reglas de enrutamiento en Microsoft Dynamics CRM 2013 SP1

Como ya vimos, la versión 2013 SP1 de Microsoft Dynamics CRM trae nuevas funcionalidades que se pueden instalar después de la actualización de junio de 2014. En esta ocasión nos concentramos en la definición paso a paso de reglas de enrutamiento de casos, que facilitan la definición de a quién se debe asignar un caso dependiendo de las condiciones en cada punto del proceso de atención.

  1. Crear nuevo conjunto de reglas
  2. Adicionar elementos de regla
  3. Activar conjunto de reglas

Crear nuevo conjunto de reglas

Los conjuntos de reglas de enrutamiento se definen en soluciones. Hay que evitar en lo posible personalizar directamente la instancia del CRM o a través de la solución predeterminada, que es prácticamente lo mismo. En su lugar, recomiendo crear una nueva solución no administrada o modificar una ya existente:

Ir a CONFIGURACIÓN / Soluciones / Nuevo (o seleccionar una solución no administrada ya existente).
Ir a Conjuntos de reglas de enrutamiento y dar click en "Nuevo".


Se abre una nueva ventana para definir el nuevo conjunto de reglas. Llenar el nombre y la descripción para der una idea precisa de el alcance y la intención del conjunto de reglas a quienes deban hacer mantenimiento a los procesos del sistema en el futuro. Click en "GUARDAR" para grabar el registro y habilitar la asociación de subregistros.



Después de grabar, aparece en la sección "Elementos de regla" habilitado el botón "+". Click en el botón para adicionar un nuevo elemento de regla.


Adicionar elementos de regla

Se abre una nueva ventana para definir un elemento de regla. Llenar Nombre obligatoriamente para poder grabar el nuevo registro. Es muy recomendable llenar también la descripción para ubicar a quienes deban mantener el proceso a futuro aunque el campo no sea obligatorio.

Una vez definido el encabezado, ir a la sección "Condiciones If" de Criterios de Regla para llenar las condiciones. Estas condiciones se pueden agrupar en bloques "AND" y "OR".

Para cada condición se selecciona la entidad a la que corresponde el campo a evaluar. La selección está restringida a Caso (Incident) o a alguna entidad con la que Caso tenga una relación.



Una vez definida la entidad, seleccionar el campo, el operador y el valor. En este ejemplo, seleccionamos la entidad Caso, el campo "Tipo de Solicitud", el operador "Es igual a". Como el campo corresponde a una relación con una entidad personalizada, en la pantalla aparece un botón de búsqueda para seleccionar un valor específico. 


Aparece una ventana para buscar registros. Como se puede definir más de un registro como valor de la condición, además de marcar uno o más registros en el listado hay que dar click en el botón "Seleccionar" para incluir los registros resaltados en la sección de "Registros seleccionados". Una vez hemos definido al menos un valor, podemos dar click en el botón "Agregar".


Una vez se ha definido la primera condición, podemos definir otras condiciones adicionales (implícitamente se relacionan con la primera condición a través de un operador "AND"). En este ejemplo adicionamos una segunda condición con la entidad Caso, el campo personalizado "Estado de Documentación", el operador "Es igual a". Como este campo no corresponde a una relación con registros de otra entidad sino a una lista de opciones, la pantalla no muestra un botón de búsqueda sino uno de selección de valores:   


Para seleccionar un valor de una lista de opciones, dar click en un valor de la columna "Valores disponibles", click en el botón ">>" para pasar el valor resaltado a la columna "Valores seleccionados" (puede ser más de uno). Finalizamos con click en el botón "Aceptar".


Una vez definidas todas las líneas en la sección "Condiciones If", pasar a la sección "Condiciones Then". Seleccionar si el enrutamiento será a una Cola o a un Usuario/Grupo. Si es este último caso, solamente se pueden usar grupos propietarios, no de acceso.

Después de marcar el tipo de asignación, click en el botón de Búsqueda de registros. 


De la lista seleccionar un valor y dar click en el botón "Guardar" para grabar el nuevo elemento.


Activar conjunto de reglas

Una vez hayamos definido todos los elementos de regla para este nuevo Conjunto de reglas de enrutamiento, hay que activar el registro dando click en el botón "Activar" de la barra de comandos. El sistema pide confirmación y se responde con click en el botón "Activar" del diálogo emergente. 



Cuando el registro tenga su estado en "Activo" será evaluado por el sistema cada vez que se grabe un registro de la entidad Caso.

Como la definición de este Conjunto de reglas de enrutamiento se hizo sobre una solución no administrada, para que sea visible para los usuarios del sistema hay que publicar los cambios. Ir a la solución y dar click en el botón "Publicar todas las personalizaciones". 

viernes, junio 20, 2014

Instalación y creación de SLA en Dynamics CRM 2013 SP1

Microsoft Dynamics 2013 SP1 trae nuevas funcionalidades interesantes, entre las que destaco en esta oportunidad la implementación nativa de contratos de niveles de servicio o SLA (Service Level Agreement). Vamos a ver cómo instalar y crear nuevos SLAs nativos paso a paso.


  1. Instalación de la actualización de productos
  2. Creación de nuevo SLA
  3. Creación de condiciones del SLA



1. Instalación de la actualización de productos

Los SLA nativos no vienen predeterminadamente con el Service Pack. Es necesario pedir al administrador del servidor que active las actualizaciones de Windows Update para que Dynamics pueda encontrar y descargar los paquetes correspondientes (a partir de la versión 6.1.0.581). Una vez se ha hecho la actualización de la infraestructura, hay que instalar la actualización de productos:

Ir a CONFIGURACIÓN / Administración / Instalar actualizaciones de productos


En la siguiente pantalla, se puede encontrar más información sobre el contenido de las actualizaciones. Hay que tener en cuenta que una vez instalados los nuevos paquetes ya no hay vuelta atrás.




Ahora en el área de CONFIGURACIÓN aparece una nueva sección "Administración de servicios", que agrupa la configuración de varias de las funcionalidades usadas en el módulo de Servicio del CRM. Entre estos elementos encontramos dos nuevos: "Contratos de nivel de servicio" (SLA) y "Derechos". Este último lo estudiaremos en otra oportunidad.




2. Creación de nuevo SLA

El elemento de configuración  "Contratos de nivel de servicio" lleva a una vista de todos los registros existentes. Para crear uno nuevo, se da click en "+ NUEVO".


Aparece una pantalla con el formulario para crear el nuevo registro. Los datos mínimos a diligenciar son "Nombre" y "Aplicable desde". El título no se actualiza hasta que no se grabe el registro dando click en el botón "GUARDAR" de la barra de comandos.


3. Creación de condiciones del SLA

Una vez se ha grabado el registro del nuevo SLA, el formulario actualiza el título con el nombre que definimos en el paso anterior y permite la creación de nuevos subregistros de Elementos del SLA. Para hacerlo, dar click en el botón "+" en la esquina superior derecha de la sección "Detalles de SLA" del formulario.

Se abre una nueva ventana (verificar que el navegador no tiene bloqueadas las ventanas emergentes) donde podemos definir uno de varios elementos que componen la definición del SLA. En dicho elemento especificamos las siguientes características:

General

Corresponde al nombre que identifica el elemento dentro del SLA y al campo de la entidad Caso (Incident) con el que se va a asociar este elemento en particular, que hace las veces de fuente para los KPI (Key Performance Indicators). Las opciones son: "Seguimiento para el", "Primera respuesta por" y "Resolver por". Una vez se ha grabado el elemento no es posible cambiar la opción que se seleccionó. 


Aplicable cuando

En esta sección se definen una o más condiciones que indican a Dynamics CRM cuándo se debe crear una nueva instancia del SLA asociada a un registro específico de la entidad Caso. Estas condiciones se pueden agrupar de manera muy similar a como se definen las condiciones de las Búsquedas Avanzadas. Estas condiciones se evalúan cada vez que cambia el campo del caso con el que se relacionó el elemento de SLA. En este ejemplo, el campo relacionado es "Resolver por" y cada vez que cambie de estado se evaluarán las condiciones de "Aplicable cuando".

Como lo advierte Microsoft en "How is the SLA applied?", cuando se crea un nuevo caso, se aplica el SLA (predeterminado o a través de un Derecho)y se actualizan los valores de los campos de Caso relacionados. Cuando el Caso es modificado y cambia el valor de alguno de los campos de Caso usados en las condiciones de "Aplicable cuando", el SLA de aplica otra vez.

Cuando el SLA se aplica de nuevo, todos los elementos de SLA se vuelven a evaluar con base en los campos actualizados del Caso y las acciones de error o de advertencia se disparan si el tiempo se cumplió. Esto ocurre incluso si las acciones de error o advertencia ya se habían disparado antes de que el caso fuera actualizado. Para prevenir esto se puede agregar campos personalizados a la entidad Caso (Incident) para marcar cuando ya se han disparado las acciones de error/advertencia e incluir dichos campos en las condiciones de tal manera que solo se cumplan la primera vez.


Cada condición tiene varios componentes, usualmente una entidad + campo + operador + valor. En este ejemplo usaremos la entidad Caso (Incident), el campo Prioridad, el operador "Es igual a" y seleccionamos un valor de una lista de opciones (Alta, Normal, Baja) dando click en el botón "...", aunque para otros campos que no estén asociados a una lista de opciones se puede definir un valor manualmente, como un número o una fecha. 


Criterios de éxito

En esta sección definimos una o más condiciones de manera idéntica a como se hizo en la sección anterior. Indican al CRM cuándo una instancia activa del SLA asociada a un registro específico de la entidad Caso debe desactivarse.

Error de elemento de SLA

Una vez definidas las condiciones que disparan una instancia del elemento de SLA (Aplicable cuando) para un registro de la entidad Caso y que cancelan dicha instancia (Criterios de éxito), definimos cuánto tiempo de plazo le damos al criterio de éxito antes de declarar el SLA como incumplido. Este tiempo se puede definir seleccionando un valor de una lista de varias opciones en minutos, horas o días. En este ejemplo definidos 30 minutos. 

Para poder seguir definiendo los demás subregistros del elemento de SLA hay que grabar con el botón "Guardar" de la parte superior izquierda de la ventana emergente. 


Acciones de error

Una vez grabado el nuevo elemento de SLA, aparece disponible la opción de "Agregar paso" donde se puede escoger entre: Enviar correo electrónico, Crear registro, Actualizar registro, Asignar registro y Cambiar estado.

Las acciones que se definan aquí se dispararán si ha transcurrido el tiempo definido en la sección "Error de elemento de SLA" desde el momento definido en "Aplica desde" del encabezado del SLA y no se ha cumplido todavía la condición definida en "Criterio de éxito".



Advertencia de elemento de SLA

De manera análoga a como lo hicimos en "Error de elemento de SLA", opcionalmente podemos definir cuánto tiempo de plazo le damos al criterio de éxito antes de disparar acciones de advertencia. Este tiempo se puede definir seleccionando un valor de una lista de varias opciones en minutos, horas o días. El valor debería ser menor que el tiempo de error, por lo que para este ejemplo definimos 15 minutos.  

Acciones de advertencia

Las acciones que se definan aquí se dispararán si ha transcurrido el tiempo definido en la sección "Advertencia de elemento de SLA" desde e evento definido en "Aplica cuando" y no se ha cumplido todavía la condición definida en "Criterio de éxito".