Microsoft Dynamics CRM - Guía rápida

Customer Relationship Management (CRM) es un sistema para administrar las interacciones de una empresa con los clientes actuales y futuros. A menudo implica el uso de tecnología para organizar, automatizar y sincronizar ventas, marketing, servicio al cliente y soporte técnico. CRM puede ayudar a reducir costos y aumentar la rentabilidad mediante la organización y automatización de procesos comerciales que nutren la satisfacción y la lealtad del cliente.

Microsoft Dynamics CRM

Microsoft Dynamics CRM es un paquete de software de gestión de relaciones con el cliente desarrollado por Microsoft que se centra en mejorar la relación con el cliente para cualquier organización. Fuera de la caja, el producto se enfoca principalmente en los sectores de Ventas, Marketing y Servicio al Cliente, aunque Microsoft ha estado comercializando Dynamics CRM como una plataforma XRM y ha estado alentando a los socios a usar su marco patentado (basado en .NET) para personalizarlo. En los últimos años, también ha crecido como plataforma de análisis impulsada por CRM.

La solución CRM se puede utilizar para impulsar la productividad de las ventas y la efectividad del marketing de una organización, manejar la cadena completa de soporte al cliente y proporcionar conocimientos sociales, inteligencia empresarial y muchas otras funcionalidades y características listas para usar. Como producto, Microsoft Dynamics CRM también ofrece soporte móvil completo para el uso de aplicaciones CRM en teléfonos móviles y tabletas.

Al momento de escribir este tutorial, la última versión de CRM es CRM 2016. Sin embargo, en este tutorial usaremos la versión en línea de CRM 2015, ya que es la última versión estable y se usa con frecuencia en muchas organizaciones. No obstante, incluso si está utilizando otras versiones de CRM, todos los conceptos del tutorial seguirán siendo válidos.

Ofertas de productos

Microsoft Dynamics CRM se ofrece en dos categorías:

CRM en línea

CRM Online es una oferta basada en la nube de Microsoft Dynamics CRM donde todos los procesos de backend (como servidores de aplicaciones, configuraciones, implementaciones, bases de datos, licencias, etc.) se administran en servidores de Microsoft. CRM Online es una oferta basada en suscripción que se prefiere para las organizaciones que pueden no querer administrar todos los aspectos técnicos involucrados en una implementación de CRM. Puede comenzar a configurar su sistema en unos pocos días (no semanas, meses o años) y acceder a él en la web a través de su navegador.

CRM en las instalaciones

CRM on-premise es una oferta más sólida y personalizada de Microsoft Dynamics CRM, donde la aplicación CRM y las bases de datos se implementarán en sus servidores. Esta oferta le permite controlar todas sus bases de datos, personalizaciones, implementaciones, copias de seguridad, licencias y otras configuraciones de red y hardware. Generalmente, las organizaciones que desean optar por una solución CRM personalizada prefieren la implementación local, ya que ofrece mejores capacidades de integración y personalización.

Desde el punto de vista funcional, ambas ofertas ofrecen funcionalidades similares; sin embargo, difieren significativamente en términos de implementación. Las diferencias se resumen en la siguiente tabla.

CRM en línea CRM en las instalaciones
Esta es una solución basada en la nube proporcionada por Microsoft en la que todos los servidores y bases de datos son administrados por Microsoft. Se trata de una solución local proporcionada por Microsoft en la que el cliente administra los servidores y las bases de datos.
Puede comenzar con una oferta en línea en unos pocos días. Usted paga por los usuarios y el espacio utilizado sobre la marcha. La configuración de una oferta en las instalaciones requiere habilidades técnicas y tiempo suficiente para configurar la instancia de CRM y ponerla en funcionamiento.
Admite relativamente menos personalizaciones y extensiones. Admite relativamente más personalización y extensiones.
CRM Online no ofrece la posibilidad de realizar copias de seguridad de datos y opciones de restauración manuales, ya que la base de datos está alojada en servidores de Microsoft. Sin embargo, Microsoft realiza copias de seguridad diarias de la base de datos. CRM on-premise brinda una capacidad completa para administrar su base de datos.
CRM Online tiene varios planes basados ​​en los límites de almacenamiento de datos como 5GB, 20 GB, etc. CRM on-premise no tiene tales límites en el tamaño de almacenamiento, ya que los datos existen en sus propios servidores.
CRM Online proporciona capacidades integradas de características como conocimientos, escucha social, análisis, etc. CRM en las instalaciones tiene costos adicionales para estas funciones.
CRM Online admite actualizaciones automáticas para versiones futuras. El administrador debe instalar las actualizaciones de CRM en las instalaciones.

Accediendo a CRM

Se puede acceder a Microsoft Dynamics CRM mediante cualquiera de las siguientes opciones:

  • Browser
  • Móviles y tabletas
  • Outlook

Competidores de productos

Microsoft Dynamics CRM es sin duda uno de los mejores productos en el espacio CRM. Sin embargo, a continuación se muestran los otros productos que compiten con Microsoft Dynamics CRM.

  • Salesforce.com
  • Oracle
  • SAP
  • Sage CRM
  • CRM de azúcar
  • NetSuite

Versiones de producto

Microsoft Dynamics CRM ha crecido a lo largo de los años a partir de su versión 1.0 en 2003. La última versión (al momento de escribir este artículo) es 2015. A continuación se muestra la lista cronológica de versiones de lanzamiento:

  • Microsoft CRM 1.0
  • Microsoft CRM 1.2
  • Microsoft Dynamics CRM 3.0
  • Microsoft Dynamics CRM 4.0
  • Microsoft Dynamics CRM 2011
  • Microsoft Dynamics CRM 2013
  • Microsoft Dynamics CRM 2015
  • Microsoft Dynamics CRM 2016

Comencemos por configurar nuestro entorno CRM. Usaremos la versión en línea de CRM 2015, ya que la versión en línea brinda acceso de prueba gratuito durante un mes. Al hacer esto, no necesitará comprar ninguna licencia para aprender CRM.

Note- Dado que Microsoft Dynamics CRM es un producto en crecimiento, es posible que cuando esté aprendiendo esto, tenga una versión más nueva del producto. En ese caso, es posible que la aplicación no se vea exactamente como se vería en las capturas de pantalla de este tutorial. Sin embargo, los conceptos centrales del producto siguen siendo los mismos. La apariencia y la navegación del producto pueden cambiar; sin embargo, en la mayoría de los casos podrá navegar y ubicar fácilmente las opciones requeridas.

Configuración de una cuenta en línea de Microsoft Dynamics CRM

Step 1 - Navegue a la siguiente URL -

https://www.microsoft.com/en-us/dynamics365/home

En caso de que no vea las opciones de la versión de prueba a través de este enlace en el futuro, intente buscar "Prueba gratuita de Microsoft Dynamics CRM" en Google.

Step 2- Haga clic en el botón Pruébelo gratis. Esto iniciará un proceso de registro de 3 pasos como se muestra en la siguiente captura de pantalla. En el Paso 1 del registro de 3 pasos, complete los detalles obligatorios como nombre, correo electrónico e idioma.

Step 3- Haga clic en el botón Pruébelo gratis. Esto iniciará un proceso de registro de 3 pasos como se muestra en la siguiente captura de pantalla. En el Paso 1 del registro de 3 pasos, complete los detalles obligatorios como nombre, correo electrónico e idioma.

Step 4- En el Paso 3 del registro de 3 pasos, Microsoft validará el número de teléfono móvil que ha especificado. Para ello, puede proporcionar su número de teléfono móvil y hacer clic en Enviarme un mensaje de texto. A continuación, enviará una OTP a su móvil mediante la cual podrá continuar con la configuración.

Step 5- Se creará su ID de usuario de Office 365. Puede guardar esta información de identificación de usuario para acceder más tarde.

Después de configurar la cuenta, ahora se abrirá su Panel de CRM, que tendrá un aspecto similar al siguiente.

Solo para enfatizar nuevamente, las capturas de pantalla anteriores pueden cambiar con una versión futura, sin embargo, configurar el entorno será un proceso bastante simple.

Descarga de CRM SDK

El kit de desarrollo de software (SDK) de Microsoft Dynamics CRM contiene ejemplos de código importantes que incluyen código del lado del servidor, código del lado del cliente, extensiones, complementos, servicios web, flujos de trabajo, modelo de seguridad, etc. Básicamente, el SDK contiene todos los recursos de desarrollo que necesitaría para comenzar con CRM. Ya sea que esté planeando configurar un nuevo proyecto de complemento o configurar un proyecto de servicios web para CRM, el SDK proporciona la arquitectura básica y ejemplos que van desde el nivel simple al avanzado para ayudarlo a comenzar. Ahora veremos los pasos para descargar e instalar el SDK.

Step 1- Cada versión de Microsoft Dynamics CRM viene con su propia versión de SDK. La mejor manera de obtener la versión correcta del SDK sería buscar en Google su respectiva versión de CRM. Por ejemplo, si su versión de CRM es 2015, intente buscar "Microsoft Dynamics CRM 2015 SDK".

Step 2- Una vez descargado, ejecute la configuración del exe. Haga clic en Continuar.

Step 3- Le pedirá que elija la ubicación donde se debe extraer el SDK. Seleccione cualquier ubicación adecuada donde le gustaría guardar el SDK de referencia.

Step 4- Abra la carpeta donde había extraído. Puede acceder a todo el contenido del SDK desde aquí.

Conclusión

En este capítulo, configuramos nuestro entorno creando una cuenta CRM Online. A continuación, descargamos el SDK de CRM, que se utilizará en los capítulos siguientes de este tutorial. Asegúrese de anotar las credenciales con las que ha configurado la cuenta, ya que necesitará estas credenciales la próxima vez que inicie sesión.

Todo el Microsoft Dynamics CRM está diseñado en torno a los siguientes módulos funcionales.

  • Sales
  • Marketing
  • Gestión De Servicios

Estos módulos funcionales a menudo se denominan como Work Areas.

Comprensión de los módulos funcionales de CRM

Toda la aplicación CRM está dividida funcionalmente para diferentes tipos de usuarios y equipos. Por lo tanto, si una organización está usando CRM para administrar sus procesos, los usuarios del equipo de Ventas usarían las funcionalidades que se encuentran en el módulo de Ventas, mientras que los usuarios del equipo de Marketing usarían las funcionalidades que se incluyen en el módulo de Marketing.

Todos estos tres módulos funcionales se unen para impulsar todo el ciclo de vida de la obtención de un nuevo cliente (marketing), venderles los servicios (ventas) y mantener a los clientes existentes (gestión de servicios).

Para entender este flujo de una mejor manera, considere un banco que vende tarjetas de crédito a sus clientes. El ciclo de vida típico de vender una tarjeta de crédito a un cliente sería el siguiente. En cada paso de este ciclo de vida, verá cómo los módulos de Ventas, Marketing y Servicio cumplen su función.

Sales & Marketing- El ejecutivo de la oficina del centro de llamadas del banco recibe datos de clientes potenciales; a menudo llamados Leads en CRM. Estos clientes potenciales se capturan en el sistema CRM a través de campañas de marketing, campañas de ventas, referencias, etc.

Sales- El ejecutivo del centro de llamadas se comunica con estos clientes potenciales a través de llamadas telefónicas / correos electrónicos / etc. Si el cliente está interesado en la oferta de tarjeta de crédito, el registro de cliente potencial se convertirá en un registro de oportunidad (cliente potencial ganado).

Service- Una vez que un cliente pasa a formar parte del sistema, la empresa lo asistirá con los pagos, facturación, reembolsos, etc. Siempre que el cliente tenga alguna consulta o inquietud, llamará al call center y planteará incidencias. El ejecutivo hará un seguimiento para resolver el caso con el objetivo de brindar un servicio de calidad al cliente. Estas tareas se incluyen en la gestión de servicios de CRM.

Navegación por áreas de trabajo de CRM

Step 1 - Abra la página de inicio de CRM.

Step 2 - De forma predeterminada, verá el área de trabajo de Ventas como seleccionada.

Step 3- Para cambiar el área de trabajo, haga clic en la opción Mostrar áreas de trabajo. Verá las opciones para seleccionar Ventas, Servicio y Marketing.

Step 4- Haga clic en Ventas. Esto le mostrará todas las entidades que se incluyen en Ventas, como Cuentas, Contactos, Clientes potenciales, Oportunidades, Competidores, etc. Cada una de estas entidades está categorizada por su proceso comercial, como Mi trabajo, Clientes, Ventas, Garantía, etc.

Step 5 - De igual forma, si hace clic en el área de trabajo de Marketing, verá todas las entidades relacionadas con las funcionalidades comerciales de Marketing.

Módulo de ventas

El módulo de ventas de CRM está diseñado para impulsar todo el ciclo de vida de ventas de un nuevo cliente. El módulo de ventas consta de los siguientes submódulos:

Leads- Representa a una persona u organización que puede ser un cliente potencial de la empresa en el futuro. Este es el primer paso para conseguir un cliente potencial en el sistema.

Opportunities- Representa una potencial venta al cliente. Una vez que un cliente potencial muestra interés en la oferta, se convierte en una oportunidad. Se ganará o perderá una oportunidad.

Accounts- Representa una empresa con la que la organización tiene relaciones. Una vez que gana una oportunidad, se convierte en una cuenta o contactos.

Contacts- Representa a una persona, o cualquier individuo con quien la organización tenga relaciones. En su mayoría, estos Contactos son los clientes de las organizaciones (por ejemplo, todos los clientes de tarjetas de crédito de un banco). Una vez que gana una oportunidad, se convierte en una cuenta o contactos.

Competitors - Gestiona todos los competidores del mercado de la organización.

Products - Gestiona todos los productos que ofrece la organización a sus clientes (Ejemplo, todos los planes de tarjetas de crédito).

Quotes - Una oferta formal de productos o servicios propuestos a precios específicos enviados a un cliente potencial (Ejemplo, precio anual de un plan de tarjeta de crédito determinado enviado al cliente).

Orders - Una cotización que es aceptada por el cliente se convierte en un Pedido (Ejemplo, de todos los planes que le ofrece la organización, puede optar por una suscripción de 6 meses).

Invoices - Un pedido facturado genera una factura.

Módulo de marketing

El módulo de marketing de CRM está diseñado para impulsar todo el proceso de marketing de una organización para sus clientes actuales y potenciales. El módulo de marketing consta de los siguientes submódulos:

Marketing Lists- Proporciona una forma de agrupar sus contactos, cuentas y clientes potenciales e interactuar con ellos mediante el envío de correos electrónicos promocionales, detalles de eventos, boletines informativos y otras actualizaciones relevantes para los clientes objetivo. Puedes definir los criterios para crear tus listas de marketing (ejemplo, contactos de entre 25 y 35 años).

Campaigns - Las campañas están diseñadas para medir la efectividad y lograr un resultado específico, como presentar un nuevo producto o aumentar la participación de mercado y pueden incluir varios canales de comunicación como correo electrónico, anuncios en periódicos, anuncios de YouTube, etc.

Quick Campaigns - Una campaña rápida es similar a una campaña, sin embargo, puede estar relacionada con un solo tipo de actividad.

Todos los módulos de marketing anteriores funcionan en estrecha coordinación con el módulo de ventas.

Módulo de gestión de servicios

El módulo de gestión de servicios de CRM está diseñado para enfocar, gestionar y realizar un seguimiento de las operaciones de servicio al cliente de una organización, como el apoyo a los servicios basados ​​en incidentes, el apoyo a los clientes mediante la programación de servicios, etc.

El módulo de gestión de servicios cubre los siguientes submódulos:

  • Cases (Incidents)- Admite las solicitudes, problemas o quejas de los clientes para realizar un seguimiento a través de incidentes / casos. Un caso sigue varias etapas de un proceso de resolución de problemas y finalmente se resuelve y se cierra.

  • Knowledge Base - Mantiene un repositorio maestro para todas las preguntas y respuestas comunes que el cliente pregunta con frecuencia.

  • Contracts - Trabajo de contratos con Casos indicando todos los contratos activos que tiene el cliente.

  • Resources/Resource Groups- Representa a las personas, herramientas, salas o equipos que se utilizan para brindar un servicio. Estos recursos se pueden utilizar para resolver un problema específico del cliente.

  • Services - Representa todos los servicios que la organización ofrece a los clientes.

  • Service Calendar - Se utiliza para programar horarios de trabajo y horarios de los usuarios que laboran en la organización.

Gestión de actividades

Todos los módulos explicados anteriormente utilizan el módulo de gestión de actividades de CRM. Una Actividad representa cualquier tipo de interacción con el cliente, como una llamada telefónica, un correo electrónico, una carta, etc. Estas actividades pueden estar relacionadas con cualquiera de las entidades explicadas anteriormente, como cuenta, contacto, cliente potencial, caso, etc. De forma predeterminada, CRM proporciona los siguientes tipos de actividades listas para usar:

  • Llamada telefónica
  • Email
  • Task
  • Appointment
  • Cita recurrente
  • Letter
  • Fax
  • Respuesta de campaña
  • Actividades de campaña
  • Actividad de servicio
  • Actividades personalizadas

Conclusión

En este capítulo, hemos aprendido sobre los tres módulos principales de CRM: ventas, marketing y gestión de servicios. Entendimos cómo se organizan las áreas de trabajo en CRM y cómo funciona todo el ciclo de vida de una organización de CRM. También analizamos el módulo de gestión de actividades de CRM que permite crear actividades de interacción con el cliente por teléfono, correo electrónico, fax y otros tipos.

Ahora que tenemos una descripción general funcional de todos los módulos de CRM, aprendamos y entendamos acerca de las entidades y formularios en CRM.

¿Qué es una entidad?

Una entidad se utiliza para modelar y administrar datos comerciales en CRM. Contactos, Casos, Cuentas, Clientes potenciales, Oportunidades, Actividades, etc. son todas entidades que mantienen registros de datos. Conceptualmente, una entidad CRM es equivalente a una tabla de base de datos. Por ejemplo, la entidad Contactos contendría registros de contactos, la entidad Casos contendría registros de casos, etc.

Puede tener tanto: entidades listas para usar (que vienen de forma predeterminada con el CRM) como entidades personalizadas (que puede crear con personalización). Por ejemplo, suponga que mantiene los datos de los libros que han leído sus clientes. Para esto, almacenará los datos del cliente utilizando la entidad Contactos lista para usar, pero ¿dónde almacenaría los datos de los libros? No tiene ninguna entidad que pueda almacenar datos para libros. En tales escenarios, creará una nueva entidad personalizada llamada Libros y la relacionará con la entidad Contactos existente.

Para este tutorial, tomemos un ejemplo de cómo almacenar empleadores y empleados en CRM. Tomando este ejemplo en consideración, CRM proporciona de forma inmediataContactentidad en la que idealmente puede almacenar a todos sus empleados. También proporciona unaAccountentidad en la que puede almacenar todos sus empleadores. Pero por el bien de las entidades de aprendizaje, crearemos una nueva entidad personalizada llamadaEmployer (y no utilizar la entidad Cuenta existente).

Crear una nueva entidad

Step 1 - Haga clic en el botón de la cinta superior seguido de Settingsopción. Hacer clicCustomizations opción de la sección Personalización (consulte la siguiente captura de pantalla).

Step 2 - Ahora haga clic en la opción Personalizar el sistema.

Esto abrirá la ventana Solución predeterminada. Aprenderá más sobre las Soluciones CRM en los siguientes capítulos, pero por ahora utilizará la Solución CRM predeterminada.

Step 3 - Expanda la opción Entidades del panel izquierdo.

Step 4 - Ahora haga clic en Nuevo → Entidad.

Step 5- En el formulario de entidad, ingrese el nombre para mostrar como empleador y el nombre plural como empleadores. En la sección 'Áreas que muestran esta entidad', marque Ventas, Servicio y Marketing. Al marcar estas opciones, se mostrará la entidad recién creada en las pestañas Ventas, Servicio y Marketing de CRM.

Step 6- Haga clic en el icono Guardar y cerrar. Esto creará una nueva entidad en la base de datos de CRM detrás de escena.

Step 7 - En la ventana principal de Solución predeterminada, verá la entidad Empleador recién creada.

Step 8- Haga clic en la opción Publicar todas las personalizaciones en la barra de cinta superior. Esto publicará (también conocido como confirmar) todos los cambios que hicimos hasta ahora. Puede cerrar esta ventana haciendo clic en Guardar y cerrar.

Crear registros

CRM se trata de administrar datos valiosos en su sistema. En esta sección, aprenderemos cómo crear, abrir, leer y eliminar registros en CRM. Continuaremos con la entidad patronal que creamos en el último capítulo.

Step 1 - Navegue a la cuadrícula de registros de la entidad del empleador a través de Mostrar áreas de trabajo → Ventas → Extensiones → Empleadores.

Step 2 - Haga clic en el icono Nuevo.

Esto abrirá el formulario de nuevo empleador predeterminado. Puede ver que solo hay un campo editable Nombre en este formulario predeterminado. Ingrese Empleador 1 en el campo Nombre. Haga clic en Guardar y cerrar.

Step 3 - En el Active Employers vista, puede ver el registro de empleador recién creado.

Acceso a registros

Para acceder a los registros ya creados en CRM, vaya a la página de esa entidad. En nuestro caso, navegue hasta Mostrar áreas de trabajo → Ventas → Extensiones → Empleadores. Verá una lista de registros presentes allí en la cuadrícula. Haga clic en cualquier registro de empleador para acceder a él.

Actualización de registros

Una vez que tenga un registro abierto, puede editar cualquier detalle en el formulario. De forma predeterminada, CRM 2015 viene con una opción de guardado automático que guarda los cambios realizados en el formulario 30 segundos después del cambio. Alternativamente, puede hacer clic en Ctrl + S.

En caso de que desee deshabilitar la función de guardado automático, vaya a Configuración → Administración → Configuración del sistema → Habilitar guardado automático para todos los formularios y seleccione No.

Eliminar registros

Step 1 - Seleccione uno o varios registros que desee eliminar y haga clic en el Delete botón.

Step 2 - Confirme la eliminación de registros haciendo clic en Delete.

Conclusión

Como se ve en el ejemplo anterior, el formulario de empleador predeterminado solo tenía un campo. Sin embargo, en escenarios de la vida real, tendrá muchos campos personalizados en un formulario. Por ejemplo, si observa un registro de contacto de muestra (que es una entidad de CRM lista para usar), tendrá muchos campos para almacenar información de contacto, como nombre completo, correo electrónico, teléfono, dirección, casos, etc.

En los siguientes capítulos, aprenderá a editar este formulario predeterminado y agregarle diferentes tipos de campos.

Antes de que aprenda a agregar campos personalizados a formularios CRM, echemos un vistazo a qué tipo de campos de datos son compatibles con CRM.

Tipos de campo

CRM, listo para usar, proporciona 11 tipos de campos de datos que se pueden colocar en formularios:

  • Línea única de texto
  • Conjunto de opciones (menú desplegable)
  • Dos opciones (botón de opción)
  • Image
  • Número entero
  • Número de coma flotante
  • Número decimal
  • Currency
  • Varias líneas de texto
  • Fecha y hora
  • Lookup

La siguiente tabla enumera cada uno con una breve descripción.

No Señor Tipo de campo y descripción
1

Single Line of Text

Este campo almacena hasta 4000 caracteres de texto. También puede especificar el formato como uno de estos: correo electrónico, texto, área de texto, URL, símbolo de cotización y teléfono. Puede establecer la longitud máxima y el modo IME para cada uno de ellos.

2

Option Set (Dropdown)

Este campo almacena un conjunto de opciones, cada una de las cuales tiene un valor numérico y una etiqueta. En otras palabras, es un campo desplegable en CRM. También puede definir conjuntos de opciones globales que se pueden utilizar en varios formularios.

3

Two Options (Radio Button)

Este campo proporciona dos opciones para que el usuario seleccione (0 o 1). En otras palabras, es un campo de botón de opción.

4

Image

Cuando una entidad tiene un campo de imagen, se puede configurar para mostrar la imagen del registro en la aplicación.

5

Whole Number

Este campo almacena valores enteros entre -2,147,483,648 y 2,147,483,647. Admite los formatos de especificación como Ninguno, Duración, Zona horaria e Idioma. También puede establecer los valores mínimo y máximo.

6

Floating Point Number

Este campo almacena los números de coma flotante hasta 5 puntos decimales de precisión entre 0.00 y 1,000,000,000.00. También puede establecer los valores mínimo y máximo.

7

Decimal Number

Este campo almacena hasta 10 puntos decimales con valores que van desde -100,000,000,000.00 y 100,000,000,000.00.

8

Currency

Este campo se utiliza para almacenar cualquier valor de moneda en el rango de 922,337,203,685,477.0000 a 922,337,203,685,477.0000. También puede especificar la Precisión como Decimal de precio, Precisión de moneda o cualquier valor entre 0 y 4.

9

Multiple Lines of Text

Este es un cuadro de texto con desplazamiento. Puede establecer el número máximo de caracteres para este campo.

10

Date and Time

Este campo se utiliza para almacenar datos relacionados con la fecha en CRM con dos formatos compatibles: solo fecha y fecha y hora. También puede especificar el comportamiento como Local de usuario, Solo fecha e Independiente de la zona horaria.

11

Lookup

Puede crear un campo de búsqueda utilizando una relación de entidad que ya se ha creado, pero que aún no se ha utilizado con otro campo de búsqueda. Si crea un campo de búsqueda en un formulario de entidad, la relación se genera automáticamente. Se crea un campo de búsqueda como un campo de relación.

En los dos últimos capítulos, estudió cómo crear nuevas entidades, crear nuevos registros y tipos de campos disponibles en CRM. En este capítulo, aprenderá a agregar nuevos campos en formularios CRM.

De los 11 tipos de campos de datos estudiados en el capítulo anterior, utilizará tres tipos de campos en su empleador: conjunto de opciones (menú desplegable), varias líneas de texto y fecha y hora. El campo Conjunto de opciones se usaría para almacenar el tipo de empleador, varias líneas de texto se usarán para almacenar una breve descripción del empleador y el campo Fecha y hora se usará para almacenar la fecha en que se inició la empresa.Note: Ya tenía un campo de nombre en su formulario que era del tipo de una sola línea de texto.

Agregar campos en el formulario

Step 1 - Haga clic en el botón de la cinta superior seguido de Settingsopción. Hacer clicCustomizations opción de la sección Personalización (consulte la captura de pantalla a continuación).

Step 2 - Ahora haga clic en la opción Personalizar el sistema.

Esto abrirá la ventana DefaultSolution. Aprenderá más sobre las soluciones CRM en los siguientes capítulos, pero por ahora utilizará la solución CRM predeterminada.

Step 3 - Expanda la opción Entidades del panel izquierdo.

Step 4- De las entidades expandidas, seleccione Empleador. Esto abrirá los detalles de la entidad en la ventana derecha. Expanda la opción Empleador desde el panel izquierdo y podrá ver Formularios, Vistas, Gráficos, Campos y otras opciones.

Step 5- Haga clic en Campos. Se abrirá una cuadrícula que muestra todos los campos que venían por defecto cuando creó esta entidad.

Step 6- Haga clic en el botón Nuevo. En la nueva ventana que se abre, ingrese los siguientes detalles:

Display Name - Tipo de empleador

Name- Este campo se completará automáticamente según el nombre de visualización que seleccione. Sin embargo, si desea cambiarlo, puede hacerlo.

Data Type- Conjunto de opciones. Tan pronto como seleccione el tipo de datos como conjunto de opciones, le mostrará el panel de opciones. Al hacer clic en el icono más (+) se crea un nuevo elemento de conjunto de opciones con la etiqueta predeterminada como elemento y el valor predeterminado como 100.000.000. Puede cambiar la etiqueta de este elemento para agregar cuatro opciones que representen los tipos de empleadores: privado, gubernamental, multinacional y público.

Step 7- Haga clic en Guardar y cerrar en la cinta superior. Ha creado correctamente el campo Tipo de empleador.

Step 8 - De manera similar a lo que acaba de hacer para agregar el campo Tipo de empleador, agregue otros tres campos como se describe y se muestra en las siguientes capturas de pantalla -

Number of Employees - Este será un campo de Número entero.

Founded On - Este será un campo de fecha y hora.

Employer Description - Este será un campo de varias líneas de texto.

Step 9- Ahora agregue estos nuevos campos en el formulario del empleador. Para esto, haga clic en Formularios en el menú de navegación de la izquierda debajo de la entidad Empleador. Esto le mostrará dos formularios con información de nombre. De forma predeterminada, CRM crea dos formularios: Main y Mobile-Express. Haga clic en el formulario principal.

Step 10 - Puede ver los campos recién agregados en el panel Explorador de campos a la derecha.

Step 11 - Arrastre y suelte estos campos en la pestaña General.

Step 12 - Haga clic en Guardar y luego en Publicar.

Step 13- Ahora puede crear registros de empleadores con los campos de actualizaciones. Vaya a Inicio de CRM → Ventas → Empleadores → Nuevo. El nuevo formulario que se abrirá esta vez contendrá todos los campos nuevos que agregó en este capítulo. Puede completar algunos detalles y hacer clic en Guardar y cerrar.

Conclusión

En este capítulo, aprendimos cómo trabajar con formularios CRM y cómo personalizarlos colocando varios tipos de campos en ellos. También aprendimos a agregar tantos campos como queramos en cualquier formulario y organizarlos usando varias pestañas y secciones según los requisitos comerciales.

Microsoft Dynamics CRM es un gran producto que ha evolucionado significativamente a lo largo de los años. El producto viene con muchas funcionalidades listas para usar que están incorporadas en el sistema. No es necesario que escriba ningún código para utilizar estas funciones. Una de las características importantes listas para usar es la capacidad de búsqueda de CRM, ya que admite funciones avanzadas de consulta y filtrado.

Búsqueda rápida

De forma predeterminada, la vista de cuadrícula de cada entidad en CRM admite una función de búsqueda rápida utilizando una barra de búsqueda en la parte superior derecha. A continuación se muestra una captura de pantalla de la búsqueda rápida en la entidad de contacto.

Puede intentar ingresar una cadena de búsqueda como 'Robert' y devolverá todos los registros coincidentes.

Puede prefijar la palabra clave de búsqueda con * (asterisco) para realizar una búsqueda con comodines.

Note - Cuando se utiliza la versión de cliente web de Microsoft Dynamics CRM, la búsqueda rápida siempre busca en todos los registros activos independientemente de la vista seleccionada.

Puede personalizar la búsqueda rápida (como personalizar cualquier otra vista) para modificar los criterios de filtrado, configurar la clasificación, agregar columnas de vista, agregar columnas de búsqueda y cambiar otras propiedades.

Búsqueda Avanzada

La búsqueda avanzada le permite buscar registros de cualquier entidad en CRM. Es una de las funciones más sólidas y útiles que viene de fábrica con CRM. El icono de búsqueda avanzada aparece en la barra de cinta superior de Microsoft Dynamics CRM, independientemente de la pantalla en la que se encuentre.

Haga clic en el icono Búsqueda avanzada para abrir la ventana Búsqueda avanzada. Esta ventana le permitirá seleccionar la entidad para la que desea buscar registros, aplicar criterios de filtrado y agrupación y guardar sus vistas de Búsqueda avanzada como vistas personales.

Pongamos un ejemplo. Supongamos que desea buscar todos los contactos con nombre que contengan a Robert y que estén divorciados. Por esto -

Step 1- Seleccione Contactos en el menú desplegable Buscar. Este menú desplegable contendrá todas las entidades presentes en su sistema.

Step 2- Ingrese los criterios de búsqueda como se muestra en la siguiente captura de pantalla. Puede agregar tantos parámetros de consulta de búsqueda como desee. Incluso puede agrupar dichos criterios utilizando parámetros de grupo. Por ejemplo, si desea buscar todos los contactos cuyo nombre sea Robert o Mark, puede agregar dos criterios de búsqueda y agruparlos usando GroupOR.

Step 3- Haga clic en el botón Resultados. Mostrará los registros coincidentes en una nueva pestaña.

Step 4- También puede editar las columnas que le gustaría ver en los resultados de búsqueda haciendo clic en Editar columnas. Por ejemplo, nuestra cuadrícula actual contiene solo dos columnas: Nombre completo y Teléfono comercial. Sin embargo, si desea que se agregue una columna adicional de ID de correo electrónico a esta cuadrícula, puede hacerlo usando esta opción.

Guardar vista personalizada

En esta etapa, si desea guardar este criterio de búsqueda, junto con los filtros y las columnas editadas, puede hacerlo haciendo clic en el botón Guardar. Una vez guardada, puede usar esta vista guardada cuando esté en la página de esa entidad.

Por ejemplo, considere que como ejecutivo de clientes atiende a dos tipos de clientes: Normal y Premium. Por lo tanto, puede crear un filtro avanzado con estas categorías respectivas y guardarlos como Contactos normales asignados a mí y Contactos premium asignados a mí. A continuación, puede acceder rápidamente a estas vistas directamente desde la página de la entidad de contacto sin realizar una búsqueda rápida o una búsqueda avanzada cada vez que utilice el sistema.

Los recursos web en CRM son los archivos web virtuales que se almacenan en la base de datos de CRM y se utilizan para implementar funcionalidades de páginas web en CRM. Estos archivos pueden ser HTML, JScript, Silverlight o cualquier otro tipo compatible.

CRM, al ser un producto, viene con un amplio conjunto de características y funcionalidades. Sin embargo, la mayoría de las veces, tendrá que ampliar estas funcionalidades existentes para cumplir con sus requisitos personalizados. La extensión de estas funcionalidades generalmente ocurre de dos maneras:

  • Extending on Client Side - Uso de recursos web y scripting de formularios.

  • Extending on Server Side - Complementos, flujos de trabajo y servicios web (aprenderemos esta parte en los próximos capítulos).

Usos de los recursos web

Como se mencionó anteriormente, extender CRM en el lado del cliente es donde los recursos web entran en escena. Para entender esto claramente, considere los siguientes casos de uso:

  • Tiene un formulario CRM que contiene ciertos campos. CRM proporciona funciones listas para usar para validaciones básicas como campos obligatorios, longitudes de campos, etc. Sin embargo, ¿qué sucede si desea tener una validación más compleja, como validar si el número de teléfono ingresado está en el formato correcto, o validando si la dirección ingresada realmente existe, o si el SSN ingresado es correcto?

  • CRM proporciona personalizaciones de IU listas para usar, como crear secciones y pestañas en un formulario, reorganizar campos, etc. Sin embargo, ¿qué pasa si el cliente desea crear una página personalizada que muestre toda la información del cliente proveniente de sus ¿Sistema ERP?

  • CRM viene con una barra de cinta estándar, que contiene todos los botones y opciones. ¿Qué sucede si desea agregar un botón de cinta propio?

  • Considere que ya cuenta con un sistema ERP. ¿Qué sucede si desea abrir algunas pantallas de CRM desde este sistema ERP?

  • Siempre puede llamar a cualquier servicio web externo en su código de complemento del lado del servidor. Sin embargo, ¿qué sucede si desea llamar a cualquier servicio web externo mientras todavía está en el lado del cliente?

La respuesta a todos estos "Qué pasaría si" son los recursos web. Se puede acceder a cada recurso web a través de su URL única. Puede cargar un archivo de recursos web o recursos basados ​​en código (como HTML, Jscript, etc.), incluso puede editarlos directamente dentro de CRM. Dado que los recursos web se almacenan dentro de CRM, se pueden migrar fácilmente de un entorno a otro junto con cualquier personalización de CRM.

Tipos de recursos web

Tipo de recurso web Aplicación de muestra en CRM
Página web (HTML) Es posible que desee crear cualquier página HTML personalizada, como mapas, página de aplicación personalizada, etc. y colocarla dentro de su formulario de CRM.
Hoja de estilo (CSS) Cualquier archivo CSS que se utilizará junto con los archivos HTML.
Secuencia de comandos (JScript) Cualquier lógica del lado del cliente, como validaciones, manipulación de valores de campo, etc.
Datos (XML) Se puede utilizar para almacenar ajustes estáticos o datos de configuración.
Imagen (PNG, JPG, GIF, ICO) Cualquier imagen utilizada en la aplicación en botones de cinta, iconos, formularios, etc.
Silverlight (XAP) Cualquier aplicación personalizada de Silverlight incrustada en CRM.
Hoja de estilo (XSL) Se utiliza para transformar datos XML.

De todos estos tipos de recursos web, estudiaremos los tipos más importantes de recursos web: recursos web HTML y recursos web JScript, en los capítulos siguientes.

Acceso a recursos web para cualquier entidad

Se puede acceder a todos los recursos web almacenados en la base de datos en CRM. Los siguientes son los pasos involucrados:

Step 1 - Vaya a Configuración → Personalizaciones → Personalizar el sistema.

Step 2 - Desde la navegación izquierda, seleccione Web Resources. Actualmente, no podrá ver ningún recurso web ya que aún no hemos creado nada.

Veremos cómo crear recursos web en los próximos capítulos.

Los recursos web de JScript son probablemente el tipo más importante de recursos web que utilizará con Microsoft Dynamics CRM.

Aplicaciones de JavaScript en CRM

Programación de eventos de formulario

La programación de eventos de formulario se utiliza para manejar comportamientos del lado del cliente, como lo que sucede cuando un usuario abre un formulario, cambia algunos datos, se mueve a través de pestañas, etc. Para lograr tales interacciones del lado del cliente, deberá escribir código JavaScript y agregarlo como un Recurso web JScript en CRM. Sin embargo, el código JavaScript que escribirá debe utilizar el modelo Xrm.Page de Dynamic CRM y no el DOM JavaScript estándar. El uso del modelo Xrm.Page es la forma de codificación de Microsoft que garantiza que cualquier código que escriba con este modelo será compatible con cualquier versión futura de CRM.

Recursos web

Además de usarse en la programación de eventos de formulario, JavaScript se usa en otras aplicaciones de CRM como:

  • Abra formularios, vistas y cuadros de diálogo con una URL única.

  • Uso de terminales OData y SOAP para interactuar con servicios web.

  • Hacer referencia al código JavaScript dentro de otros recursos web (como recursos web HTML).

En tales casos, escribiría su código JavaScript (usando el modelo Xrm.Page) y lo agregaría como un recurso web JScript en CRM, que luego puede ser referenciado en cualquier lugar con un URI único.

Personalizaciones de la cinta

Finalmente, uno de los otros usos comunes de JavaScript es manejar personalizaciones de cinta como:

  • Mostrar / ocultar botones de la cinta según alguna lógica
  • Habilitar / deshabilitar los botones de la cinta según alguna lógica
  • Manejar lo que sucede cuando haces clic en un botón de cinta determinado

Para manejar tales escenarios, escribirá su lógica de JavaScript (usando el modelo Xrm.Page) y luego la agregará como un recurso web JScript. A continuación, se puede hacer referencia a este recurso web en el XML del botón de la cinta y podemos especificar qué método en qué archivo JScript llamar para verificar si un botón de la cinta debe mostrarse / ocultarse o habilitarse / deshabilitarse o manejar eventos de clic.

Modelo de objeto Xrm.Page

A continuación se muestra la jerarquía del objeto Xrm.Page que muestra los espacios de nombres disponibles, los objetos y sus colecciones. Utilizará estas propiedades al escribir código JScript.

Espacios de nombres

No Señor Descripción del objeto
1

Context

Proporciona métodos para recuperar información específica del contexto, como detalles de la organización, detalles del usuario que inició sesión o parámetros que se pasaron al formulario en una cadena de consulta.

2

Data

Proporciona acceso a los datos de la entidad y los métodos para administrar los datos en el formulario, así como en el control de flujo del proceso empresarial.

3

UI

Contiene métodos para recuperar información sobre la interfaz de usuario, además de colecciones para varios subcomponentes del formulario.

Objetos

No Señor Descripción del objeto
1

Entity

Proporciona un método para:

  • Recuperar información de registro
  • Método de guardado
  • Atributos de la colección
2

Process

Métodos para recuperar propiedades del flujo de procesos comerciales.

3

Navigation

Proporciona acceso a elementos de navegación mediante la colección de elementos.

4

FormSelector

Utiliza la colección de elementos para acceder a los formularios disponibles para el usuario. También usa el método de navegación para cerrar y abrir formularios.

5

Stages

Cada proceso tiene una colección de etapas a las que se puede acceder mediante el método de proceso getStages.

6

Steps

Cada etapa consta de varios pasos a los que se puede acceder mediante el método getSteps de etapa.

Colecciones

No Señor Colecciones y descripción
1

Attributes

Proporciona acceso a los atributos de entidad disponibles en el formulario.

2

Controls

ui.controls - Proporciona acceso a cada control presente en el formulario.

attribute.controls - Proporciona acceso a todos los controles dentro de un atributo.

section.controls - Proporciona acceso a todos los controles dentro de una sección.

3

Items

Proporciona acceso a todos los elementos de navegación de un formulario.

4

Tabs

Proporciona acceso a todas las pestañas de un formulario.

5

Sections

Proporciona acceso a todas las secciones de un formulario.

Eventos admitidos en la programación de formularios

La programación de formularios usando el modelo Xrm.Page le permite manejar los siguientes eventos de formulario:

  • onLoad
  • onSave
  • onChange
  • TabStateChange
  • OnReadyStateComplete
  • PreSearch
  • Eventos de control de flujo de procesos de negocio

Ejemplo de programación de formularios

En este ejemplo, pondremos algunas validaciones en el formulario de contacto basadas en el método preferido de comunicación que seleccione el usuario. Por lo tanto, si el usuario selecciona su método preferido como Correo electrónico, el campo Correo electrónico debería volverse obligatorio y de manera similar para otros campos de Teléfono y Fax.

Step 1 - Crea un archivo JavaScript llamado contacts.js y copie el siguiente código.

function validatePreferredMethodOfCommunication() { 

   //get the value of Preffered Method of Communication code 
   var prefferedContactMethodCode = 
      Xrm.Page.getAttribute('preferredcontactmetho dcode').getValue();  
   
   //if Preferred Method = Any, make all fields as non-mandatory 
   
   //else if Preferred Method = Phone, make Mobile Phone field mandatory 
   //and all other fields as non-mandatory 
   
   //else if Preferred Method = Fax, make Fax field mandatory 
   //and all other fields as non-mandatory 
   
   if(prefferedContactMethodCode == 1) { 
      clearAllMandatoryFields(); 
   }  
   if(prefferedContactMethodCode == 2) { 
      clearAllMandatoryFields(); 
      Xrm.Page.getAttribute('emailaddress1').setRequiredLevel('required'); 
   } else if(prefferedContactMethodCode == 3) { 
      clearAllMandatoryFields(); 
      Xrm.Page.getAttribute('mobilephone').setRequiredLevel('required'); 
   } else if(prefferedContactMethodCode == 4) { 
      clearAllMandatoryFields(); 
      Xrm.Page.getAttribute('fax').setRequiredLevel('required'); 
   } 
} 
function clearAllMandatoryFields() { 
   
   //clear all mandatory fields 
   Xrm.Page.getAttribute('emailaddress1').setRequiredLevel('none'); 
   Xrm.Page.getAttribute('mobilephone').setRequiredLevel('none'); 
   Xrm.Page.getAttribute('fax').setRequiredLevel('none'); 
}

Step 2 - Abra el formulario de la entidad de contacto navegando a Configuración → Personalizaciones → Personalizar el sistema → Entidad de contacto → Formularios → Formulario principal.

Step 3 - Haga clic en Propiedades del formulario.

Step 4 - Desde la ventana Propiedades del formulario, haga clic en Agregar.

Step 5 - En la siguiente ventana Buscar registro de recursos web, haga clic en Nuevo ya que estamos creando un nuevo recurso web.

Step 6 - En la ventana Nuevo recurso web, ingrese los siguientes detalles -

Name - new_contacts.js

Display Name - contactos.js

Type - JScript

Upload File - Cargue el archivo JavaScript que creó desde su máquina local.

Step 7- Haga clic en Guardar seguido de Publicar. Después de esto, cierre la ventana y volverá a la ventana Buscar registro de recursos web.

Step 8- Aquí, ahora puede ver el recurso web new_contacts.js. Selecciónelo y haga clic en Agregar. Ahora ha agregado correctamente un nuevo recurso web y lo ha registrado en el formulario.

Step 9- Ahora agregaremos un controlador de eventos sobre el cambio del campo Método preferido de comunicación. Este controlador de eventos llamará a la función de JavaScript que acabamos de escribir. Seleccione las siguientes opciones de la sección Controlador de eventos.

Control - Método de comunicación preferido

Event - OnChange

Luego, haga clic en el Add , como se muestra en la siguiente captura de pantalla.

Step 10 - En la siguiente ventana de Handler Properties, especificaremos el método que se llamará cuando ocurra el evento de cambio.

Seleccione Biblioteca como new_contacts.js y Función como validatePreferredMethodOfCommunication. Haga clic en Aceptar.

Step 11- Ahora podrá ver la biblioteca de formularios (recurso web) y los eventos registrados en ella. Haga clic en Aceptar.

Step 12 - Haga clic en Guardar seguido de Publicar.

Step 13- Ahora abra cualquier formulario de contacto y configure el método de comunicación preferido como teléfono. Esto hará que el campo Teléfono móvil sea obligatorio. Si ahora intenta guardar este contacto sin ingresar ningún número de teléfono móvil, le dará un error que dice "Debe proporcionar un valor para el teléfono móvil".

Conclusión

En este capítulo, comenzamos por comprender las tres aplicaciones importantes de JavaScript en CRM. Más tarde, exploramos el modelo Xrm.Page y lo usamos para aprender la programación de formularios junto con un ejemplo.

En este capítulo, aprenderemos sobre los diversos recursos web en Microsoft Dynamics CRM.

Aplicaciones de recursos web HTML

Un recurso web HTML en CRM puede contener cualquier contenido HTML que se pueda representar en un navegador. Considere los siguientes escenarios en los que le gustaría utilizar recursos web HTML:

  • Tiene una página HTML estática que desea mostrar dentro de la pantalla de CRM.

  • Tiene una página HTML personalizada que espera algunos parámetros de entrada y se renderiza en función de esos parámetros de entrada. Por ejemplo, considere que está obteniendo información de un servicio web o API externo y desea mostrarlo en CRM.

  • Desea mostrar cierta información con un aspecto diferente al de la interfaz de usuario de CRM estándar.

Tiene una página ASPX personalizada (fuera de la aplicación CRM) que se representa en función de los parámetros de entrada. Dado que CRM no le permite tener recursos web ASPX, puede crear un recurso web HTML y llamar a la página ASPX externa desde esta página HTML.

Ejemplo de recurso web HTML

Crearemos un recurso web HTML muy simple que mostrará un texto personalizado 'Bienvenido a TutorialsPoint'. Tenga en cuenta que este es un ejemplo muy simple de un recurso web HTML. Prácticamente, los recursos web HTML serían más complejos que esto.

Step 1 - Crea un archivo HTML llamado sampleHTMLWebResource.html y copie el siguiente código.

<!DOCTYPE html> 
<htmllang = "en"xmlns = "http://www.w3.org/1999/xhtml"> 
   <head> 
      <metacharset = "utf-8"/> 
      <title>Welcome to Tutorials Point</title> 
   </head> 
   
   <body> 
      <h1>Welcome to Tutorials Point. This is an example of HTML Web Resource.</h1> 
   </body> 
</html>

Step 2- Primero, crearemos un nuevo recurso web y luego lo referenciaremos en el formulario de contacto. Abra DefaultSolution y navegue hasta la pestaña WebResources en el panel izquierdo. Haga clic en Nuevo.

Step 3- Se abrirá una ventana de Nuevo recurso web. Ingrese los detalles como se muestra en la siguiente captura de pantalla y busque el archivo HTML que creamos en el Paso 1. Haga clic en Guardar y publicar. Cerrar la ventana.

Step 4 - Verá el nuevo recurso web agregado a la cuadrícula de recursos web.

Step 5- Ahora abra el formulario de contacto a través de Configuración → Personalizaciones → Personalizar el sistema → Contacto → Formulario principal. Seleccione la sección Información de contacto y cambie a la pestaña Insertar de la barra de cinta superior. Haga clic en Recurso web.

Step 6- Se abrirá una ventana Agregar recurso web. Haga clic en Búsqueda de recursos web en esta ventana, que abrirá la ventana Registro de búsqueda de recursos web. Busque el recurso web que acaba de crear (new_sampleHTMLWebResource), selecciónelo en la cuadrícula y haga clic en Agregar.

Step 7- Volviendo a Agregar recurso web, ingrese el Nombre y la Etiqueta como se muestra en la siguiente captura de pantalla y haga clic en Aceptar. Cerrar la ventana.

Verá el recurso web HTML agregado debajo del campo Dirección.

Step 8 - Para probar esto, abra cualquier registro de contacto y verá el contenido del recurso web HTML que se muestra allí.

Limitaciones de los recursos web HTML

  • No existe una forma compatible de utilizar el código del lado del servidor en HTML Web Resources.

  • Los recursos web HTML solo pueden aceptar un número limitado de parámetros. Para pasar más de un valor en el parámetro de datos, tendrá que codificar los parámetros e incluir la lógica de decodificación en el otro extremo.

Los flujos de trabajo en CRM le permiten automatizar procesos comerciales simples y complejos dentro de CRM. Puede crear flujos de trabajo utilizando funcionalidades CRM listas para usar o escribir flujos de trabajo personalizados con código .NET para implementar flujos de trabajo complejos. Los procesos de flujo de trabajo se ejecutan en segundo plano o en tiempo real y, opcionalmente, pueden requerir una entrada del usuario.

Los flujos de trabajo se pueden activar en función de condiciones específicas o incluso los usuarios pueden iniciarlos manualmente. Internamente, los flujos de trabajo de CRM se implementan mediante Windows Workflow Foundation. En este capítulo, aprenderemos sobre la configuración de flujos de trabajo.

La configuración de un flujo de trabajo tiene las siguientes partes principales (en secuencia):

  • Configurar la entidad en la que se ejecutará el flujo de trabajo
  • Configure si el flujo de trabajo se ejecutará de forma sincrónica o asincrónica
  • Configure el mensaje (evento) en el que se ejecutará el flujo de trabajo
  • Configurar el ámbito en el que se ejecutará el flujo de trabajo
  • Configurar las etapas y pasos (acciones) del flujo de trabajo

Flujo de trabajo sincrónico / asincrónico

Cuando cree un flujo de trabajo, verá la opción Ejecutar este flujo de trabajo en segundo plano (recomendado) que determina si el flujo de trabajo se ejecutará en tiempo real (sincrónicamente) o en segundo plano (asincrónicamente).

Generalmente, el enfoque recomendado es ejecutar los flujos de trabajo en segundo plano, ya que utilizan los recursos del sistema cuando están disponibles. Sin embargo, siempre puede volver de un flujo de trabajo en tiempo real a un flujo de trabajo en segundo plano y viceversa.

Mensajes de flujo de trabajo

Los flujos de trabajo se pueden registrar en eventos específicos de la siguiente manera:

  • Cuando se crea un registro
  • Cuando cambia el estado de un registro
  • Cuando se asigna un registro
  • Cuando cambia el valor de un campo de registro
  • Cuando se elimina un registro

Alcance del flujo de trabajo

Los flujos de trabajo le permiten establecer el alcance en el que se ejecutará el flujo de trabajo. A continuación se muestran los ámbitos de flujo de trabajo admitidos:

User El flujo de trabajo se ejecutará solo en los registros que pertenecen al mismo usuario que el usuario del flujo de trabajo.
Business Unit El flujo de trabajo se ejecutará en los registros propiedad de los usuarios de la unidad de negocio, al igual que el usuario del flujo de trabajo.
Parent Child Business Units El flujo de trabajo se ejecutará en los registros propiedad de los usuarios de la unidad de negocio, al igual que el usuario del flujo de trabajo, así como cualquier unidad de negocio secundaria.
Organization El flujo de trabajo se ejecutará en registros propiedad de cualquier usuario en CRM.

Pasos del flujo de trabajo

Los flujos de trabajo en CRM son una combinación de una serie de pasos que seguirá el flujo de trabajo. Incluso puede dividir estos pasos en etapas lógicas. Los siguientes pasos son compatibles con los flujos de trabajo de CRM:

Conditional Steps
Check Condition Especifica una declaración lógica "si (condición) - entonces".
Conditional Branch Especifica una instrucción lógica "else - if - then". Esto solo se puede usar con una condición de verificación.
Default Action Especifica una declaración lógica "else". Esto solo se puede usar con una condición de verificación.
Wait Steps
Wait Condition Espera hasta que se cumpla una condición específica. No se aplica a los flujos de trabajo en tiempo real.
Parallel Wait Branch Especifica una condición de espera alternativa con un conjunto de pasos adicionales que se pueden realizar una vez que se cumplen los criterios iniciales.
Action Steps
Create Record Crea un registro de la entidad especificada con los valores predeterminados especificados.
Update Record Actualiza el registro seleccionado con valores especificados o dinámicos.
Assign Record Asigna el registro seleccionado a un usuario o equipo.
Send Email Envía un correo electrónico.
Perform Action Especifica los pasos (y acciones) del flujo de trabajo personalizado. Estos pasos personalizados deben ser desarrollados por un desarrollador de CRM.
Change Status Cambia el estado del registro seleccionado.
Stop Workflow Detiene el flujo de trabajo actual

Ejemplo de flujo de trabajo

En este ejemplo, crearemos un flujo de trabajo simple que se ejecuta en segundo plano para asignar cualquier registro de contacto recién creado a un usuario específico y luego enviar un correo electrónico de bienvenida al cliente.

Step 1 - Vaya a Configuración → Procesos.

Step 2 - Haga clic en Nuevo.

Step 3 - En la ventana CreateProcess, ingrese los siguientes detalles -

Process Name - Nuevo flujo de trabajo de cliente (puede ser cualquier nombre que desee)

Category - flujo de trabajo

Entity - Contacto (Esta será la entidad en la que está creando el flujo de trabajo. En nuestro caso es Contacto)

Run this workflow in the background (recommended)- Marque esta opción ya que estamos creando un flujo de trabajo asincrónico en segundo plano. Finalmente, haga clic en Aceptar.

Step 4 - En la Ventana de Nuevo proceso ingrese los siguientes detalles -

Activate As - Proceso

Scope - usuario

Start when - Se crea el registro

Hacer clic Add Step → Asignar registro.

Step 5- Verá un nuevo paso agregado al flujo de trabajo. En este paso, especificaremos el usuario al que se deben asignar todos los contactos creados. Ingrese el nombre del paso comoAssign Record to Team. La opción Asignar estará predeterminada como la entidad en la que estamos creando el flujo de trabajo (Contacto en nuestro caso). Haga clic en el icono de búsqueda.

Step 6- En la ventana de búsqueda, seleccione cualquier usuario que desee. Incluso puede seleccionar un equipo específico al que desea asignar los registros. Haga clic en Agregar.

Step 7- Agregue otro paso haciendo clic en Agregar paso → Enviar correo electrónico. En este paso, configuraremos el envío de correo electrónico al cliente.

Step 8- Se agregará un nuevo paso. Ingrese su nombre como Enviar correo electrónico al cliente. Haga clic en Establecer propiedades.

Step 9 - En la siguiente ventana para configurar el correo electrónico, realice las siguientes operaciones:

From- Haga clic en el campo Desde. En el panel derecho, seleccione Usuario propietario y Usuario. Haga clic en Agregar → Aceptar.

To- Haga clic en el campo Para. En el panel derecho, seleccione Contacto y Contacto. Haga clic en Agregar → Aceptar.

Subject - Ingrese un Asunto relevante.

Body - Ingrese un contenido relevante del cuerpo.

Step 10 - Haga clic en Guardar y luego en Activar.

Step 11 - En la ventana emergente Process Activate Confirmation que aparece a continuación, haga clic en Activar.

Step 12- Vaya a la pestaña Contactos y cree un nuevo contacto. Tan pronto como cree un nuevo contacto guardando el registro, verá el campo Propietario configurado para el usuario, que había configurado en el flujo de trabajo. Además, si hace clic en la pestaña Actividades, verá que se está creando una actividad de correo electrónico para este contacto. Esto confirma que el flujo de trabajo se ejecutó correctamente.

Flujo de trabajo vs complemento

Los flujos de trabajo y los complementos se pueden utilizar para ampliar y automatizar las funcionalidades de CRM. En muchos escenarios, ambos enfoques se pueden usar indistintamente en lugar del otro. Por ejemplo, si tiene el simple requisito de enviar un correo electrónico a sus clientes, puede hacerlo a través de un complemento o un flujo de trabajo.

Entonces, ¿cómo eliges entre crear un flujo de trabajo o un complemento? La siguiente lista intenta explicar lo mismo:

  • Aunque tanto los complementos como los flujos de trabajo se pueden usar para ejecutar lógica síncrona y asincrónica, los complementos generalmente se prefieren para la lógica síncrona, mientras que los flujos de trabajo para la lógica asincrónica.

  • En general, para implementar una lógica empresarial compleja, se prefieren los complementos a los flujos de trabajo. Se prefieren los flujos de trabajo cuando desea lograr funcionalidades relativamente más sencillas (como enviar correos electrónicos, asignar usuarios, etc.)

  • Los complementos deben desarrollarse con codificación, mientras que los flujos de trabajo pueden ser configurados directamente por los usuarios comerciales sin ningún conocimiento de los flujos de trabajo.

  • Los flujos de trabajo pueden ejecutarse bajo demanda. Por lo tanto, si hay requisitos en los que el usuario desea ejecutar alguna lógica manualmente, los flujos de trabajo serían una mejor opción.

  • Desde el impacto en el rendimiento, los complementos síncronos proporcionan un mejor rendimiento (y rendimiento) en comparación con los flujos de trabajo en tiempo real en escenarios donde la frecuencia de solicitud es mayor.

Conclusión

Este capítulo nos presentó una de las funciones más importantes de CRM: los flujos de trabajo. Primero entendimos los flujos de trabajo sincronizados / asíncronos, los mensajes, el alcance, los pasos y finalmente vimos un ejemplo en vivo de cómo crear y ejecutar un flujo de trabajo. Finalmente, vimos las diferencias entre un flujo de trabajo y un complemento.

Un complemento es una lógica empresarial personalizada que se integra con Microsoft Dynamics CRM para modificar o ampliar el comportamiento estándar de la plataforma. Los complementos actúan como controladores de eventos y se registran para ejecutarse en un evento particular en CRM. Los complementos están escritos en C # o VB y pueden ejecutarse en modo síncrono o asíncrono.

Algunos escenarios en los que escribirías un complemento son:

  • Desea ejecutar alguna lógica empresarial, como actualizar ciertos campos de un registro o actualizar registros relacionados, etc. cuando crea o actualiza un registro CRM.

  • Desea llamar a un servicio web externo sobre ciertos eventos, como guardar o actualizar un registro.

  • Desea calcular dinámicamente los valores de campo cuando se abre cualquier registro.

  • Quiere automatizar procesos como el envío de correos electrónicos a sus clientes sobre determinados eventos en CRM.

Marco de eventos

El marco de procesamiento de eventos en CRM procesa las solicitudes de complementos síncronos y asincrónicos pasándolos a la canalización de ejecución de eventos. Siempre que un evento activa la lógica de un complemento, se envía un mensaje al Servicio web de organización de CRM, donde otros complementos o cualquier operación principal de la plataforma pueden leerlo o modificarlo.

Etapas de canalización de complementos

Toda la canalización de complementos se divide en varias etapas en las que puede registrar su lógica empresarial personalizada. La etapa de canalización especificada indica en qué etapa del ciclo de ejecución del complemento se ejecuta el código del complemento. De todas las etapas de canalización especificadas en la siguiente tabla, puede registrar sus complementos personalizados solo en eventos previos y posteriores. No puede registrar complementos en las operaciones principales de Platform Core.

Evento Nombre artístico Descripción
Pre-evento Prevalidación Etapa en la tubería para complementos que se ejecutarán antes de la operación del sistema principal. Los complementos registrados en esta etapa pueden ejecutarse fuera de la transacción de la base de datos.
Pre-evento Preoperación Etapa en la tubería para complementos que se ejecutarán antes de la operación del sistema principal. Los complementos registrados en esta etapa se ejecutan dentro de la transacción de la base de datos.
Operación del núcleo de la plataforma MainOperation Intransacción, la operación principal del sistema, como crear, actualizar, eliminar, etc. No se pueden registrar complementos personalizados en esta etapa. Sólo para uso interno.
Posterior al evento Post operacion Etapa en la tubería para complementos que se ejecutarán después de la operación principal. Los complementos registrados en esta etapa se ejecutan dentro de la transacción de la base de datos.

Siempre que la aplicación CRM invoca un evento (como guardar o actualizar un registro), se lleva a cabo la siguiente secuencia de acciones:

  • El evento desencadena una llamada de servicio web y la ejecución pasa a través de las etapas de la canalización del evento (pre-evento, operaciones centrales de la plataforma, post-evento).

  • La información se empaqueta internamente como un mensaje de OrganizationRequest y finalmente se envía a los métodos internos del servicio web CRM y las operaciones centrales de la plataforma.

  • Los complementos previos al evento reciben primero el mensaje OrganizationRequest, que pueden modificar la información antes de pasarla a las operaciones principales de la plataforma. Después de las operaciones centrales de la plataforma, el mensaje se empaqueta como OrganizationResponse y se pasa a los complementos posteriores a la operación. Los complementos de posoperaciones pueden modificar opcionalmente esta información antes de pasarla al complemento asíncrono.

  • Los complementos reciben esta información en forma de objeto de contexto que se pasa al método Execute, después de lo cual ocurre el procesamiento posterior.

  • Una vez que se completa todo el procesamiento del complemento, la ejecución se devuelve a la aplicación que desencadenó el evento.

Mensajes de complementos

Los mensajes son los eventos en los que se registra el complemento (o la lógica empresarial). Por ejemplo, puede registrar un complemento en la entidad Crear mensaje de contacto. Esto activaría la lógica empresarial cada vez que se crea un nuevo registro de contacto.

Para las entidades personalizadas, los siguientes son los mensajes admitidos en función de si la entidad es propiedad del usuario o de la organización.

Nombre del mensaje Tipo de Propiedad
Asignar Solo entidades de propiedad del usuario
Crear Entidades propiedad del usuario y propiedad de la organización
Eliminar Entidades propiedad del usuario y propiedad de la organización
Autorizará el acceso Solo entidades de propiedad del usuario
ModifyAccess Solo entidades de propiedad del usuario
Recuperar Entidades propiedad del usuario y propiedad de la organización
Recuperar múltiples Entidades propiedad del usuario y propiedad de la organización
RetrievePrincipalAccess Solo entidades de propiedad del usuario
RetrieveSharedPrincipalsAndAccess Solo entidades de propiedad del usuario
Revocar el acceso Solo entidades de propiedad del usuario
SetState Entidades propiedad del usuario y propiedad de la organización
SetStateDynamicEntity Entidades propiedad del usuario y propiedad de la organización
Actualizar Entidades propiedad del usuario y propiedad de la organización

Para las entidades predeterminadas listas para usar, hay más de 100 mensajes compatibles. Algunos de estos mensajes son aplicables a todas las entidades, mientras que algunos de ellos son específicos de determinadas entidades. Puede encontrar la lista completa de mensajes admitidos en un archivo de Excel dentro del SDK:SDK\Message-entity support for plug-ins.xlsx

Complemento de escritura

En esta sección, aprenderemos los conceptos básicos para escribir un complemento. Crearemos un complemento de muestra que crea una actividad de Tarea para hacer un seguimiento con el cliente cada vez que se agrega un nuevo cliente al sistema, es decir, cada vez que se crea un nuevo registro de contacto en CRM.

En primer lugar, debe incluir las referencias a Microsoft.Xrm.Sdkespacio de nombres. El SDK de CRM contiene todos los ensamblados de SDK necesarios. Suponiendo que ya ha descargado e instalado el SDK en el Capítulo 2, abra Visual Studio. Cree un nuevo proyecto de tipo Biblioteca de clases. Puede nombrar el proyecto como SamplePlugins y hacer clic en Aceptar.

Agregue la referencia de Microsoft.Xrm.Sdkmontaje a su proyecto. La asamblea está presente enSDK/Bin.

Ahora, crea una clase llamada PostCreateContact.cs y extender la clase desde IPlugin. Hasta ahora, su código tendrá un aspecto similar al siguiente.

También deberá agregar una referencia a System.Runtime.Serialization. Una vez que haya agregado las referencias requeridas, copie el siguiente código dentro delPostCreateContact clase.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Xrm.Sdk;

namespace SamplePlugins {
   public class PostCreateContact:IPlugin {
      /// A plug-in that creates a follow-up task activity when a new account is created.
      /// Register this plug-in on the Create message, account entity,
      /// and asynchronous mode.

      public void Execute(IServiceProviderserviceProvider) {
         // Obtain the execution context from the service provider.
         IPluginExecutionContext context =(IPluginExecutionContext)
            serviceProvider.GetService(typeof(IPluginExecutionContext));

         // The InputParameters collection contains all the data
            passed in the message request.

         if(context.InputParameters.Contains("Target")&&
            context.InputParameters["Target"]isEntity) {
            
            // Obtain the target entity from the input parameters.
            Entity entity = (Entity)context.InputParameters["Target"];
            try {
               
               // Create a task activity to follow up with the account customer in 7 days
               Entity followup = new Entity("task");
               followup["subject"] = "Send e-mail to the new customer.";
               followup["description"] =
                  "Follow up with the customer. Check if there are any new issues
                  that need resolution.";
               
               followup["scheduledstart"] = DateTime.Now;
               followup["scheduledend"] = DateTime.Now.AddDays(2);
               followup["category"] = context.PrimaryEntityName;

               // Refer to the contact in the task activity.
               if(context.OutputParameters.Contains("id")) {
                  Guid regardingobjectid = new Guid(context.OutputParameter
                     s["id"].ToString());
                  string regardingobjectidType = "contact";
                  followup["regardingobjectid"] = 
                     new EntityReference(rega rdingobjectidType,regardingobjectid);
               }
               
               // Obtain the organization service reference.
               IOrganizationServiceFactory serviceFactory =
                  (IOrganizationSer viceFactory)serviceProvider.GetService
                  (typeof(IOrganizationServiceFactory));
               IOrganizationService service = 
                  serviceFactory.CreateOrganizationService(context.UserId);

               // Create the followup activity
               service.Create(followup);
            } catch(Exception ex) {
               throw new InvalidPluginExecutionException(ex.Message);
            }
         }
      }
   }
}

A continuación se muestra una explicación paso a paso de lo que hace este código:

Step 1- Implementa el método Execute tomando el objeto IServiceProvider como parámetro. El proveedor de servicios contiene referencias a muchos objetos útiles que utilizará dentro del complemento.

Step 2 - Obtiene el objeto IPluginExecutionContext utilizando el método GetService de IServiceProvider.

Step 3- Obtiene el objeto de la entidad de destino de la colección InputParameters del objeto de contexto. Este objeto de clase de entidad se refiere al registro de la entidad de contacto en el que se registraría nuestro complemento.

Step 4- A continuación, crea un objeto de entidad de Tarea y establece el tema, la descripción, las fechas, la categoría y el objeto correspondiente. El respectingobjectid indica para qué registro de contacto se está creando este registro de actividad. Puede ver que el código obtiene la identificación del registro de contacto principal usando context.OutputParameters y lo asocia con el registro de entidad de tarea que ha creado.

Step 5 - Crea el objeto de IOrganizationServiceFactory usando el objeto IServiceProvider.

Step 6 - Crea un objeto de IOrganizationService utilizando el objeto IOrganizationServiceFactory.

Step 7- Finalmente, usando el método Create de este objeto de servicio. Crea la actividad de seguimiento que se guarda en CRM.

Firma del ensamblado del complemento

Esta sección es aplicable solo si está registrando su ensamblaje de complementos por primera vez. Debe iniciar sesión en el ensamblado con una clave para poder implementar el complemento. Haga clic con el botón derecho en la solución y haga clic en Propiedades.

Seleccione la pestaña Firma de las opciones de la izquierda y marque la opción 'Firmar el ensamblaje'. Luego, seleccione Nuevo en la opción Elija un archivo de clave de nombre seguro.

Introduzca el nombre del archivo de clave como plugins de muestra (puede ser cualquier otro nombre que desee). Desmarque la opción Proteger mi archivo de claves con contraseña y haga clic en Aceptar. Clic en Guardar.

Finalmente, construya la solución. Haga clic derecho → Construir. La construcción de la solución generará una DLL de ensamblaje, que usaremos en el próximo capítulo para registrar este complemento.

Manejo de excepciones en el complemento

La mayoría de las veces, la lógica de su complemento deberá manejar las excepciones en tiempo de ejecución. Para complementos síncronos, puede devolver unInvalidPluginExecutionExceptionexcepción, que mostrará un cuadro de diálogo de error al usuario. El cuadro de diálogo de error contendrá el mensaje de error personalizado que se pasa al objeto Mensaje del objeto de excepción.

Si observa nuestro código, estamos lanzando la excepción InvalidPluginExecutionException en nuestro bloque de captura.

throw new InvalidPluginExecutionException(ex.Message);

Conclusión

Los complementos son definitivamente cruciales para cualquier implementación CRM personalizada. En este capítulo, nos enfocamos en comprender el modelo de marco de eventos, las etapas de la canalización, los mensajes y escribir un complemento de muestra. En el próximo capítulo, registraremos este complemento en CRM y lo veremos funcionando de un extremo a otro.

En el último capítulo, creamos un complemento de muestra para crear una actividad de Tarea de seguimiento cuando se crea un registro de Contacto. En este capítulo, veremos cómo registrar este complemento en CRM utilizando la herramienta de registro de complementos. Puede encontrar la herramienta en esta ubicación: SDK / Tools / PluginRegistration / PluginRegistration.exe.

Para mayor comodidad, el proceso de registro del complemento se divide en tres secciones:

  • Conectando al servidor
  • Registro de la Asamblea
  • Registro del complemento

Conectando al servidor

Step 1 - Ejecute el PluginRegistration.exedesde la ubicación especificada anteriormente. Haga clic en el botón Crear nueva conexión.

Step 2- En la ventana de inicio de sesión, elija Office 365 ya que estamos usando la versión en línea de CRM. Ingrese sus credenciales y haga clic en Iniciar sesión.

Step 3 - La herramienta se abrirá y se verá como la siguiente captura de pantalla.

Registro de la Asamblea

Step 1 - Vaya a Registrarse → Registrar nueva asamblea.

Step 2- Esto abrirá la ventana Registrar nuevo ensamblaje. Haga clic en el icono Navegar y busque la DLL del complemento que creó en el último capítulo.

Step 3- Después de navegar por la DLL, haga clic en Cargar ensamblaje. Esto completará el ensamblado SamplePlugins y todas sus clases de complementos. Puedes ver elPostCreateContactclase de complemento resaltada a continuación. Si su ensamblaje de complementos tuviera 3 clases de complementos, habría mostrado tres complementos enumerados allí.

Step 4- Seleccione Modo de aislamiento como Sandbox, Ubicación como base de datos y haga clic en Registrar complementos seleccionados. Le mostrará un mensaje de éxito, si el registro es exitoso.

Registro del complemento

Ahora registraremos los pasos específicos en los que se llamarán los complementos individuales.

Step 1 - Seleccione el complemento PostCreateContact.

Step 2 - Haga clic en Registrar → Registrar nuevo paso.

Step 3 - Estaremos registrando este plugin en la creación de la entidad Contact, en la etapa de posoperación y en el modo síncrono.

Message - Crear

Primary Entity - contacto

Event Pipeline Stage of Execution - Post-operación

Execution Mode - Sincrónico

Mantenga el resto de las opciones por defecto y haga clic en Registrar nuevo paso.

Puede ver un nuevo paso agregado al complemento.

Ahora iremos a CRM y probaremos si nuestro complemento está funcionando correctamente. Tenga en cuenta que estos pasos de prueba son específicos de nuestro complemento de ejemplo.

Probando el complemento

Vaya a la pestaña Contactos y cree un nuevo registro. Una vez que guarde el registro, puede ver una nueva actividad creada y asociada con este registro.

Puede hacer clic en la actividad para ver los detalles que habíamos configurado en el código.

Esto confirma que nuestro complemento se ejecutó correctamente. Del mismo modo, puede ampliar sus complementos para lograr funcionalidades muy complejas.

Microsoft Dynamics CRM proporciona dos servicios web importantes que se utilizan para acceder a CRM desde una aplicación externa e invocar métodos web para realizar operaciones de datos comerciales comunes como crear, eliminar, actualizar y buscar en CRM.

Considere los siguientes escenarios:

  • Tiene una aplicación .NET externa, que necesita comunicarse con CRM. Por ejemplo, es posible que desee insertar un registro de contacto en CRM cuando se registre un nuevo cliente en su aplicación externa.

  • O tal vez, desee buscar registros en CRM y mostrar los resultados de la búsqueda en su aplicación externa.

En tales escenarios, puede utilizar los servicios web expuestos por CRM para consumirlos en su aplicación y realizar operaciones de creación, eliminación, actualización y búsqueda en CRM.

Servicio web IDiscoveryService

Este servicio web devuelve una lista de organizaciones a las que pertenece el usuario especificado y el punto final de URL para cada una de las organizaciones.

Servicio web IOrganizationService

Este servicio web es el servicio web principal que se utiliza para acceder a datos y metadatos en CRM. IOrganizationService utiliza dos ensamblados importantes:Microsoft.Xrm.Sdk.dll y Microsoft.Crm.Sdk.Proxy.dll. Estos ensamblados se pueden encontrar en el paquete CRM SDK dentro delBin carpeta.

Microsoft.Xrm.Sdk.dll

Este conjunto define los tipos y métodos principales de xRM, incluidas las clases de proxy para simplificar la conexión con Microsoft Dynamics CRM, los métodos de autenticación y los contratos de servicio.

Microsoft.Crm.Sdk.Proxy.dll

Este ensamblado define las solicitudes y respuestas para mensajes no esenciales, así como las enumeraciones necesarias para trabajar con los datos de la organización. A continuación se muestran los espacios de nombres admitidos por estos dos ensamblados.

Cada uno de estos ensamblados admite ciertos mensajes, que se utilizarán para trabajar con los datos almacenados en cualquier entidad. Puede encontrar una lista completa de mensajes compatibles con ellos en los siguientes enlaces:

Supported xRM Messages - https://msdn.microsoft.com/en-us/library/gg334698.aspx

Supported CRM Messages - https://msdn.microsoft.com/en-us/library/gg309482.aspx

Métodos de servicio web de IOrganizationService

los IOrganizationService proporciona ocho métodos que le permiten realizar todas las operaciones comunes en el sistema y las entidades personalizadas, así como los metadatos de la organización.

No Señor Método y descripción
1

IOrganizationService.Create

Crea un registro.

2

IOrganizationService.Update

Actualiza un registro existente.

3

IOrganizationService. Retrieve

Recupera un registro.

4

IOrganizationService. RetrieveMultiple

Recupera una colección de registros.

5

IOrganizationService. Delete

Elimina un registro.

6

IOrganizationService. Associate

Crea un vínculo entre registros.

7

IOrganizationService.Disassociate

Elimina un vínculo entre registros.

8

IOrganizationService.Execute

Se utiliza para el procesamiento de registros comunes, así como para el procesamiento especializado, como la resolución de casos, la detección de duplicados, etc.

Ejemplo de servicio web

Para comprender cómo funcionan los servicios web en CRM, veremos un ejemplo proporcionado por CRM SDK. En este ejemplo, crearemos un nuevo registro de cuenta, lo actualizaremos y finalmente lo eliminaremos usando el CRM.IOrganizationService servicio web.

Step 1- Abra la carpeta donde había extraído CRM SDK. Ahora abra la solución QuickStartCS.sln navegando a la siguiente ubicación: SDK \ SampleCode \ CS \ QuickStart

Step 2 - Estaremos explorando el QuickStart con Simplified Connectionproyecto. Abiertoapp.configen este proyecto. Por defecto, elconnectionStrings sección en este archivo será comentada.

A partir de esto, elimine el comentario de la primera clave de cadena de conexión y edite los siguientes tres detalles:

Url- Especifique la URL de su instancia de CRM. En nuestro caso, dado que estamos usando la versión en línea de CRM, deberá mencionar esa URL.

Username - Su nombre de usuario de CRM Online.

Password - Su contraseña de CRM Online.

Step 3 - Abra el SimplifiedConnection.cs archivo en este proyecto y Runmethod dentro de él.

public void Run(StringconnectionString, boolpromptforDelete) {
   try {
      
      // Establish a connection to the organization web service using CrmConnection.
      Microsoft.Xrm.Client.CrmConnection connection =
         CrmConnection.Parse(connectionString);
      
      // Obtain an organization service proxy.
      // The using statement assures that the service proxy will be properly disposed.
      using(_orgService = new OrganizationService(connection)) {

         //Create any entity records this sample requires.
         CreateRequiredRecords();
         
         // Obtain information about the logged on user from the web service.
         Guid userid = ((WhoAmIResponse)_orgService.Execute(new WhoAmIRequest())).UserId;
         SystemUser systemUser = (SystemUser)_orgService.Retrieve("systemuser",userid,
            new ColumnSet(newstring[]{"firstname","lastname"}));
         
         Console.WriteLine("Logged on user is {0} {1}.",
            systemUser.FirstName,systemUser.LastName);

         // Retrieve the version of Microsoft Dynamics CRM.
         RetrieveVersionRequest versionRequest = new RetrieveVersionRequest();
         RetrieveVersionResponse versionResponse =
            (RetrieveVersionResponse)_orgService.Execute(versionRequest);
         Console.WriteLine("Microsoft Dynamics CRM version {0}.",
            versionResponse.Version);
         
         // Instantiate an account object. Note the use of option set
         enumerations defined in OptionSets.cs.
         
         // Refer to the Entity Metadata topic in the SDK documentation to
         determine which attributes must
         
         // be set for each entity.
         Account account = new Account{Name = "Fourth Coffee"};
         account.AccountCategoryCode = new OptionSetValue(
            (int)AccountAccountCateg oryCode.PreferredCustomer);
         account.CustomerTypeCode = new OptionSetValue(
            (int)AccountCustomerTypeCod e.Investor);
         
         // Create an account record named Fourth Coffee.
         _accountId = _orgService.Create(account);
         Console.Write("{0} {1} created, ",account.LogicalName,account.Name);
         
         // Retrieve the several attributes from the new account.
         ColumnSet cols = new ColumnSet(
            new String[]{"name","address1_postalcode","lastusedincampaign"});
         Account retrievedAccount =
            (Account)_orgService.Retrieve("account", _accountId, cols);
         Console.Write("retrieved, ");

         // Update the postal code attribute.
         retrievedAccount.Address1_PostalCode = "98052";

         // The address 2 postal code was set accidentally, so set it to null.
         retrievedAccount.Address2_PostalCode = null;

         // Shows use of a Money value.
         retrievedAccount.Revenue = new Money(5000000);

         // Shows use of a Boolean value.
         retrievedAccount.CreditOnHold = false;
         
         // Update the account record.
         _orgService.Update(retrievedAccount);
         Console.WriteLine("and updated.");
         
         // Delete any entity records this sample created.
         DeleteRequiredRecords(promptforDelete);
      } 
   } 
   // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
   catch(FaultException<microsoft.xrm.sdk.organizationservicefault>) {

      // You can handle an exception here or pass it back to the calling method.
      throw;
   }
}

Step 4- Este método básicamente demuestra todas las operaciones CRUD utilizando servicios web CRM. El código primero crea una instancia de organización, luego crea un registro de cuenta, actualiza el registro creado y finalmente lo elimina. Veamos los componentes importantes de este código. Para ver cambios sobre la marcha en CRM cuando se ejecuta este código, puede depurar este código paso a paso (como explicamos a continuación) y ver simultáneamente los cambios en CRM.

Step 4.1 - Establece la conexión con la organización mediante la cadena de conexión que habíamos modificado en Step 2.

Microsoft.Xrm.Client.CrmConnection connection = CrmConnection.Parse(connectionString);

Step 4.2 - Obtiene una instancia de proxy del servicio web de la organización CRM.

_orgService = new OrganizationService(connection)

Step 4.3 - Crea un nuevo objeto de entidad Cuenta y establece su Nombre, AccountCategoryCode y CustomerTypeCode.

Account account = new Account{Name = "Fifth Coffee"}; 
account.AccountCategoryCode = new OptionSetValue(
   (int)AccountAccountCategoryCode.P referredCustomer); 
account.CustomerTypeCode = new OptionSetValue(
   (int)AccountCustomerTypeCode.Investor);

Step 4.4 - Crea el nuevo registro utilizando el método Crear de servicio de organización.

_accountId = _orgService.Create(account);

Si navega a CRM, verá un registro de cuenta recién creado.

Step 4.5 - Una vez que se crea la cuenta, el servicio recupera el registro de CRM utilizando el método de servicio web Recuperar.

ColumnSet cols = new ColumnSet(new String[]{
   "name","address1_postalcode","lastusedincampaign"}); 
Account retrievedAccount = 
   (Account)_orgService.Retrieve("account", _accountId, cols);

Step 4.6 - Una vez que tenga el registro recuperado, puede establecer el valor actualizado del registro.

retrievedAccount.Address1_PostalCode = "98052"; 
retrievedAccount.Address2_PostalCode = null; 
retrievedAccount.Revenue = new Money(5000000); 
retrievedAccount.CreditOnHold = false;

Step 4.7 - Después de establecer el valor actualizado del registro, actualice el registro a la base de datos de CRM utilizando el método de servicio web Actualizar.

_orgService.Update(retrievedAccount);

Si abre el registro en CRM, verá estos valores actualizados allí.

Step 4.8 - Finalmente, elimine el registro utilizando el método Eliminar del servicio web.

_orgService.Delete(Account.EntityLogicalName, _accountId);

Si ahora actualiza el mismo registro en CRM, verá que el registro ya no está disponible porque ya está eliminado.

Conclusión

En este capítulo, tratamos dos importantes servicios web proporcionados por CRM y un ejemplo práctico de cómo estos servicios web se pueden usar desde una aplicación externa para realizar varias operaciones CRUD.

Las soluciones proporcionan un marco para empaquetar, instalar y desinstalar componentes para que coincidan con las funcionalidades de su negocio. Las soluciones permiten a los personalizadores y desarrolladores crear, empaquetar y mantener unidades de software que amplían CRM. Todas las personalizaciones, extensiones o configuraciones realizadas en CRM se empaquetan, administran y distribuyen mediante soluciones. Las soluciones se pueden exportar como un archivo zip desde la organización de origen, que luego se puede importar a la organización de destino.

Para comprender esto, considere los siguientes escenarios de ejemplo:

  • Usted, como desarrollador o personalizador, ha ampliado o personalizado CRM en el entorno de desarrollo. Ahora desea empaquetar sus cambios y moverlos al siguiente entorno. Para ello, puede crear soluciones individuales y publicarlas en entornos superiores.

  • Usted, como proveedor de CRM externo, ha creado un módulo de CRM, que permite administrar datos en entidades de Microsoft Dynamics CRM utilizando API de servicios web externos. Ahora, desea vender este módulo a otros clientes. Usando soluciones, puede empaquetar este módulo y distribuirlo a otros clientes que podrán instalar esta solución y utilizar las funcionalidades proporcionadas por su módulo.

Tipos de soluciones

Solución de sistema predeterminada

La solución del sistema contiene los componentes de la solución listos para usar definidos en Microsoft Dynamics CRM sin ninguna personalización. Muchos de los componentes de la solución del sistema se pueden personalizar y se pueden utilizar en soluciones administradas o personalizaciones no administradas.

A lo largo de este tutorial, no creamos ninguna solución y estábamos personalizando la solución del sistema predeterminada. Si recuerda, fuimos a Configuración → Personalizaciones → Personalizar el sistema. Esta opción personaliza directamente la solución predeterminada.

Solución gestionada

Una solución administrada es una solución que está completa y destinada a ser distribuida e instalada. Las soluciones administradas se pueden instalar en la parte superior de la solución del sistema u otras soluciones administradas.

Important Points -

  • Si exporta una solución administrada de una organización y la importa a otra, no puede editar la solución en la nueva organización.

  • Una solución administrada no hace referencia directamente a la solución del sistema.

  • La desinstalación de una solución administrada desinstala todas las personalizaciones asociadas con la solución.

  • De forma predeterminada, una solución administrada no se puede personalizar en la organización de destino. Sin embargo, utilizando el concepto de propiedades administradas, puede definir si un componente de la solución será personalizable y, en caso afirmativo, qué partes específicas del componente se personalizarán una vez que la solución se exporte como una solución administrada.

Solución no administrada

Una solución no administrada es una solución que aún está en desarrollo y no está destinada a distribuirse. Una solución no administrada contiene todas las personalizaciones no administradas de los componentes de CRM, incluidos los componentes agregados, modificados, eliminados o eliminados. De forma predeterminada, cualquier solución nueva es una solución no administrada. Sin embargo, puede exportar una solución no administrada como una solución administrada o no administrada.

Important Points -

  • Si exporta una solución no administrada de una organización y la importa a otra, puede editar la solución en la nueva organización.

  • Una solución no administrada hace referencia directamente a la solución del sistema. Por lo tanto, los cambios realizados en una solución no administrada se aplicarán a todas las soluciones no administradas que hagan referencia a los mismos componentes, incluida la solución del sistema.

  • Si elimina un componente de la solución de una solución no administrada, el componente se elimina permanentemente del sistema y ya no estará disponible. En caso de que solo desee eliminar el componente de una solución no administrada específica, use eliminar en lugar de eliminar.

  • La desinstalación de una solución no administrada no elimina las personalizaciones asociadas. Simplemente elimina la solución del sistema, pero los cambios que realizó seguirán allí.

Componentes de la solución

Se puede usar una solución para empaquetar los siguientes componentes que se pueden personalizar usando soluciones predeterminadas, no administradas o administradas.

Tipo de componente Componente
Esquema Entidades
Atributos
Relaciones
Conjuntos de opciones globales
Interfaz de usuario Cinta de aplicación
Mapa del sitio
Formularios
Cintas de entidad
Recursos web
Analítica Cuadros de mando
Informes
Visualizaciones
Proceso / Código Procesos
Diálogos
Flujos de trabajo
Complementos
Ensambles
Pasos de procesamiento
Plantillas Unificación de correo
Email
Contrato
Artículo
Seguridad Roles de seguridad
Perfiles de seguridad a nivel de campo

Creando una solución

Step 1- Vaya a Configuración → Soluciones. Haga clic en Nuevo.

Step 2 - En la ventana siguiente, ingrese los siguientes detalles y haga clic en Guardar y cerrar.

Display Name - Solución de muestra (puede ser cualquier nombre que desee).

Name- Se configurará automáticamente en función del Nombre para mostrar. Sin embargo, puede cambiar esto.

Publisher- Editor predeterminado. El editor de soluciones proporciona un prefijo de personalización común y un prefijo de valor de opción. La definición de un editor de soluciones controla cómo se pueden actualizar sus soluciones administradas una vez distribuidas. Sin embargo, para este ejemplo y para la mayoría de los casos generales, puede configurarlo como Publicador predeterminado.

Version- Especifique una versión con el siguiente formato: major.minor.build.revision. Por ejemplo: 1.0.0.0.

De forma predeterminada, cada solución se agrega como una solución no administrada. Una vez que se agrega una solución, puede agregar componentes de la solución creándolos en el contexto de esta solución o agregando los componentes existentes de otras soluciones. Por ejemplo, puede crear nuevas entidades, formularios, etc. en el contexto de esta nueva solución.

Exportar una solución

Una vez que haya implementado todos los cambios que desea empaquetar como una solución administrada o no administrada, puede exportar su solución de la siguiente manera.

Step 1- Abra la organización de origen y vaya a Configuración → Soluciones. Seleccione la solución que desea exportar y haga clic en el botón Exportar.

Step 2 - En la ventana Publicar personalizaciones, haga clic en Publicar todas las personalizaciones y luego haga clic en Siguiente.

Step 3- En la ventana siguiente, puede seleccionar opcionalmente cualquier configuración del sistema, como la numeración automática, la configuración del calendario, etc., para exportarla con la solución. Por ahora, puede evitar seleccionar cualquier opción y hacer clic en Siguiente.

Step 4- En la ventana Tipo de paquete, puede seleccionar si desea exportar el paquete como una solución administrada o no administrada. Para este ejemplo, exportémoslo como no administrado. Una vez hecho esto, haga clic en Siguiente.

Step 5- En la siguiente ventana, puede ver la versión de origen de CRM que está utilizando y puede seleccionar la versión de destino. Haga clic en Exportar.

Step 6- Una vez que haga clic en Exportar, la solución se exportará como un archivo zip. Guarde este archivo zip en la ubicación deseada de su sistema.

Importar una solución

Ahora, importaremos el archivo zip de la solución que exportamos en la sección anterior a una nueva organización de destino.

Step 1- Abra la organización de destino y vaya a Configuración → Soluciones. Haga clic en Importar.

Step 2 - Examine el archivo zip que descargó del paso de exportación y haga clic en Next.

Step 3- Desde la siguiente ventana, puede ver los detalles del paquete de la solución si es necesario. Al hacer clic en Importar, se iniciará el proceso de importación de la solución.

Step 4- Una vez que se completa el proceso de importación, mostrará el estado de éxito o fracaso. Si el proceso tiene éxito, haga clic en Publicar todas las personalizaciones. En caso de que la importación de la solución falle, le dará un registro de error detallado sobre qué paso del proceso de importación falló.

Step 5- Terminamos. La solución se importará correctamente a la organización de destino. Haga clic en Cerrar.

La resolución de conflictos

Dado que puede tener varios desarrolladores trabajando para personalizar y extender CRM, tendrá múltiples soluciones administradas y no administradas. La exportación e importación de estas soluciones a veces puede dar lugar a situaciones de conflicto. Por ejemplo, suponga que 'Solución A' contiene un campo en un formulario mientras que 'Solución B' ha eliminado el campo y 'Solución C' ha cambiado el nombre del campo. En este escenario, ¿cuál sería el cambio final? En escenarios tan conflictivos, CRM utiliza dos enfoques.

Merge- Este enfoque se utiliza para los componentes de la interfaz de usuario, como la barra de comandos, las cintas y los mapas del sitio. Según este enfoque, los componentes de la solución se vuelven a calcular desde abajo y las personalizaciones no administradas de la organización son las últimas en aplicarse.

Top Wins- Este enfoque se utiliza para todos los demás escenarios de conflicto, excepto los componentes de la interfaz de usuario. Según este enfoque, el último cambio (administrado o no administrado) toma la prioridad y se aplica.

Conclusión

En este capítulo, presentamos el concepto de soluciones y diferentes tipos de solución y sus componentes. Luego aprendimos cómo crear, exportar e importar una solución. Finalmente, estudiamos acerca de las dos estrategias de resolución de conflictos, que tiene lugar cuando tenemos múltiples soluciones administradas y no administradas que afectan a los mismos componentes de la solución.